Comece a usar o Amazon S3 por meio da AWS CLI
Você pode começar a usar o Amazon S3 utilizando a AWS Command Line Interface (AWS CLI) para trabalhar com buckets de uso geral e objetos. Um bucket é um contêiner de objetos. Um objeto é um arquivo e qualquer metadado que descreva esse arquivo.
Para armazenar um objeto no Amazon S3, crie um bucket e faça upload do objeto para o bucket. Quando o objeto estiver no bucket, você poderá abri-lo, fazer download dele e movê-lo. Quando você não precisar mais de um objeto ou um bucket, poderá limpar seus recursos.
Com o Amazon S3, você paga somente pelo que for usado. Para obter mais informações sobre os recursos e a definição de preço do Amazon S3, consulte Amazon S3
nota
Para obter mais informações sobre o uso da classe de armazenamento Amazon S3 Express One Zone com buckets de diretório, consulte Tutorial: Conceitos básicos da classe S3 Express One Zone e Trabalhar com buckets de diretório.
Configuração
Antes de começar a usar a AWS CLI com o Amazon S3, você deve:
-
Cadastrar-se em uma conta da AWS. Para instruções, consulte Configuração do Amazon S3.
-
Criar um usuário com permissões
s3:*
. Para instruções, consulte Configuração do Amazon S3. -
Instalar e configurar a AWS CLI. Para instruções, consulte Instalar ou atualizar a versão mais recente da AWS CLI no Guia do usuário do AWS Command Line Interface.
Para verificar se o perfil da AWS CLI está configurado adequadamente, execute o seguinte comando:
aws sts get-caller-identity
Para obter informações, consulte get-caller-identity na Referência de comandos da AWS CLI.
Esse comando exibe uma lista dos comandos disponíveis do Amazon S3 se a AWS CLI estiver instalada e configurada corretamente.
Etapa 1: criar seu primeiro bucket do Amazon S3
Depois de configurar a AWS CLI, você já pode criar um bucket no Amazon S3. Cada objeto no Amazon S3 é armazenado em um bucket. Antes de poder armazenar dados no Amazon S3, você deve criar um bucket.
nota
Você não é cobrado pela criação de um bucket. Você é cobrado somente pelo armazenamento de objetos no bucket e pela transferência de objetos para dentro e para fora do bucket. Você estará sujeito a uma cobrança mínima (menos de 1 USD) ao seguir os exemplos contidos neste guia. Para obter mais informações sobre os custos de armazenamento, consulte Definição de preço do Amazon S3
Para criar um bucket
-
Crie um bucket usando o comando
s3api create-bucket
. Substitua
por um nome de bucket exclusivo eamzn-s3-demo-bucket
us-east-1
pela região desejada:aws s3api create-bucket --bucket
amzn-s3-demo-bucket
--regionus-east-1
Para regiões diferentes de us-east-1, você precisa especificar a restrição de localização:
aws s3api create-bucket --bucket
amzn-s3-demo-bucket
--regionus-west-2
--create-bucket-configuration LocationConstraint=us-west-2
nota
-
Depois de criar um bucket, você não pode mudar sua região.
-
Para reduzir a latência e os custos e atender aos requisitos regulatórios, selecione uma região perto de você. Os objetos armazenados em uma região nunca saem dessa região, a menos que você os transfira para outra região. Para obter uma lista de regiões da AWS do Amazon S3, consulte Endpoints de serviço da AWS na Referência geral da Amazon Web Services.
-
O nome do bucket deve:
-
Ser exclusivo em uma partição. Uma partição é um agrupamento de regiões. No momento, a AWS tem três partições:
aws
(regiões comerciais),aws-cn
(regiões da China) eaws-us-gov
(regiões AWS GovCloud (US)). -
Ter entre 3 e 63 caracteres.
-
Consistir em apenas letras minúsculas, números, pontos (.) e hifens (-). Para obter a melhor compatibilidade, recomendamos evitar o uso de pontos () em nomes de bucket, exceto em buckets usados apenas para hospedagem de sites estáticos.
-
Inicie e termine com uma letra ou um número.
-
-
Depois de criado o bucket, você não pode mudar seu nome.
-
Não inclua informações confidenciais no nome do bucket. O nome do bucket é visível nos URLs que apontam para os objetos no bucket.
-
-
Liste todos os buckets para verificar se o seu bucket foi criado:
aws s3 ls
-
Em Propriedade de objeto, você pode desabilitar ou habilitar ACLs e controlar a propriedade de objetos enviado ao seu bucket.
ACLs desabilitadas
Para definir Imposto pelo proprietário do bucket (padrão): as ACLs são desabilitadas e o proprietário do bucket automaticamente tem propriedade e controle total sobre todos os objetos do bucket de uso geral:
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"nota
Por padrão, as ACLs estão desabilitadas. A maioria dos casos de uso modernos no Amazon S3 não exige mais o uso de ACLs. Recomendamos manter as ACLs desabilitadas, exceto em circunstâncias incomuns em que seja necessário controlar o acesso para cada objeto individualmente. Para obter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.
ACLs habilitadas
-
Para definir Proprietário do bucket preferido: o bucket tem a propriedade e o controle total sobre novos objetos que outras contas gravam no bucket com a ACL pré-configurada
bucket-owner-full-control
.aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"Se você aplicar a configuração Proprietário do bucket preferido e desejar exigir que todos os uploads do Amazon S3 incluam a ACL pré-configurada
bucket-owner-full-control
, será possível Exigir a ACL pré-configurada bucket-owner-full-control para operações PUT do Amazon S3 (preferencial do proprietário do bucket), que permite somente uploads de objetos que usem essa ACL. -
Para definir Autor do objeto: a conta da AWS que faz upload de um objeto é a proprietária do objeto, tem controle total sobre ele e pode conceder acesso a outros usuários por meio de ACLs.
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls="Rules=[{ObjectOwnership=ObjectWriter}]"
nota
A configuração padrão é Imposto pelo proprietário do Bucket. Para aplicar a configuração padrão e manter as ACLs desabilitadas, somente a permissão
s3:CreateBucket
é necessária. Para habilitar ACLs, é necessário ter a permissãos3:PutBucketOwnershipControls
.Para verificar a configuração atual de propriedade de objeto do seu bucket:
aws s3api get-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
-
-
Para verificar se o Bloqueio de Acesso Público está habilitado (ele está habilitado por padrão para novos buckets):
aws s3api get-public-access-block --bucket
amzn-s3-demo-bucket
Por padrão, as quatro configurações de Bloqueio de Acesso Público estão habilitadas para novos buckets. Recomendamos que você mantenha todas as configurações habilitadas, a menos que precise desativar uma ou mais delas para seu caso de uso específico. Para obter mais informações sobre como bloquear o acesso público, consulte Bloquear o acesso público ao armazenamento do Amazon S3.
Se você precisar habilitar o Bloqueio de Acesso Público, use o seguinte comando:
aws s3api put-public-access-block --bucket
amzn-s3-demo-bucket
--public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"nota
Para habilitar todas as configurações do Bloqueio de Acesso Público, somente a permissão
s3:CreateBucket
é necessária. Para desabilitar qualquer configuração do Bloqueio de Acesso Público, é necessário ter a permissãos3:PutBucketPublicAccessBlock
. -
Para habilitar o versionamento para um bucket
aws s3api put-bucket-versioning --bucket
amzn-s3-demo-bucket
--versioning-configuration Status=EnabledPor padrão, o versionamento de bucket está desabilitado. Versionamento é um meio de manter diversas variantes de um objeto no mesmo bucket. O versionamento pode ser usado para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do . Com o versionamento, você pode se recuperar mais facilmente de ações não intencionais do usuário e de falhas da aplicação. Para obter mais informações sobre versionamento, consulte Reter várias versões de objetos com o Versionamento do S3.
-
O Bloqueio de Objetos do S3 ajuda a proteger novos objetos contra exclusão ou substituição. Para obter mais informações, consulte Bloquear objetos com o Bloqueio de Objetos. Para habilitar o recurso para Bloquear objetos com o Bloqueio de Objetos (requer versionamento do bucket):
Para um novo bucket:
aws s3api create-bucket --bucket
amzn-s3-demo-bucket
--regionus-east-1
--object-lock-enabled-for-bucketPara um bucket existente:
aws s3api put-object-lock-configuration --bucket
amzn-s3-demo-bucket
--object-lock-configuration '{"ObjectLockEnabled": "Enabled"}'Se você quiser definir um padrão para Bloquear objetos com o Bloqueio de Objetos com a habilitação do Bloqueio de Objetos, você poderá usar:
aws s3api put-object-lock-configuration --bucket
amzn-s3-demo-bucket
--object-lock-configuration '{"ObjectLockEnabled":"Enabled","Rule":{"DefaultRetention":{"Mode":"COMPLIANCE","Days":30}}}'Você pode substituir
"COMPLIANCE"
por"GOVERNANCE"
para ter um modo menos restritivo e ajustar o número de dias conforme necessário.nota
Para criar um bucket com o Bloqueio de Objetos habilitado, você deve ter as seguintes permissões:
s3:CreateBucket
,s3:PutBucketVersioning
es3:PutBucketObjectLockConfiguration
. -
É possível adicionar ao seu bucket. Com a alocação de custos da AWS, você pode usar tags de bucket para anotar o faturamento referente ao uso de um bucket. Uma tag é um par chave-valor que representa uma etiqueta que você atribui a um bucket. Para obter mais informações, consulte Usar tags de alocação de custos para buckets do S3.
Para adicionar tags ao seu bucket:
aws s3api put-bucket-tagging --bucket
amzn-s3-demo-bucket
--tagging 'TagSet=[{Key=Purpose,Value=Testing},{Key=Environment,Value=Development}]' -
Buckets e novos objetos são criptografados por meio da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (
SSE-S3
) como o nível básico da configuração de criptografia. Para verificar a criptografia padrão do seu bucket, use o seguinte comando:aws s3api get-bucket-encryption --bucket
amzn-s3-demo-bucket
Você também pode configurar a criptografia do lado do servidor com chaves do AWS KMS (
SSE-KMS
) e a criptografia do lado do servidor de camada dupla com chaves do AWS KMS (DSSE-KMS
) para o seu bucket. Tanto a chave gerenciada pela AWS (aws/s3
) quanto as chaves gerenciadas pelo cliente podem ser usadas como sua chave do AWS KMS para a configuração de criptografiaSSE-KMS
eDSSE-KMS
. Para ter mais informações sobre chaves gerenciadas pelo cliente, consulte Chaves de clientes e chaves da AWS no Guia do desenvolvedor do AWS Key Management Service. Para ter mais informações sobre como criar uma chave do AWS KMS, consulte Creating keys no Guia do desenvolvedor do AWS Key Management Service.Importante
A chave do AWS KMS deve estar na mesma região da AWS que o bucket do Amazon S3. Não é possível usar chaves do KMS entre regiões para criptografia de bucket do Amazon S3.
Ao configurar o bucket para usar a criptografia padrão com SSE-KMS, você também pode usar as chaves de bucket do Amazon S3. As chaves de bucket do Amazon S3 diminuem o custo de criptografia reduzindo o tráfego de solicitações do Amazon S3 para o AWS KMS. Para obter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3. As chaves de bucket do Amazon S3 não comportam DSSE-KMS. Na AWS CLI, as chaves de bucket do Amazon S3 NÃO são habilitadas por padrão ao criar um bucket. Isso é diferente do comportamento do console, onde elas estão habilitadas por padrão.
Para configurar o
SSE-KMS
e habilitar as chaves de bucket do Amazon S3:aws s3api put-bucket-encryption --bucket
amzn-s3-demo-bucket
--server-side-encryption-configuration "{\"Rules\":[{\"ApplyServerSideEncryptionByDefault\":{\"SSEAlgorithm\":\"aws:kms\",\"KMSMasterKeyID\":\"YOUR-KMS-KEY-ARN\"},\"BucketKeyEnabled\":true}]}"Para verificar se as chaves de Bucket do Amazon S3 estão habilitadas para um bucket:
aws s3api get-bucket-encryption --bucket
amzn-s3-demo-bucket
A saída incluirá um campo
BucketKeyEnabled
definido comotrue
oufalse
.Para configurar o
DSSE-KMS
, execute o seguinte comando:aws s3api put-bucket-encryption --bucket
amzn-s3-demo-bucket
--server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms:dsse","KMSMasterKeyID":"YOUR-KMS-KEY-ARN
"}}]}'Para obter mais informações sobre criptografia padrão, consulte Definir o comportamento padrão da criptografia para os buckets do Amazon S3. Para ter mais informações sobre SSE-S3, consulte Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).
Importante
Se você usar a opção SSE-KMS ou a DSSE-KMS em sua configuração de criptografia padrão, poderão ser cobradas cotas de solicitações por segundo (RPS) do AWS KMS. Você pode reduzir as chamadas de API do KMS habilitando as chaves de bucket do Amazon S3, o que diminui o número de solicitações enviadas ao AWS KMS. Para obter mais informações sobre as cotas do AWS KMS e como solicitar um aumento de cota, consulte Cotas no Guia do desenvolvedor do AWS Key Management Service.
Você criou um bucket no Amazon S3. A próxima etapa é fazer upload de um objeto em seu bucket.
Etapa 2: fazer upload de um objeto para o seu bucket
Depois de criar um bucket no Amazon S3, você estará pronto para fazer upload de um objeto no bucket. Um objeto pode ser qualquer tipo de arquivo: um arquivo de texto, uma foto, um vídeo etc.
Para fazer upload de um objeto em um bucket
-
Crie um arquivo de texto simples para fazer upload. Você pode usar qualquer editor de texto ou executar o seguinte comando:
echo 'Hello, Amazon S3!' > example.txt
-
Faça upload do arquivo no bucket usando o comando s3 cp.
aws s3 cp example.txt s3://
amzn-s3-demo-bucket
/Se o upload for bem-sucedido, você verá uma saída semelhante a:
upload: ./example.txt to s3://
amzn-s3-demo-bucket
/example.txt -
Liste o conteúdo do seu bucket para verificar se o objeto foi carregado:
aws s3 ls s3://
amzn-s3-demo-bucket
/
O upload de um objeto no bucket foi realizado corretamente. A próxima etapa é baixar um objeto.
Etapa 3: fazer download de um objeto
Depois de fazer upload de um objeto para um bucket, você já pode visualizar informações e fazer download do objeto em seu computador local.
Como baixar um objeto de um bucket do Amazon S3
-
Para obter informações sobre seu objeto:
aws s3api head-object --bucket
amzn-s3-demo-bucket
--key example.txtEsse comando retorna metadados sobre o objeto, como tipo de conteúdo, tamanho do conteúdo e data da última modificação.
-
Baixe o objeto em seu computador local:
aws s3 cp s3://
amzn-s3-demo-bucket
/example.txt downloaded-example.txtSe o download for bem-sucedido, você verá uma saída semelhante a:
download: s3://
amzn-s3-demo-bucket
/example.txt to ./downloaded-example.txt -
Verifique o conteúdo do arquivo baixado:
cat downloaded-example.txt
nota
-
Ao contrário do console, a AWS CLI pode baixar vários objetos ao mesmo tempo usando curingas ou o sinalizador
--recursive
. -
Ao baixar objetos com a AWS CLI, o ponto (.) no final do nome das chaves de objeto é preservado, diferentemente do console, onde é removido. Isso é importante se suas chaves de objeto terminarem com pontos.
Exemplo de download de vários objetos:
Para baixar vários objetos de um bucket do Amazon S3 com extensões de arquivo específicas, use o comando de cópia recursiva com os filtros exclude
e include
, conforme mostrado no exemplo.
aws s3 cp s3://
amzn-s3-demo-bucket
/ . --recursive --exclude "*" --include "*.txt"
Você baixou seu objeto com êxito. A próxima etapa é copiar seu objeto para uma pasta.
Etapa 4: copiar seu objeto para uma pasta
Você já adicionou um objeto a um bucket e fez download do objeto. Agora, crie uma pasta e copie e cole o objeto na pasta.
Como copiar um objeto em uma pasta
-
No Amazon S3, as pastas são representadas como prefixos em chaves de objeto. Crie uma “pasta” copiando um objeto com um prefixo:
aws s3 cp s3://
amzn-s3-demo-source-bucket
/example.txt s3://amzn-s3-demo-destination-bucket
/favorite-files/example.txtSe a cópia for bem-sucedida, você verá uma saída semelhante a:
copy: s3://
amzn-s3-demo-source-bucket
/example.txt to s3://amzn-s3-demo-destination-bucket
/favorite-files/example.txt -
Liste o conteúdo da pasta para verificar se o objeto foi copiado:
aws s3 ls s3://
amzn-s3-demo-destination-bucket
/favorite-files/
Você conseguiu copiar seu objeto para uma pasta. A próxima etapa é excluir seus objetos e o bucket.
Etapa 5: excluir seus objetos e bucket
Quando você não precisar mais de um objeto ou bucket, recomendamos excluí-los para evitar cobranças adicionais. Se você concluiu esta demonstração de conceitos básicos como um exercício de aprendizagem e não planeja usar o bucket ou os objetos, recomendamos que exclua os dois para não acumular cobranças.
Antes de excluir seu bucket, esvazie-o ou exclua os objetos contidos nele. Depois de excluir seus objetos e o bucket, eles não estarão mais disponíveis.
Se você quiser continuar usando o mesmo nome de bucket, recomendamos excluir os objetos ou esvaziar o bucket, mas não excluir o bucket. Depois de excluir um bucket, o nome dele fica disponível para ser reutilizado. No entanto, outra conta da AWS pode criar um bucket com o mesmo nome antes de você ter a chance de reutilizá-lo.
Excluir um objeto
Se quiser escolher quais objetos excluir sem esvaziar todos os objetos do bucket, você pode excluir um objeto.
Exclua um objeto específico:
aws s3 rm s3://
amzn-s3-demo-bucket
/example.txt
Se a exclusão for bem-sucedida, você verá uma saída semelhante a:
delete: s3://
amzn-s3-demo-bucket
/example.txt
Esvaziar o bucket
Se você pretende excluir seu bucket, primeiro deve esvaziá-lo, o que exclui todos os objetos, versões e os marcadores de exclusão que estão nele.
Para esvaziar um bucket
Importante
Não é possível desfazer a ação de esvaziar bucket. Os objetos adicionados ao bucket enquanto a ação de esvaziamento do bucket estiver em andamento serão excluídos.
-
Opção 1: para buckets menores, usar o comando
rm
com o sinalizador--recursive
para excluir todos os objetos no bucket:aws s3 rm s3://
amzn-s3-demo-bucket
--recursiveEsse comando exclui todos os objetos no bucket, incluindo objetos em pastas.
nota
Se seu bucket contiver muitos objetos ou objetos grandes, esse comando poderá atingir o tempo limite. Para buckets com grandes quantidades de dados, use a regra de ciclo de vida do Amazon S3 para expirar objetos nos buckets.
Opção 2: usar as regras de ciclo de vida do Amazon S3 (recomendadas para buckets grandes)
Para buckets com muitos objetos ou objetos grandes, use uma regra de ciclo de vida do Amazon S3 para expirar e excluir automaticamente todos os objetos. Aguarde o processamento da regra de ciclo de vida (isso pode levar até 24 horas). Para ter mais informações sobre como usar regras de ciclo de vida para esvaziar buckets, consulte Como usar uma regra de configuração de ciclo de vida para esvaziar um bucket do Amazon S3?
. -
Verifique se o bucket está vazio:
aws s3 ls s3://
amzn-s3-demo-bucket
-
Se o versionamento do bucket estiver habilitado, use os comandos a seguir para excluir objetos versionados e marcadores de exclusão.
Remova objetos versionados:
aws s3api delete-objects --bucket
amzn-s3-demo-bucket
--delete "$(aws s3api list-object-versions --bucketamzn-s3-demo-bucket
--output json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"Remova marcadores de exclusão:
aws s3api delete-objects --bucket
amzn-s3-demo-bucket
--delete "$(aws s3api list-object-versions --bucketamzn-s3-demo-bucket
--output json --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')" -
Verifique se o bucket não contém mais nenhuma versão de objeto e nenhum marcador de exclusão:
aws s3api list-object-versions --bucket
amzn-s3-demo-bucket
Não deve haver nenhuma versão nem nenhum marcador de exclusão restante na saída.
Excluir bucket
Depois de esvaziar o bucket ou excluir todos os objetos dele, você poderá excluir o bucket.
Importante
Não é possível desfazer a ação de excluir um bucket. Nomes de bucket são exclusivos. Se você excluir seu bucket, outro usuário da AWS poderá usar o nome. Se quiser continuar usando o mesmo nome de bucket, não exclua o bucket. Em vez disso, esvazie e conserve o bucket.
Para excluir seu bucket do
-
Exclua seu bucket:
aws s3api delete-bucket --bucket
amzn-s3-demo-bucket
-
Liste todos os seus buckets para verificar se o bucket foi excluído:
aws s3 ls
Próximas etapas
Nos exemplos anteriores, você aprendeu a executar alguma tarefas básicas no Amazon S3 usando a AWS CLI.
Os seguintes tópicos explicam os caminhos de aprendizado que você pode usar para conhecer o Amazon S3 detalhamente para que você possa implementá-lo em suas aplicações.
A lista a seguir mostra comandos comuns da AWS CLI para o Amazon S3:
-
cp: copia arquivos ou objetos entre seu sistema de arquivos local e o Amazon S3 ou entre locais do Amazon S3.
-
ls: lista objetos e prefixos comuns do Amazon S3 em um bucket e prefixo especificados.
-
mb: cria um bucket do Amazon S3.
-
mv: move arquivos ou objetos entre seu sistema de arquivos local e o Amazon S3 ou entre locais do Amazon S3.
-
presign: gera um URL pré-assinado para um objeto do Amazon S3 que permite acesso temporário sem credenciais da AWS.
-
rb: remove um bucket vazio do Amazon S3. Você pode usar o sinalizador
--force
para esvaziar e excluir automaticamente um bucket com conteúdo por meio de um único comando. Essa ação não pode ser desfeita. -
rm: exclui objetos do Amazon S3.
-
sync: sincroniza diretórios e prefixos do Amazon S3 copiando recursivamente arquivos novos e atualizados do diretório de origem para o destino.
-
website: configura um bucket como um site estático.
Para ter mais informações sobre os comandos da AWS CLI para o Amazon S3, consulte os seguintes recursos: