Skip to main content

Criando um bucket

Vá para Storage → Buckets e escolha Create Bucket. Bucket Name é a única coisa que você precisa preencher; Versioning, Default encryption, Deletion protection e Tags estão no mesmo formulário.Esses extras são aplicados como chamadas separadas uma vez que o bucket existe, então o bucket é criado mesmo se um deles falhar, e o console informa qual deles falhou.
Os nomes de bucket seguem as regras do S3 e são verificados na íntegra:
3–63 characters
obrigatório
Letras minúsculas, dígitos e hífens. Deve começar e terminar com uma letra ou um dígito, não pode conter um hífen duplo (--) e não deve ter a forma de um endereço IP.
O nome de um bucket é exclusivo em toda a região, não apenas na sua conta. Um nome que já está em outra conta retorna 409. Criar um bucket que você já possui é uma operação bem-sucedida que não altera nada, então uma criação repetida é segura.
A contagem de buckets é limitada pela cota de buckets da sua organização; esgotá-la também é um 409 na criação.

O bloqueio de objetos tem que ser decidido aqui

O bloqueio de objetos só pode ser ativado na criação. Não há nenhuma chamada que o ative mais tarde — você teria que criar um novo bucket e copiar os objetos.Ativá-lo também ativa o controle de versão, porque um bloqueio não tem nada para segurar sem versões.
PUT /v1/buckets/{bucket}/object-lock atualiza a regra de retenção padrão em um bucket que já tem o bloqueio de objetos habilitado. Contra um bucket que não o faz, é um 409 — object lock must be enabled at bucket creation.
A ativação do bloqueio de objetos é apenas para API. Ele tem que ser executado na chamada que cria o bucket, e o formulário Create Bucket do console não o envia — o bucket é criado sem bloqueio de objetos, e a configuração de acompanhamento é recusada com o mesmo 409. Crie o bucket através da API quando precisar do Object Lock.Em um bucket que já o tem, o console edita a regra: o cartão Object Lock na guia Settings do bucket carrega a Default retention rule, com um Mode e um Retention period.

Apontando um cliente S3 para ele

Defina um endpoint personalizado e assine com sua chave de acesso Basaltic. Nada mais sobre o cliente muda.
As mesmas teclas de acesso que você usa em todos os outros lugares. A chave de longa duração de uma conta de serviço não precisa de nada extra; credenciais temporárias do STS — uma sessão de função ou uma sessão de usuário — também devem carregar o token de sessão e são rejeitadas sem ele.Veja authentication para saber como obter cada um.
Ambos os estilos funcionam.https://my-app-assets.objects.sa-saopaulo-1.basaltic.cloud/key) é o padrão da maioria dos SDKs; path-style (https://objects.sa-saopaulo-1.basaltic.cloud/my-app-assets/key) está disponível através da opção de estilo de endereçamento do seu cliente.
Defina region_name para o código da região Basaltic. O valor não é verificado contra a região que serve a solicitação — ele só tem que corresponder ao que seu cliente assinou — então uma ferramenta com conexão rígida para us-east-1 ainda funciona. GetBucketLocation relata a região real.
Uma solicitação assinada deve estar dentro de 15 minutos do relógio do servidor, ou ela será rejeitada como muito distorcida. Os URLs pré-assinados são suportados com uma expiração entre 1 segundo e 7 dias, e um URL datado no futuro além da tolerância de desvio é recusado em vez de se tornar válido mais tarde.

O que o endpoint do S3 serve

O endpoint é verificado em relação a um SDK real da AWS, em vez de uma especificação nossa — se o boto3 puder fazer isso e obter os códigos de erro do S3, ele funcionará. O que é encaminhado hoje:

Buckets

ListBuckets, CreateBucket, HeadBucket, DeleteBucket, GetBucketLocation e os sub-recursos ?policy, ?cors, ?lifecycle, ?versioning, ?encryption, ?tagging, ?object-lock e ?acl.

Objetos

PutObject, GetObject (incluindo solicitações de intervalo), HeadObject, DeleteObject, DeleteObjects, CopyObject, ListObjects, ListObjectsV2, ListObjectVersions e os sub-recursos ?tagging, ?retention, ?legal-hold e ?acl.

Multipart

CriarMultipartUpload, UploadPart, UploadPartCopy, ListaPartes, ListaMultipartUploads, CompletarMultipartUpload, AborterMultipartUpload.

Assinatura de carga útil

Cargas assinadas, UNSIGNED-PAYLOAD e assinadas aws-chunked streaming uploads. O corpo é re-hashado conforme ele é transmitido, então um corpo que não corresponde ao que foi assinado é rejeitado a meio do voo.
Qualquer coisa fora dessa lista responde NotImplemented. As solicitações de verificação prévia OPTIONS são respondidas sem uma assinatura, porque os navegadores nunca as assinam.

Excluir um bucket

DELETE /v1/buckets/{bucket} faz duas coisas bem diferentes dependendo se a proteção de exclusão está ativada. A proteção é deliberadamente desativada por padrão para a paridade do S3: ao contrário dos segredos e do KMS, os buckets desprotegidos não têm janela de recuperação.
O bucket deve estar vazio. Quaisquer objetos, versões ou uploads de várias partes em andamento tornam-no um 409 BucketNotEmpty. Um bucket vazio é excluído imediatamente e o slot de cota é liberado.
O cartão Deletion protection na guia Settings do bucket é um botão ao lado de Recovery window (days). Save aplica-se a ambos.
recovery_window_days aceita números inteiros de 1–30. Omitir cada campo de janela usa 7 dias. Valores inválidos retornam 400, inclusive quando a proteção é desativada.

Nota de lançamento: campos de recuperação

As respostas do bucket expõem recovery_window_days, scheduled_purge_at e deleted_at nulo. O DELETE protegido retorna 200 com scheduled_purge_at; o DELETE imediato retorna 204.

Alteração de comportamento de quebra: janelas inválidas retornam 400

O serviço anteriormente silenciosamente apertou janelas: valores abaixo de 1 selecionados 7 dias, e valores acima de 30 selecionados 30 dias. Agora ele os rejeita com 400 em vez disso. Por exemplo, a solicitação de 60 dias falha; ele não agenda mais uma limpeza após apenas 30 dias. Zero explícito também é inválido; omita os campos da janela para selecionar o padrão de 7 dias. Dias fracionários são inválidos. Atualize os chamadores que dependem de aperto separadamente da adoção dos novos nomes de campo. Durante uma implantação contínua, as instâncias de serviço antigas ainda podem aplicar seu comportamento de fixação antigo; a rejeição é universal quando todas as instâncias são atualizadas.