Objetos e seus limites
Estes são os próprios números do S3, e eles são aplicados aos valores do S3:
O limite de 5 MiB aplica-se a todas as partes, exceto a última nomeada na conclusão, e é verificado na conclusão, não quando a parte é carregada. Uma lista de partes cuja parte não final é curta falha com
EntityTooSmall depois que os bytes já estão em estágio.
Os uploads que você inicia e nunca termina mantêm suas partes em estágio até que algo as remova. abort_incomplete_multipart_upload regra do ciclo de vida ao invés de confiar em lembrar.
Declare o comprimento do upload
Os uploads de objetos e uploads de peças multiparte devem prometer o comprimento da carga útil. EnvieContent-Length na API de armazenamento e em uploads S3 comuns. Os uploads vazios permanecem suportados com comprimento 0; cópias do lado do servidor não precisam de um comprimento de corpo de upload.
Para modos de streaming S3 aws-chunked suportados, envie X-Amz-Decoded-Content-Length: ele conta bytes de carga útil, excluindo enquadramento e trailers. O comprimento de fio codificado não pode substituí-lo. A adição desse cabeçalho a uma solicitação em pedaços não faz com que essa solicitação seja um upload de streaming da AWS.
Os uploads sem um comprimento de carga declarado recebem HTTP 411 antes do armazenamento: MISSING_CONTENT_LENGTH na API de armazenamento ou MissingContentLength no S3. Um corpo que termina abaixo do seu comprimento declarado é rejeitado; uma parte rejeitada retenta deixar a parte previamente armazenada intacta.
Se você produzir um pipe, gerador ou arquivo de tamanho desconhecido, armazene-o em um arquivo e envie seu comprimento medido. Para streams maiores, armazene cada parte multiparte e declare o comprimento dessa parte. Você não precisa do comprimento completo do objeto com antecedência. Tenha em mente os limites de tamanho de várias partes acima.
O Go SDK determina o comprimento restante de corpos pesquisáveis, incluindo arquivos, a partir da v0.3.2. Um leitor arbitrário ainda precisa de um comprimento conhecido ou buffering. Uma ETag sozinha não pode dizer se um produtor entregou todos os bytes que pretendia enviar.
Classes de armazenamento
Duas classes, e elas nomeiam camadas de dispositivos em vez de padrões de acesso:
Eles mantêm a ortografia maiúscula do S3 porque o vocabulário é do S3. Defina uma classe por objeto com
x-amz-storage-class no upload, ou mova objetos entre classes com uma transição de ciclo de vida. As duas classes cobram separadamente, então o rótulo que um objeto carrega decide em qual contador e qual preço seus bytes aterrissarão.
Uma classe não suportada - STANDARD_IA, GLACIER, qualquer outra coisa que o S3 defina - é rejeitada em vez de armazenada silenciosamente como STANDARD.
Trabalhando com objetos através da API de armazenamento
Você não precisa de um cliente do S3. A API de armazenamento expõe o mesmo plano de objeto em/v1/buckets/{bucket}/objects, autenticado com suas credenciais comuns do Basaltic exatamente como qualquer outra chamada para essa API — útil para um serviço que já as possui e não deve ter um SDK do S3 também:
- Console
- API
- CLI
- Go
A guia Objects de um bucket é um navegador de arquivos nas mesmas rotas. Upload abre a página Upload objects, onde você define um Folder
prefix, escolhe uma Storage class — Standard ou Cold — e adiciona Files. New folder cria um prefixo, e selecionar linhas dá Delete selected, que emite uma exclusão por chave ao invés de uma solicitação em massa — veja a nota abaixo.Abrir um objeto dá a você Download e Delete, uma aba Versions, e uma aba Properties carregando suas Tags ao lado dos controles de retenção.
?tagging, ?retention, ?legal-hold — e os mesmos cabeçalhos X-Amz-* se aplicam no upload para configurações de classe de armazenamento, criptografia e bloqueio de objeto. delimiter dá-lhe a semântica de pasta usual através de common_prefixes, e max_keys é limitado a 1000 por página.
Exclusão em massa (
POST ?delete) e cópia do lado do servidor (x-amz-copy-source) são recursos de endpoint do S3. Por meio da API de armazenamento, exclua objetos um de cada vez.
