Comece a usar o Amazon S3 por meio da AWS CLI - Amazon Simple Storage Service

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. Se você for um novo cliente do Amazon S3, você pode começar a usar o Amazon S3 gratuitamente. Para obter mais informações, consulte Nível gratuito da AWS.

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:

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
  1. Crie um bucket usando o comando s3api create-bucket. Substitua amzn-s3-demo-bucket por um nome de bucket exclusivo e us-east-1 pela região desejada:

    aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-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 --region us-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) e aws-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.

  2. Liste todos os buckets para verificar se o seu bucket foi criado:

    aws s3 ls
  3. 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ão s3: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
  4. 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ão s3:PutBucketPublicAccessBlock.

  5. Para habilitar o versionamento para um bucket

    aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket --versioning-configuration Status=Enabled

    Por 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.

  6. 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 --region us-east-1 --object-lock-enabled-for-bucket

    Para 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 e s3:PutBucketObjectLockConfiguration.

  7. É 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}]'
  8. 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 criptografia SSE-KMS e DSSE-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 como true ou false.

    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
  1. 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
  2. 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
  3. 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
  1. Para obter informações sobre seu objeto:

    aws s3api head-object --bucket amzn-s3-demo-bucket --key example.txt

    Esse comando retorna metadados sobre o objeto, como tipo de conteúdo, tamanho do conteúdo e data da última modificação.

  2. Baixe o objeto em seu computador local:

    aws s3 cp s3://amzn-s3-demo-bucket/example.txt downloaded-example.txt

    Se o download for bem-sucedido, você verá uma saída semelhante a:

    download: s3://amzn-s3-demo-bucket/example.txt to ./downloaded-example.txt
  3. 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
  1. 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.txt

    Se 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
  2. 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.

  1. 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 --recursive

    Esse 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?.

  2. Verifique se o bucket está vazio:

    aws s3 ls s3://amzn-s3-demo-bucket
  3. 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 --bucket amzn-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 --bucket amzn-s3-demo-bucket --output json --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')"
  4. 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
  1. Exclua seu bucket:

    aws s3api delete-bucket --bucket amzn-s3-demo-bucket
  2. 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:

  • s3: comandos gerais do Amazon S3 que simplificam operações comuns.

  • s3api: acesso direto a todas as operações de API do Amazon S3.

  • control: acesso direto a todas as operações de API de controle do Amazon S3.