0% acharam este documento útil (0 voto)
222 visualizações1.176 páginas

s3 Userguide

Enviado por

Gabriel
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
222 visualizações1.176 páginas

s3 Userguide

Enviado por

Gabriel
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 1176

Amazon Simple Storage Service

Guia do usuário
Versão da API 2006-03-01
Amazon Simple Storage Service Guia do usuário

Amazon Simple Storage Service: Guia do usuário


Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

As marcas comerciais e o visual comercial da Amazon não podem ser usados em conexão com nenhum produto
ou serviço que não seja da Amazon, nem de qualquer maneira que possa causar confusão entre os clientes ou que
deprecie ou desacredite a Amazon. Todas as outras marcas comerciais que não pertencem à Amazon pertencem a
seus respectivos proprietários, que podem ou não ser afiliados, conectados ou patrocinados pela Amazon.
Amazon Simple Storage Service Guia do usuário

Table of Contents
O que é o Amazon S3? ...................................................................................................................... 1
Como eu faço? .......................................................................................................................... 1
Vantagens de usar o Amazon S3 ................................................................................................. 2
Conceitos do Amazon S3 ............................................................................................................ 2
Buckets ............................................................................................................................. 2
Objetos ............................................................................................................................. 3
Chaves ............................................................................................................................. 3
Regiões ............................................................................................................................. 3
Modelo de consistência de dados do Amazon S3 .................................................................... 3
Recursos do Amazon S3 ............................................................................................................. 6
Classes de armazenamento ................................................................................................. 6
Políticas de buckets ............................................................................................................ 6
AWS Identity and Access Management .................................................................................. 7
Listas de controle de acesso ................................................................................................ 8
Versionamento ................................................................................................................... 8
Operações ......................................................................................................................... 8
Interfaces de programação de aplicações (API) do Amazon S3 ......................................................... 8
A interface REST ............................................................................................................... 8
A interface SOAP ............................................................................................................... 9
Pagar pelo Amazon S3 ............................................................................................................... 9
Serviços relacionados ................................................................................................................. 9
Conceitos básicos ............................................................................................................................. 11
Configuração ............................................................................................................................ 11
Cadastre-se na AWS ......................................................................................................... 12
Criar um usuário do IAM .................................................................................................... 12
Fazer login como usuário do IAM ........................................................................................ 13
Etapa 1: Criar um bucket ........................................................................................................... 14
Etapa 2: Fazer upload de um objeto ............................................................................................ 15
Etapa 3: fazer download de um objeto ......................................................................................... 15
Etapa 4: copiar um objeto .......................................................................................................... 16
Etapa 5: excluir os objetos e o bucket ......................................................................................... 16
Esvaziar o bucket ............................................................................................................. 17
Excluir um objeto .............................................................................................................. 17
Excluir bucket ................................................................................................................... 17
Para onde ir agora? .................................................................................................................. 18
Cenários de uso comuns ................................................................................................... 18
Considerações .................................................................................................................. 18
Recursos avançados ......................................................................................................... 19
Controle de acesso ........................................................................................................... 20
Recursos de desenvolvimento ............................................................................................ 24
Trabalhar com buckets ...................................................................................................................... 26
Visão geral dos buckets ............................................................................................................. 26
Sobre permissões ............................................................................................................. 27
Gerenciar o acesso público aos buckets .............................................................................. 27
Configuração do bucket ..................................................................................................... 28
Regras de nomeação ................................................................................................................ 30
Exemplo de nomes de bucket ............................................................................................. 30
Criação de um bucket ............................................................................................................... 31
Visualizar propriedades de buckets .............................................................................................. 35
Acessar um bucket ................................................................................................................... 36
Acesso no estilo de hospedagem virtual ............................................................................... 37
Acesso ao estilo de caminho .............................................................................................. 37
Acessar um bucket do S3 por IPv6 ..................................................................................... 37
Acessar um bucket por meio de pontos de acesso do S3 ....................................................... 38

Versão da API 2006-03-01


iii
Amazon Simple Storage Service Guia do usuário

Acessar um bucket usando S3:// ......................................................................................... 38


Esvaziar um bucket ................................................................................................................... 38
Excluir um bucket ..................................................................................................................... 40
Definir criptografia de bucket padrão ............................................................................................ 43
Usar criptografia para operações entre contas ....................................................................... 44
Usar a criptografia padrão com a replicação ......................................................................... 44
Usar Chaves de bucket do Amazon S3 com criptografia padrão ............................................... 44
Habilitar criptografia padrão ................................................................................................ 45
Monitorar a criptografia padrão ........................................................................................... 48
Configurar o Transfer Acceleration .............................................................................................. 48
Por que usar o Transfer Acceleration? ................................................................................. 49
Requisitos para usar o Transfer Acceleration ........................................................................ 49
Conceitos básicos ............................................................................................................. 50
Habilitar o Transfer Acceleration ......................................................................................... 51
Ferramenta de comparação de velocidade ............................................................................ 56
Uso de Pagamento pelo solicitante .............................................................................................. 56
Como funcionam as cobranças de Pagamento pelo solicitante ................................................. 57
Configurar Pagamento pelo solicitante ................................................................................. 57
Recuperação da configuração de requestPayment ................................................................. 59
Fazer download de objetos em buckets de Pagamento pelo solicitante ...................................... 59
Restrições e limitações .............................................................................................................. 60
Trabalhar com objetos ....................................................................................................................... 62
Objetos .................................................................................................................................... 62
Sub-recursos .................................................................................................................... 63
Criar chaves de objeto .............................................................................................................. 64
Diretrizes de nomeação de chave de objeto .......................................................................... 64
Trabalhar com metadados .......................................................................................................... 66
Metadados do objeto definidos pelo sistema ......................................................................... 67
Metadados do objeto definidos pelo usuário .......................................................................... 68
Editar os metadados do objeto ........................................................................................... 69
Fazer upload de objetos ............................................................................................................ 71
Usar multipart upload ................................................................................................................ 80
Processo multipart upload .................................................................................................. 80
Operações simultâneas de multipart upload .......................................................................... 82
Multipart upload e definição de preço .................................................................................. 82
Suporte de API para multipart upload .................................................................................. 82
Suporte do SDK da AWS para multipart upload ..................................................................... 83
API de multipart upload e permissões .................................................................................. 83
Configurar uma política de ciclo de vida ............................................................................... 85
Fazer upload de um objeto usando multipart upload ............................................................... 86
Fazer upload de um diretório ............................................................................................ 100
Listar multipart uploads .................................................................................................... 102
Monitorar um multipart upload ........................................................................................... 103
Abortar um multipart upload .............................................................................................. 106
Copiar um objeto ............................................................................................................ 110
Limites do multipart upload ............................................................................................... 114
Cópia de objetos ..................................................................................................................... 114
Para copiar um objeto ..................................................................................................... 116
Fazer download de um objeto ................................................................................................... 122
Excluir objetos ........................................................................................................................ 128
Excluir objetos de um bucket habilitado para versionamento de maneira programática ................ 129
Excluir objetos de um bucket com MFA habilitada ................................................................ 129
Excluir um único objeto .................................................................................................... 129
Excluir vários objetos ....................................................................................................... 136
Organizar e listar objetos ......................................................................................................... 148
Usar prefixos .................................................................................................................. 149
Listar objetos .................................................................................................................. 150

Versão da API 2006-03-01


iv
Amazon Simple Storage Service Guia do usuário

Usar pastas .................................................................................................................... 155


Exibir uma visão geral do objeto ....................................................................................... 157
Visualizar propriedades de objeto ...................................................................................... 157
Usar pre-signed URLs ............................................................................................................. 158
Limitar recursos de pre-signed URLs ................................................................................. 158
Compartilhar um objeto com uma pre-signed URL ................................................................ 159
Fazer upload de objetos usando pre-signed URLs ................................................................ 162
Transformar objetos ................................................................................................................. 168
Criar pontos de acesso do Object Lambda .......................................................................... 170
Configurar políticas do IAM ............................................................................................... 173
Escrever funções do Lambda ............................................................................................ 175
Usar funções criadas pela AWS ........................................................................................ 186
Práticas recomendadas e diretrizes para o S3 Object Lambda ............................................... 187
Considerações sobre segurança ........................................................................................ 189
Usar o BitTorrent .................................................................................................................... 189
Como você será cobrado pela entrega de BitTorrent ............................................................ 190
Uso do BitTorrent para recuperar objetos armazenados no Amazon S3 ................................... 191
Publicação de conteúdo com o Amazon S3 e o BitTorrent ..................................................... 191
Segurança ...................................................................................................................................... 193
Proteção de dados .................................................................................................................. 193
Criptografia de dados .............................................................................................................. 194
Criptografia do lado do servidor ........................................................................................ 195
Uso de criptografia do lado do cliente ................................................................................ 239
Privacidade entre redes ........................................................................................................... 243
Tráfego entre clientes de serviço e no local e os aplicativos ................................................... 243
Tráfego entre recursos da AWS na mesma região ............................................................... 243
AWS PrivateLink para Amazon S3 ............................................................................................. 243
Tipos de VPC endpoints .................................................................................................. 244
Restrições e limitações do AWS PrivateLink para Amazon S3 ................................................ 244
Acessar endpoints da interface do Amazon S3 .................................................................... 245
Acessar buckets e pontos de acesso do S3 a partir de endpoints de interface S3 ...................... 245
Atualizar uma configuração de DNS no local ....................................................................... 248
Criar uma política de VPC endpoint ................................................................................... 250
Identity and Access Management .............................................................................................. 252
Visão geral ..................................................................................................................... 252
Diretrizes para políticas de acesso .................................................................................... 258
Solicitar autorização ........................................................................................................ 261
Políticas de bucket e políticas de usuário ........................................................................... 268
Gerenciar o acesso com ACLs .......................................................................................... 440
Usar o CORS ................................................................................................................. 458
Bloquear o acesso público ............................................................................................... 469
Usar pontos de acesso .................................................................................................... 480
Revisar o acesso ao bucket .............................................................................................. 496
Controlar a propriedade do objeto ..................................................................................... 500
Verificar a propriedade do bucket ...................................................................................... 502
Registro em log e monitoramento .............................................................................................. 506
Validação de conformidade ....................................................................................................... 507
Resiliência .............................................................................................................................. 508
Criptografia de backup ..................................................................................................... 509
Segurança da infraestrutura ...................................................................................................... 509
Análise de configuração e vulnerabilidade ................................................................................... 510
Melhores práticas de segurança ................................................................................................ 510
Melhores práticas de segurança preventivas do Amazon S3 .................................................. 510
Melhores práticas de auditoria e monitoramento do Amazon S3 ............................................. 513
Gerenciar o armazenamento ............................................................................................................. 516
Usando o controle de versão do S3 ........................................................................................... 516
Buckets não versionados, habilitados para versão e suspensos de versão ............................... 516

Versão da API 2006-03-01


v
Amazon Simple Storage Service Guia do usuário

Usando o controle de versão do S3 com o ciclo de vida do S3 ............................................... 517


Versionamento do S3 ...................................................................................................... 518
Habilitar o controle de versão em buckets ........................................................................... 521
Configurando a exclusão de MFA ...................................................................................... 524
Trabalhando com objetos habilitados para versão ................................................................ 525
Trabalhando com objetos suspensos de versão ................................................................... 541
Trabalhando com objetos arquivados ................................................................................. 544
Usar o Object Lock ................................................................................................................. 554
Bloqueio de objetos do S3 ............................................................................................... 555
Configurar o bloqueio de objetos no console ....................................................................... 559
Gerenciar o bloqueio de objetos ........................................................................................ 560
Gerenciamento de classes de armazenamento ............................................................................ 563
Objetos acessados frequentemente ................................................................................... 564
Otimização automática de dados com padrões de acesso alterados ou desconhecidos ............... 564
Objetos acessados com pouca frequência .......................................................................... 565
Arquivamento de objetos .................................................................................................. 566
Amazon S3 on Outposts .................................................................................................. 567
Comparação de classes de armazenamento ....................................................................... 567
Configurar a classe de armazenamento de um objeto ........................................................... 568
Gerenciando o ciclo de vida ..................................................................................................... 569
Gerenciando o ciclo de vida do objeto ................................................................................ 569
Criando uma configuração de ciclo de vida ......................................................................... 569
Fazer a transição de objetos ............................................................................................. 570
Expirando objetos ........................................................................................................... 575
Definir a configuração do ciclo de vida ............................................................................... 575
Usando outras configurações de bucket ............................................................................. 586
Elementos de configuração do ciclo de vida ........................................................................ 588
Exemplos de configuração de ciclo de vida ......................................................................... 594
Gerenciamento de inventário .................................................................................................... 605
Buckets do inventário do Amazon S3 ................................................................................. 605
Listas de inventário ......................................................................................................... 606
Configuração do inventário do Amazon S3 .......................................................................... 607
Configuração de notificações para conclusão de inventário .................................................... 612
Localização de inventário ................................................................................................. 612
Consultar o inventário com o Athena ................................................................................. 615
Replicação de objetos .............................................................................................................. 617
Por que usar a replicação ................................................................................................ 617
Quando usar a replicação entre regiões ............................................................................. 618
Quando usar Replicação na mesma região ......................................................................... 618
Requisitos para replicação ................................................................................................ 618
O que é replicado? ......................................................................................................... 619
Configuração da replicação .............................................................................................. 622
Configuração da replicação .............................................................................................. 636
Configurações adicionais .................................................................................................. 663
Obtenção de status da replicação ...................................................................................... 678
Solução de problemas ..................................................................................................... 680
Considerações adicionais ................................................................................................. 681
Uso de tags de objeto ............................................................................................................. 683
Operações de API relacionadas à marcação de objetos ........................................................ 685
Configurações adicionais .................................................................................................. 686
Controle de acesso ......................................................................................................... 686
Gerenciar tags de objeto .................................................................................................. 689
Usar tags de alocação de custos .............................................................................................. 693
Mais informações ............................................................................................................ 694
Relatórios de uso e faturamento ........................................................................................ 694
Uso do Amazon S3 Select ....................................................................................................... 710
Requisitos e limites ......................................................................................................... 710

Versão da API 2006-03-01


vi
Amazon Simple Storage Service Guia do usuário

Criar uma solicitação ....................................................................................................... 711


Erros ............................................................................................................................. 711
Exemplos do S3 Select .................................................................................................... 712
Referência SQL .............................................................................................................. 714
Realizar operações em lote ...................................................................................................... 739
Noções básicas do Batch Ops .......................................................................................... 739
Conceder permissões ...................................................................................................... 740
Criar um trabalho ............................................................................................................ 746
Operações ..................................................................................................................... 753
Gerenciar trabalhos ......................................................................................................... 767
Usar tags ....................................................................................................................... 774
Gerenciar o Bloqueio de objetos do S3 .............................................................................. 785
Copiar objetos em contas da AWS .................................................................................... 801
Monitorar um trabalho do Operações em lote ...................................................................... 806
Relatórios de conclusão ................................................................................................... 809
Monitorar o Amazon S3 ................................................................................................................... 812
Ferramentas de monitoramento ................................................................................................. 812
Ferramentas automatizadas .............................................................................................. 812
Ferramentas manuais ...................................................................................................... 813
Opções de registro em log ....................................................................................................... 813
Registrar em log com o CloudTrail ............................................................................................ 815
Usar logs do CloudTrail com logs de acesso ao servidor do Amazon S3 e CloudWatch Logs ........ 815
Rastreamento do CloudTrail com chamadas de API SOAP do Amazon S3 ............................... 816
CloudTrail events ............................................................................................................ 817
Exemplos de arquivos de log ............................................................................................ 821
Habilitar o CloudTrail ....................................................................................................... 825
Identificar solicitações do S3 ............................................................................................. 826
Registrando acesso ao servidor ................................................................................................ 833
Como faço para habilitar a entrega de logs? ....................................................................... 833
Formato da chave de objeto de log ................................................................................... 833
Como os logs são entregues? .......................................................................................... 834
Entrega de logs do servidor de melhor esforço .................................................................... 834
As alterações do status do registro de bucket em logs entram em vigor ao longo do tempo .......... 834
Habilitar o log de acesso ao servidor ................................................................................. 835
Formato do log ............................................................................................................... 841
Excluir arquivos de log ..................................................................................................... 850
Identificar solicitações do S3 ............................................................................................. 851
Monitoramento de métricas com o CloudWatch ........................................................................... 855
Métricas e dimensões ...................................................................................................... 856
Acessar métricas do CloudWatch ...................................................................................... 863
Configurações de métricas do CloudWatch ......................................................................... 864
Notificações de eventos do Amazon S3 ...................................................................................... 869
Visão geral ..................................................................................................................... 869
Tipos e destinos de notificações ........................................................................................ 871
Conceder permissões ...................................................................................................... 874
Habilitar notificações de eventos ....................................................................................... 876
Demonstração: Configuração de SNS ou SQS .................................................................... 879
Configurar notificações usando filtragem de nomes de chave de objeto ................................... 884
Estrutura de mensagens de evento .................................................................................... 889
Usar análises e insights ................................................................................................................... 894
Análise de classe de armazenamento ........................................................................................ 894
Como configurar a análise de classe de armazenamento ...................................................... 895
Análise de classe de armazenamento ................................................................................ 895
Como exportar dados de análise de classe de armazenamento? ............................................ 897
Configurar análise de classe de armazenamento ................................................................. 898
S3 Storage Lens ..................................................................................................................... 900
Noções básicas sobre o S3 Storage Lens ........................................................................... 901

Versão da API 2006-03-01


vii
Amazon Simple Storage Service Guia do usuário

Trabalhar com organizações ............................................................................................. 905


Configurar permissões ..................................................................................................... 907
Exibição de métricas de armazenamento ............................................................................ 909
Glossário de métricas ...................................................................................................... 914
Exemplos e demonstração ............................................................................................... 919
Rastreamento de solicitações usando X-Ray ............................................................................... 943
Como o X-ray funciona com o Amazon S3 ......................................................................... 944
Regiões disponíveis ......................................................................................................... 944
Hospedar sites estáticos .................................................................................................................. 945
Endpoints de site .................................................................................................................... 945
Exemplos de endpoint de site ........................................................................................... 946
Adicionar um registro DNS CNAME ................................................................................... 946
Usar um domínio personalizado com o Route 53 ................................................................. 947
Principais diferenças entre um endpoint de site e um endpoint de API REST ............................ 947
Habilitar a hospedagem de sites ............................................................................................... 947
Configurar um documento de índice ........................................................................................... 951
Pastas e documentos de índice ........................................................................................ 951
Configurar um documento de índice ................................................................................... 952
Configurar um documento de erro personalizado ......................................................................... 953
Códigos de resposta HTTP do Amazon S3 ......................................................................... 953
Configurar um documento de erro personalizado ................................................................. 955
Definir permissões para acesso ao site ...................................................................................... 956
Etapa 1: Editar configurações de bloqueio de acesso público do S3 ........................................ 956
Etapa 2: Adicionar uma política de bucket .......................................................................... 957
Registro de tráfego da Web ...................................................................................................... 959
Configuração de um redirecionamento ....................................................................................... 959
Definir um redirecionamento de objeto usando o console do Amazon S3 .................................. 960
Definir um redirecionamento de objeto usando a API REST ................................................... 960
Redirecionar solicitações de um endpoint de site de um bucket para outro host ......................... 961
Configurar redirecionamentos condicionais avançados .......................................................... 962
Demonstrações de exemplo ...................................................................................................... 967
Configurar um site estático ............................................................................................... 967
Configurar um site estático usando um domínio personalizado ............................................... 973
Desenvolvimento com o Amazon S3 .................................................................................................. 990
Fazer solicitações ................................................................................................................... 990
Sobre as chaves de acesso .............................................................................................. 990
Endpoints de solicitações ................................................................................................. 992
Fazer solicitações por meio do IPv6 .................................................................................. 992
Fazer solicitações usando os AWS SDKs ........................................................................... 998
Fazer solicitações usando a API REST ............................................................................. 1024
Usar a CLI da AWS ............................................................................................................... 1033
Uso dos AWS SDKs .............................................................................................................. 1034
Especificar a versão da assinatura na autenticação de solicitações ....................................... 1035
Usar o AWS SDK para Java ........................................................................................... 1041
Usar o AWS SDK para .NET ........................................................................................... 1043
Usar o AWS SDK para PHP e executar exemplos do PHP .................................................. 1044
Usar o AWS SDK para Ruby versão 3 ............................................................................. 1045
Usar o AWS SDK para Python (Boto) ............................................................................... 1046
Usar os AWS Mobile SDKs para iOS e Android ................................................................. 1047
Usar a biblioteca JavaScript do AWS Amplify .................................................................... 1047
Usar o AWS SDK para JavaScript ................................................................................... 1047
Uso dos REST API ................................................................................................................ 1047
Roteamento de solicitação .............................................................................................. 1048
Tratamento de erros .............................................................................................................. 1052
A resposta de erro de REST ........................................................................................... 1052
A resposta de erro de SOAP .......................................................................................... 1053
Melhores práticas com relação a erros do Amazon S3 ........................................................ 1054

Versão da API 2006-03-01


viii
Amazon Simple Storage Service Guia do usuário

Referência ............................................................................................................................ 1055


Apêndice A: Usar a API SOAP ........................................................................................ 1055
Apêndice B: Autenticar solicitações (AWS Signature versão 2) ............................................. 1058
Otimizar a performance do Amazon S3 ............................................................................................ 1087
Diretrizes de desempenho ...................................................................................................... 1088
Avaliar o desempenho .................................................................................................... 1088
Dimensionar na horizontal .............................................................................................. 1088
Usar consulta na escala de bytes .................................................................................... 1088
Solicitações de repetição ................................................................................................ 1089
Combinar o Amazon S3 e o Amazon EC2 na mesma região ................................................ 1089
Usar o Transfer Acceleration para minimizar a latência ........................................................ 1089
Usar os AWS SDKs mais recentes .................................................................................. 1089
Padrões de design de desempenho ......................................................................................... 1090
Armazenar conteúdo acessado com frequência em cache ................................................... 1090
Tempo limite e repetição para aplicativos sensíveis à latência .............................................. 1090
Dimensionamento horizontal e paralelização de solicitações ................................................. 1091
Acelerar transferências de dados geograficamente dispersas .............................................. 1092
Uso do S3 no Outposts .................................................................................................................. 1093
Conceitos básicos do S3 no Outposts ...................................................................................... 1093
Pedir um Outpost .......................................................................................................... 1094
Configurar o S3 on Outposts ........................................................................................... 1094
Restrições e limitações ........................................................................................................... 1094
Especificações .............................................................................................................. 1095
Modelo de consistência de dados .................................................................................... 1095
Operações de API compatíveis ........................................................................................ 1096
Recursos não compatíveis do Amazon S3 ........................................................................ 1096
Restrições de rede ........................................................................................................ 1097
Usar o IAM com o S3 no Outposts .......................................................................................... 1097
ARNs para S3 no Outposts ............................................................................................. 1098
Acessar o S3 no Outposts ...................................................................................................... 1099
Como acessar recursos usando ARNs .............................................................................. 1099
Como acessar o S3 no Outposts usando um VPC .............................................................. 1101
Monitoramento do S3 on Outposts ........................................................................................... 1102
Gerenciamento da capacidade ........................................................................................ 1102
Logs do CloudTrail ........................................................................................................ 1102
Notificações de eventos do S3 no Outposts ....................................................................... 1102
Como gerenciar buckets e objetos do S3 no Outposts ................................................................ 1103
Uso do console ............................................................................................................. 1104
Usar a CLI da AWS ....................................................................................................... 1113
Usar o SDK para Java ................................................................................................... 1118
Solução de problemas .................................................................................................................... 1137
Solução de problemas do Amazon S3 por sintoma ..................................................................... 1137
Aumentos significativos em respostas HTTP 503 para solicitações para buckets com
versionamento habilitado ................................................................................................ 1137
Comportamento inesperado ao acessar buckets definidos com CORS ................................... 1138
Como obter os IDs da solicitação do Amazon S3 para o AWS Support .......................................... 1138
Usar o HTTP para obter IDs de solicitação ....................................................................... 1138
Usar um navegador da web para obter IDs de solicitação .................................................... 1139
Usar os AWS SDKs para obter IDs de solicitação .............................................................. 1139
Como usar a AWS CLI para obter IDs de solicitação .......................................................... 1141
Tópicos relacionados ............................................................................................................. 1141
Histórico do documento .................................................................................................................. 1142
Atualizações anteriores .......................................................................................................... 1150
Glossário da AWS ......................................................................................................................... 1167

Versão da API 2006-03-01


ix
Amazon Simple Storage Service Guia do usuário
Como eu faço?

O que é o Amazon S3?


O Amazon Simple Storage Service (Amazon S3) é armazenamento para a Internet. Ele foi projetado para
facilitar a computação de escala na web para os desenvolvedores.

O Amazon S3 tem uma interface de serviços da web simples que você pode usar para armazenar e
recuperar qualquer quantidade de dados, a qualquer momento, em qualquer lugar da web. Ela concede
acesso a todos os desenvolvedores para a mesma infraestrutura altamente dimensionável, confiável,
segura, rápida e econômica que a Amazon utiliza para rodar a sua própria rede global de sites da web. O
serviço visa maximizar os benefícios de escala e poder passar esses benefícios para os desenvolvedores.

Esta introdução ao Amazon Simple Storage Service (Amazon S3) fornece um resumo detalhado desse
serviço da Web. Depois de ler esta seção, você deverá ter uma boa ideia do que ele oferece e de como ele
pode ser ajustado em sua empresa.

Este guia descreve como você envia solicitações para criar buckets, armazenar e recuperar objetos e
gerenciar permissões em seus recursos. O guia também descreve o controle de acesso e o processo de
autenticação. O controle de acesso define quem pode acessar objetos e buckets no Amazon S3 e o tipo de
acesso (por exemplo, LEITURA e GRAVAÇÃO). O processo de autenticação verifica a identidade de um
usuário que está tentando acessar o Amazon Web Services (AWS).

Tópicos
• Como eu faço? (p. 1)
• Vantagens de usar o Amazon S3 (p. 2)
• Conceitos do Amazon S3 (p. 2)
• Recursos do Amazon S3 (p. 6)
• Interfaces de programação de aplicações (API) do Amazon S3 (p. 8)
• Pagar pelo Amazon S3 (p. 9)
• Serviços relacionados (p. 9)

Como eu faço?
Informações Seções relevantes

Visão geral e definição de preço do Amazon S3


produto

Como faço para trabalhar com buckets? Visão geral dos buckets (p. 26)

Como faço para trabalhar com pontos Gerenciamento de acesso a dados com pontos de acesso do
de acesso? Amazon S3 (p. 480)

Como faço para trabalhar com objetos? Visão geral de objetos Amazon S3 (p. 62)

Como faço solicitações? Fazer solicitações (p. 990)

Como faço para gerenciar o acesso aos Identity and Access Management no Amazon S3 (p. 252)
recursos?

Versão da API 2006-03-01


1
Amazon Simple Storage Service Guia do usuário
Vantagens de usar o Amazon S3

Vantagens de usar o Amazon S3


O Amazon S3 foi desenvolvido intencionalmente com um conjunto mínimo de recursos com foco em
simplicidade e robustez. Veja a seguir algumas das vantagens de usar o Amazon S3:

• Criar buckets — crie e dê um nome a um bucket que armazena dados. Os buckets são contêineres
fundamentais no Amazon S3 para armazenamento de dados físico.
• Armazenar dados — armazene uma quantidade infinita de dados em um bucket. Carregue quantos
objetos desejar em um bucket do Amazon S3. Cada objeto pode conter até 5 TB de dados. Cada objeto
é armazenado e recuperado usando uma chave exclusiva atribuída pelo desenvolvedor.
• Fazer download de dados — faça download de seus dados ou permita que outras pessoas façam. Faça
download de seus dados a qualquer momento ou permita que outros façam o mesmo.
• Permissões – conceda ou negue permissões a outras pessoas que desejam carregar ou baixar dados no
bucket do Amazon S3. Conceda permissões para upload ou para download a três tipos de usuário. Os
mecanismos de autenticação podem ajudar a manter os dados protegidos contra acesso não autorizado.
• Interfaces padrão — use as interfaces REST e SOAP baseadas em padrões desenvolvidas para
funcionar com qualquer toolkit de desenvolvimento da Internet.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos
recursos do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a
API REST ou os AWS SDKs.

Conceitos do Amazon S3
Esta seção descreve os conceitos básicos e a terminologia que você precisa entender para usar o Amazon
S3 de maneira efetiva. Eles são apresentados na ordem em que você muito provavelmente os encontrará.

Tópicos
• Buckets (p. 2)
• Objetos (p. 3)
• Chaves (p. 3)
• Regiões (p. 3)
• Modelo de consistência de dados do Amazon S3 (p. 3)

Buckets
Um bucket é um contêiner para objetos armazenados no Amazon S3. Cada objeto está contido em
um bucket. Por exemplo, se o objeto chamado photos/puppy.jpg estiver armazenado no bucket
awsexamplebucket1 da região Oeste dos EUA (Oregon), ele poderá ser endereçado usando o URL
https://awsexamplebucket1.s3.us-west-2.amazonaws.com/photos/puppy.jpg.

Buckets atendem a várias finalidades:

• Eles organizam o namespace do Amazon S3 no nível mais elevado.


• Identificam a conta responsável por alterações no armazenamento e na transferência de dados.
• Exercem uma função no controle do acesso.
• Servem como a unidade de agregação para relatório de uso.

Versão da API 2006-03-01


2
Amazon Simple Storage Service Guia do usuário
Objetos

É possível configurar os buckets para que sejam criados em uma região específica da AWS. Para obter
mais informações, consulte Acessar um bucket (p. 36). Você também pode configurar um bucket para
que, sempre que um objeto for adicionado, o Amazon S3 gere um ID exclusivo de versão e o atribua ao
objeto. Para obter mais informações, consulte Usar versionamento (p. 516).

Para obter mais informações sobre buckets, consulte Visão geral dos buckets (p. 26).

Objetos
Os objetos são as entidades fundamentais armazenadas no Amazon S3. Os objetos consistem em
metadados e dados de objeto. A porção de dados é opaca para o Amazon S3. Os metadados são um
conjunto de pares de nome e valor que descrevem o objeto. Eles incluem alguns metadados padrão, como
a data da última modificação, e metadados HTTP padrão, como Content-Type. Você também pode
especificar metadados personalizados no momento em que o objeto é armazenado.

Um objeto é identificado exclusivamente em um bucket por uma chave (nome) e um ID de versão. Para
obter mais informações, consulte Chaves (p. 3) e Usar versionamento (p. 516).

Chaves
Uma chave é um identificador exclusivo de um objeto em um bucket. Cada objeto em um bucket
tem exatamente uma chave. A combinação de um bucket, uma chave e um ID de versão identificam
exclusivamente cada objeto. Portanto, é possível pensar no Amazon S3 como um mapa de
dados básico entre "bucket + chave + versão" e o objeto em si. Cada objeto no Amazon S3 pode
ser endereçado exclusivamente por meio da combinação do endpoint de serviço da web, do
nome de bucket, da chave e, opcionalmente, de uma versão. Por exemplo, no URL https://
doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl, "doc" é o nome do bucket e "2006-03-01/
AmazonS3.wsdl" é a chave.

Para obter mais informações sobre chaves de objeto, consulte Criar nomes de chave de objeto (p. 64).

Regiões
Você pode escolher a região geográfica da AWS onde o Amazon S3 armazenará os buckets criados.
É possível escolher uma região para otimizar a latência, minimizar os custos ou atender a requisitos
regulatórios. Os objetos armazenados em uma região nunca saem dela, a não ser que você os transfira
explicitamente para outra região. Por exemplo, os objetos armazenados na região da UE (Irlanda) nunca
saem dela.
Note

Só é possível acessar o Amazon S3 e seus recursos em regiões da AWS que estão habilitadas
para sua conta.

Para obter uma lista de regiões do Amazon S3 e endpoints, consulte Regiões e endpoints na Referência
geral da AWS.

Modelo de consistência de dados do Amazon S3


O Amazon S3 oferece uma forte consistência de leitura após gravação para PUTs e DELETEs de objetos
no bucket do Amazon S3 em todas as regiões da AWS. Isso se aplica a ambas as gravações em novos
objetos, bem como PUTs que sobrescrevem objetos existentes e DELETEs. Além disso, as operações de
leitura no Amazon S3 Select, Listas de controle de acesso do Amazon S3, Tags de objeto do Amazon S3 e
metadados de objeto (por exemplo, objeto HEAD) são fortemente consistentes.

Versão da API 2006-03-01


3
Amazon Simple Storage Service Guia do usuário
Modelo de consistência de dados do Amazon S3

As atualizações em uma única chave são atômicas. Por exemplo, se você executar PUT em uma
chave existente de um thread e executar um GET na mesma chave a partir de um segundo thread
simultaneamente, você obterá os dados antigos ou os novos dados, mas nunca dados parciais ou
corrompidos.

O Amazon S3 atinge alta disponibilidade replicando dados entre vários servidores nos datacenters da
AWS. Se uma solicitação PUT for bem-sucedida, os dados serão armazenados com segurança. Qualquer
leitura (GET ou LIST) iniciada após o recebimento de uma resposta PUT bem-sucedida retornará os dados
escritos pelo PUT. Veja alguns exemplos desse comportamento:

• Um processo grava um novo objeto no Amazon S3 e imediatamente lista as chaves em seu bucket. O
novo objeto aparecerá na lista.
• Um processo substitui um objeto existente e imediatamente tenta lê-lo. O Amazon S3 retornará os novos
dados.
• Um processo exclui um objeto existente e imediatamente tenta lê-lo. O Amazon S3 não retornará dados
conforme o objeto foi excluído.
• Um processo exclui um objeto existente e imediatamente lista as chaves em seu bucket. O objeto não
aparecerá na listagem.

Note

• O Amazon S3 não oferece suporte ao bloqueio de objetos para escritores simultâneos. Se


duas solicitações PUT forem realizadas simultaneamente na mesma chave, a solicitação com
o time stamp mais recente será a escolhida. Se isso for um problema, você precisará criar um
mecanismo de bloqueio de objetos em seu aplicativo.
• As atualizações são baseadas em chave. Não há possibilidade de realizar atualizações
atômicas entre chaves. Por exemplo, você não pode tornar a atualização de uma chave
dependente da atualização de outra chave a menos que você desenvolva essa funcionalidade
em seu aplicativo.

As configurações de bucket têm um modelo de consistência eventual. Especificamente:

• Por exemplo, se você excluir um bucket e listar imediatamente todos os buckets, o bucket excluído ainda
poderá ser exibido na lista.
• Se você ativar o controle de versão em um bucket pela primeira vez, pode levar um curto período de
tempo para que a alteração seja totalmente propagada. Recomendamos que você aguarde 15 minutos
após ativar o controle de versão antes de emitir operações de gravação (PUT ou DELETE) em objetos
no bucket.

Aplicativos simultâneos
Esta seção fornece exemplos de comportamento a serem esperados do Amazon S3 quando vários clientes
estão gravando nos mesmos itens.

Neste exemplo, W1 (gravação 1) e W2 (gravação 2) são concluídas antes do início de R1 (leitura 1) e R2


(leitura 2). Como o S3 é fortemente consistente, R1 e R2 retornam color = ruby.

Versão da API 2006-03-01


4
Amazon Simple Storage Service Guia do usuário
Modelo de consistência de dados do Amazon S3

No próximo exemplo, a W2 não é encerrada antes do início da R1. Portanto, R1 pode retornar color =
ruby ou color = garnet. No entanto, desde que W1 e W2 terminam antes do início do R2, R2 retorna
color = garnet.

No último exemplo, o W2 começa antes que o W1 tenha recebido um reconhecimento. Portanto, essas
gravações são consideradas simultâneas. O Amazon S3 usa internamente a semântica do último escritor
para determinar qual gravação tem precedência. No entanto, a ordem em que o Amazon S3 recebe as
solicitações e a ordem em que os aplicativos recebem confirmações não podem ser previstos devido a
fatores como latência de rede. Por exemplo, o W2 pode ser iniciado por uma instância do Amazon EC2 na
mesma região, enquanto o W1 pode ser iniciado por um host que está mais longe. A melhor maneira de
determinar o valor final é realizar uma leitura após ambas as gravações terem sido confirmadas.

Versão da API 2006-03-01


5
Amazon Simple Storage Service Guia do usuário
Recursos do Amazon S3

Recursos do Amazon S3
Esta seção descreve recursos importantes do Amazon S3.

Tópicos
• Classes de armazenamento (p. 6)
• Políticas de buckets (p. 6)
• AWS Identity and Access Management (p. 7)
• Listas de controle de acesso (p. 8)
• Versionamento (p. 8)
• Operações (p. 8)

Classes de armazenamento
O Amazon S3 oferece uma ampla variedade de classes de armazenamento para diferentes casos de uso.
Elas incluem o Amazon S3 STANDARD para armazenamento de finalidades gerais para dados acessados
frequentemente, Amazon S3 STANDARD_IA para dados de longa duração, mas acessados com menos
frequência, e S3 GLACIER para arquivamento a longo prazo.

Para obter mais informações, consulte Uso de classes de armazenamento do Amazon S3 (p. 563).

Políticas de buckets
As políticas de bucket fornecem controle de acesso centralizado aos buckets e objetos com base em
várias condições, incluindo operações do Amazon S3, solicitantes, recursos e aspectos da solicitação
(por exemplo, endereço IP). As políticas são expressas na linguagem de políticas de acesso e permitem
gerenciamento centralizado de permissões. As permissões anexadas a um bucket se aplicam a todos os
objetos do bucket que pertencem à conta de proprietário do bucket.

Usuários individuais e empresas podem usar políticas de bucket. Quando as empresas se registram no
Amazon S3, elas criam uma conta. Depois disso, a empresa se torna um sinônimo da conta. As contas são
financeiramente responsáveis pelos recursos da AWS que elas (e seus funcionários) criam. As contas têm
a capacidade de conceder permissões às políticas de buckets e de atribuir permissões aos funcionários

Versão da API 2006-03-01


6
Amazon Simple Storage Service Guia do usuário
AWS Identity and Access Management

com base em uma variedade de condições. Por exemplo, uma conta pode criar uma política que dá a um
usuário acesso de gravação:

• Para um bucket específico do S3


• Na rede corporativa de uma conta
• Durante o horário comercial

Uma conta pode conceder a um usuário acesso limitado de leitura e gravação, mas permitir que outro
crie e exclua buckets também. Uma conta pode permitir que vários escritórios locais armazenem seus
relatórios diários em um único bucket. Ela pode permitir que cada escritório grave apenas um determinado
conjunto de nomes (por exemplo, "Nevada/*" ou "Utah/*") e apenas do intervalo de endereços IP do
escritório.

Ao contrário das listas de controle de acesso (descritas posteriormente), que podem adicionar (conceder)
permissões somente em objetos individuais, as políticas podem adicionar ou negar permissões em
todos os objetos (ou em um subconjunto) em um bucket. Com uma solicitação, uma conta pode definir
as permissões de qualquer número de objetos em um bucket. Uma conta pode usar caracteres curinga
(semelhantes a operadores de expressão regulares) nos nomes de recursos da Amazon (ARNs) e outros
valores. Depois disso, a conta pode controlar o acesso a grupos de objetos que começam com um prefixo
comum ou terminam com uma extensão específica, como .html.

Só o proprietário do bucket tem permissão para associar uma política a um bucket. As políticas (escritas na
linguagem de políticas de acesso) permitem ou negam solicitações com base em:

• Operações em buckets do Amazon S3 (como PUT ?acl) e operações em objetos (como PUT Object
ou GET Object)
• Solicitante
• Condições especificadas na política

Uma conta pode controlar o acesso com base em operações específicas do Amazon S3, como
GetObject, GetObjectVersion, DeleteObject ou DeleteBucket.

As condições podem ser aspectos, como endereços IP, intervalos de endereços IP em notação CIDR,
datas, agentes de usuário, referenciador HTTP e transportes (HTTP e HTTPS).

Para obter mais informações, consulte Políticas de bucket e políticas de usuário (p. 268).

AWS Identity and Access Management


Você pode usar o AWS Identity and Access Management (IAM) para gerenciar o acesso aos recursos do
Amazon S3.

Por exemplo, você pode usar o IAM com o Amazon S3 para controlar o tipo de acesso de um usuário ou
grupo de usuários a partes específicas do bucket do Amazon S3 que sua conta da AWS possui.

Para obter mais informações sobre o IAM, consulte o seguinte:

• AWS Identity and Access Management (IAM)


• Conceitos básicos
• Guia do usuário do IAM

Versão da API 2006-03-01


7
Amazon Simple Storage Service Guia do usuário
Listas de controle de acesso

Listas de controle de acesso


É possível controlar o acesso a cada um de seus buckets e objetos usando uma lista de controle
de acesso (ACL). Para obter mais informações, consulte Visão geral da lista de controle de acesso
(ACL) (p. 440).

Versionamento
É possível usar o versionamento para manter diversas versões de um objeto no mesmo bucket. Para obter
mais informações, consulte Usando o controle de versão em buckets do S3 (p. 516).

Operações
Veja a seguir as operações mais comuns que você executará por meio da API.

Operações comuns

• Criar um bucket — crie e dê um nome ao seu próprio bucket para armazenar seus objetos.
• Gravar um objeto — armazene dados criando ou substituindo um objeto. Ao gravar um objeto, você
especifica uma chave exclusiva no namespace de seu bucket. Essa também é uma boa hora para
especificar qualquer controle de acesso desejado no objeto.
• Ler um objeto — leia os dados de volta. Você pode baixar os dados via HTTP ou BitTorrent.
• Excluir um objeto — exclua alguns de seus dados.
• Listar chaves — liste as chaves contidas em um de seus buckets. Você pode filtrar a lista de chaves com
base em um prefixo.

Essas operações e todas as outras funcionalidades são descritas em detalhes durante todo este guia.

Interfaces de programação de aplicações (API) do


Amazon S3
A arquitetura do Amazon S3 foi desenvolvida para ser neutra em termos de linguagem de programação,
usando as interfaces compatíveis da AWS para armazenar e recuperar objetos.

O Amazon S3 fornece uma interface REST e uma interface SOAP. Elas são semelhantes, mas há algumas
diferenças. Por exemplo, na interface REST, os metadados são retornados em cabeçalhos HTTP. Como
só oferecemos suporte a solicitações HTTP de até 4 KB (sem incluir o corpo), a quantidade de metadados
que você pode fornecer é restrita.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

A interface REST
A API REST é uma interface HTTP para o Amazon S3. Usando REST, você usa solicitações HTTP padrão
criar, buscar e excluir bucket e objetos.

Você pode usar qualquer toolkit compatível com HTTP para usar a API REST. Você pode até usar um
navegador para buscar objetos, desde que eles possam ser lidos anonimamente.

Versão da API 2006-03-01


8
Amazon Simple Storage Service Guia do usuário
A interface SOAP

A API REST usa os cabeçalhos padrão e os códigos de status HTTP, para que os navegadores e os
toolkits padrão funcionem como esperado. Em algumas áreas, adicionamos funcionalidade ao HTTP (por
exemplo, adicionamos cabeçalhos para oferecer suporte ao controle de acesso). Nesses casos, fizemos o
melhor para adicionar nova funcionalidade de uma forma que correspondesse ao estilo de uso padrão do
HTTP.

A interface SOAP
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

A API SOAP fornece uma interface SOAP 1.1 usando a codificação literal de documentos. A maneira
mais comum de usar o SOAP é fazer download do WSDL (consulte https://doc.s3.amazonaws.com/
2006-03-01/AmazonS3.wsdl), usar um toolkit do SOAP, como o Apache Axis ou o Microsoft .NET, para
criar associações e, depois, escrever código que use as associações para chamar o Amazon S3.

Pagar pelo Amazon S3


A definição de preço para o Amazon S3 foi desenvolvida para que você não precise planejar para os
requisitos de armazenamento da aplicação. A maioria dos provedores de armazenamento força você a
comprar uma quantidade predeterminada de armazenamento e capacidade de transferência de rede: Se
você exceder essa capacidade, o serviço é desligado e você é cobrado por altas taxas excedentes. Se
você não exceder essa capacidade, você paga como se tivesse usado tudo.

O Amazon S3 cobra apenas pelo que você realmente usa, sem taxas ocultas e nenhuma taxa excedente.
Isso fornece aos desenvolvedores um serviço de custo variável que pode aumentar com seus negócios e
ao mesmo tempo usufruir das vantagens de custos de infraestrutura da AWS.

Antes de armazenar qualquer coisa no Amazon S3, é necessário se registrar no serviço e fornecer um
modo de pagamento que será cobrado no final de cada mês. Não há tarifas de configuração para começar
a usar o serviço. No final do mês, seu modo de pagamento é automaticamente cobrado pelo uso daquele
mês.

Para obter informações sobre como pagar pelo armazenamento do Amazon S3, consulte Definição de
preço do Amazon S3.

Serviços relacionados
Depois de carregar os dados no Amazon S3, você pode usá-los com outros serviços da AWS. Veja a
seguir os serviços que podem ser usados com mais frequência:

• Amazon Elastic Compute Cloud (Amazon EC2) — este serviço fornece recursos de computação virtual
na nuvem. Para obter mais informações, consulte a página de detalhes do produto do Amazon EC2.
• Amazon EMR — este serviço permite que empresas, pesquisadores, analistas de dados e
desenvolvedores processem de maneira fácil e econômica grandes quantidades de dados. Ele usa
uma estrutura de trabalho Hadoop hospedada que é executada na infraestrutura de escala da Web do
Amazon EC2 e do Amazon S3. Para obter mais informações, consulte a página de detalhes do produto
do Amazon EMR.
• AWS Snowball — este é um serviço que acelera a transferência de grandes volumes de dados para
e da AWS usando dispositivos de armazenamento físico, sem a necessidade de passar pela Internet.

Versão da API 2006-03-01


9
Amazon Simple Storage Service Guia do usuário
Serviços relacionados

Cada tipo de dispositivo do AWS Snowball pode transportar dados a velocidades mais rápidas do que
a da Internet. Esse transporte é feito enviando os dados nos dispositivos por meio de uma operadora
regional. Para obter mais informações, consulte a página de detalhes do produto do AWS Snowball.

Versão da API 2006-03-01


10
Amazon Simple Storage Service Guia do usuário
Configuração

Conceitos básicos do Amazon S3


Você pode começar a usar o Amazon S3 trabalhando com buckets 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 AWS Free Tier (Nível gratuito da AWS).

Pré-requisitos

Antes de começar, confirme que concluiu as etapas em Pré-requisito: Configuração do Amazon


S3 (p. 11).

Tópicos
• Pré-requisito: Configuração do Amazon S3 (p. 11)
• Etapa 1: criar seu primeiro bucket do S3 (p. 14)
• Etapa 2: fazer upload de um objeto para o seu bucket (p. 15)
• Etapa 3: fazer download de um objeto (p. 15)
• Etapa 4: copiar seu objeto para uma pasta (p. 16)
• Etapa 5: excluir seus objetos e bucket (p. 16)
• Para onde ir agora? (p. 18)

Pré-requisito: Configuração do Amazon S3


Quando você se cadastra na AWS, sua conta da AWS é cadastrada automaticamente em todos os
serviços da AWS, inclusive no Amazon S3. Você será cobrado apenas pelos serviços que usar.

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 AWS Free Tier (Nível gratuito da AWS).

Para configurar o Amazon S3, use as etapas nas seções a seguir.

Quando você se inscreve na AWS e configura o Amazon S3, você pode, se quiser, alterar o idioma de
exibição no Console de Gerenciamento da AWS. Para obter mais informações, consulte Alterar o idioma
do Console de Gerenciamento da AWS no Guia de conceitos básicos do Console de Gerenciamento da
AWS.

Tópicos
• Cadastre-se na AWS (p. 12)
• Criar um usuário do IAM (p. 12)

Versão da API 2006-03-01


11
Amazon Simple Storage Service Guia do usuário
Cadastre-se na AWS

• Fazer login como usuário do IAM (p. 13)

Cadastre-se na AWS
Se você ainda não tiver uma conta da AWS, siga estas etapas para criar uma.

Para se cadastrar em uma conta AWS

1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga as instruções online.

Parte do procedimento de cadastro envolve uma chamada telefônica e a digitação de um código de


verificação usando o teclado do telefone.

A AWS envia um e-mail de confirmação depois que o processo de inscrição é concluído. A qualquer
momento, é possível visualizar as atividades da conta atual e gerenciar sua conta acessando https://
aws.amazon.com/ e selecionando My Account (Minha conta).

Criar um usuário do IAM


Quando você cria uma conta da Amazon Web Services (AWS), você começa com uma única identidade
de login. Essa identidade tem acesso completo a todos os serviços e recursos da AWS da conta. Essa
identidade é chamada de usuário raiz da conta da AWS. Ao fazer login, insira o endereço de e-mail e a
senha usados para criar a conta.
Important

É altamente recomendável que você não use o usuário raiz nas tarefas diárias, nem mesmo nas
administrativas. Em vez disso, siga as práticas recomendadas para o uso do usuário raiz somente
a fim de criar seu primeiro usuário do IAM. Depois, armazene as credenciais do usuário raiz
com segurança e use-as para executar somente algumas tarefas de gerenciamento de contas e
de serviços. Para exibir as tarefas que exigem que você faça login como usuário raiz, consulte
Tarefas que exigem credenciais do usuário raiz.

Se você se cadastrou na AWS, mas não criou um usuário do IAM próprio, siga estas etapas.

Para criar um usuário administrador para você mesmo e adicionar o usuário a um grupo de
administradores (console)

1. Faça login no console do IAM como o proprietário da conta escolhendo Root user (Usuário raiz) e
inserindo seu endereço de e-mail da conta da AWS. Na próxima página, insira sua senha.
Note

Recomendamos seguir as práticas recomendadas para utilizar o usuário do IAM


Administrator a seguir e armazenar as credenciais do usuário raiz com segurança.
Cadastre-se como o usuário raiz apenas para executar algumas tarefas de gerenciamento de
serviços e contas.
2. No painel de navegação, escolha Usuários e depois Adicionar usuário.
3. Em User name (Nome do usuário), digite Administrator.
4. Marque a caixa de seleção ao lado de AWS Management Console access (Acesso ao Console de
Gerenciamento da AWS). Então, selecione Custom password (Senha personalizada), e insira sua
nova senha na caixa de texto.
5. (Opcional) Por padrão, a AWS exige que o novo usuário crie uma senha ao fazer login pela primeira
vez. Você pode desmarcar a caixa de seleção próxima de User must create a new password at next

Versão da API 2006-03-01


12
Amazon Simple Storage Service Guia do usuário
Fazer login como usuário do IAM

sign-in (O usuário deve criar uma senha no próximo login) para permitir que o novo usuário redefina a
senha depois de fazer login.
6. Escolha Próximo: Permissões.
7. Em Set permissions (Conceder permissões), escolha Add user to group (Adicionar usuário ao grupo).
8. Escolha Create group (Criar grupo).
9. Na caixa de diálogo Create group (Criar grupo), em Group name (Nome do grupo), digite
Administrators.
10. Escolha Filter policies (Filtrar políticas) e selecione AWS managed-job function (Função de trabalho
gerenciada pela AWS) para filtrar o conteúdo de tabelas.
11. Na lista de políticas, marque a caixa de seleção AdministratorAccess. A seguir escolha Criar grupo.
Note

Ative acesso do usuário e da função do IAM ao Faturamento para poder usar as permissões
de AdministratorAccess para acessar o console de Gerenciamento de custos e
faturamento da AWS. Para fazer isso, siga as instruções na etapa 1 do tutorial sobre como
delegar acesso ao console de faturamento.
12. Suporte a lista de grupos, selecione a caixa de seleção para seu novo grupo. Escolha Refresh
(Atualizar) caso necessário, para ver o grupo na lista.
13. Escolha Next: Tags (Próximo: tags).
14. (Opcional) Adicione metadados ao usuário anexando tags como pares de chave-valor. Para obter
mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia do usuário
do IAM.
15. Escolha Next: Review (Próximo: Análise) para ver uma lista de associações de grupos a serem
adicionadas ao novo usuário. Quando você estiver pronto para continuar, selecione Criar usuário.

É possível usar esse mesmo processo para criar mais grupos e usuários e conceder aos usuários acesso
aos recursos da conta da AWS. Para saber como usar políticas para restringir as permissões de usuário a
recursos específicos da AWS, consulte Gerenciamento de acesso e Políticas de exemplo.

Fazer login como usuário do IAM


Depois de criar um usuário do IAM, você pode fazer login na AWS com seu nome de usuário e senha do
IAM.

Antes de fazer login como usuário do IAM, você pode verificar o link de login para usuários do IAM no
console do IAM. No painel do IAM, no IAM users sign-in link (link de login de usuários do IAM), você pode
ver o link de login da sua conta da AWS. O URL do link de login contém o ID da sua conta da AWS sem
traços (-).

Se você não quiser que o URL do link de login contenha o ID da sua conta da AWS, é possível criar um
alias da conta. Para obter mais informações, consulte Criação, exclusão e listagem de um alias de conta
da AWS no Guia do usuário do IAM.

Como fazer login como usuário da AWS

1. Saia do Console de Gerenciamento da AWS.


2. Insira link de login.

Seu link de login inclui seu ID de conta da AWS (sem traços) ou seu alias de conta da AWS:

https://aws_account_id_or_alias.signin.aws.amazon.com/console

3. Insira o nome e a senha de usuário do IAM que você acabou de criar.

Versão da API 2006-03-01


13
Amazon Simple Storage Service Guia do usuário
Etapa 1: Criar um bucket

Quando você está conectado, a barra de navegação exibe "your_user_name @


your_aws_account_id".

Etapa 1: criar seu primeiro bucket do S3


Depois de se inscrever na AWS, você estará pronto para criar um bucket no Amazon S3 usando o Console
de Gerenciamento da AWS. Cada objeto no Amazon S3 é armazenado em um bucket. Antes de poder
armazenar dados no Amazon S3, você deve criar um bucket.
Note

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 usando a interface de linha de comando da AWS, consulte create-bucket na
Referência de comando da AWS CLI.

Para criar um bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Selecione Create bucket (Criar bucket).

A página Create bucket (Criar bucket) é aberta.


3. Em Bucket name (Nome do bucket), insira um nome compatível com o DNS para seu bucket.

O nome do bucket deve:

• Seja exclusivo em todo o Amazon S3.


• Ter entre 3 e 63 caracteres.
• Não contém caracteres maiúsculos.
• Começar com uma letra minúscula ou um número.

Depois de criado o bucket, você não pode mudar seu nome. Para obter informações sobre nomeação
de buckets, consulte Regras de nomeação de bucket (p. 30).
Important

Evite incluir informações confidenciais, como números de conta, no nome do bucket. O nome
do bucket é visível nos URLs que apontam para os objetos no bucket.
4. Em Region (Região), escolha a Região da AWS onde deseja que o bucket resida.

Escolha uma região que esteja geograficamente próxima de você para minimizar a latência e os
custos e para atender aos requisitos normativos. 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 das regiões da
AWS do Amazon S3, consulte Endpoints de serviço da AWS na Referência geral do Amazon Web
Services.
5. Em Bucket settings for Block Public Access (Configurações de bucket para o Bloqueio de acesso
público), mantenha os valores predefinidos.

Por padrão, o Amazon S3 bloqueia todo o acesso público aos seus buckets. Recomendamos deixar
todas as configurações de Bloqueio de acesso público habilitadas. Para obter mais informações sobre

Versão da API 2006-03-01


14
Amazon Simple Storage Service Guia do usuário
Etapa 2: Fazer upload de um objeto

como bloquear o acesso público, consulte Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469).
6. Selecione Create bucket (Criar bucket).

Você criou um bucket no Amazon S3.

Próxima etapa

Para adicionar um objeto ao bucket, consulte Etapa 2: fazer upload de um objeto para o seu
bucket (p. 15).

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. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Buckets, escolha o nome do bucket no qual você deseja fazer upload do objeto.
3. Na guia Objects (Objetos) do bucket, escolha Upload.
4. Em Files and folders (Arquivos e pastas), escolha Add files (Adicionar arquivos).
5. Escolha um arquivo para carregar e, em seguida, escolha Open (Abrir).
6. Escolha Upload (Fazer upload).

O upload de um objeto no bucket foi realizado corretamente.

Próxima etapa

Para visualizar o objeto, consulte Etapa 3: fazer download de um objeto (p. 15).

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.

Para fazer download de um objeto em um bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Buckets, escolha o nome do bucket que você criou.
3. Na lista Objects (Objetos), escolha o nome do objeto do qual fez upload.

A visão geral do objeto é aberta.


4. Na guia Details (Detalhes) revise as informações sobre seu objeto.
5. Para fazer download do objeto para o computador, escolha Object actions (Ações de objeto) e
Download.

Versão da API 2006-03-01


15
Amazon Simple Storage Service Guia do usuário
Etapa 4: copiar um objeto

Você baixou seu objeto com êxito.

Próxima etapa

Para copiar e colar seu objeto no Amazon S3, consulte Etapa 4: copiar seu objeto para uma
pasta (p. 16).

Etapa 4: copiar seu objeto para uma pasta


Você já adicionou um objeto a um bucket e fez download do objeto. Agora, você cria uma pasta e copia o
objeto e o cola na pasta.

Como copiar um objeto em uma pasta

1. Na lista Buckets, escolha o nome do bucket.


2. Selecione Create folder (Criar pasta) e configure uma nova pasta:

a. Insira um nome para a pasta (por exemplo, favorite-pics).


b. Para a configuração de criptografia de pasta, selecione None (Nenhum).
c. Escolha Save (Salvar).
3. Navegue até o bucket ou pasta do Amazon S3 que contém os objetos que você deseja copiar.
4. Marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja copiar.
5. Escolha Actions (Ações) e escolha Copy (Copiar) na lista de opções exibida.

Como alternativa, escolha Copy (Copiar) nas opções no canto superior direito.
6. Escolha a pasta de destino:

a. Escolha Browse S3 (Navegar no S3).


b. Escolha o botão de opção à esquerda do nome da pasta.

Para navegar em uma pasta e escolher uma subpasta como seu destino, escolha o nome da
pasta.
c. Escolha Choose destination (Escolher destino).

O caminho para a pasta de destino aparece na caixa Destination (Destino) . Em Destination (Destino),
você pode, também, inserir o caminho de destino, por exemplo, s3://bucket-name/folder-name/.
7. No canto inferior direito, escolha Copy (Copiar).

O Amazon S3 move seus objetos para a pasta de destino.

Próxima etapa

Para excluir um objeto e um bucket no Amazon S3, consulte Etapa 5: excluir seus objetos e
bucket (p. 16).

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.

Versão da API 2006-03-01


16
Amazon Simple Storage Service Guia do usuário
Esvaziar o bucket

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.

Tópicos
• Esvaziar o bucket (p. 17)
• Excluir um objeto (p. 17)
• Excluir bucket (p. 17)

Esvaziar o bucket
Se pretender excluir seu bucket, primeiro você deve esvaziar seu bucket, o que exclui todos os objetos
contidos nele.

Para esvaziar um bucket

1. Na lista Buckets, selecione o bucket que deseja esvaziar e escolha Empty (Vazio).
2. Para confirmar que deseja esvaziar o bucket e excluir todos os objetos contidos nele, em Empty
bucket (Esvaziar bucket), insira o nome do bucket.
Important

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.
3. Para esvaziar o bucket e excluir todos os objetos contidos nele, escolha Empty (Esvaziar).

Uma página Empty bucket :Status (Esvaziar bucket: status) é aberta, para que você possa revisar um
resumo de exclusões de objetos com falha e bem-sucedidas.
4. Para retornar à sua lista de buckets, escolha Exit (Sair).

Excluir um objeto
Se quiser escolher quais objetos excluir sem esvaziar todos os objetos do bucket, você pode excluir um
objeto.

1. Na lista Buckets, escolha o nome do bucket do qual deseja excluir um objeto.


2. Marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja excluir.
3. Escolha Actions (Ações) e escolha Delete (Excluir) na lista de opções exibida.

Como alternativa, escolha Delete (Excluir) nas opções no canto superior direito.
4. Digite delete se solicitado para confirmar que você deseja excluir esses objetos.
5. Escolha Delete objects (Excluir objetos) no canto inferior direito e o Amazon S3 excluirá os objetos
especificados.

Excluir bucket
Depois de esvaziar o bucket ou excluir todos os objetos dele, você poderá excluir o bucket.

Versão da API 2006-03-01


17
Amazon Simple Storage Service Guia do usuário
Para onde ir agora?

1. Para excluir um bucket, selecione o bucket na lista Buckets.


2. Escolha Delete (Excluir).
3. Para confirmar a exclusão, insira o nome do bucket em Delete bucket (Excluir bucket).
Important

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.
4. Para excluir seu bucket, escolha Delete bucket (Excluir bucket).

Para onde ir agora?


Nos exemplos anteriores, você aprendeu a executar alguma tarefas básicas no Amazon S3.

Os seguintes tópicos explicam várias maneiras com as quais você obtém um entendimento mais profundo
do Amazon S3 para que você possa implementá-lo em suas aplicações.

Tópicos
• Cenários de uso comuns (p. 18)
• Considerações daqui para frente (p. 18)
• Recursos avançados do Amazon S3 (p. 19)
• Melhores práticas de controle de acesso (p. 20)
• Recursos de desenvolvimento (p. 24)

Cenários de uso comuns


O site Soluções da AWS lista várias formas de utilização do Amazon S3. A lista a seguir resume algumas
dessas maneiras.

• Backup e armazenamento – forneça backup de dados e serviços de armazenamento para outros.


• Hospedagem de aplicações – forneça serviços para implantação, instalação e gerenciamento de
aplicações web.
• Hospedagem de mídia – crie uma infraestrutura redundante, escalável e altamente disponível para
hospedar carregamentos e downloads de vídeos, fotos ou músicas.
• Entrega de software – hospede suas aplicações de software para download pelos clientes.

Para obter informações, consulte Soluções da AWS.

Considerações daqui para frente


Esta seção apresenta tópicos que você deve considerar antes de executar seu próprio produto do Amazon
S3.

Tópicos
• Conta e credenciais de segurança da AWS (p. 19)
• Segurança (p. 19)
• Integração com a AWS (p. 19)
• Definição de preços (p. 19)

Versão da API 2006-03-01


18
Amazon Simple Storage Service Guia do usuário
Recursos avançados

Conta e credenciais de segurança da AWS


Quando se cadastrou no serviço, você criou uma conta da AWS usando um endereço de e-mail e uma
senha. Essas são as credenciais de usuário raiz da conta da AWS. Como prática recomendada, você
não deve usar as credenciais de usuário raiz para acessar a AWS. Nem deve dar as credenciais para
mais ninguém. Em vez disso, crie usuários individuais para quem precisar acessar sua conta da AWS.
Primeiro, crie um usuário administrador do AWS Identity and Access Management (IAM) e use-o para seu
trabalho diário. Para obter instruções, consulte Criar o primeiro grupo e usuário administrador do IAM no
Guia do usuário do IAM. Depois, crie usuários do IAM adicionais para outras pessoas. Para obter detalhes,
consulte Criar os primeiros usuário e grupo delegados do IAM no Guia do usuário do IAM.

Se você for o proprietário ou administrador da conta e quiser saber mais sobre o IAM, consulte a descrição
do produto em https://aws.amazon.com/iam ou a documentação técnica no Guia do usuário do IAM.

Segurança
O Amazon S3 fornece mecanismos de autenticação para proteger os dados armazenados no Amazon
S3 contra acesso não autorizado. A menos que você especifique o contrário, apenas o proprietário da
conta AWS pode acessar dados carregados para o Amazon S3. Para obter mais informações sobre
como gerenciar o acesso a buckets e objetos, acesse Identity and Access Management no Amazon
S3 (p. 252).

No entanto, você pode criptografar seus dados antes de enviá-los para o Amazon S3.

Integração com a AWS


Você pode utilizar o Amazon S3 sozinho ou em conjunto com um ou mais outros produtos da Amazon.
Veja a seguir os produtos mais comuns usados com o Amazon S3:

• Amazon EC2
• Amazon EMR
• Amazon SQS
• Amazon CloudFront

Definição de preços
Conheça a estrutura de preços para armazenar e transferir dados no Amazon S3. Para obter mais
informações, consulte Definição de preço do Amazon S3.

Recursos avançados do Amazon S3


Os exemplos neste guia mostram como realizar tarefas básicas como criação de um bucket, carregamento
e download de dados para o bucket e movimentação e exclusão dos dados. A tabela a seguir
resume algumas das funcionalidades avançadas mais comuns oferecidas pelo Amazon S3. Algumas
funcionalidades avançadas não estão disponíveis no Console de Gerenciamento da AWS e requerem o
uso da API do Amazon S3.

Link Funcionalidade

Configuração de buckets de Pagamento pelo Aprenda a configurar um bucket para que um


solicitante para transferências de armazenamento cliente pague pelos downloads que ele realizar.
e uso (p. 56)

Versão da API 2006-03-01


19
Amazon Simple Storage Service Guia do usuário
Controle de acesso

Link Funcionalidade

Publicação de conteúdo com o Amazon S3 e o Use o BitTorrent, que é um protocolo aberto e


BitTorrent (p. 191) peer-to-peer para distribuição de arquivos.

Usando o controle de versão em buckets do Saiba mais sobre os recursos de versionamento do


S3 (p. 516) Amazon S3.

Hospedagem de um site estático usando o Saiba como hospedar um site estático no Amazon
Amazon S3 (p. 945) S3.

Gerenciando seu ciclo de vida de Saiba como gerenciar o ciclo de vida de objetos
armazenamento (p. 569) no seu bucket. O gerenciamento do ciclo de
vida inclui o vencimento e o arquivamento de
objetos (mudança dos objetos para a classe de
armazenamento do S3 S3 Glacier).

Melhores práticas de controle de acesso


O Amazon S3 fornece uma variedade de recursos e ferramentas de segurança. Os cenários a seguir
devem servir como um guia para quais ferramentas e configurações você pode querer usar ao executar
determinadas tarefas ou operar em ambientes específicos. A aplicação adequada dessas ferramentas
pode ajudar a manter a integridade dos dados e ajudar a garantir que os recursos sejam acessíveis aos
usuários pretendidos.

Tópicos
• Criar um bucket (p. 20)
• Armazenar e compartilhar dados (p. 21)
• Compartilhar recursos (p. 22)
• Proteger dados (p. 22)

Criar um bucket
Ao criar um bucket, é necessário aplicar as seguintes ferramentas e configurações para ajudar a garantir
que os recursos do Amazon S3 estejam protegidos. 

Bloqueio de acesso público

O Bloqueio de acesso público do S3 fornece quatro configurações para ajudar a evitar expor
inadvertidamente seus recursos do S3. É possível aplicar essas configurações em qualquer combinação a
pontos de acesso individuais, a buckets ou a contas da AWS inteiras. Caso você aplique uma configuração
a uma conta, ela se aplica a todos os buckets e pontos de acesso de propriedade dessa conta. Por padrão,
a configuração Block all public access (Bloquear todo o acesso público) é aplicada a novos buckets criados
no console do Amazon S3. 

Para obter mais informações, consulte O significado de "público" (p. 473).

Se as configurações de bloqueio de acesso público do S3 forem muito restritivas, você poderá usar
identidades do AWS Identity and Access Management (IAM) para conceder acesso a usuários específicos
em vez de desabilitar todas as configurações de bloqueio de acesso público. Usar o Bloqueio de acesso
público com identidades do IAM ajuda a garantir que qualquer operação bloqueada por uma configuração
do Bloqueio de acesso público seja rejeitada, a menos que o usuário solicitante tenha recebido permissão
específica.

Para obter mais informações, consulte Configurações do bloqueio de acesso público (p. 470).

Versão da API 2006-03-01


20
Amazon Simple Storage Service Guia do usuário
Controle de acesso

Conceder acesso com identidades do IAM

Ao configurar contas para novos membros da equipe que exigem acesso ao S3, use usuários e funções
do IAM para garantir privilégios mínimos. Também é possível implementar uma forma de autenticação
multifator (MFA) do IAM para apoiar uma base de identidade sólida. Com as identidades do IAM, é
possível conceder permissões exclusivas aos usuários e especificar quais recursos eles podem acessar e
quais ações eles podem executar. As identidades do IAM fornecem mais recursos, incluindo a capacidade
de exigir que os usuários insiram credenciais de login antes de acessar recursos compartilhados e aplicar
hierarquias de permissão a diferentes objetos em um único bucket.

Para obter mais informações, consulte Exemplo 1: Proprietário do bucket que concede permissões do
bucket aos usuários (p. 413).

Políticas de buckets

Com as políticas de bucket, é possível personalizar o acesso ao bucket para ajudar a garantir que somente
os usuários aprovados possam acessar recursos e executar ações neles. Além das políticas de bucket,
você deve usar as configurações do Bloqueio de acesso público no nível do bucket para limitar ainda mais
o acesso público aos dados.

Para obter mais informações, consulte Uso de políticas de bucket (p. 376).

Ao criar políticas, evite o uso de curingas no elemento Principal porque ele permite efetivamente que
qualquer pessoa acesse os recursos do Amazon S3. É melhor listar explicitamente usuários ou grupos que
têm permissão para acessar o bucket. Em vez de incluir um curinga para as ações, conceda permissões
específicas quando aplicável.

Para manter ainda mais a prática de privilégios mínimos, as instruções Deny (Negar) no elemento
Effect devem ser tão amplas quanto possível e as instruções Allow (Permitir) devem ser tão restritas
quanto possível. Negar efeitos emparelhados com a ação “s3:*” é outra boa maneira de implementar as
melhores práticas de adesão para os usuários incluídos em instrução de condição de política.

Para obter mais informações sobre como especificar condições para quando uma política estiver em vigor,
consulte Exemplos de chave de condição do Amazon S3 (p. 278).

Buckets em uma configuração de VPC

Ao adicionar usuários em uma configuração corporativa, você poderá usar um endpoint de Virtual Private
Cloud (VPC) para permitir que todos os usuários na rede virtual acessem os recursos do Amazon S3. Os
VPC endpoints permitem que os desenvolvedores concedam acesso e permissões específicos a grupos
de usuários com base na rede à qual o usuário está conectado. Em vez de adicionar cada usuário a
uma função ou a um grupo do IAM, você poderá usar VPC endpoints para negar acesso ao bucket se a
solicitação não for originada do endpoint especificado.

Para obter mais informações, consulte Controlar o acesso a partir de VPC endpoints com políticas de
bucket (p. 377).

Armazenar e compartilhar dados


Use as seguintes ferramentas e melhores práticas para armazenar e compartilhar os dados do Amazon
S3.

Versionamento e bloqueio de objetos para integridade de dados

Se você usar o console do Amazon S3 para gerenciar buckets e objetos, você deve implementar o
versionamento do S3 e o bloqueio de objeto do S3. Esses recursos ajudam a evitar alterações acidentais
em dados críticos e permitem reverter ações não intencionais. Esse recurso é particularmente útil quando
há vários usuários com permissões completas de gravação e execução acessando o console do Amazon
S3.

Versão da API 2006-03-01


21
Amazon Simple Storage Service Guia do usuário
Controle de acesso

Para obter informações sobre o Versionamento do S3, consulte Usando o controle de versão em buckets
do S3 (p. 516). Para obter mais informações sobre Bloqueio de objetos, consulte Usar o S3 Object
Lock (p. 554).

Gerenciamento do ciclo de vida do objeto para eficiência de custos

Para gerenciar os objetos para que eles sejam armazenados de forma econômica durante todo o ciclo
de vida, você pode emparelhar políticas de ciclo de vida com o versionamento de objetos. As políticas de
ciclo de vida definem as ações que você deseja que o S3 execute durante a vida útil de um objeto. Por
exemplo, é possível criar uma política de ciclo de vida que fará a transição de objetos para outra classe de
armazenamento, arquivá-los ou excluí-los após um período especificado. É possível definir uma política
de ciclo de vida para todos os objetos ou para um subconjunto de objetos no bucket usando um prefixo ou
uma tag compartilhados.

Para obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Replicação entre regiões para vários locais de escritório

Ao criar buckets que são acessados por diferentes locais de escritório, você deve considerar a
implementação da replicação entre regiões do S3. A replicação entre regiões ajuda a garantir que todos os
usuários tenham acesso aos recursos de que precisam e aumenta a eficiência operacional. A replicação
entre regiões oferece maior disponibilidade copiando objetos entre buckets do S3 em diferentes regiões da
AWS. No entanto, o uso dessa ferramenta aumenta os custos de armazenamento.

Para obter mais informações, consulte Replicação de objetos (p. 617).

Permissões para hospedagem segura de sites estáticos

Ao configurar um bucket para ser usado como um site estático acessado publicamente, é necessário
desabilitar todas as configurações do Bloqueio de acesso público. É importante fornecer apenas ações
s3:GetObject e não permissões ListObject ou PutObject ao escrever a política de bucket para o
site estático. Isso ajuda a garantir que os usuários não possam visualizar todos os objetos no bucket nem
adicionar seu próprio conteúdo.

Para obter mais informações, consulte Definir permissões para acesso ao site (p. 956).

O Amazon CloudFront fornece os recursos necessários para configurar um site estático seguro. Os sites
estáticos do Amazon S3 só oferecem suporte a endpoints HTTP. O CloudFront usa o armazenamento
durável do Amazon S3 ao mesmo tempo que fornece cabeçalhos de segurança adicionais, como HTTPS.
HTTPS adiciona segurança criptografando uma solicitação HTTP normal e protegendo contra ataques
cibernéticos comuns.

Para obter mais informações, consulte Conceitos básicos de um site estático seguro no Guia do
desenvolvedor do Amazon CloudFront.

Compartilhar recursos
Existem várias maneiras diferentes de compartilhar recursos com um grupo específico de usuários.
É possível usar as ferramentas a seguir para compartilhar um conjunto de documentos ou outros
recursos com um único grupo de usuários, departamento ou escritório. Embora todos possam ser usados
para atingir o mesmo objetivo, algumas ferramentas podem emparelhar melhor do que outras com as
configurações existentes.

Políticas de usuário

É possível compartilhar recursos com um grupo limitado de pessoas usando políticas de grupos e de
usuários do IAM. Ao criar um usuário do IAM, você será solicitado a criá-lo e adicioná-lo a um grupo. No
entanto, é possível criar e adicionar usuários a grupos a qualquer momento. Se os indivíduos com os quais
você pretende compartilhar esses recursos já estiverem configurados no IAM, será possível adicioná-los a

Versão da API 2006-03-01


22
Amazon Simple Storage Service Guia do usuário
Controle de acesso

um grupo comum e compartilhar o bucket com o grupo dentro da política de usuário. Também é possível
usar políticas de usuário do IAM para compartilhar objetos individuais em um bucket.

Para obter mais informações, consulte Permitir que um usuário do IAM acesse um dos seus
buckets (p. 406).

Listas de controle de acesso

Como regra geral, recomendamos que você use políticas de bucket do S3 ou políticas do IAM para
controle de acesso. As listas de controle de acesso (ACLs) do Amazon S3 são um mecanismo de controle
de acesso herdado que precede o IAM. Se você já usa ACLs do S3 e as considera suficientes, não há
necessidade de alterar. No entanto, determinados cenários de controle de acesso exigem o uso de ACLs.
Por exemplo, quando um proprietário de bucket deseja conceder permissão a objetos, mas nem todos os
objetos são de propriedade dele, o proprietário do objeto deve primeiro conceder permissão ao proprietário
do bucket. Isso é feito usando uma ACL de objeto.

Para obter mais informações, consulte Exemplo 3: O proprietário do bucket concede permissões para
objetos que não possui (p. 424).

Prefixos

Ao tentar compartilhar recursos específicos de um bucket, é possível replicar permissões no nível de


pastas usando prefixos. O console do Amazon S3 é compatível com o conceito de pasta como um meio de
agrupar objetos usando um prefixo de nome compartilhado para objetos. Depois, é possível especificar um
prefixo dentro das condições da política de um usuário do IAM para conceder permissão explícita para que
ele acesse os recursos associados a esse prefixo. 

Para obter mais informações, consulte Organizar objetos no console do Amazon S3 usando
pastas (p. 155).

Atribuição de tags (tagging)

Se usar a marcação de objetos para categorizar o armazenamento, você poderá compartilhar objetos
marcados com um valor específico com usuários especificados. A marcação de recursos permite controlar
o acesso a objetos com base nas tags associadas ao recurso que um usuário está tentando acessar.
Para fazer isso, use a condição ResourceTag/key-name dentro de uma política de usuário do IAM para
permitir o acesso aos recursos marcados.

Para obter mais informações, consulte Controlar o acesso aos recursos da AWS usando tags de recursos
no Guia do usuário do IAM.

Proteger dados
Use as seguintes ferramentas para ajudar a proteger os dados em trânsito e em repouso, ambas as quais
são cruciais para manter a integridade e a acessibilidade dos dados.

Object encryption

O Amazon S3 oferece várias opções de criptografia de objetos que protegem os dados em trânsito
e em repouso. A criptografia no lado do servidor criptografa o objeto antes de salvá-lo em discos em
seus datacenters e os descriptografa ao fazer download dos objetos. Contanto que você autentique sua
solicitação e tenha permissões de acesso, não há diferença na forma de acesso aos objetos criptografados
ou não criptografados. Ao configurar a criptografia no lado do servidor, você tem três opções mutuamente
exclusivas:

• Chaves gerenciadas pelo Amazon S3 (SSE-S3)


• Chaves mestres do cliente (CMK) armazenadas no AWS Key Management Service (SSE-KMS)
• Chaves fornecidas pelo cliente (SSE-C)

Versão da API 2006-03-01


23
Amazon Simple Storage Service Guia do usuário
Recursos de desenvolvimento

Para obter mais informações, consulte Proteção de dados usando criptografia no lado do
servidor (p. 195).

Criptografia no lado do cliente é o ato de criptografar os dados antes de enviá-los para o Amazon S3. Para
obter mais informações, consulte Proteger dados usando a criptografia no lado do cliente (p. 239).

Métodos de assinatura

O Signature versão 4 é o processo para adicionar informações de autenticação às solicitações da AWS


enviadas por HTTP. Por segurança, a maioria das solicitações para AWS devem ser assinadas com uma
chave de acesso, que consiste em um ID de chave de acesso e a chave de acesso secreta. Essas duas
chaves são comumente conhecidas como suas credenciais de segurança.

Para obter mais informações, consulte Autenticar solicitações (AWS Signature versão 4) e Processo de
assinatura do Signature versão 4.

Registro em log e monitoramento

O monitoramento é uma parte importante da manutenção da confiabilidade, da disponibilidade e da


performance das soluções do Amazon S3 para que você possa depurar mais facilmente uma falha de
vários pontos, caso isso ocorra. O registro em log pode fornecer insight sobre os erros que os usuários
estão recebendo, além de quando e quais solicitações são feitas. A AWS fornece várias ferramentas para
monitorar os recursos do Amazon S3:

• Amazon CloudWatch
• AWS CloudTrail
• Logs de acesso do Amazon S3
• AWS Trusted Advisor

Para obter mais informações, consulte Registrar em log e monitorar no Amazon S3 (p. 506).

O Amazon S3 é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas
por um usuário, uma função ou um serviço da AWS no Amazon S3. Esse recurso pode ser emparelhado
com o Amazon GuardDuty, que monitora ameaças contra seus recursos do Amazon S3 analisando
eventos de gerenciamento do CloudTrail e eventos de dados do CloudTrail S3. Essas fontes de dados
monitoram diferentes tipos de atividade. Por exemplo, os eventos de gerenciamento do CloudTrail
relacionados ao S3 incluem operações que listam ou configuram projetos do S3. O GuardDuty analisa
eventos de dados do S3 de todos os buckets do S3 e os monitora em busca de atividades maliciosas e
suspeitas.

Para obter mais informações, consulte Proteção do Amazon S3 no Amazon GuardDuty no Guia do usuário
do Amazon GuardDuty.

Recursos de desenvolvimento
Para ajudá-lo a criar aplicativos usando a linguagem de sua escolha, fornecemos os seguintes recursos:

• Código de exemplo e bibliotecas: o Centro do desenvolvedor da AWS tem código de exemplo e


bibliotecas escritos especialmente para o Amazon S3.

Você pode usar esses exemplos de códigos para entender como implementar a API do Amazon S3.
Para obter mais informações, consulte o Centro do desenvolvedor da AWS.
• Tutoriais – nosso Centro de recursos oferece mais tutoriais do Amazon S3.

Esses tutoriais oferecem uma abordagem prática para o aprendizado das funcionalidades do Amazon
S3. Para obter mais informações, consulte Artigos e tutoriais.

Versão da API 2006-03-01


24
Amazon Simple Storage Service Guia do usuário
Recursos de desenvolvimento

• Fórum de clientes – Recomendamos que você examine o fórum do Amazon S3 para ter uma ideia do
que outros usuários estão fazendo e se beneficiar do que estão perguntando.

O fórum pode ajudar a entender o que pode e o que não pode ser feito com o Amazon S3. O fórum
também é um meio para que você faça perguntas que podem responder as dúvidas de outros usuários
ou representantes da AWS. Você pode usar o fórum para relatar problemas com o serviço ou a API.
Para obter mais informações, consulte os Fóruns de discussão.

Versão da API 2006-03-01


25
Amazon Simple Storage Service Guia do usuário
Visão geral dos buckets

Criar, configurar e trabalhar com


buckets do Amazon S3
Para armazenar seus dados no Amazon S3, você trabalha com recursos conhecidos como buckets 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 em um 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.
Note
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 AWS Free Tier (Nível gratuito da AWS).

Os tópicos desta seção fornecem uma visão geral do trabalho com buckets no Amazon S3. Eles incluem
informações sobre nomeação, criação, acesso e exclusão de buckets.

Tópicos
• Visão geral dos buckets (p. 26)
• Regras de nomeação de bucket (p. 30)
• Criação de um bucket (p. 31)
• Visualização das propriedades de um bucket do S3 (p. 35)
• Acessar um bucket (p. 36)
• Esvaziar um bucket (p. 38)
• Excluir um bucket (p. 40)
• Definir o comportamento padrão de criptografia do lado do servidor para buckets do Amazon
S3 (p. 43)
• Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer
Acceleration (p. 48)
• Configuração de buckets de Pagamento pelo solicitante para transferências de armazenamento e
uso (p. 56)
• Restrições e limitações do bucket (p. 60)

Visão geral dos buckets


Para fazer upload de seus dados (fotos, vídeos, documentos etc.) para o Amazon S3, primeiro é
necessário criar um bucket do S3 em uma das regiões da AWS. Você pode fazer upload de um número
ilimitado de objetos para o bucket.

Em termos de implementação, os buckets e objetos são recursos da AWS, e o Amazon S3 fornece APIs
para você gerenciá-los. Por exemplo, é possível criar um bucket e fazer upload de objetos usando a API do
Amazon S3. Também é possível usar o console do Amazon S3 para executar essas operações. O console
usa as APIs do Amazon S3 para enviar solicitações ao Amazon S3.

Esta seção descreve como trabalhar com buckets. Para obter mais informações sobre como trabalhar com
objetos, consulte Visão geral de objetos Amazon S3 (p. 62).

Versão da API 2006-03-01


26
Amazon Simple Storage Service Guia do usuário
Sobre permissões

Um nome de bucket do Amazon S3 é globalmente exclusivo, e o namespace é compartilhado por


todas as contas da AWS. Isso significa que, após a criação de um bucket, o nome dele não pode ser
usado por outra conta da AWS em nenhuma região da AWS até que ele seja excluído. Você não pode
depender de convenções de nomenclatura de buckets específicos para fins de disponibilidade ou
verificação de segurança. Para ver as diretrizes de nomeação de bucket, consulte Regras de nomeação de
bucket (p. 30).

O Amazon S3 cria buckets na região que você especificar. Para otimizar a latência, minimizar os custos ou
atender a requisitos regulatórios, você pode escolher qualquer região da AWS geograficamente próxima
para otimizar a latência. Por exemplo, se você residir na Europa, poderá considerar vantajoso criar buckets
nas regiões UE (Irlanda) ou UE (Frankfurt). Para obter uma lista das regiões do Amazon S3, consulte
Regiões e endpoints na Referência geral da AWS.
Note

Os objetos pertencentes a um bucket criado em uma região da AWS específica jamais saem dela,
a menos que você os transfira explicitamente para outra região. Por exemplo, os objetos que são
armazenados na região UE (Irlanda) nunca saem dela.

Tópicos
• Sobre permissões (p. 27)
• Gerenciar o acesso público aos buckets (p. 27)
• Opções de configuração do bucket (p. 28)

Sobre permissões
É possível usar suas credenciais de usuário raiz da conta da AWS para criar um bucket e executar
qualquer outra operação do Amazon S3. No entanto, recomendamos que você não use as credenciais
de usuário raiz da sua conta da AWS para fazer solicitações, como criar um bucket. Em vez disso, crie
um usuário do AWS Identity and Access Management (IAM) e conceda a esse usuário acesso total (por
padrão, os usuários não têm permissões).

Esses usuários são referidos como administradores. As credenciais do usuário administrador podem ser
usadas em vez das credenciais do usuário raiz da conta para interagir com a AWS e executar tarefas, tais
como criar um bucket, criar usuários e conceder permissões a eles.

Para obter mais informações, consulte Credenciais de usuário raiz da conta da AWS e credenciais de
usuário do IAM na Referência geral da AWS e Melhores práticas de segurança no IAM no Guia do usuário
do IAM.

A conta da AWS que cria um recurso é proprietária daquele recurso. Por exemplo, se você criar um
usuário do IAM na sua conta da AWS e conceder permissões para esse usuário criar um bucket, o usuário
poderá criar um bucket. Mas o usuário não é proprietário do bucket; a conta da AWS à qual o usuário
pertence é do bucket. O usuário precisará de permissão adicional do proprietário do recurso para executar
qualquer outra operação de bucket. Para obter mais informações sobre o gerenciamento de permissões
para recursos do Amazon S3, consulte Identity and Access Management no Amazon S3 (p. 252).

Gerenciar o acesso público aos buckets


O acesso público aos buckets e objetos é concedido através de listas de controle de acesso (ACLs),
políticas de bucket ou ambos. Para ajudar você a gerenciar o acesso público aos recursos do Amazon
S3, o Amazon S3 fornece configurações de bloqueio de acesso público. As configurações de bloqueio de
acesso público do Amazon S3 podem substituir ACLs e políticas de bucket para que você possa impor
limites uniformes ao acesso público a esses recursos. Você pode aplicar as configurações de bloqueio de
acesso público a buckets individualmente ou grupos de buckets na sua conta.

Versão da API 2006-03-01


27
Amazon Simple Storage Service Guia do usuário
Configuração do bucket

Para ajudar a garantir que todos os seus buckets e objetos do Amazon S3 tenham o acesso público
bloqueado, recomendamos ativar as quatro configurações de bloqueio de acesso público na sua conta.
Estas configurações bloqueiam o acesso público a todos os buckets atuais e futuros.

Antes de aplicar estas configurações, verifique se seus aplicativos funcionarão corretamente sem
acesso público. Se você precisa de um certo nível de acesso público aos seus buckets ou objetos, por
exemplo, para hospedar um site estático como descrito em Hospedagem de um site estático usando o
Amazon S3 (p. 945), você pode personalizar as configurações individualmente para atender aos seus
casos de uso de armazenamento. Para obter mais informações, consulte Bloquear o acesso público ao
armazenamento do Amazon S3 (p. 469).

Opções de configuração do bucket


O Amazon S3 é compatível com várias opções para que você configure o bucket. Por exemplo, você pode
configurar seu bucket para hospedagem de site, adicionar configuração para gerenciar o ciclo de vida de
objetos no bucket e configurar o bucket para registrar todos os acessos a ele. O Amazon S3 é compatível
com sub-recursos para que você armazene e gerencie informações de configuração do bucket. É possível
usar a API do Amazon S3 para criar e gerenciar esses sub-recursos. No entanto, também é possível usar
o console ou os AWS SDKs.
Note

Há também configurações no nível do objeto. Por exemplo, você pode configurar permissões no
nível do objeto configurando uma lista de controle de acesso (ACL) específica para aquele objeto.

São chamados de sub-recursos porque existem no contexto de um bucket ou objeto específico. A tabela a
seguir lista os sub-recursos que permitem gerenciar configurações específicas de bucket.

Sub-recurso Descrição

cors Você pode configurar seu bucket para autorizar solicitações de origem cruzada.
(compartilhamento
de recurso de Para obter mais informações, consulte Usar o compartilhamento de recursos de
origem cruzada) origem cruzada (CORS) (p. 458).

notificação de Você pode permitir que seu bucket envie notificações de eventos do bucket
evento especificado.

Para obter mais informações, consulte Notificações de eventos do Amazon


S3 (p. 869).

ciclo de vida Você pode definir regras de ciclo de vida para objetos em seu bucket que têm
um ciclo de vida bem definido. Por exemplo, você pode definir uma regra para
arquivar objetos um ano após a criação ou excluir um objeto 10 anos após a
criação.

Para obter mais informações, consulte Gerenciando seu ciclo de vida de


armazenamento (p. 569).

location Ao criar um bucket, você especifica a região da AWS onde deseja que o Amazon
S3 crie o bucket. O Amazon S3 armazena essas informações no sub-recurso local
e fornece uma API para que você recupere essas informações.

registro em log O registro em log permite que você rastreie solicitações de acesso ao seu bucket.
Cada registro de log de acesso fornece detalhes sobre uma única solicitação
de acesso, como solicitante, nome do bucket, horário da solicitação, ação da
solicitação, status de resposta e código de erro, se houver. As informações de log
de acesso podem ser úteis em auditorias de segurança e acesso. Isso também

Versão da API 2006-03-01


28
Amazon Simple Storage Service Guia do usuário
Configuração do bucket

Sub-recurso Descrição
pode ajudá-lo a conhecer sua base de clientes e entender a conta do Amazon S3.
 

Para obter mais informações, consulte Registrar em log as solicitações com


registro em log de acesso ao servidor (p. 833).

bloqueio de objetos Para usar o bloqueio de objetos do S3, é necessário habilitá-lo para um bucket.
Também é possível configurar um modo e um período de retenção padrão que se
aplicam a novos objetos colocados no bucket.

Para obter mais informações, consulte Configuração do bucket (p. 558).

política e ACL (lista Todos os seus recursos (como buckets e objetos) são privados por padrão. O
de controle de Amazon S3 é compatível com opções de política de bucket e de lista de controle
acesso) de acesso (ACL) para que você conceda e gerencie permissões no nível do
bucket. O Amazon S3 armazena as informações de permissão nos sub-recursos
política e acl.

Para obter mais informações, consulte Identity and Access Management no


Amazon S3 (p. 252).

replicação A replicação é a cópia assíncrona automática de objetos em buckets, em


diferentes ou nas mesmas regiões da AWS. Para obter mais informações,
consulte Replicação de objetos (p. 617).

requestPayment Por padrão, a conta da AWS que cria o bucket (o proprietário do bucket) paga
pelos downloads do bucket. Usando esse sub-recurso, o proprietário do bucket
pode especificar que a pessoa que solicita o download será cobrada pelo
download. O Amazon S3 fornece uma API para gerenciamento desse sub-recurso.

Para obter mais informações, consulte Configuração de buckets de Pagamento


pelo solicitante para transferências de armazenamento e uso (p. 56).

marcação Você pode adicionar tags de alocação de custo ao seu bucket para classificar
e acompanhar seus custos com a AWS. O Amazon S3 fornece o sub-recurso
marcação para armazenar e gerenciar tags em um bucket. Com o uso de tags em
seu bucket, a AWS gera um relatório de alocação de custos com o uso e custos
agregados por suas tags.

Para obter mais informações, consulte Relatórios de uso e faturamento dos


buckets do S3 (p. 694).

aceleração de O Transfer Acceleration possibilita transferências de arquivos rápidas, fáceis e


transferência seguras entre seu cliente e um bucket do S3 em longas distâncias. O Transfer
Acceleration tira proveito dos pontos de presença distribuídos globalmente no
Amazon CloudFront.

Para obter mais informações, consulte Configurar transferências de arquivos


rápidas e seguras usando o Amazon S3 Transfer Acceleration (p. 48).

versionamento O versionamento ajuda a recuperar substituições e exclusões acidentais.

Recomendamos o versionamento como melhor prática para impedir a exclusão ou


substituição de objetos por engano.

Para obter mais informações, consulte Usando o controle de versão em buckets


do S3 (p. 516).

Versão da API 2006-03-01


29
Amazon Simple Storage Service Guia do usuário
Regras de nomeação

Sub-recurso Descrição

site Você pode configurar seu bucket para hospedagem de site estático. O Amazon S3
armazena essa configuração criando um sub-recurso site.

Para obter mais informações, consulte Hospedagem de um site estático usando o


Amazon S3 (p. 945).

Regras de nomeação de bucket


As seguintes regras se aplicam aos buckets de nomeação no Amazon S3:

• Os nomes dos buckets devem ter entre 3 e 63 caracteres.


• Os nomes dos buckets podem consistir apenas em letras minúsculas, números, pontos (.) e hífens (-).
• Os nomes dos buckets devem começar e terminar com uma letra ou um número.
• Os nomes de bucket não devem ser formatados como um endereço IP (por exemplo, 192.168.5.4).
• Os nomes dos buckets devem ser exclusivos em uma partição. Uma partição é um grupo de regiões.
Atualmente, a AWS tem três partições: aws (Regiões padrão), aws-cn (regiões da China) e aws-us-
gov (regiões AWS GovCloud [EUA]).
• Os buckets usados com o Amazon S3 Transfer Acceleration não podem ter pontos (.) em seus nomes.
Para obter mais informações sobre o Transfer Acceleration, consulte Configurar transferências de
arquivos rápidas e seguras usando o Amazon S3 Transfer Acceleration (p. 48).

Para obter a melhor compatibilidade, recomendamos evitar o uso de pontos (.) em nomes de buckets,
exceto em buckets usados apenas para hospedagem de sites estáticos. Se você incluir pontos no nome
de um bucket, não poderá usar o endereçamento em estilo de host virtual por HTTPS, a menos que
execute sua própria validação de certificado. Isso ocorre porque os certificados de segurança usados para
hospedagem virtual de buckets não funcionam para buckets com pontos nos nomes.

Essa limitação não afeta os buckets usados para hospedagem de sites estáticos, pois essa hospedagem
só está disponível via HTTP. Para obter mais informações sobre o endereçamento no estilo de
hospedagem virtual, consulte Hospedagem virtual de buckets (p. 1025). Para obter mais informações
sobre hospedagem de sites estáticos, consulte Hospedagem de um site estático usando o Amazon
S3 (p. 945).
Note

Antes de 1º de março de 2018, os buckets criados na região Leste dos EUA (Norte da Virgínia)
podiam ter nomes com até 255 caracteres e incluíam letras maiúsculas e sublinhados. A partir de
1º de março de 2018, os novos buckets na região Leste dos EUA (Norte da Virgínia) devem estar
em conformidade com as mesmas regras aplicadas em todas as outras regiões.

Exemplo de nomes de bucket


Os nomes de buckets de exemplo a seguir são válidos e seguem as diretrizes de nomenclatura
recomendadas:

• docexamplebucket1
• log-delivery-march-2020
• my-hosted-content

Os nomes de buckets de exemplo a seguir são válidos, mas não recomendados para usos que não sejam
hospedagem de sites estáticos:

Versão da API 2006-03-01


30
Amazon Simple Storage Service Guia do usuário
Criação de um bucket

• docexamplewebsite.com
• www.docexamplewebsite.com
• my.example.s3.bucket

Os nomes de buckets de exemplo a seguir não são válidos:

• doc_example_bucket (contém sublinhados)


• DocExampleBucket (contém letras maiúsculas)
• doc-example-bucket- (termina com um hífen)

Criação de um bucket
Para fazer upload de seus dados para o Amazon S3, você deve primeiro criar um bucket do Amazon
S3 em uma das regiões da AWS. Ao criar um bucket, você deve escolher um nome de bucket e Região.
Opcionalmente, você pode escolher outras opções de gerenciamento de armazenamento para o
bucket. Assim que você cria um bucket, não pode mais alterar o respectivo nome ou região. Para obter
informações sobre nomeação de buckets, consulte Regras de nomeação de bucket (p. 30).

A conta da AWS que cria o bucket é proprietária dele. Você pode fazer upload de um número ilimitado de
objetos para o bucket. Por padrão, você pode criar até 100 buckets em cada conta da AWS. Se precisar
de mais buckets, você poderá aumentar o limite de bucket da conta para um máximo de 1.000 buckets
enviando um aumento de limite de serviço. Para saber como solicitar um aumento de limite de bucket,
consulte Cotas de serviço da AWS na Referência geral da AWS. Você pode armazenar qualquer número
de objetos no bucket.

Você pode usar o console do Amazon S3, as APIs do Amazon S3, a AWS CLI ou os AWS SDKs para criar
um bucket.

Usar o console do S3
1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
2. Selecione Create bucket (Criar bucket).

O assistente Create bucket (Criar bucket) é aberto.


3. Em Bucket name (Nome do bucket), insira um nome compatível com o DNS para seu bucket.

O nome do bucket deve:

• Seja exclusivo em todo o Amazon S3.


• Ter entre 3 e 63 caracteres.
• Não contém caracteres maiúsculos.
• Começar com uma letra minúscula ou um número.

Depois de criado o bucket, você não pode mudar seu nome. Para obter informações sobre nomeação
de buckets, consulte Regras de nomeação de bucket (p. 30).
Important

Evite incluir informações confidenciais, como números de conta, no nome do bucket. O nome
do bucket é visível nos URLs que apontam para os objetos no bucket.
4. Em Region (Região), escolha a Região da AWS onde deseja que o bucket resida.

Versão da API 2006-03-01


31
Amazon Simple Storage Service Guia do usuário
Criação de um bucket

Escolha uma região próxima de você para minimizar a latência e os custos e atender aos requisitos
regulatórios. 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 das regiões da AWS do Amazon S3, consulte
Endpoints de serviço da AWS na Referência geral do Amazon Web Services.
5. Em Bucket settings for Block Public Access (Configurações de bucket para o Bloqueio de acesso
público), escolha as configurações de bloqueio de acesso público que deseja aplicar ao bucket.

Recomendamos que você mantenha todas as configurações ativadas, a menos que saiba que
precisa desativar uma ou mais delas para seu caso de uso, como para hospedar um site público. As
configurações de bloqueio de acesso público que você habilitar para o bucket também serão ativadas
para todos os pontos de acesso criados no bucket. Para obter mais informações sobre como bloquear
o acesso público, consulte Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).
6. (Opcional) Se você quiser habilitar o Bloqueio de Objetos do S3, faça o seguinte:

a. Escolha Advanced settings (Configurações avançadas) e leia a mensagem exibida.


Important

Você só pode habilitar o bloqueio de objetos do S3 para um bucket ao criá-lo. Se você


habilitar o bloqueio de objetos para o bucket, não poderá desabilitá-lo mais tarde. A
ativação do bloqueio de objetos também permite o versionamento para o bucket. Depois
de habilitar o bloqueio de objetos para o bucket, você deve definir as configurações de
bloqueio de objetos antes que qualquer objeto no bucket seja protegido. Para obter mais
informações sobre como configurar a proteção para objetos, consulte Usar o S3 Object
Lock (p. 554).
b. Se quiser ativar o Object Lock, insira enable na caixa de texto e escolha Confirm (Confirmar).

Para obter mais informações sobre o recurso Bloqueio de Objeto do S3, consulte Usar o S3 Object
Lock (p. 554).
7. Selecione Create bucket (Criar bucket).

Uso dos AWS SDKs


Ao usar os AWS SDKs para criar um bucket, você deve criar um cliente e então usá-lo para enviar uma
solicitação para criar um bucket. Como prática recomendada, crie o cliente e o bucket na mesma região da
AWS. Se você não especificar uma região ao criar um cliente ou um bucket, o Amazon S3 usará a região
padrão Leste dos EUA (Norte da Virgínia).

Para criar um cliente a fim de acessar um endpoint de pilha dupla, é necessário especificar uma região da
AWS. Para obter mais informações, consulte Endpoints de pilha dupla (p. 995). Para obter uma lista de
regiões da AWS disponíveis, consulte Regiões e endpoints na Referência geral da AWS.

Ao criar um cliente, a região mapeia para o endpoint específico da região. O cliente usa esse endpoint para
se comunicar com o Amazon S3: s3.<region>.amazonaws.com. Se a sua região foi lançada após 20
de março de 2019,, seu cliente e bucket devem estar na mesma região. No entanto, é possível usar um
cliente na região Leste dos EUA (Norte da Virgínia) para criar um bucket em qualquer região iniciada antes
de 20 de março de 2019. Para obter mais informações, consulte Endpoints legados (p. 1030).

Os exemplos de código do AWS SDK executam as seguintes tarefas:

• Crie um cliente especificando explicitamente uma região da AWS — No exemplo, o cliente usa
o s3.us-west-2.amazonaws.com endpoint para se comunicar com o Amazon S3. Você pode
especificar qualquer região da AWS. Para obter uma lista das regiões da AWS, consulte Regiões e
endpoints na Referência geral da AWS.

Versão da API 2006-03-01


32
Amazon Simple Storage Service Guia do usuário
Criação de um bucket

• Envie uma solicitação de bucket de criação especificando apenas um nome de bucket — O cliente envia
uma solicitação ao Amazon S3 para criar o bucket na região onde você criou um cliente.
• Recupere as informações sobre a localização do bucket. O Amazon S3 armazena as informações de
localização do bucket no sub-recurso location que está associado ao bucket.

Java

Este exemplo mostra como criar um bucket do Amazon S3 usando o AWS SDK para Java. Para obter
instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java no
Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import com.amazonaws.services.s3.model.GetBucketLocationRequest;

import java.io.IOException;

public class CreateBucket2 {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

if (!s3Client.doesBucketExistV2(bucketName)) {
// Because the CreateBucketRequest object doesn't specify a region, the
// bucket is created in the region specified in the client.
s3Client.createBucket(new CreateBucketRequest(bucketName));

// Verify that the bucket was created by retrieving it and checking its
location.
String bucketLocation = s3Client.getBucketLocation(new
GetBucketLocationRequest(bucketName));
System.out.println("Bucket location: " + bucketLocation);
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Versão da API 2006-03-01


33
Amazon Simple Storage Service Guia do usuário
Criação de um bucket

.NET

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

Example

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Util;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class CreateBucketTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
public static void Main()
{
s3Client = new AmazonS3Client(bucketRegion);
CreateBucketAsync().Wait();
}

static async Task CreateBucketAsync()


{
try
{
if (!(await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName)))
{
var putBucketRequest = new PutBucketRequest
{
BucketName = bucketName,
UseClientRegion = true
};

PutBucketResponse putBucketResponse = await


s3Client.PutBucketAsync(putBucketRequest);
}
// Retrieve the bucket location.
string bucketLocation = await FindBucketLocationAsync(s3Client);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
static async Task<string> FindBucketLocationAsync(IAmazonS3 client)
{
string bucketLocation;
var request = new GetBucketLocationRequest()
{
BucketName = bucketName
};

Versão da API 2006-03-01


34
Amazon Simple Storage Service Guia do usuário
Visualizar propriedades de buckets

GetBucketLocationResponse response = await


client.GetBucketLocationAsync(request);
bucketLocation = response.Location.ToString();
return bucketLocation;
}
}
}

Ruby

Para obter informações sobre como criar e testar um exemplo funcional, consulte Usar o AWS SDK
para Ruby versão 3 (p. 1045).

Example

require 'aws-sdk-s3'

# Creates a bucket in Amazon S3.


#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if the bucket was created; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless bucket_created?(s3_client, 'doc-example-bucket')
def bucket_created?(s3_client, bucket_name)
s3_client.create_bucket(bucket: bucket_name)
rescue StandardError => e
puts "Error while creating the bucket named '#{bucket_name}': #{e.message}"
end

Usar a CLI da AWS


Você também pode usar a AWS Command Line Interface (AWS CLI) para criar um bucket do S3. Para
obter mais informações, consulte create-bucket na Referência de comandos da CLI da AWS.

Para obter informações sobre a AWS CLI, consulte O que é a interface de linha de comando da AWS? no
Guia do usuário da interface de linha de comando da AWS.

Visualização das propriedades de um bucket do S3


Você pode visualizar e configurar as propriedades de um bucket do Amazon S3, incluindo configurações
para versionamento, tags, criptografia padrão, registro em log, notificações e muito mais.

Para visualizar as propriedades de um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket cujas propriedades deseja visualizar.
3. Escolha Properties (Propriedades).
4. Na página Properties (Propriedades), você pode configurar as seguintes propriedades para o bucket.

• Bucket Versioning (Versionamento de bucket) — mantenha várias versões de um objeto em um


bucket usando o versionamento. Por padrão, o versionamento é desabilitado para um novo bucket.

Versão da API 2006-03-01


35
Amazon Simple Storage Service Guia do usuário
Acessar um bucket

Para obter informações sobre como ativar o versionamento, consulte Habilitar o controle de versão
em buckets (p. 521).
• Tags — com a alocação de custos da AWS, você pode usar tags de bucket para anotar o
faturamento de seu uso de um bucket. Uma tag é um par chave-valor que representa uma etiqueta
que você atribui a um bucket. Para adicionar tags, escolha Tags e, em seguida, Add tag (Adicionar
tag). Para obter mais informações, consulte Usar tags de alocação de custos para buckets do
S3 (p. 693).
• Default encryption (Criptografia padrão) — a ativação da criptografia padrão fornece criptografia
automática no lado do servidor. O Amazon S3 criptografa um objeto antes de salvá-lo em um
disco e descriptografa o objeto ao baixá-lo. Para obter mais informações, consulte Definir o
comportamento padrão de criptografia do lado do servidor para buckets do Amazon S3 (p. 43).
• Server access logging (Registro em log de acesso ao servidor) — obtenha registros detalhados
das solicitações feitas ao bucket com registro em log de acesso ao servidor. Por padrão, o Amazon
S3 não coleta logs de acesso ao servidor. Para obter informações sobre como habilitar o registro
em log de acesso ao servidor, consulte Habilitar registro em log de acesso ao servidor do Amazon
S3 (p. 835)
• AWS CloudTrail data events (Eventos de dados do AWS CloudTrail) — use o CloudTrail para
registrar eventos de dados. Por padrão, as trilhas não registram eventos de dados. Há cobranças
adicionais para eventos de dados. Para obter mais informações, consulte Registrar em log eventos
de dados para trilhas no Guia do usuário do AWS CloudTrail.
• Event notifications (Notificações de eventos) – habilite certos eventos de bucket do Amazon S3 para
enviar mensagens de notificação para um destino sempre que ocorrer eventos. Para ativar eventos,
escolha Create event notification (Criar notificação de evento) e especifique as configurações que
deseja usar. Para obter mais informações, consulte Habilitar e configurar notificações de eventos
usando o console do Amazon S3 (p. 877).
• Transfer Acceleration — possibilita transferências de arquivos rápidas, fáceis e seguras entre seu
cliente e um bucket do S3 em longas distâncias. Para obter informações sobre como habilitar o
Transfer Acceleration, consulte Habilitar e usar o S3 Transfer Acceleration (p. 51).
• Object Lock (Bloqueio de objetos) — use o bloqueio de objetos do S3 para evitar que um objeto
seja excluído ou substituído por um período fixo ou indefinidamente. Para obter mais informações,
consulte Usar o S3 Object Lock (p. 554).
• Requester Pays (Pagamento pelo solicitante) —habilite o Pagamento pelo solicitante para que o
solicitante (em vez do proprietário do bucket) pague por solicitações e transferências de dados.
Para obter mais informações, consulte Configuração de buckets de Pagamento pelo solicitante para
transferências de armazenamento e uso (p. 56).
• Static website hosting – você pode hospedar um site estático no Amazon S3. Para habilitar a
hospedagem de um site estático, escolha Static website hosting (Hospedagem de sites estáticos)
e especifique as configurações desejadas. Para obter mais informações, consulte Hospedagem de
um site estático usando o Amazon S3 (p. 945).

Acessar um bucket
É possível acessar seu bucket usando o console do Amazon S3. Usando a interface do console, você
pode executar quase todas as operações de bucket sem ter que gravar nenhum código.

Se você acessa um bucket de forma programática, o Amazon S3 oferece suporte à arquitetura RESTful na
qual seus buckets e objetos são recursos, cada um com um URI de recurso que os identifica de maneira
exclusiva.

O Amazon S3 é compatível com os URLs no estilo de hospedagem virtual e estilo de caminho para
acessar um bucket. Como os buckets podem ser acessados usando URLs no estilo de hospedagem virtual
e estilo de caminho, recomendamos criar buckets com nomes compatíveis com DNS. Para obter mais
informações, consulte Restrições e limitações do bucket (p. 60).
Versão da API 2006-03-01
36
Amazon Simple Storage Service Guia do usuário
Acesso no estilo de hospedagem virtual

Note

As solicitações no estilo de caminho e estilo de hospedagem virtual usam a estrutura de


endpoint S3 ponto Região (s3.Region), por exemplo, https://my-bucket.s3.us-
west-2.amazonaws.com. No entanto, algumas regiões mais antigas do Amazon S3 também
são compatíveis com endpoints S3 traço Região (s3-Region), por exemplo, https://my-
bucket.s3-us-west-2.amazonaws.com. Se o bucket estiver em uma dessas regiões,
você poderá ver endpoints da s3-Region nos logs de acesso ao servidor ou nos logs do AWS
CloudTrail. Recomendamos que você não use essa estrutura de endpoint em suas solicitações.

Acesso no estilo de hospedagem virtual


Em uma solicitação no estilo de hospedagem virtual, o nome do bucket faz parte do nome do domínio no
URL.

Os URLs de estilo de hospedagem virtual do Amazon S3 usam o formato a seguir.

https://bucket-name.s3.Region.amazonaws.com/key name

Neste exemplo, my-bucket é o nome do bucket, Oeste dos EUA (Oregon) é a região, e puppy.png é o
nome da chave.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Para obter mais informações sobre acesso no estilo de hospedagem virtual, consulte Solicitações no estilo
de hospedagem virtual (p. 1026).

Acesso ao estilo de caminho


No Amazon S3, os URLs de estilo de caminho usam o formato a seguir.

https://s3.Region.amazonaws.com/bucket-name/key name

Por exemplo, se você criar um bucket chamado mybucket na região Oeste dos EUA (Oregon) e quiser
acessar o objeto puppy.jpg nele, use o seguinte URL no estilo de caminho:

https://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg

Para obter mais informações, consulte Solicitações no estilo de caminho (p. 1026).
Important

Atualização (23 de setembro de 2020): decidimos atrasar a desativação de URLs no estilo de


caminho para garantir que os clientes tenham o tempo necessário para fazer a transição para
URLs no estilo de hospedagem virtual. Para obter mais informações, consulte Amazon S3 Path
Deprecation Plan – The Rest of the Story no Blog de notícias da AWS.

Acessar um bucket do S3 por IPv6


O Amazon S3 tem um conjunto de endpoints de pilha dupla, que são compatíveis com solicitações para
buckets do S3 por Internet Protocol versão 6 (IPv6) e por IPv4. Para obter mais informações, consulte
Fazer solicitações por meio do IPv6 (p. 992).

Versão da API 2006-03-01


37
Amazon Simple Storage Service Guia do usuário
Acessar um bucket por meio de pontos de acesso do S3

Acessar um bucket por meio de pontos de acesso do


S3
Além de acessar um bucket diretamente, você pode fazer isso por meio de um ponto de acesso. Para
obter mais informações sobre o recurso pontos de acesso do S3, consulte Gerenciamento de acesso a
dados com pontos de acesso do Amazon S3 (p. 480).

Os pontos de acesso do S3 oferecem suporte apenas ao endereçamento em estilo de host virtual. Para
endereçar um bucket por meio de um ponto de acesso, use o formato a seguir.

https://AccessPointName-AccountId.s3-accesspoint.region.amazonaws.com.

Note

• Se o nome do ponto de acesso incluir caracteres de traço (-), inclua os traços no URL e insira
outro traço antes do ID da conta. Por exemplo, para usar um ponto de acesso chamado
finance-docs, de propriedade da conta 123456789012 na Região us-west-2, o URL
apropriado seria https://finance-docs-123456789012.s3-accesspoint.us-
west-2.amazonaws.com.
• Os pontos de acesso do S3 não suportam acesso por HTTP, apenas acesso seguro por
HTTPS.

Acessar um bucket usando S3://


Alguns serviços da AWS exigem a especificação de um bucket do Amazon S3 usando S3://bucket. O
exemplo a seguir mostra o formato correto. Lembre-se de que, ao usar esse formato, o nome do bucket
não inclui a região AWS.

S3://bucket-name/key-name

O exemplo a seguir usa o bucket de amostra descrito na seção de estilo de caminho anterior.

S3://mybucket/puppy.jpg

Esvaziar um bucket
Você pode esvaziar o conteúdo de um bucket usando o console do Amazon S3, AWS SDKs ou AWS
Command Line Interface (AWS CLI). Quando você esvazia um intervalo, você exclui todo o conteúdo, mas
mantém o intervalo.

Você também pode especificar a configuração de ciclo de vida em um bucket para expirar objetos para que
o Amazon S3 possa excluí-los. No entanto, há limitações nesse método com base no número de objetos
em seu bucket e no status de controle de versão do bucket. Para obter mais informações, consulte Definir
a configuração do ciclo de vida em um bucket (p. 575)

Usar o console do S3
Você pode usar o console do Amazon S3 para esvaziar um bucket, que exclui todos os objetos no bucket
sem excluir o bucket. Ao esvaziar um bucket com o S3 Bucket Versioning habilitado, todas as versões de

Versão da API 2006-03-01


38
Amazon Simple Storage Service Guia do usuário
Esvaziar um bucket

todos os objetos no bucket são excluídas. Para obter mais informações, consulte Trabalhar com objetos
em um bucket com versionamento habilitado (p. 525).

Para esvaziar um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Bucket name (Nome do bucket), selecione a opção ao lado do nome do bucket que você
deseja esvaziar e selecione Empty (Esvaziar).
3. Na página Empty bucket (Esvaziar bucket), confirme se deseja esvaziar o bucket inserindo o nome do
bucket no campo de texto e escolha Empty (Esvaziar).
4. Monitore o andamento do processo de esvaziamento do bucket na página Esvaziar bucket: status.

Usar a CLI da AWS


Você só pode esvaziar um bucket usando a CLI da AWS se o bucket não tiver o Bucket Versioning
habilitado. Se o versionamento não estiver habilitado, você poderá usar o comando rm (remove) da CLI da
AWS com o parâmetro --recursive para esvaziar um bucket (ou remover um subconjunto de objetos
com um prefixo de nome de chave específico).

O comando rm a seguir remove os objetos com o prefixo de nome de chave doc, por exemplo, doc/doc1
e doc/doc2.

$ aws s3 rm s3://bucket-name/doc --recursive

Use o comando a seguir para remover todos os objetos sem especificar um prefixo.

$ aws s3 rm s3://bucket-name --recursive

Para obter informações, consulte Usar comandos do S3 de alto nível com a CLI da AWS no Guia do
usuário da Interface de linha de comando da AWS.
Note

Não é possível remover objetos de um bucket que tenha o controle de versão ativado. O Amazon
S3 adiciona um marcador de exclusão quando você exclui um objeto, que é o que este comando
faz. Para obter mais informações sobre o S3 Bucket Versioning, consulte Usando o controle de
versão em buckets do S3 (p. 516).

Uso dos AWS SDKs


Você pode usar os AWS SDKs para esvaziar um bucket ou para remover um subconjunto de objetos com
um prefixo de nome de chave específico.

Para obter um exemplo de como esvaziar um bucket usando o AWS SDK para Java, consulte Excluir um
bucket (p. 40). O código exclui todos os objetos, independentemente de o bucket ter versionamento
habilitado e, em seguida, exclui o bucket. Para só esvaziar o bucket, certifique-se de remover o comando
que exclui o bucket.

Para obter mais informações sobre como usar outros AWS SDKs, consulte Ferramentas para a Amazon
Web Services.

Usando uma configuração de ciclo de vida


Se usar uma política de ciclo de vida para esvaziar seu bucket, a política de ciclo de vida deverá incluir
versões não atuais, marcadores de exclusão e multipart uploads incompletos.

Versão da API 2006-03-01


39
Amazon Simple Storage Service Guia do usuário
Excluir um bucket

Você pode configurar o ciclo de vida no bucket para expirar objetos e solicitar que o Amazon S3 exclua
esses objetos. Você pode adicionar regras de configuração de ciclo de vida para tornar todos os objetos
ou um subconjunto de objetos expirados com um prefixo de nome de chave específico. Por exemplo,
para remover todos os objetos em um bucket, você pode definir uma regra de ciclo de vida para tornar os
objetos expirados um dia após a criação.

Se seu bucket tem versionamento habilitado, você também pode configurar a regra para tornar versões
desatualizadas de objetos expiradas. Para esvaziar completamente o conteúdo de um bucket habilitado
para versionamento, você deve configurar uma política de expiração em objetos atuais e não atuais no
bucket.

O Amazon S3 é compatível com uma regra de ciclo de vida de bucket que pode ser usada para fazer
com que o Amazon S3 interrompa multipart uploads que não são concluídos dentro de um número
especificado de dias após a inicialização. Recomendamos que você configure essa regra de ciclo de vida
para minimizar os custos de armazenamento. Para obter mais informações, consulte Configurando uma
política de ciclo de vida de bucket para anular multipart uploads incompletos (p. 85).

Para obter mais informações sobre como usar uma configuração de ciclo de vida para esvaziar um bucket,
consulte Definir a configuração do ciclo de vida em um bucket (p. 575) e Expirando objetos (p. 575).

Excluir um bucket
Você pode excluir um bucket vazio do Amazon S3. Antes de excluir um bucket, considere o seguinte:

• Nomes de bucket são exclusivos. Se você excluir um bucket, outro usuário da AWS poderá usar o nome.
• Se o bucket hospedar um site estático e você tiver criado e configurado uma zona hospedada do
Amazon Route 53 conforme descrito em Configurar um site estático usando um domínio personalizado
registrado no Route 53 (p. 973), você deverá limpar as configurações da zona hospedada do Route 53
relacionadas ao bucket. Para obter mais informações, consulte Etapa 2: exclua a zona hospedada do
Route 53 (p. 989).
• Se o bucket receber dados de log do Elastic Load Balancing (ELB): recomendamos a interrupção da
entrega de logs de ELB para o bucket antes da exclusão. Após excluir o bucket, se outro usuário criar
um bucket usando o mesmo nome, os dados de log poderão ser entregues a esse bucket. Para obter
informações sobre logs de acesso do ELB, consulte Logs de acesso no Guia do usuário para Classic
Load Balancers e Logs de Acesso no Guia do usuário para Application Load Balancers.

Solução de problemas

Se você não conseguir excluir um bucket do Amazon S3, considere o seguinte:

• permissões s3:DeleteBucket: se você não puder excluir um bucket, trabalhe com o administrador do IAM
para confirmar que você tem permissões s3:DeleteBucket na política de usuário do IAM.
• instrução de negação s3:DeleteBucket: se você tiver as permissões s3:DeleteBucket em sua política
do IAM e não puder excluir um bucket, a política de bucket poderá incluir uma instrução de negação
para s3:DeleteBucket. Os buckets criados pelo ElasticBeanStalk têm uma política que contém essa
instrução por padrão. Antes de excluir o bucket, você deve excluir essa instrução ou a política de bucket.

Important

Nomes de bucket são exclusivos. Se você excluir um bucket, outro usuário da AWS poderá
usar o nome. Se você deseja continuar a usar o mesmo nome do bucket, não exclua o bucket.
Recomendamos que você esvazie o bucket e mantenha-o.

Versão da API 2006-03-01


40
Amazon Simple Storage Service Guia do usuário
Excluir um bucket

Usar o console do S3
Para excluir um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, selecione a opção ao lado do nome do bucket que você deseja excluir e escolha
Delete (Excluir) na parte superior da página.
3. Na página Delete bucket (Excluir bucket), confirme se deseja excluir o bucket inserindo o nome do
bucket no campo de texto e escolha Delete bucket (Excluir bucket).
Note
Se o bucket contiver objetos, esvazie o bucket antes de excluí-lo selecionando o link empty
bucket configuration (configuração de esvaziamento de bucket) no alerta de erro This bucket
is not empty (Este bucket não está vazio) e seguindo as instruções na página Empty bucket
(Esvaziar bucket). Depois, volte para a página Delete bucket (Excluir bucket) e exclua o
bucket.

Usar o AWS SDK Java


O exemplo a seguir mostra como excluir um bucket usando o AWS SDK para Java. Primeiro, o código
exclui os objetos no bucket e, em seguida, exclui o bucket. Para obter mais informações sobre outros AWS
SDKs, consulte Ferramentas para a Amazon Web Services.

Java

O exemplo de Java a seguir exclui um bucket que contém objetos. O exemplo exclui todos os objetos
e, em seguida, exclui o bucket. O exemplo também funciona para buckets com ou sem versionamento
habilitado.
Note
Para buckets sem versionamento habilitado, você pode excluir todos os objetos diretamente
e, em seguida, excluir o bucket. Para buckets com versionamento habilitado, você deve
excluir todas as versões do objeto antes de excluir o bucket.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;

public class DeleteBucket2 {

public static void main(String[] args) {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()

Versão da API 2006-03-01


41
Amazon Simple Storage Service Guia do usuário
Excluir um bucket

.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Delete all objects from the bucket. This is sufficient


// for unversioned buckets. For versioned buckets, when you attempt to
delete objects, Amazon S3 inserts
// delete markers for all objects, but doesn't delete the object versions.
// To delete objects from versioned buckets, delete all of the object
versions before deleting
// the bucket (see below for an example).
ObjectListing objectListing = s3Client.listObjects(bucketName);
while (true) {
Iterator<S3ObjectSummary> objIter =
objectListing.getObjectSummaries().iterator();
while (objIter.hasNext()) {
s3Client.deleteObject(bucketName, objIter.next().getKey());
}

// If the bucket contains many objects, the listObjects() call


// might not return all of the objects in the first listing. Check to
// see whether the listing was truncated. If so, retrieve the next page
of objects
// and delete them.
if (objectListing.isTruncated()) {
objectListing = s3Client.listNextBatchOfObjects(objectListing);
} else {
break;
}
}

// Delete all object versions (required for versioned buckets).


VersionListing versionList = s3Client.listVersions(new
ListVersionsRequest().withBucketName(bucketName));
while (true) {
Iterator<S3VersionSummary> versionIter =
versionList.getVersionSummaries().iterator();
while (versionIter.hasNext()) {
S3VersionSummary vs = versionIter.next();
s3Client.deleteVersion(bucketName, vs.getKey(), vs.getVersionId());
}

if (versionList.isTruncated()) {
versionList = s3Client.listNextBatchOfVersions(versionList);
} else {
break;
}
}

// After all objects and object versions are deleted, delete the bucket.
s3Client.deleteBucket(bucketName);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client couldn't
// parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Versão da API 2006-03-01


42
Amazon Simple Storage Service Guia do usuário
Definir criptografia de bucket padrão

Usar a CLI da AWS


Você pode excluir um bucket que contém objetos com a CLI da AWS se ele não tiver o versionamento
habilitado. Ao excluir um bucket que contém objetos, todos os objetos no bucket são excluídos
permanentemente, incluindo objetos que passaram para a classe de armazenamento S3 Glacier.

Se o bucket não tiver o versionamento habilitado, você poderá usar o comando rb (remover bucket) da
CLI da AWS com o parâmetro --force para excluir o bucket e todos os objetos nele. Esse comando
exclui todos os objetos primeiro e, em seguida, exclui o bucket.

$ aws s3 rb s3://bucket-name --force

Para obter informações, consulte Usar comandos do S3 de alto nível com a interface da linha de comando
da AWS no guia do usuário da AWS Command Line Interface.

Definir o comportamento padrão de criptografia do


lado do servidor para buckets do Amazon S3
Com a criptografia padrão do Amazon S3, você pode definir o comportamento de criptografia padrão para
um bucket do S3 para que todos os novos objetos sejam criptografados quando estiverem armazenados
no bucket. Os objetos são criptografados usando criptografia no lado do servidor com chaves gerenciadas
pelo Amazon S3 (SSE-S3) ou chaves mestras do cliente (CMKs) armazenadas no AWS Key Management
Service (AWS KMS) (SSE-KMS).

Ao configurar seu bucket para usar criptografia padrão com o SSE-KMS, você também pode habilitar o
recurso Chaves de bucket do S3 para diminuir o tráfego de solicitações do Amazon S3 para o AWS Key
Management Service (AWS KMS) e reduzir o custo de criptografia. Para obter mais informações, consulte
Redução do custo do SSE-KMS com chaves de bucket do Amazon S3 (p. 204).

Quando você usa a criptografia no lado do servidor, o Amazon S3 criptografa um objeto antes de salvá-
lo no disco e o descriptografa quando você faz download dele. Para obter mais informações sobre como
proteger dados usando a criptografia do lado do servidor e o gerenciamento de chaves de criptografia,
consulte Proteção de dados usando criptografia no lado do servidor (p. 195).

Para obter mais informações sobre permissões necessárias para criptografia padrão, consulte
PutBucketEncryption na Referência da API do Amazon Simple Storage Service.

Para configurar a criptografia padrão em um bucket, use o console do Amazon S3, a CLI da AWS, os
AWS SDKs ou a API REST. Para obter mais informações, consulte the section called “Habilitar criptografia
padrão” (p. 45).

Criptografar objetos existentes

Para criptografar objetos existentes do Amazon S3 com uma única solicitação, use o recurso Operações
em lote do Amazon S3. Você fornece uma lista de objetos às operações em lote do S3 que, por sua vez,
chamam a respectiva API para realizar a operação especificada. É possível usar a operação de cópia
para copiar os objetos não criptografados existentes e gravar os novos objetos criptografados no mesmo
bucket. Um único trabalho de operações em lote pode realizar a operação especificada em bilhões de
objetos contendo exabytes de dados. Para obter mais informações, consulte Executar operações em lote
do S3 (p. 739).

Você também pode criptografar objetos existentes usando a API Copy Object. Para obter mais
informações, consulte a publicação do blog do AWS Storage Encrypting existing Amazon S3 objects with
the AWS CLI.

Versão da API 2006-03-01


43
Amazon Simple Storage Service Guia do usuário
Usar criptografia para operações entre contas

Note
Os buckets do Amazon S3 com criptografia de bucket padrão que usam SSE-KMS não
podem ser usados como buckets de destino para the section called “Registrando acesso ao
servidor” (p. 833). Somente a criptografia padrão SSE-S3 é suportada para buckets de destino
do log de acesso do servidor.

Usar criptografia para operações entre contas


Esteja ciente do seguinte ao usar criptografia para operações entre contas:

• A CMK gerenciada pela AWS (aws/s3) é usada quando um nome de recurso da Amazon (ARN) ou
alias da CMK não é fornecido no momento da solicitação, nem por meio da configuração de criptografia
padrão do bucket.
• Se você estiver carregando ou acessando objetos do S3 usando os principais do AWS Identity and
Access Management (IAM) que estão na mesma conta da AWS que sua CMK, você pode usar a CMK
gerenciada pela AWS (aws/s3).
• Use uma CMK gerenciada pelo cliente se desejar conceder acesso entre contas aos objetos do S3.
Você pode configurar a política de uma CMK gerenciada pelo cliente para permitir o acesso de outra
conta.
• Se especificar sua própria CMK, você deve usar um ARN de chave da CMK totalmente qualificado. Ao
usar um alias da CMK, lembre-se de que o AWS KMS resolverá a chave na conta do solicitante. Isso
pode resultar em dados criptografados com um CMK que pertence ao solicitante, e não ao administrador
do bucket.
• É necessário especificar uma chave para a qual você (o solicitante) recebeu a permissão Encrypt.
Para obter mais informações, consulte Permite que os principais usuários usem uma CMK para
operações criptográficas no Guia do desenvolvedor do AWS Key Management Service.

Para obter mais informações sobre quando usar CMKs gerenciadas pelo cliente e a CMK gerenciada pela
AWS, consulte Devo usar uma chave gerenciada pelo AWS KMS da AWS ou uma chave do AWS KMS
personalizada da AWS para criptografar meus objetos no Amazon S3?.

Usar a criptografia padrão com a replicação


Ao habilitar a criptografia padrão para um bucket de destino de replicação, o seguinte comportamento de
criptografia será aplicado:

• Se os objetos no bucket de origem não estiverem criptografados, os objetos de réplica no bucket de


destino serão criptografados usando as configurações de criptografia padrão do bucket de destino.
Isso faz com que a ETag do objeto de origem seja diferente da ETag do objeto de réplica. Você precisa
atualizar os aplicativos que usam a ETag para acomodar essa diferença.
• Se os objetos no bucket de origem forem criptografados usando SSE-S3 ou SSE-KMS, os objetos de
réplica no bucket de destino usarão a mesma criptografia que a criptografia do objeto de origem. As
configurações de criptografia padrão do bucket de destino não são usadas.

Para obter mais informações sobre como usar a criptografia padrão com SSE-KMS, consulte Replicar
objetos criptografados (p. 672).

Usar Chaves de bucket do Amazon S3 com


criptografia padrão
Quando você configura seu bucket para usar criptografia padrão para SSE-KMS em novos objetos, você
também pode configurar o recurso Chave de bucket do S3. Esse recurso diminui o número de transações

Versão da API 2006-03-01


44
Amazon Simple Storage Service Guia do usuário
Habilitar criptografia padrão

do Amazon S3 para o AWS KMS a fim de reduzir o custo da criptografia do lado do servidor usando o
AWS Key Management Service (SSE-KMS).

Quando você configura seu bucket para usar o Chaves de bucket do S3 para SSE-KMS em novos objetos,
o AWS KMS gera uma chave de nível de bucket usada para criar uma chave de dados exclusiva para
objetos no bucket. Essa chave de bucket é usada por um período limitado no Amazon S3, reduzindo a
necessidade do Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia.

Para obter mais informações sobre como usar uma Chave de bucket do S3, consulte Redução do custo do
SSE-KMS com chaves de bucket do Amazon S3 (p. 204).

Habilitar a criptografia de bucket padrão do Amazon


S3
Você pode definir o comportamento de criptografia padrão em um bucket do Amazon S3 para que todos
os objetos sejam criptografados quando estiverem armazenados no bucket. Os objetos são criptografados
usando criptografia no lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou chaves
mestras de cliente (CMKs) do AWS Key Management Service (AWS KMS).

Ao configurar a criptografia padrão usando o AWS KMS, você também pode configurar a Chave de bucket
do S3. Para obter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do
Amazon S3 (p. 204).

A criptografia padrão funciona com todos os buckets do Amazon S3, existentes e novos. Para criptografar
todos os objetos armazenados em um bucket sem a criptografia padrão, você precisa incluir informações
de criptografia com cada solicitação de armazenamento de objeto. Você também precisa configurar
uma política de bucket do Amazon S3 para rejeitar solicitações de armazenamento que não incluem
informações de criptografia.

Não há cobranças adicionais para usar a criptografia padrão para buckets do S3. As solicitações de
configuração do recurso de criptografia padrão geram cobranças padrão de solicitação do Amazon S3.
Para obter mais informações sobre definição de preços, consulte Definição de preços do Amazon S3. Para
o armazenamento CMK do SSE-KMS, as taxas do AWS KMS aplicam-se e são listadas na Definição de
preço da AWS

Você pode habilitar a criptografia padrão do Amazon S3 para um bucket do S3 usando o console do
Amazon S3, os AWS SDKs, a API REST do Amazon S3 e a Interface de linha de comando da AWS (CLI
da AWS).

Uso do console do S3
Para habilitar a criptografia padrão em um bucket do Amazon S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket desejado.
3. Escolha Propriedades.
4. Em Default encryption (Criptografia padrão), escolha Edit (Editar).
5. Para ativar ou desativar a criptografia do lado do servidor, escolha Enable (Ativar) ou Disable
(Desabilitar).
6. Para habilitar a criptografia no lado do servidor usando uma chave gerenciada pelo Amazon S3, em
Encryption key type (Tipo de chave de criptografia), escolha Amazon S3 key (SSE-S3) (Chave do
Amazon S3 (SSE-S3)).

Para obter mais informações sobre como usar a criptografia no lado do servidor do Amazon S3 para
criptografar seus dados, consulte Proteção de dados usando criptografia no lado do servidor com
chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) (p. 213).

Versão da API 2006-03-01


45
Amazon Simple Storage Service Guia do usuário
Habilitar criptografia padrão

7. Para habilitar a criptografia no lado do servidor usando uma CMK do AWS KMS, siga estas etapas:

a. Em Encryption key type (Tipo de chave de criptografia), escolha AWS Key Management Service
key (SSE-KMS) (Chave do AWS Key Management Service (SSE-KMS)).
Important

Se você usar a opção do AWS KMS na sua configuração de criptografia padrão, estará
sujeito aos limites de RPS (solicitações por segundo) do AWS KMS. Para obter mais
informações sobre as cotas do AWS KMS e como solicitar um aumento de cota, consulte
Cotas.
b. Em AWS KMS key (Chave do AWS KMS) escolha uma das seguintes opções:

• AWS managed key (aws/s3) (Chave gerenciada pela AWS (aws/s3))


• Choose from your KMS master keys (Escolha entre suas chaves-mestre do KMS), e selecione
sua KMS master key (chave mestra do KMS).
• Enter KMS master key ARN (Insira o ARN da chave mestra do KMS), e insira o ARN da sua
chave do AWS KMS.

Important

Você só pode usar CMKs do KMS habilitadas na mesma região da AWS que o bucket.
Quando você seleciona Choose from your KMS master keys (Escolher entre as chaves
mestras do KMS), o console do S3 lista somente 100 CMKs do KMS por região. Se você
tiver mais de 100 CMKs na mesma região, será possível ver somente as primeiras 100
CMKs no console do S3. Para usar uma CMK do KMS que não esteja listada no console,
escolha Custom KMS ARN (Personalizar o ARN do KMS) e insira o ARN da CMK do
KMS.
Quando você usa uma CMK do AWS KMS para criptografia no lado do servidor no
Amazon S3, você deve escolher uma CMK simétrica. O Amazon S3 é compatível apenas
com CMKs simétricas e não com CMKs assimétricas. Para obter mais informações,
consulte Usar chaves simétricas e assimétricas no Guia do desenvolvedor do AWS Key
Management Service.

Para obter mais informações sobre como criar uma CMK do AWS KMS, consulte Criar chaves no
Guia do desenvolvedor do AWS Key Management Service. Para obter mais informações sobre
como usar o AWS KMS com o Amazon S3, consulte Proteção de dados usando criptografia
do lado do servidor com CMKs armazenadas no AWS Key Management Service (SSE-
KMS) (p. 195).
8. Para usar Chaves de bucket do S3, em Bucket Key (Chave de bucket), escolha Enable (Habilitar).

Quando você configura seu bucket para usar a criptografia padrão com o SSE-KMS, você também
pode habilitar a chave de bucket do S3. As chaves de bucket do S3 diminuem o tráfego de solicitações
do Amazon S3 para o AWS KMS e reduzem o custo da criptografia. Para obter mais informações,
consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3 (p. 204).
9. Selecione Save changes.

Usar a CLI da AWS


Esses exemplos mostram como configurar a criptografia padrão usando criptografia gerenciada pelo
Amazon S3 (SSE-S3) ou criptografia do AWS KMS (SSE-KMS) com uma chave de bucket do S3.

Para obter mais informações sobre criptografia padrão, consulte Definir o comportamento padrão de
criptografia do lado do servidor para buckets do Amazon S3 (p. 43). Para obter mais informações sobre
o uso da CLI da AWS para configurar a criptografia padrão, consulte put-bucket-encryption.
Versão da API 2006-03-01
46
Amazon Simple Storage Service Guia do usuário
Habilitar criptografia padrão

Example – Criptografia padrão com SSE-S3

Esse exemplo configura a criptografia de bucket padrão com criptografia gerenciada pelo Amazon S3.

aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration


'{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}
]
}'

Example – Criptografia padrão com SSE-KMS usando uma chave de bucket do S3

Esse exemplo configura a criptografia de bucket padrão com o SSE-KMS usando uma chave de bucket do
S3.

aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration


'{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "aws:kms",
"KMSMasterKeyID": "KMS-Key-ARN"
},
"BucketKeyEnabled": true
}
]
}'

Uso dos REST API


Use a operação de criptografia PUT Bucket da API REST para habilitar a criptografia padrão e definir o tipo
de criptografia do lado do servidor de modo a usar SSE-S3 ou SSE-KMS.

Para obter mais informações, consulte PutBucketEncryption na Referência da API do Amazon Simple
Storage Service.

Depois de habilitar a criptografia padrão para um bucket, o seguinte comportamento de criptografia será
aplicado:

• Não há alteração na criptografia dos objetos que existiam no bucket antes da ativação da criptografia
padrão.
• Quando você faz upload de objetos após a ativação da criptografia padrão:
• Se seus cabeçalhos de solicitação PUT não incluírem informações de criptografia, o Amazon S3 usará
as configurações de criptografia padrão do bucket para criptografar os objetos.
• Se seus cabeçalhos de solicitação PUT incluírem informações de criptografia, o Amazon S3 usará as
informações de criptografia da solicitação PUT para criptografar objetos antes de armazená-los no
Amazon S3.
• Se você usar a opção SSE-KMS na sua configuração de criptografia padrão, estará sujeito aos limites
de RPS (solicitações por segundo) do AWS KMS. Para obter mais informações sobre os limites do AWS
KMS e sobre como solicitar um aumento de limite, consulte Limites do AWS KMS.

Versão da API 2006-03-01


47
Amazon Simple Storage Service Guia do usuário
Monitorar a criptografia padrão

Uso dos AWS SDKs


Para obter informações sobre como ativar a criptografia padrão usando os AWS SDKs, consulte
Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

Monitorar a criptografia padrão com CloudTrail e


CloudWatch
Você pode rastrear solicitações de configuração de criptografia padrão para buckets do Amazon S3
usando eventos do AWS CloudTrail. Os seguintes nomes de eventos de API são usados nos logs do
CloudTrail:

• PutBucketEncryption
• GetBucketEncryption
• DeleteBucketEncryption

Você também pode criar Amazon CloudWatch Events com operações no nível de bucket do S3 como o
tipo de evento. Para obter mais informações sobre eventos do CloudTrail, consulte Habilitar o registro em
log de objetos em um bucket usando o console (p. 825).

Você pode usar logs do CloudTrail para ações do Amazon S3 no nível de objeto a fim de rastrear
solicitações PUT e POST para o Amazon S3. Você pode usar essas ações para verificar se a criptografia
padrão está sendo usada para criptografar objetos quando as solicitações PUT recebidas não têm
cabeçalhos de criptografia.

Quando o Amazon S3 criptografa um objeto usando as configurações de criptografia padrão, o log


inclui o seguinte campo como o par de nome/valor: "SSEApplied":"Default_SSE_S3" or
"SSEApplied":"Default_SSE_KMS".

Quando o Amazon S3 criptografa um objeto usando os cabeçalhos de criptografia PUT, o log inclui um dos
seguintes campos como par de nome/valor: "SSEApplied":"SSE_S3", "SSEApplied":"SSE_KMS ou
"SSEApplied":"SSE_C".

Para multipart uploads, essas informações estão incluídas nas solicitações de API
InitiateMultipartUpload. Para obter mais informações sobre como usar o CloudTrail e o
CloudWatch, consulte Monitorar o Amazon S3 (p. 812).

Configurar transferências de arquivos rápidas


e seguras usando o Amazon S3 Transfer
Acceleration
O Amazon S3 Transfer Acceleration é um recurso em nível de bucket que possibilita transferências de
arquivos rápidas, fáceis e seguras em longas distâncias entre o seu cliente e um bucket do S3. O Transfer
Acceleration tira proveito dos pontos de presença distribuídos globalmente no Amazon CloudFront.
Conforme os dados chegam em um ponto de presença, eles são roteados para o Amazon S3 por um
caminho de rede otimizado.

Quando você usa o Transfer Acceleration, podem ser aplicadas cobranças adicionais de transferência de
dados. Para obter mais informações sobre a definição de preços, consulte Definição de preços do Amazon
S3.

Versão da API 2006-03-01


48
Amazon Simple Storage Service Guia do usuário
Por que usar o Transfer Acceleration?

Por que usar o Transfer Acceleration?


Você pode usar o Transfer Acceleration em um bucket por vários motivos:

• Seus clientes fazem upload em um bucket centralizado do mundo todo.


• Você transfere gigabytes a terabytes de dados regularmente entre continentes.
• Não é possível utilizar toda a largura de banda disponível via Internet ao fazer upload para o Amazon
S3.

Para obter mais informações sobre quando usar o Transfer Acceleration, consulte Perguntas frequentes do
Amazon S3.

Requisitos para usar o Transfer Acceleration


Veja o que é necessário ao usar o Transfer Acceleration em um bucket do S3:

• O Transfer Acceleration só tem suporte em solicitações de estilo hospedadas virtualmente. Para obter
mais informações sobre solicitações de estilo hospedadas virtualmente, consulte Fazer solicitações
usando a API REST (p. 1024).
• O nome do bucket usado para o Transfer Acceleration deve ser compatível com DNS e não deve conter
pontos (“.”).
• O Transfer Acceleration deve estar ativado no bucket. Para obter mais informações, consulte Habilitar e
usar o S3 Transfer Acceleration (p. 51).

Depois de habilitar o Transfer Acceleration em um bucket, pode levar até 20 minutos para que a
velocidade da transferência de dados para o bucket aumente.
Note

No momento, o Transfer Acceleration não é compatível com buckets localizados nas seguintes
regiões:
• África (Cidade do Cabo) (af-south-1)
• Ásia-Pacífico (Hong Kong) (ap-east-1)
• Ásia-Pacífico (Osaka) (ap-northeast-3)
• UE (Estocolmo) (eu-north-1)
• UE (Milão) (eu-south-1)
• Oriente Médio (Bahrein) (me-south-1)
• Para acessar o bucket que está habilitado para o Transfer Acceleration, você deve usar o
endpoint bucketname.s3-accelerate.amazonaws.com. Ou use o endpoint de pilha dupla
bucketname.s3-accelerate.dualstack.amazonaws.com para se conectar ao bucket habilitado
por IPv6.
• Você deve ser o proprietário do bucket para configurar o estado de aceleração de transferência. O
proprietário do bucket pode designar permissões para outros usuários para permitir que eles definam
o estado de aceleração em um bucket. A permissão s3:PutAccelerateConfiguration autoriza
os usuários a habilitarem ou desabilitarem o Transfer Acceleration em um bucket. A permissão
s3:GetAccelerateConfiguration autoriza os usuários a retornar o estado do Transfer Acceleration
de um bucket, que é Enabled ou Suspended. Para obter mais informações sobre essas permissões,
consulte Exemplo: operações de sub-recursos de bucket (p. 274) e Identity and Access Management
no Amazon S3 (p. 252).

As seções a seguir descrevem como começar a usar o Amazon S3 Transfer Acceleration para transferir
dados.
Versão da API 2006-03-01
49
Amazon Simple Storage Service Guia do usuário
Conceitos básicos

Tópicos
• Conceitos básicos do Amazon S3 Transfer Acceleration (p. 50)
• Habilitar e usar o S3 Transfer Acceleration (p. 51)
• Usar a ferramenta de comparação de velocidade do Amazon S3 Transfer Acceleration (p. 56)

Conceitos básicos do Amazon S3 Transfer


Acceleration
Você pode usar o Amazon S3 Transfer Acceleration para transferências de arquivos rápidas, fáceis e
seguras em longas distâncias entre o seu cliente e um bucket do S3. O Transfer Acceleration usa os
pontos de presença distribuídos globalmente no Amazon CloudFront. Conforme os dados chegam em um
ponto de presença, eles são roteados para o Amazon S3 por um caminho de rede otimizado.

Para começar a usar o Amazon S3 Transfer Acceleration, execute as seguintes etapas:

1. Habilitar o Transfer Acceleration em um bucket

Você pode ativar o Transfer Acceleration em um bucket de qualquer uma das seguintes maneiras:
• Use o console do Amazon S3.
• Use a operação PUT Bucket accelerate da API REST.
• Use a CLI da AWS e os SDKs da AWS. Para obter mais informações, consulte Desenvolvimento com
o Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

Para obter mais informações, consulte Habilitar e usar o S3 Transfer Acceleration (p. 51).
Note

Para que seu bucket funcione com a aceleração de transferência, o nome dele deve estar em
conformidade com os requisitos de nomenclatura de DNS e não deve conter pontos (“.”).
2. Transferir dados de e para o bucket habilitado para aceleração

Use um dos seguintes nomes de domínio de endpoint do s3-accelerate:


• Para acessar um bucket habilitado para aceleração, use bucketname.s3-
accelerate.amazonaws.com.
• Para acessar um bucket habilitado para aceleração por IPv6, use bucketname.s3-
accelerate.dualstack.amazonaws.com.

Os endpoints de pilha dupla do Amazon S3 oferecem suporte para buckets do S3 por IPv6 e IPv4. O
endpoint de pilha dupla do Transfer Acceleration usa somente o tipo virtual hospedado de nome do
endpoint. Para obter mais informações, consulte Conceitos básicos para fazer solicitações por meio
do IPv6 (p. 992) e Usar endpoints de pilha dupla do Amazon S3 (p. 995).
Note

Você pode continuar a usar o endpoint regular além dos endpoints de aceleração.

Você pode apontar as solicitações de objeto PUT e objeto GET do Amazon S3 para o nome de
domínio do endpoint do s3-accelerate depois de habilitar o Transfer Acceleration. Por exemplo,
suponha que você tenha atualmente uma aplicação API REST usando PUT Object que usa o nome
do host mybucket.s3.us-east-1.amazonaws.com na solicitação PUT. Para acelerar o PUT,
altere o nome do host em sua solicitação para mybucket.s3-accelerate.amazonaws.com.
Para voltar a usar a velocidade de upload padrão, altere o nome de volta para mybucket.s3.us-
Versão da API 2006-03-01
east-1.amazonaws.com.
50
Amazon Simple Storage Service Guia do usuário
Habilitar o Transfer Acceleration

Depois que o Transfer Acceleration é ativado, pode demorar 20 minutos para você perceber o benefício
da performance. Contudo, o endpoint de aceleração estará disponível assim que você habilitar o
Transfer Acceleration.

Você pode usar o endpoint de aceleração na AWS CLI, em AWS SDKs e outras ferramentas que
transferem dados para e do Amazon S3. Se você estiver usando AWS SDKs, algumas linguagens
compatíveis usam uma sinalização de configuração de cliente do endpoint de aceleração para que
você não precise definir explicitamente o endpoint do Transfer Acceleration como bucketname.s3-
accelerate.amazonaws.com. Para ver exemplos de como usar uma sinalização de configuração de
cliente do endpoint de aceleração, consulte Habilitar e usar o S3 Transfer Acceleration (p. 51).

Você pode usar todas as operações do Amazon S3 por meio dos endpoints de aceleração de
transferência, exceto as seguintes:

• GET Service (listar buckets)


• PUT Bucket (criar bucket)
• DELETE bucket

Além disso, o Amazon S3 Transfer Acceleration não oferece suporte a cópias entre regiões usando PUT
Object - Copy.

Habilitar e usar o S3 Transfer Acceleration


Você pode usar arquivos de transferência do Amazon S3 Transfer Acceleration de forma rápida e segura
em longas distâncias entre seu cliente e um bucket do S3. Você pode habilitar o Transfer Acceleration
usando o console do S3, a Interface de linha de comando da AWS (CLI da AWS) ou os AWS SDKs.

Esta seção fornece exemplos de como ativar o Amazon S3 Transfer Acceleration em um bucket e usar o
endpoint de aceleração para o bucket ativado.

Para obter mais informações sobre os requisitos do Transfer Acceleration, consulte Configurar
transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer Acceleration (p. 48).

Usar o console do S3
Note

Se você quiser comparar velocidades de upload aceleradas e não aceleradas, abra a ferramenta
Comparação de velocidade do Amazon S3 Transfer Acceleration.
A ferramenta de Comparação de velocidade usa o multipart uploads para transferir um arquivo
do seu navegador para várias regiões da AWS com e sem o uso do Amazon S3 Transfer
Acceleration. É possível comparar a velocidade de upload para uploads diretos e uploads de
transferência acelerada por região.

Para habilitar o Transfer Acceleration para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket no qual você deseja habilitar a aceleração de
transferência.
3. Escolha Propriedades.
4. Em Transfer acceleration (Aceleração de transferência), escolha Edit (Editar).
5. Escolha Enable (Habilitar) e Save changes (Salvar alterações).

Versão da API 2006-03-01


51
Amazon Simple Storage Service Guia do usuário
Habilitar o Transfer Acceleration

Para acessar transferências de dados aceleradas

1. Depois que o Amazon S3 habilitar a aceleração de transferência para seu bucket, visualize a guia
Properties (Propriedades) do bucket.
2. Em Transfer acceleration (Aceleração de transferência), o Accelerated endpoint (Endpoint acelerado)
exibe o endpoint de aceleração de transferência para o bucket. Use esse endpoint para acessar
transferências de dados aceleradas do bucket e para ele.

Se você suspender a Transfer Acceleration, o endpoint de aceleração não funcionará mais.

Usar a CLI da AWS


Veja a seguir exemplos de comandos da CLI da AWS usados para o Transfer Acceleration. Para obter
instruções de configuração da AWS CLI, consulte Desenvolvimento com o Amazon S3 usando a AWS
CLI (p. 1033).

Habilitar o Transfer Acceleration em um bucket


Use o comando put-bucket-accelerate-configuration da AWS CLI para habilitar ou suspender o Transfer
Acceleration em um bucket.

O exemplo a seguir define Status=Enabled para ativar o Transfer Acceleration em um bucket. Use
Status=Suspended para suspender o Transfer Acceleration.

Example

$ aws s3api put-bucket-accelerate-configuration --bucket bucketname --accelerate-


configuration Status=Enabled

Habilitar o Transfer Acceleration


Você pode direcionar todas as solicitações do Amazon S3 feitas pelos comandos s3 e s3api da CLI da
AWS para o endpoint de aceleração: s3-accelerate.amazonaws.com. Para fazer isso, defina o valor
de configuração use_accelerate_endpoint como true em um perfil no arquivo do AWS Config. O
Transfer Acceleration deve ser ativado em seu bucket para usar o endpoint de aceleração.

Todas as solicitações são enviadas usando o estilo virtual de endereçamento de bucket: my-bucket.s3-
accelerate.amazonaws.com. As solicitações ListBuckets, CreateBucket e DeleteBucket não
serão enviadas ao endpoint de aceleração porque esse endpoint não oferece suporte a essas operações.

Para obter mais informações sobre use_accelerate_endpoint, consulte Configuração do S3 com a


CLI da AWS na Referência de comandos da CLI da AWS.

O exemplo a seguir define use_accelerate_endpoint como true no perfil padrão.

Example

$ aws configure set default.s3.use_accelerate_endpoint true

Se você quiser usar o endpoint de aceleração para alguns comandos da AWS CLI, mas não para outros,
use qualquer um destes dois métodos:

• Use o endpoint de aceleração para qualquer comando s3 ou s3api definindo o parâmetro --endpoint-
url como https://s3-accelerate.amazonaws.com.
• Configure perfis separados em seu arquivo AWS Config. Por exemplo, crie um perfil que defina
use_accelerate_endpoint como true e um perfil que não defina use_accelerate_endpoint.
Ao executar um comando, especifique qual perfil deseja usar, caso queira ou não usar o endpoint de
aceleração.

Versão da API 2006-03-01


52
Amazon Simple Storage Service Guia do usuário
Habilitar o Transfer Acceleration

Fazer upload de um objeto em um bucket habilitado para o Transfer Acceleration

O exemplo a seguir faz upload de um arquivo em um bucket habilitado para o Transfer Acceleration
usando o perfil padrão que foi configurado para usar o endpoint de aceleração.

Example

$ aws s3 cp file.txt s3://bucketname/keyname --region region

O exemplo a seguir faz upload de um arquivo em um bucket habilitado para o Transfer Acceleration
usando o parâmetro --endpoint-url para especificar o endpoint de aceleração.

Example

$ aws configure set s3.addressing_style virtual


$ aws s3 cp file.txt s3://bucketname/keyname --region region --endpoint-url https://s3-
accelerate.amazonaws.com

Uso dos AWS SDKs


Veja a seguir exemplos de uso do Transfer Acceleration para fazer upload de objetos para o Amazon S3
usando o AWS SDK. Algumas linguagens compatíveis com o AWS SDK (por exemplo, Java e .NET) usam
uma sinalização de configuração de cliente do endpoint de aceleração para que você não precise definir
explicitamente o endpoint do Transfer Acceleration como bucketname.s3-accelerate.amazonaws.com.

Java

Example

O exemplo a seguir mostra como usar um endpoint de aceleração para fazer upload de um objeto no
Amazon S3. O exemplo faz o seguinte:

• Cria um AmazonS3Client que é configurado para usar endpoints de aceleração. Todos os buckets
acessados pelo cliente devem ter o Transfer Acceleration habilitado.
• Habilita o Transfer Acceleration em um bucket especificado. Essa etapa é necessária somente se o
bucket que você especificar não tiver o Transfer Acceleration habilitado ainda.
• Verifica se a aceleração da transferência está habilitada para o bucket especificado.
• Faz upload de um novo objeto para o bucket especificado usando o endpoint de aceleração do
bucket.

Para obter mais informações sobre o Transfer Acceleration, consulte Conceitos básicos do Amazon
S3 Transfer Acceleration (p. 50). Para obter instruções sobre criar e testar um exemplo funcional,
consulte Testar exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.BucketAccelerateConfiguration;
import com.amazonaws.services.s3.model.BucketAccelerateStatus;
import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest;

Versão da API 2006-03-01


53
Amazon Simple Storage Service Guia do usuário
Habilitar o Transfer Acceleration

public class TransferAcceleration {


public static void main(String[] args) {
Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ***";

try {
// Create an Amazon S3 client that is configured to use the accelerate
endpoint.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.enableAccelerateMode()
.build();

// Enable Transfer Acceleration for the specified bucket.


s3Client.setBucketAccelerateConfiguration(
new SetBucketAccelerateConfigurationRequest(bucketName,
new BucketAccelerateConfiguration(
BucketAccelerateStatus.Enabled)));

// Verify that transfer acceleration is enabled for the bucket.


String accelerateStatus = s3Client.getBucketAccelerateConfiguration(
new GetBucketAccelerateConfigurationRequest(bucketName))
.getStatus();
System.out.println("Bucket accelerate status: " + accelerateStatus);

// Upload a new object using the accelerate endpoint.


s3Client.putObject(bucketName, keyName, "Test object for transfer
acceleration");
System.out.println("Object \"" + keyName + "\" uploaded with transfer
acceleration.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

O exemplo a seguir mostra como usar o AWS SDK para .NET para habilitar o Transfer Acceleration
em um bucket. Para obter instruções sobre como criar e testar um exemplo funcional, consulte
Executar os exemplos de código do Amazon S3 .NET (p. 1044).

Example

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class TransferAccelerationTest
{
private const string bucketName = "*** bucket name ***";

Versão da API 2006-03-01


54
Amazon Simple Storage Service Guia do usuário
Habilitar o Transfer Acceleration

// Specify your bucket region (an example region is shown).


private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
public static void Main()
{
s3Client = new AmazonS3Client(bucketRegion);
EnableAccelerationAsync().Wait();
}

static async Task EnableAccelerationAsync()


{
try
{
var putRequest = new PutBucketAccelerateConfigurationRequest
{
BucketName = bucketName,
AccelerateConfiguration = new AccelerateConfiguration
{
Status = BucketAccelerateStatus.Enabled
}
};
await s3Client.PutBucketAccelerateConfigurationAsync(putRequest);

var getRequest = new GetBucketAccelerateConfigurationRequest


{
BucketName = bucketName
};
var response = await
s3Client.GetBucketAccelerateConfigurationAsync(getRequest);

Console.WriteLine("Acceleration state = '{0}' ", response.Status);


}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine(
"Error occurred. Message:'{0}' when setting transfer
acceleration",
amazonS3Exception.Message);
}
}
}
}

Ao fazer upload de um objeto a um bucket com Transfer Acceleration habilitado, especifique usando o
endpoint de aceleração no momento da criação de um cliente.

var client = new AmazonS3Client(new AmazonS3Config


{
RegionEndpoint = TestRegionEndpoint,
UseAccelerateEndpoint = true
}

Javascript

Para ver um exemplo de ativação do Transfer Acceleration usando o AWS SDK para JavaScript,
consulte Chamada da operação putBucketAccelerateConfiguration na Referência de API do AWS SDK
para JavaScript.
Python (Boto)

Para obter um exemplo de ativação do Transfer Acceleration usando o SDK para Python, consulte
put_bucket_accelerate_configuration na Referência da API do AWS SDK para Python (Boto3).

Versão da API 2006-03-01


55
Amazon Simple Storage Service Guia do usuário
Ferramenta de comparação de velocidade

Other

Para obter informações sobre como usar outros AWS SDKs, consulte Código de exemplo e
bibliotecas.

Usar a ferramenta de comparação de velocidade do


Amazon S3 Transfer Acceleration
Você pode usar a Ferramenta de comparação de velocidade do Amazon S3 Transfer Acceleration para
comparar velocidades de upload aceleradas e não aceleradas em regiões do Amazon S3. A ferramenta
de comparação de velocidade usa o multipart uploads para transferir um arquivo do seu navegador para
várias regiões do Amazon S3 com e sem o uso do Transfer Acceleration.

Você pode acessar a ferramenta de comparação de velocidade usando qualquer um dos seguintes
métodos:

• Copie o seguinte URL na janela do navegador, substituindo region pela região da AWS que você está
usando (por exemplo, us-west-2) e yourBucketName pelo nome do bucket que deseja avaliar:

https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-
speed-comparsion.html?region=region&origBucketName=yourBucketName

Para obter uma lista das regiões compatíveis com o Amazon S3, consulte Endpoints e cotas do Amazon
S3 na Referência geral da AWS.
• Use o console do Amazon S3.

Configuração de buckets de Pagamento pelo


solicitante para transferências de armazenamento e
uso
Geralmente, proprietários de bucket pagam por todos os custos de armazenamento e transferência de
dados do Amazon S3 associados ao bucket. No entanto, você pode configurar um bucket para ser um
bucket de Pagamento pelo solicitante . Com buckets de Pagamento pelo solicitante, é o solicitante, em vez
de o proprietário do bucket, quem paga pelo custo da solicitação e de download de dados do bucket. O
proprietário do bucket sempre paga pelo custo de armazenamento de dados.

Normalmente, você configura buckets como Pagamento pelo solicitante quando quer compartilhar
dados, mas não quer incorrer em cobranças associadas a outros que acessam os dados. Você pode, por
exemplo, usar buckets de Pagamento pelo solicitante ao disponibilizar grandes conjuntos de dados, tais
como diretórios de CEP, dados de referência, informações geoespaciais ou dados de crawling da Web.
Important

Se você habilitar Pagamento pelo solicitante em um bucket, o acesso anônimo a esse bucket não
será permitido.

Você deve autenticar todas as solicitações que envolvem buckets de Pagamento pelo solicitante. A
autenticação da solicitação permite que o Amazon S3 identifique e cobre o solicitante pelo uso do bucket
de Pagamento pelo solicitante.

Quando o solicitante assume uma função do AWS Identity and Access Management (IAM) antes de fazer
a solicitação, a conta à qual a função pertence é cobrada pela solicitação. Para obter mais informações
sobre funções do IAM, consulte Funções do IAM no Guia do Usuário do IAM.

Versão da API 2006-03-01


56
Amazon Simple Storage Service Guia do usuário
Como funcionam as cobranças
de Pagamento pelo solicitante

Após configurar um bucket para ser um bucket de Pagamento pelo solicitante, os solicitantes devem incluir
x-amz-request-payer em suas solicitações no cabeçalho, para solicitações POST, GET e HEAD,
ou como um parâmetro em uma solicitação REST para mostrar que entendem que serão cobrados pela
solicitação e pelo download dos dados.

Os buckets de Pagamento pelo solicitante não oferecem suporte aos itens a seguir.

• Solicitações anônimas
• BitTorrent
• Solicitações de SOAP
• Usando um bucket Pagamento pelo solicitante como bucket de destino para log de usuário final ou vice-
versa. No entanto, você pode ativar o log do usuário final em um bucket Pagamento pelo solicitante no
qual o bucket de destino não é um bucket Pagamento pelo solicitante.

Como funcionam as cobranças de Pagamento pelo


solicitante
A cobrança por solicitações de Pagamento pelo solicitante bem-sucedidas é direta: o solicitante paga pela
transferência de dados e pela solicitação; o proprietário do bucket paga pelo armazenamento de dados.
Contudo, o proprietário do bucket é cobrado pela solicitação nas seguintes condições:

• O solicitante não inclui o parâmetro x-amz-request-payer no cabeçalho (GET, HEAD ou POST) ou


como um parâmetro (REST) na solicitação (código HTTP 403).
• Falha na autenticação da solicitação (código HTTP 403).
• A solicitação é anônima (código HTTP 403).
• A solicitação é uma solicitação SOAP.

Para obter mais informações Pagamentos pelo solicitante, consulte os tópicos abaixo.

Tópicos
• Configurar Pagamento pelo solicitante em um bucket (p. 57)
• Recuperar a configuração requestPayment usando a API REST (p. 59)
• Fazer download de objetos em buckets de Pagamento pelo solicitante (p. 59)

Configurar Pagamento pelo solicitante em um bucket


Você pode configurar um bucket do Amazon S3 para ser um bucket de Pagamento pelo solicitante, de
modo que o solicitante pague o custo da solicitação e do download de dados em vez do proprietário do
bucket.

Esta seção fornece exemplos de como configurar o pagamento pelo solicitante em um bucket do Amazon
S3 usando o console e a API REST.

Uso do console do &S3


Como habilitar o Pagamento pelo solicitante para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets escolha o nome do bucket para o qual você deseja habilitar Pagamento pelo
solicitante.

Versão da API 2006-03-01


57
Amazon Simple Storage Service Guia do usuário
Configurar Pagamento pelo solicitante

3. Escolha Propriedades.
4. Em Requester pays (Pagamento pelo solicitante), escolha Edit (Editar).
5. Escolha Enable (Habilitar) e Save changes (Salvar alterações).

O Amazon S3 habilitará o Pagamento pelo solicitante para o bucket e exibirá a Bucket overview
(Visão geral do bucket). Em Requester pays (Pagamento pelo solicitante), você verá a opção Enabled
(Habilitado).

Uso dos REST API


Somente o proprietário do bucket pode definir o valor de configuração
RequestPaymentConfiguration.payer de um bucket como BucketOwner (o padrão) ou
Requester. A definição do recurso requestPayment é opcional. Por padrão, o bucket não é um bucket
de Pagamento pelo solicitante.

Para reverter um bucket de Pagamento pelo solicitante para um bucket regular, use o valor BucketOwner.
Normalmente, você usaria BucketOwner ao fazer upload de dados para o bucket do Amazon S3 e
definiria o valor como Requester antes da publicação de objetos no bucket.

Para definir requestPayment

• Use uma solicitação PUT para definir o valor Payer como Requester em um bucket especificado.

PUT ?requestPayment HTTP/1.1


Host: [BucketName].s3.amazonaws.com
Content-Length: 173
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS [Signature]

<RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Payer>Requester</Payer>
</RequestPaymentConfiguration>

Se houver êxito na solicitação, o Amazon S3 retornará uma resposta similar ao seguinte:

HTTP/1.1 200 OK
x-amz-id-2: [id]
x-amz-request-id: [request_id]
Date: Wed, 01 Mar 2009 12:00:00 GMT
Content-Length: 0
Connection: close
Server: AmazonS3
x-amz-request-charged:requester

Você pode definir pagamentos do solicitante somente no nível de bucket. Você não pode definir
pagamentos pelo solicitante para objetos específicos dentro do bucket.

Você pode configurar um bucket para ser BucketOwner ou Requester a qualquer momento. No entanto,
pode haver alguns minutos antes que o novo valor de configuração entre em vigor.
Note

Proprietários de bucket que abrem mão de URLs pré-assinadas devem pensar duas vezes antes
de configurar um bucket para ser de pagamento pelo solicitante, especialmente se o URL tiver
um ciclo de vida bem longo. O proprietário do bucket é cobrado cada vez que o solicitante usa um
pre-signed URL que usa as credenciais do proprietário do bucket.

Versão da API 2006-03-01


58
Amazon Simple Storage Service Guia do usuário
Recuperação da configuração de requestPayment

Recuperar a configuração requestPayment usando a


API REST
Você pode determinar o Payer valor que é definido em um bucket solicitando o recurso
requestPayment.

Para retornar o recurso requestPayment

• Use uma solicitação GET para obter o recurso requestPayment, conforme exibido na seguinte
solicitação.

GET ?requestPayment HTTP/1.1


Host: [BucketName].s3.amazonaws.com
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS [Signature]

Se houver êxito na solicitação, o Amazon S3 retornará uma resposta similar ao seguinte:

HTTP/1.1 200 OK
x-amz-id-2: [id]
x-amz-request-id: [request_id]
Date: Wed, 01 Mar 2009 12:00:00 GMT
Content-Type: [type]
Content-Length: [length]
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>


<RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Payer>Requester</Payer>
</RequestPaymentConfiguration>

Esta resposta mostra que o valor payer é definido como Requester.

Fazer download de objetos em buckets de Pagamento


pelo solicitante
Como os solicitantes serão cobrados pelo download de dados dos buckets de Pagamento pelo solicitante,
as solicitações deverão conter um parâmetro especial, x-amz-request-payer, que confirma que o
solicitante sabe que será cobrado pelo download. Para acessar objetos em buckets de Pagamento pelo
solicitante, as solicitações devem incluir um dos seguintes.

• Para solicitações GET, HEAD e POST, inclua x-amz-request-payer : requester no cabeçalho


• Para URLs assinados, inclua x-amz-request-payer=requester na solicitação

Se a solicitação for bem-sucedida e o solicitante for cobrado, a resposta incluirá o cabeçalho x-amz-
request-charged:requester. Se x-amz-request-payer não estiver na solicitação, o Amazon S3
retornará um erro 403 e cobrará o proprietário do bucket pela solicitação.
Note
Proprietários de bucket não precisam adicionar x-amz-request-payer às suas solicitações.
Certifique-se de que você tenha incluído x-amz-request-payer e seu valor
no cálculo da assinatura. Para obter mais informações, consulte Criar o elemento
CanonicalizedAmzHeaders (p. 1064).

Versão da API 2006-03-01


59
Amazon Simple Storage Service Guia do usuário
Restrições e limitações

Uso dos REST API


Para fazer download de objetos em um bucket de Pagamento pelo solicitante

• Use uma solicitação GET para fazer download de um objeto em um bucket de Pagamento pelo
solicitante, conforme exibido na seguinte solicitação.

GET / [destinationObject] HTTP/1.1


Host: [BucketName].s3.amazonaws.com
x-amz-request-payer : requester
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS [Signature]

Se a solicitação GET for bem-sucedida e o solicitante for cobrado, a resposta incluirá x-amz-request-
charged:requester.

O Amazon S3 poderá retornar um erro Access Denied para solicitações que tentarem obter objetos de
um bucket de Pagamento pelo solicitante. Para obter informações, consulte Erros Responses (Respostas
com erro) na Referência de APIs do Amazon Simple Storage Service.

Usar a CLI da AWS


Para fazer download de objetos de um bucket de Pagamento pelo solicitante usando a AWS CLI,
especifique --request-payer requester como parte da sua solicitação get-object. Para obter
mais informações, consulte get-object na Referência da AWS CLI.

Restrições e limitações do bucket


Um bucket do Amazon S3 é de propriedade da conta da AWS que o criou. A propriedade do bucket não é
transferível para outra conta.

Ao criar um bucket, você escolhe o nome dele e a região da AWS onde criá-lo. Depois de criar um bucket,
não é necessário alterar o nome nem a região.

Ao nomear um bucket, escolha um nome que seja relevante para você ou para sua empresa. Evite usar
nomes associados a outros. Por exemplo, você deve evitar usar AWS ou Amazon em seu nome de bucket.

Por padrão, você pode criar até 100 buckets em cada conta da AWS. Se precisar de buckets adicionais,
você poderá aumentar o limite de bucket da conta para um máximo de 1.000 buckets enviando um
aumento de limite de serviço. Não há diferença no desempenho ao usar muitos buckets ou somente
alguns.

Para obter informações sobre como aumentar o limite do seu bucket, consulte Cotas de serviço da AWS
na Referência geral da AWS.

Reutilização de nomes de bucket

Se um bucket estiver vazio, você poderá excluí-lo. Depois de excluído, o nome do bucket fica disponível
para reutilização. No entanto, depois de excluir o bucket, talvez você não consiga reutilizar o nome por
diversos motivos.

Por exemplo, quando você exclui o bucket e o nome fica disponível para reutilização, uma outra conta
pode criar um bucket com esse nome. Além disso, pode demorar algum tempo até que seja possível
reutilizar o nome de um bucket excluído. Se você quiser usar o mesmo nome de bucket, recomendamos
que você não exclua o bucket.

Versão da API 2006-03-01


60
Amazon Simple Storage Service Guia do usuário
Restrições e limitações

Para obter mais informações sobre nomes de bucket, consulte Regras de nomeação de bucket (p. 30).

Objetos e buckets

Não há limite para o número de objetos que você pode armazenar em um bucket. Você pode armazenar
todos os objetos em um único bucket, ou pode organizá-los em vários buckets. No entanto, você não pode
criar um bucket de dentro de outro bucket.

Operações de buckets

A engenharia de alta disponibilidade do Amazon S3 é focada nas operações get, put, list e delete. Como
as operações de bucket funcionam em um espaço de recurso centralizado e global, não é apropriado
criar ou excluir buckets no caminho de código de alta disponibilidade da sua aplicação. É melhor criar ou
excluir buckets em uma rotina de inicialização ou configuração separada que você executa com menor
frequência.

Nomeação de bucket e buckets criados automaticamente

Se o seu aplicativo cria buckets automaticamente, escolha um esquema de nomeação de bucket que não
seja suscetível a causar conflitos de nomeação. Certifique-se de que a lógica do seu aplicativo escolha um
nome de bucket diferente, caso um nome de bucket já esteja em uso.

Para obter mais informações sobre nomeação de bucket, consulte Regras de nomeação de
bucket (p. 30).

Versão da API 2006-03-01


61
Amazon Simple Storage Service Guia do usuário
Objetos

Fazer upload, fazer download e


trabalhar com objetos no Amazon S3
Para armazenar seus dados no Amazon S3, você trabalha com recursos conhecidos como buckets 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 em um bucket. Quando
o objeto estiver no bucket, você poderá abri-lo, fazer download dele e movê-lo. Quando você não precisa
mais de um objeto ou um bucket, você pode limpar esses 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 AWS Free Tier (Nível gratuito da AWS).

Tópicos
• Visão geral de objetos Amazon S3 (p. 62)
• Criar nomes de chave de objeto (p. 64)
• Trabalhar com metadados de objeto (p. 66)
• Fazer upload de objetos (p. 71)
• Carregar e copiar objetos usando multipart upload (p. 80)
• Cópia de objetos (p. 114)
• Fazer download de um objeto (p. 122)
• Excluir objetos do Amazon S3 (p. 128)
• Organizar, listar e trabalhar com seus objetos (p. 148)
• Usar pre-signed URLs (p. 158)
• Transformar objetos com o S3 Object Lambda (p. 168)
• Recuperar objetos do Amazon S3 usando BitTorrent (p. 189)

Visão geral de objetos Amazon S3


O Amazon S3 é um depósito de objetos que usa valores de chave exclusivos para armazenar quantos
objetos você quiser. Esses objetos são armazenados em um ou mais buckets e cada objeto pode ter até 5
TB de tamanho. Um objeto consiste no seguinte:

Chave

O nome que você atribui a um objeto. Você usa a chave de objeto para recuperar o objeto. Para obter
mais informações, consulte Trabalhar com metadados de objetos (p. 66).
ID da versão

Em um bucket, uma chave e um ID de versão identificam um objeto de maneira exclusiva. O ID de


versão é uma string que o Amazon S3 gera quando você adiciona um objeto a um bucket. Para obter
mais informações, consulte Usando o controle de versão em buckets do S3 (p. 516).
Valor

O conteúdo que você está armazenando.

Versão da API 2006-03-01


62
Amazon Simple Storage Service Guia do usuário
Sub-recursos

Um valor de objeto pode ser qualquer sequência de bytes. Objetos podem variar em tamanho de zero
a 5 TB. Para obter mais informações, consulte Fazer upload de objetos (p. 71).
Metadados

Um conjunto de pares de nome-valor com o qual é possível armazenar informações relacionadas ao


objeto. Você pode atribuir os metadados, referidos como metadados definidos pelo usuário, a seus
objetos no Amazon S3. O Amazon S3 também atribui metadados de sistema a esses objetos, os
quais o sistema usa para gerenciar objetos. Para obter mais informações, consulte Trabalhar com
metadados de objetos (p. 66).
Sub-recursos

O Amazon S3 usa o mecanismo de sub-recursos para armazenar informações adicionais específicas


do objeto. Como os sub-recursos são subordinados aos objetos, eles estão sempre associados com
qualquer outra entidade, tal como um objeto ou um bucket. Para obter mais informações, consulte
Sub-recursos do objeto (p. 63).
Informações de controle de acesso

Você pode controlar o acesso aos objetos armazenados no Amazon S3. O Amazon S3 e compatível
com o controle de acesso baseado em recursos, como uma lista de controle de acesso (ACL) e
políticas de bucket, e com o controle de acesso de dados baseados no usuário. Para obter mais
informações, consulte Identity and Access Management no Amazon S3 (p. 252).

Seus recursos do Amazon S3 (por exemplo, buckets e objetos) são privados por padrão. É necessário
conceder permissão expressa para que outras pessoas acessem esses recursos. Para obter mais
informações sobre compartilhamento de objetos, consulte Compartilhar um objeto com uma pre-
signed URL (p. 159).

Sub-recursos do objeto
O Amazon S3 define um conjunto de sub-recursos associados a buckets e objetos. Os subrecursos são
subordinados aos objetos. Isso significa que os subrecursos não existem por conta própria. Eles são
sempre associados a alguma outra entidade, como um objeto ou um bucket.

A tabela a seguir lista os sub-recursos associados a objetos do Amazon S3.

Sub-recurso Descrição

acl Contém uma lista de concessões que identifica os concessionários e permissões


concedidas. Quando você cria um objeto, o acl identifica o proprietário do objeto como
tendo total controle sobre o objeto. Você pode recuperar a ACL de um objeto ou substituí-
la por uma lista atualizada de concessões. Qualquer atualização para um ACL requer que
você substitua o ACL existente. Para obter mais informações sobre ACLs, consulte Visão
geral da lista de controle de acesso (ACL) (p. 440).

torrent O Amazon S3 é compatível com o protocolo BitTorrent. O Amazon S3 usa o sub-recurso


torrent para retornar o arquivo torrent associado ao objeto específico. Para recuperar
um arquivo de torrent, especifique o sub-recurso torrent na sua solicitação GET. O
Amazon S3 cria um arquivo torrent e retorna esse arquivo. Você só pode recuperar
o sub-recurso torrent, mas não é possível criar, atualizar ou excluir o sub-recurso
torrent. Para obter mais informações, consulte Recuperar objetos do Amazon S3
usando BitTorrent (p. 189).
Note

O Amazon S3 não é compatível com o protocolo BitTorrent nas regiões da AWS


lançadas após 30 de maio de 2016.

Versão da API 2006-03-01


63
Amazon Simple Storage Service Guia do usuário
Criar chaves de objeto

Criar nomes de chave de objeto


A chave de objeto (ou nome da chave) identifica o objeto em um bucket do Amazon S3 de maneira
exclusiva. Metadados de objeto são um conjunto de pares de nome-valor. Para obter mais informações
sobre metadados de objeto, consulte Trabalhar com metadados de objeto (p. 66).

Quando você cria um objeto, especifica o nome da chave que, exclusivamente, identifica o objeto no
bucket. Por exemplo, no console do Amazon S3, quando você destaca um bucket, uma lista de objetos
no bucket é exibida. Esses nomes são as chaves de objeto. O nome para uma chave é uma sequência de
caracteres Unicode cuja codificação UTF-8 é de, no máximo, 1.024 bytes de comprimento.

O modelo de dados do Amazon S3 é uma estrutura plana: você cria um bucket e o bucket armazena
objetos. Não há hierarquia de sub-buckets ou de subpastas. No entanto, é possível pressupor a hierarquia
lógica usando prefixos e delimitadores de nome de chave como faz o console do Amazon S3. O console
do Amazon S3 é compatível com o conceito de pastas. Para obter mais informações sobre como editar
metadados do console do Amazon S3, consulte Editar metadados de objeto no console do Amazon
S3 (p. 69).

Vamos supor que seu bucket (admin-created) tenha quatro objetos com as seguintes chaves de objeto:

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

O console usa prefixos de nome de chave (Development/, Finance/ e Private/) e o delimitador ("/")
para apresentar uma estrutura de pasta. A chave s3-dg.pdf não tem um prefixo, portanto, seu objeto
aparece diretamente no nível raiz do bucket. Se você abrir a pasta Development/, você verá o objeto
Projects.xlsx dentro dela.

• O Amazon S3 é compatível com buckets e objetos e não há nenhuma hierarquia. No entanto, ao usar
prefixos e delimitadores em um nome de chave de objeto, o console do Amazon S3 e os AWS SDKs
podem pressupor uma hierarquia e apresentar o conceito de pastas.
• O console do Amazon S3 implementa a criação de objetos de pasta criando objetos de zero bytes com
o valor de prefixo e do delimitador da pasta como a chave. Esses objetos de pasta não aparecem no
console. Caso contrário, eles se comportam como qualquer outro objeto e podem ser visualizados e
manipulados por meio da API REST, da CLI da AWS e dos AWS SDKs.

Diretrizes de nomeação de chave de objeto


Você pode usar qualquer caractere UTF-8 em um nome de chave de objeto. No entanto, o uso de
determinados caracteres em nomes de chave pode causar problemas com alguns aplicativos e protocolos.
As seguintes diretrizes ajudam você a maximizar a conformidade com DNS, caracteres seguros da web,
parsers de XML e outras APIs.

Caracteres seguros
Os seguintes conjuntos de caracteres são, geralmente, confiáveis para uso em nomes de chave.

Caracteres alfanuméricos • 0-9


• a-z
• A-Z

Versão da API 2006-03-01


64
Amazon Simple Storage Service Guia do usuário
Diretrizes de nomeação de chave de objeto

Caracteres especiais • Barra (/)


• Ponto de exclamação (!)
• Hífen (-)
• Sublinhado (_)
• Ponto final (.)
• Asterisco (*)
• Aspas simples (')
• Abrir parênteses (()
• Fechar parênteses ())

Os seguintes são exemplos de nomes de chave válidos:

• 4my-organization
• my.great_photos-2014/jan/myvacation.jpg
• videos/2014/birthday/video1.wmv

Important

Se o nome da chave de um objeto terminar em com único ponto (.) ou com dois pontos (..), não
será possível fazer download do objeto usando o console do Amazon S3. Para fazer download
de um objeto com um nome de chave terminando com “.” ou “..”, é necessário usar a Interface de
linha de comando da AWS (CLI da AWS), os AWS SDKs ou a API REST.

Caracteres que podem exigir tratamento especial


Os caracteres a seguir em um nome de chave podem exigir tratamento adicional do código e,
provavelmente, precisarão ser criptografados em URL ou referenciados como HEX. Alguns desses
caracteres não são imprimíveis, e seu navegador pode não reconhecê-los, o que também exigirá
tratamento especial:

• Sinal tipográfico (“&”)


• Dólar ("$")
• Caracteres ASCII variam de 00-1F em hexadecimal (0-31 decimal) e 7F (127 decimal)
• Símbolo 'Arroba' ("@")
• Igual a ("=")
• Ponto-e-vírgula (“;")
• Dois pontos (“:")
• Mais ("+")
• Espaço: sequências significativas de espaços podem ser perdidas em alguns usos (especialmente
múltiplos espaços)
• Vírgula (“,”)
• Ponto de interrogação (“?”)

Caracteres a serem evitados


Evite os caracteres a seguir em um nome de chave devido ao tratamento especial significativo necessário
para consistência em todos os aplicativos.

• Barra invertida (“\")

Versão da API 2006-03-01


65
Amazon Simple Storage Service Guia do usuário
Trabalhar com metadados

• Chave esquerda (“{”)


• Caracteres ASCII não imprimíveis (128-255 caracteres decimais)
• Circunflexo ("^")
• Chave direita (“}")
• Caractere de porcentagem (“%")
• Crase (“`")
• Colchete direito (“]")
• Pontos de interrogação
• Sinal de maior (“>")
• Colchete esquerdo (“[")
• Til (“~")
• Sinal de menor ("<")
• Caractere de libra (“#")
• Barra vertical ("|")

Restrições de chave de objeto relacionado a XML


Conforme especificado pelo padrão XML no processamento de fim de linha, todo o texto XML é
normalizado de modo que os retornos de carro simples (código ASCII 13) e os retornos de carro
imediatamente seguidos por uma nova linha (código ASCII 10) sejam substituídos por um único caractere
de nova linha. Para garantir a análise correta de chaves de objeto em solicitações XML, retornos de carro
e outros caracteres especiais devem ser substituídos por seu código de entidade XML equivalente quando
forem inseridos em tags XML. A seguinte lista mostra os tais caracteres especiais e seus códigos de
entidade equivalentes:

• ' como &apos;


• ” como &quot;
• & como &amp;
• < como &lt;
• > como &gt;
• \r como &#13; ou &#x0D;
• \n como &#10; ou &#x0A;

Example

O exemplo a seguir ilustra o uso de um código de entidade XML como uma substituição para um retorno
de carro. Esta solicitação DeleteObjects exclui um objeto com o parâmetro key: /some/prefix/
objectwith\rcarriagereturn (onde \r é o retorno de carro).

<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>/some/prefix/objectwith&#13;carriagereturn</Key>
</Object>
</Delete>

Trabalhar com metadados de objeto


Você pode definir metadados de objeto no Amazon S3 no momento do upload do objeto. Metadados de
objeto são um conjunto de pares nome-valor. Após fazer upload do objeto, você não pode modificar seus

Versão da API 2006-03-01


66
Amazon Simple Storage Service Guia do usuário
Metadados do objeto definidos pelo sistema

metadados. A única forma de modificar metadados de objeto é fazer uma cópia do objeto e definir os
metadados.

Ao criar um objeto, você também especifica o nome da chave, que identifica exclusivamente o objeto no
bucket. A chave de objeto (ou nome da chave) identifica o objeto em um bucket do Amazon S3 de maneira
exclusiva. Para obter mais informações, consulte Criar nomes de chave de objeto (p. 64).

Há dois tipos de metadados no Amazon S3: definidos pelo sistema e definidos pelo usuário. As seções
abaixo fornecem mais informações sobre metadados definidos pelo sistema e definidos pelo usuário. Para
obter mais informações sobre como editar metadados usando o console do Amazon S3, consulte Editar
metadados de objeto no console do Amazon S3 (p. 69).

Metadados do objeto definidos pelo sistema


Para cada objeto armazenado em um bucket, o Amazon S3 mantém um conjunto de metadados do
sistema. O Amazon S3 processa estes metadados do sistema conforme necessário. Por exemplo, o
Amazon S3 mantém a data de criação e o tamanho dos metadados e usa essas informações como parte
do gerenciamento do objeto.

Existem duas categorias de metadados de sistema:

1. Os metadados, como a data de criação do objeto, são controlados pelo sistema e somente o Amazon
S3 pode modificar o valor.
2. Outros metadados de sistema, como a classe de armazenamento configurada para o objeto e se o
objeto tem criptografia habilitada no lado do servidor, são exemplos cujos valores são controlados por
você. Se o bucket está configurado como um site, você pode querer redirecionar uma solicitação de
página para outra página ou para um URL externo. Nesse caso, uma página é um objeto no bucket. O
Amazon S3 armazena o valor de redirecionamento da página como metadados do sistema com valores
que você controla.

Ao criar objetos, você pode configurar os valores desses itens de metadados de sistema ou atualizar os
valores quando necessário. Para obter mais informações sobre classes de armazenamento, consulte
Uso de classes de armazenamento do Amazon S3 (p. 563).

Para obter mais informações sobre criptografia no lado do servidor, consulte Proteção de dados usando
criptografia (p. 194).

Note

O cabeçalho da solicitação PUT é limitado a 8 KB. No cabeçalho da solicitação PUT, os


metadados definidos pelo sistema são limitados a 2 KB. O tamanho de metadados definidos pelo
sistema é medido pela soma do número de bytes na codificação US-ASCII de cada chave e valor.

A tabela a seguir fornece uma lista dos metadados definidos por sistema e se você pode atualizá-los.

Nome Descrição O usuário


pode modificar
o valor?

Data Data e hora atual. Não

Content-Length Tamanho de objeto em bytes. Não

Content-Type: Tipo de objeto. Sim

Última modificação Data de criação do objeto ou data da última modificação, o Não


que aconteceu por último.

Versão da API 2006-03-01


67
Amazon Simple Storage Service Guia do usuário
Metadados do objeto definidos pelo usuário

Nome Descrição O usuário


pode modificar
o valor?

Conteúdo-MD5 O resumo MD5 de 128 bits com codificação base64 do objeto. Não

x-amz-server-side- Indica se a criptografia do lado do servidor está habilitada Sim


encryption para o objeto e se essa criptografia é do AWS Key
Management Service (AWS-KMS) ou da criptografia
gerenciada pelo Amazon S3 (SSE-S3). Para obter mais
informações, consulte Proteção de dados usando criptografia
no lado do servidor (p. 195).

x-amz-version-id Versão do objeto. Quando você habilita o versionamento em Não


um bucket, o Amazon S3 atribui um número de versão aos
objetos adicionados ao bucket. Para obter mais informações,
consulte Usando o controle de versão em buckets do
S3 (p. 516).

x-amz-delete-marker Em um bucket com o versionamento habilitado, o marcador Não


booleano indica se o objeto é um marcador de exclusão.

x-amz-storage-class Classe de armazenamento usada para armazenamento do Sim


objeto. Para obter mais informações, consulte Uso de classes
de armazenamento do Amazon S3 (p. 563).

x-amz-website-redirect- Redireciona solicitações do objeto associado para outro Sim


location objeto no mesmo bucket ou um URL externo. Para obter
mais informações, consulte (Opcional) Configurar um
redirecionamento de uma página da Web (p. 959).

x-amz-server-side- Se a x-amz-server-side-encryption estiver presente e tiver Sim


encryption-aws-kms- o valor de aws:kms, isso indicará o ID da chave mestra de
key-id cliente (CMK) simétrica do AWS KMS que foi usada para o
objeto.

x-amz-server-side- Indica se a criptografia do lado do servidor com as chaves Sim


encryption-customer- fornecidas pelo cliente (SSE-C) está habilitada. Para obter
algorithm mais informações, consulte Proteger dados usando a
criptografia de servidor com chaves de criptografia fornecidas
pelo cliente (SSE-C) (p. 225).

Metadados do objeto definidos pelo usuário


Ao fazer upload de um objeto, você também pode atribuir metadados ao objeto. Você fornece essas
informações opcionais como um par de nome-valor (valor-chave) quando envia uma solicitação PUT
ou POST para criar o objeto. Ao fazer upload de objetos usando a API REST, os nomes de metadados
opcionais definidos pelo usuário devem começar com "x-amz-meta-", para diferenciá-los de outros
cabeçalhos HTTP. Quando você recupera o objeto usando a API REST, o prefixo é retornado. Ao fazer
upload de objetos usando a API SOAP, o prefixo não é obrigatório. Quando você recupera o objeto usando
SOAP API, o prefixo é removido, independentemente da API que você usou para fazer upload do objeto.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Versão da API 2006-03-01


68
Amazon Simple Storage Service Guia do usuário
Editar os metadados do objeto

Quando os metadados são recuperados por meio da API REST, o Amazon S3 combina os cabeçalhos
que têm o mesmo nome (sem distinção entre letras maiúsculas e minúsculas) em uma lista delimitada por
vírgulas. Se alguns metadados contêm caracteres não imprimíveis, eles não são retornados. Em vez disso,
o cabeçalho x-amz-missing-meta é retornado com o valor do número de entradas de metadados não
imprimíveis. A ação HeadObject recupera metadados de um objeto sem retornar o próprio objeto. Essa
operação é útil se você estiver interessado apenas nos metadados de um objeto. Para usar HEAD, você
deve ter acesso READ ao objeto. Para obter mais informações, consulte HeadObject na Referência de API
do Amazon Simple Storage Service.

Metadados definidos pelo usuário são um conjunto de pares chave-valor. O Amazon S3 armazena chaves
de metadados definidas pelo usuário em minúsculas.

O Amazon S3 permite caracteres Unicode arbitrários em seus valores de metadados.

Para evitar problemas em torno da apresentação desses valores de metadados, é necessário estar em
conformidade com o uso de caracteres US-ASCII ao usar REST e UTF-8 ao usar SOAP ou uploads
baseados em navegador via POST.

Ao usar caracteres não US-ASCII em seus valores de metadados, a string Unicode fornecida é examinada
quanto a caracteres não US-ASCII. Se a string contiver apenas caracteres US-ASCII, ela será apresentada
como está. Se a string contiver caracteres não ASCII US-ASCII, ela será codificada em primeiro lugar
usando UTF-8 e depois em US-ASCII.

Veja um exemplo a seguir.

PUT /Key HTTP/1.1


Host: awsexamplebucket1.s3.amazonaws.com
x-amz-meta-nonascii: ÄMÄZÕÑ S3

HEAD /Key HTTP/1.1


Host: awsexamplebucket1.s3.amazonaws.com
x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?=

PUT /Key HTTP/1.1


Host: awsexamplebucket1.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3

HEAD /Key HTTP/1.1


Host: awsexamplebucket1.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3

Note

O cabeçalho da solicitação PUT é limitado a 8 KB. No cabeçalho da solicitação PUT, os


metadados definidos pelo usuário são limitados a 2 KB. O tamanho de metadados definidos pelo
usuário é medido pela soma do número de bytes na codificação UTF-8 de cada chave e valor.

Para obter informações sobre como adicionar metadados ao seu objeto após o upload, Editar metadados
de objeto no console do Amazon S3 (p. 69).

Editar metadados de objeto no console do Amazon S3


Você pode usar o console do Amazon S3 para editar metadados de objetos do S3 existentes. Alguns
metadados são definidos pelo Amazon S3 quando você faz upload do objeto. Por exemplo, Content-
Length é a chave (nome) e o valor é o tamanho do objeto em bytes.

Você também pode definir alguns metadados ao carregar o objeto e depois editá-lo conforme suas
necessidades mudarem. Por exemplo, você pode ter um conjunto de objetos que você armazena

Versão da API 2006-03-01


69
Amazon Simple Storage Service Guia do usuário
Editar os metadados do objeto

inicialmente na classe de armazenamento STANDARD. Com o tempo, talvez você não precise mais
que esses dados estejam altamente disponíveis. Assim, você altera a classe de armazenamento para
GLACIER editando o valor da chave x-amz-storage-class de STANDARD para GLACIER.
Note

Considere os seguintes problemas ao editar metadados de objeto no Amazon S3:

• Essa ação cria uma cópia do objeto com configurações atualizadas e a data da última
modificação. Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será
criada e o objeto existente se tornará uma versão mais antiga. A função do IAM que altera a
propriedade também se torna o proprietário do novo objeto ou (versão do objeto).
• A edição de metadados atualiza valores para nomes de chaves existentes.
• Objetos criptografados com chaves de criptografia fornecidas pelo cliente (SSE-C) não podem
ser copiados usando o console. Você deve usar a CLI da AWS, o AWS SDK ou a API REST do
Amazon S3.

Warning

Ao editar metadados de pastas, aguarde a conclusão da operação Edit metadata antes de


adicionar novos objetos à pasta. Caso contrário, novos objetos também podem ser editados.

Os tópicos a seguir descrevem como editar metadados de um objeto usando o console do Amazon S3.

Editar metadados definidos pelo sistema


Você pode configurar alguns metadados do sistema para um objeto do S3, mas não todos. Para obter
uma lista de metadados definidos pelo sistema e saber se você pode modificar seus valores, consulte
Metadados do objeto definidos pelo sistema (p. 67).

Como editar metadados definidos pelo sistema de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Navegue até seu bucket ou pasta do Amazon S3 e marque a caixa de seleção à esquerda dos nomes
dos objetos com metadados que você deseja editar.
3. No menu Actions (Ações), escolha Edit actions (Editar ações)e escolha Edit metadata (Editar
metadados).
4. Revise os objetos listados e escolha Add metadata (Adicionar metadados).
5. Para Type (Tipo) de metadados, selecione System-defined (Definidos pelo sistema).
6. Especifique uma key (chave) exclusiva e o value (valor) dos metadados.
7. Para editar metadados adicionais, escolha Add metadata (Adicionar metadados). Você também pode
escolher Remove (Remover) para remover um conjunto de valores de chave de tipo.
8. Quando terminar, escolha Edit metadata (Editar metadados) e o Amazon S3 editará os metadados dos
objetos especificados.

Editar metadados definidos pelo usuário


Você pode editar metadados definidos pelo usuário de um objeto combinando o prefixo de metadados, x-
amz-meta-, e um nome escolhido para criar uma chave personalizada. Por exemplo, se você adicionar o
nome personalizado alt-name, a chave de metadados será x-amz-meta-alt-name.

Metadados definidos pelo usuário podem ter até 2 KB no total. Para calcular o tamanho total dos
metadados definidos pelo usuário, some o número de bytes na codificação UTF-8 referente a cada chave e

Versão da API 2006-03-01


70
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

valor. As duas chaves e seus valores devem estar em conformidade com os padrões US-ASCII. Para obter
mais informações, consulte Metadados do objeto definidos pelo usuário (p. 68).

Como editar metadados definidos pelo usuário de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém os objetos aos quais você deseja adicionar
metadados.

Você também tem a opção de navegar até uma pasta.


3. Na lista Objects (Objetos), marque a caixa de seleção ao lado dos nomes dos objetos aos quais você
deseja adicionar metadados.
4. No menu Actions (Ações), escolha Edit metadata (Editar metadados).
5. Revise os objetos listados e escolha Add metadata (Adicionar metadados).
6. Para Type (Tipo) de metadados, escolha User-defined (Definido pelo usuário).
7. Insira uma Key (Chave) personalizada única após x-amz-meta-. Insira também um value (valor) dos
metadados.
8. Para adicionar metadados extras, escolha Add metadata (Adicionar metadados). Você também pode
escolher Remove (Remover) para remover um conjunto de valores de chave de tipo.
9. Escolha Edit metadata (Editar metadados).

O Amazon S3 edita os metadados dos objetos especificados.

Fazer upload de objetos


Quando você faz upload de um arquivo no Amazon S3, ele é armazenado como um objeto do S3. Os
objetos consistem em dados e metadados de arquivo que descrevem o objeto. Você pode ter um número
ilimitado de objetos em um bucket. Antes de fazer upload de arquivos em um bucket do Amazon S3, você
precisa escrever permissões para o bucket. Para obter mais informações sobre permissões de acesso,
consulte Identity and Access Management no Amazon S3 (p. 252).

Você pode fazer upload de qualquer tipo de arquivo (imagens, backups, dados, filmes, etc.) para um
bucket do S3. O tamanho máximo de arquivo que você pode carregar usando o console do Amazon S3 é
de 160 GB. Para fazer upload de um arquivo com mais de 160 GB, use a AWS CLI, AWS SDK ou a API
REST do Amazon S3.

Se você fizer upload de um objeto com um nome de chave que já existe em um bucket com versionamento
habilitado, o Amazon S3 criará outra versão de objeto em vez de substituir o objeto existente. Para obter
mais informações sobre controle de versão, consulte Usar o console do S3 (p. 521).

Dependendo do tamanho de dados enviados por upload, o Amazon S3 oferece as seguintes opções:

• Fazer upload de um objeto em uma única operação usando AWS SDKs, a API REST ou a CLI da AWS:
com uma única operação PUT, é possível fazer upload de um único objeto com até 5 GB.
• Fazer upload de um único objeto usando o console do Amazon S3:Com o console do Amazon S3, é
possível fazer upload de um único objeto com até 160 GB de tamanho.
• Fazer upload de um objeto em partes usando AWS SDKs, a API REST ou a CLI da AWS: com a API de
multipart upload, é possível fazer upload de um único objeto grande, com até 5 TB.

A API multipart upload API foi projetada para melhorar a experiência de upload de objetos maiores.
É possível fazer upload de um objeto em partes. O upload dessas partes de objetos pode ser feito
independentemente, em qualquer ordem, e em paralelo. Você pode usar um multipart upload de objetos

Versão da API 2006-03-01


71
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

de 5 MB a 5 TB. Para obter mais informações, consulte Carregar e copiar objetos usando multipart
upload (p. 80).

Ao fazer upload de um objeto, é possível solicitar, opcionalmente, que o Amazon S3 criptografe o objeto
antes de salvá-lo no disco e descriptografá-lo quando você fizer o download. Para obter mais informações,
consulte Proteção de dados usando criptografia (p. 194).

Uso do console do S3
Este procedimento explica como fazer upload de objetos e pastas para um bucket S3 usando o console.

Quando você faz upload de um objeto, o nome da chave de objeto é o nome do arquivo e quaisquer
prefixos opcionais. No console do Amazon S3, você pode criar pastas para organizar seus objetos. No
Amazon S3, as pastas são representadas como prefixos que aparecem no nome da chave de objeto. Se
você fizer upload um objeto individual para uma pasta no console do Amazon S3, o nome da pasta será
incluído no nome da chave do objeto.

Por exemplo, se você carregar um objeto chamado sample1.jpg para uma pasta chamada backup, o
nome da chave será backup/sample1.jpg. Contudo, o objeto é exibido no console como sample1.jpg
na pasta backup. Para obter mais informações sobre nomes de chaves, consulte Trabalhar com
metadados de objeto (p. 66).
Note

Se você renomear um objeto ou alterar qualquer uma das propriedades no console do S3,
por exemplo Storage Class (Classe de armazenamento), Encryption (Criptografia), Metadata
(Metadados), um novo objeto será criado para substituir o antigo. Se o versionamento do S3
estiver habilitado, uma nova versão do objeto será criada e o objeto existente se tornará uma
versão mais antiga. A função que altera a propriedade também se torna o proprietário do novo
objeto ou (versão do objeto).

Quando você faz upload de uma pasta, o Amazon S3 faz upload de todos os arquivos e subpastas da
pasta especificada em seu bucket. Ele então atribui um nome de chave de objeto que é uma combinação
do nome de arquivo carregado com o nome da pasta. Por exemplo, se você fizer upload de uma pasta
chamada /images que contém dois arquivos, sample1.jpg e sample2.jpg, o Amazon S3 fará upload
dos arquivos e atribuirá a eles os nomes de chave correspondentes, images/sample1.jpg e images/
sample2.jpg. Os nomes de chave incluem o nome da pasta como um prefixo. O console do Amazon S3
exibe somente a parte do nome de chave que vem depois do último “/”. Por exemplo, em uma pasta de
imagens, os objetos images/sample1.jpg e images/sample2.jpg são exibidos como sample1.jpg
e um sample2.jpg.

Para fazer upload de pastas e arquivos para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket no qual você deseja carregar suas pastas ou arquivos.
3. Escolha Upload (Fazer upload).
4. Na janela Upload (Fazer upload), siga um destes procedimentos:

• Arraste e solte arquivos e pastas para a janela Upload (Fazer upload) .


• Escolha Add file (Adicionar arquivo) ou Add folder (Adicionar pasta), escolha arquivos ou pastas
para fazer upload e depois escolha Open (Abrir).
5. Para habilitar o versionamento, em Destination (Destino), escolha Enable Bucket Versioning (Ativar
versionamento de bucket).
6. Para fazer upload dos arquivos e pastas listados sem configurar opções de upload adicionais, na parte
inferior da página, escolha Upload (Fazer upload).

Versão da API 2006-03-01


72
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

O Amazon S3 faz o upload de seus objetos e pastas. Quando o upload for concluído, você pode ver
uma mensagem de sucesso na página de Upload: status.
7. Para configurar propriedades de objeto adicionais antes de fazer o upload, consulte Para configurar
propriedades de objeto adicionais (p. 73).

Para configurar propriedades de objeto adicionais

1. Para configurar propriedades de objeto adicionais, escolha Additional upload options (Opções de
upload adicionais).
2. Na seção Storage class (Classe de armazenamento) escolha a classe de armazenamento para os
arquivos que você está fazendo upload.

Para obter mais informações sobre classes de armazenamento, consulte Uso de classes de
armazenamento do Amazon S3 (p. 563).
3. Para atualizar as configurações de criptografia para seus objetos, em Server-side encryption settings
(Configurações de criptografia do lado do servidor), faça o seguinte.

a. Escolha Override default encryption bucket settings (Substituir configurações de bucket de


criptografia padrão).
b. Para criptografar os arquivos carregados usando chaves gerenciadas pelo Amazon S3, escolha
Amazon S3 key (Chave do Amazon S3) (SSE-S3).

Para obter mais informações, consulte Proteção de dados usando criptografia no lado do servidor
com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) (p. 213).
c. Para criptografar os arquivos enviados por upload usando o AWS Key Management Service
(AWS KMS), escolha AWS Key Management Service key (Chave do AWS Key Management
Service). Em seguida, escolha uma opção para a AWS KMS key (Chave do AWS KMS).

• Chave gerenciada da AWS (aws/s3) - Escolha uma AWS managed CMK (CMK gerenciada pela
AWS).
• Escolha entre as chaves mestras do KMS - Escolha uma customer managed CMK (CMK
gerenciada pelo cliente) a partir de uma lista de CMKs na mesma região que seu bucket.

Para obter mais informações sobre como criar uma CMK do AWS KMS gerenciada pelo cliente,
consulte Criação de chaves no Guia do desenvolvedor do AWS Key Management Service.
Para obter mais informações sobre como proteger dados com o AWS KMS, consulte Proteção
de dados usando criptografia do lado do servidor com CMKs armazenadas no AWS Key
Management Service (SSE-KMS) (p. 195).
• Insira o ARN da chave mestra do KMS - Especifique o ARN da chave do AWS KMS para uma
CMK gerenciada pelo cliente e insira o nome de recurso da Amazon (ARN).

Você pode usar o ARN da chave mestra do KMS para dar a uma conta externa a capacidade
de usar um objeto protegido por uma CMK do AWS KMS. Para fazer isso, escolha Enter
KMS master key ARN (Insira o ARN da chave mestra do KMS) e insira o nome de recurso
da Amazon (ARN) para a conta externa. Os administradores de uma conta externa com
permissões de uso para um objeto protegido pela CMK do AWS KMS podem restringir ainda
mais o acesso criando um política do IAM no nível do recurso.

Note

Para criptografar objetos em um bucket, você pode usar apenas CMKs que estão
disponíveis na mesma região da AWS que o bucket.
4. Para alterar as permissões da lista de controle de acesso, em Lista de controle de acesso (Access
control list) (ACL), edite permissões.

Versão da API 2006-03-01


73
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

Para informações sobre permissões de acesso a objeto, consulte Usar o console do S3 para definir
permissões de ACL para um objeto (p. 450). Você pode conceder acesso de leitura aos seus objetos
para o público em geral (todos no mundo), para todos os arquivos que você está fazendo upload.
Recomendamos que você não altere a configuração padrão para acesso de leitura pública. Conceder
acesso público de leitura é aplicável a um pequeno subconjunto de casos de uso, como quando
buckets são usados para sites. Você sempre pode fazer alterações nas permissões de objeto depois
de fazer seu upload.
5. Para adicionar tags a todos os objetos que você está carregando, escolha Add tag (Adicionar tag).
Digite um nome de tag no campo Key (Chave) . Digite um valor para a tag.

A marcação de objetos é uma forma de categorizar o armazenamento. Cada tag é um par de chave-
valor. Os valores de chave e tag diferenciam maiúsculas de minúsculas. É possível ter até dez tags
por objeto. Um chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até
255 caracteres Unicode. Para obter mais informações sobre tags de objetos, consulte Categorizando
seu armazenamento usando tags (p. 683).
6. Para adicionar metadados, escolha Add metadata (Adicionar metadados).

a. Em Type (Tipo), escolha System defined (Definido pelo sistema) ou User defined (Definido pelo
usuário).

Para metadados definidos pelo sistema, você pode selecionar cabeçalhos HTTP comuns, como
Content-Type e Content-Disposition. Para obter uma lista de metadados definidos pelo sistema e
informações sobre se você pode adicionar o valor, consulte Metadados do objeto definidos pelo
sistema (p. 67). Todos os metadados que começam com o prefixo x-amz-meta- são tratados
como metadados definidos pelo usuário. Os metadados definidos pelo usuário são armazenados
com o objeto e retornados quando você baixa o objeto. As chaves e seus valores devem estar em
conformidade com os padrões US-ASCII. Metadados definidos pelo usuário podem ter até 2 KB.
Para obter mais informações sobre metadados definidos pelo sistema e definidos pelo usuário,
consulte Trabalhar com metadados de objeto (p. 66).
b. Para Key (Chave), escolha uma chave.
c. Digite um valor para a chave.
7. Para carregar seus objetos, escolha Upload (Fazer upload).

O Amazon S3 faz o upload do objeto. Quando o upload for concluído, você pode ver uma mensagem
de sucesso na página de Upload: status.
8. Selecione Exit (Sair).

Uso dos AWS SDKs


Você pode usar o AWS SDK para fazer upload de objetos no Amazon S3. O SDK fornece bibliotecas
wrapper para você para fazer upload de dados com facilidade. Para obter informações, consulte a Lista de
SDKs compatíveis.

Aqui estão alguns exemplos com alguns SDKs selecionados:

.NET

O exemplo de código C# a seguir cria dois objetos com as duas solicitações PutObjectRequest:

• A primeira solicitação PutObjectRequest salva uma sequência de texto como exemplo de dados
do objeto. Ela também especifica os nomes do bucket e da chave de objeto.
• A segunda solicitação PutObjectRequest faz upload de um arquivo especificando o nome do
arquivo. Essa solicitação também especifica o cabeçalho ContentType e os metadados opcionais
de objeto (título).

Versão da API 2006-03-01


74
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class UploadObjectTest
{
private const string bucketName = "*** bucket name ***";
// For simplicity the example creates two objects from the same file.
// You specify key names for these objects.
private const string keyName1 = "*** key name for first object created ***";
private const string keyName2 = "*** key name for second object created ***";
private const string filePath = @"*** file path ***";
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.EUWest1;

private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
WritingAnObjectAsync().Wait();
}

static async Task WritingAnObjectAsync()


{
try
{
// 1. Put object-specify only key name for the new object.
var putRequest1 = new PutObjectRequest
{
BucketName = bucketName,
Key = keyName1,
ContentBody = "sample text"
};

PutObjectResponse response1 = await client.PutObjectAsync(putRequest1);

// 2. Put the object-set ContentType and add metadata.


var putRequest2 = new PutObjectRequest
{
BucketName = bucketName,
Key = keyName2,
FilePath = filePath,
ContentType = "text/plain"
};

putRequest2.Metadata.Add("x-amz-meta-title", "someTitle");
PutObjectResponse response2 = await client.PutObjectAsync(putRequest2);
}
catch (AmazonS3Exception e)
{
Console.WriteLine(
"Error encountered ***. Message:'{0}' when writing an object"
, e.Message);
}
catch (Exception e)
{
Console.WriteLine(

Versão da API 2006-03-01


75
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

"Unknown encountered on server. Message:'{0}' when writing an


object"
, e.Message);
}
}
}
}

Java

O exemplo a seguir cria dois objetos. O primeiro objeto tem uma sequência de texto como
dados, e o segundo objeto é um arquivo. O exemplo cria o primeiro objeto especificando
o nome de bucket, a chave de objeto, e os dados de texto diretamente em uma chamada
para AmazonS3Client.putObject(). O exemplo cria um segundo objeto usando um
PutObjectRequest que especifica o nome de bucket, a chave de objeto, e o caminho do arquivo. O
PutObjectRequest também especifica o cabeçalho de ContentType e os metadados do título.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;

import java.io.File;
import java.io.IOException;

public class UploadObject {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String stringObjKeyName = "*** String object key name ***";
String fileObjKeyName = "*** File object key name ***";
String fileName = "*** Path to file to upload ***";

try {
//This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.build();

// Upload a text string as a new object.


s3Client.putObject(bucketName, stringObjKeyName, "Uploaded String Object");

// Upload a file as a new object with ContentType and title specified.


PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName,
new File(fileName));
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("plain/text");
metadata.addUserMetadata("title", "someTitle");
request.setMetadata(metadata);
s3Client.putObject(request);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();

Versão da API 2006-03-01


76
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

JavaScript

O exemplo a seguir faz upload de um arquivo existente para um bucket do Amazon S3 em uma região
específica.

// Import required AWS SDK clients and commands for Node.js.


const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
const path = require("path");
const fs = require("fs");

// Set the AWS Region.


const REGION = "REGION"; //e.g. "us-east-1"

const file = "OBJECT_PATH_AND_NAME"; // Path to and name of object. For example '../
myFiles/index.js'.
const fileStream = fs.createReadStream(file);

// Set the parameters


const uploadParams = {
Bucket: "BUCKET_NAME",
// Add the required 'Key' parameter using the 'path' module.
Key: path.basename(file),
// Add the required 'Body' parameter
Body: fileStream,
};

// Create an Amazon S3 service client object.


const s3 = new S3Client({ region: REGION });

// Upload file to specified bucket.


const run = async () => {
try {
const data = await s3.send(new PutObjectCommand(uploadParams));
console.log("Success", data);
} catch (err) {
console.log("Error", err);
}
};
run();

PHP

Este tópico demonstra o uso de classes do AWS SDK para PHP para fazer upload de um objeto de
até 5 GB. Para arquivos maiores, você deve usar a API multipart upload. Para obter mais informações,
consulte Carregar e copiar objetos usando multipart upload (p. 80).

Este tópico pressupõe que você já esteja seguindo as instruções para Usar o AWS SDK para PHP e
executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Example Criar um objeto em um bucket do Amazon S3 fazendo upload dos dados


O exemplo PHP a seguir cria um objeto em um bucket especificado pelo upload de dados usando o
método putObject(). Para obter informações sobre a execução dos exemplos de PHP neste guia,
consulte Executar exemplos do PHP (p. 1045).

Versão da API 2006-03-01


77
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

try {
// Upload data.
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello, world!',
'ACL' => 'public-read'
]);

// Print the URL to the object.


echo $result['ObjectURL'] . PHP_EOL;
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

Ruby

O AWS SDK para Ruby - versão 3 tem duas maneiras para fazer upload de um objeto para o Amazon
S3. O primeiro usa um upload gerenciado de arquivo, que facilita o upload de arquivos de qualquer
tamanho para disco. Usar o método de upload gerenciado de arquivo:

1. Crie uma instância da classe Aws::S3::Resource.


2. Faça referência ao objeto de destino pelo nome e chave do bucket. Os objetos residem em um
bucket e têm chaves exclusivas que identificam cada objeto.
3. Chame #upload_file no objeto.

Example

require 'aws-sdk-s3'

# Uploads an object to a bucket in Amazon Simple Storage Service (Amazon S3).


#
# Prerequisites:
#
# - An S3 bucket.
# - An object to upload to the bucket.
#
# @param s3_client [Aws::S3::Resource] An initialized S3 resource.
# @param bucket_name [String] The name of the bucket.
# @param object_key [String] The name of the object.
# @param file_path [String] The path and file name of the object to upload.
# @return [Boolean] true if the object was uploaded; otherwise, false.
# @example
# exit 1 unless object_uploaded?(
# Aws::S3::Resource.new(region: 'us-east-1'),
# 'doc-example-bucket',
# 'my-file.txt',

Versão da API 2006-03-01


78
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos

# './my-file.txt'
# )
def object_uploaded?(s3_resource, bucket_name, object_key, file_path)
object = s3_resource.bucket(bucket_name).object(object_key)
object.upload_file(file_path)
return true
rescue StandardError => e
puts "Error uploading object: #{e.message}"
return false
end

A segunda maneira pela qual o AWS SDK para Ruby - versão 3 pode fazer upload de um objeto usa
o método #put de Aws::S3::Object. Isso é útil se o objeto for uma string ou um objeto de E/S que
não seja um arquivo em disco. Para usar este método:

1. Crie uma instância da classe Aws::S3::Resource.


2. Faça referência ao objeto de destino pelo nome e chave do bucket.
3. Chame#put, passando a sequência ou objeto de E/S.

Example

require 'aws-sdk-s3'

# Uploads an object to a bucket in Amazon Simple Storage Service (Amazon S3).


#
# Prerequisites:
#
# - An S3 bucket.
# - An object to upload to the bucket.
#
# @param s3_client [Aws::S3::Resource] An initialized S3 resource.
# @param bucket_name [String] The name of the bucket.
# @param object_key [String] The name of the object.
# @param file_path [String] The path and file name of the object to upload.
# @return [Boolean] true if the object was uploaded; otherwise, false.
# @example
# exit 1 unless object_uploaded?(
# Aws::S3::Resource.new(region: 'us-east-1'),
# 'doc-example-bucket',
# 'my-file.txt',
# './my-file.txt'
# )
def object_uploaded?(s3_resource, bucket_name, object_key, file_path)
object = s3_resource.bucket(bucket_name).object(object_key)
File.open(file_path, 'rb') do |file|
object.put(body: file)
end
return true
rescue StandardError => e
puts "Error uploading object: #{e.message}"
return false
end

Uso dos REST API


Você pode enviar solicitações REST para fazer upload de um objeto. Você pode enviar uma solicitação
PUT para fazer upload de dados em uma única operação. Para obter mais informações, consulte Objeto
PUT.

Versão da API 2006-03-01


79
Amazon Simple Storage Service Guia do usuário
Usar multipart upload

Usar a CLI da AWS


Se o seu aplicativo exigir, você pode enviar solicitações à Interface da linha de comando da AWS (CLI da
AWS) para fazer upload de um objeto. Você pode enviar uma solicitação PUT para fazer upload de dados
em uma única operação. Para obter mais informações, consulte PutObject na Referência de comandos da
CLI da AWS.

Carregar e copiar objetos usando multipart upload


O multipart upload permite que você faça upload de um único objeto como um conjunto de partes. Cada
parte é uma parte contígua de dados do objeto. O upload dessas partes de objetos pode ser feito de
maneira independente e em qualquer ordem. Se a transmissão de alguma parte falhar, você poderá
retransmitir essa parte sem afetar outras partes. Depois que todas as partes do objeto forem carregadas,
o Amazon S3 montará essas partes e criará o objeto. Geralmente, quando seu objeto alcança 100 MB de
tamanho, você deve considerar o uso de multipart uploads em vez de fazer upload do objeto em uma única
operação.

Usar o multipart upload fornece as seguintes vantagens:

• Transferência aprimorada - Você pode fazer upload de partes em paralelo para melhorar a transferência.
• Recuperação rápida de alguns problemas de rede - Partes de tamanho menor minimizam o impacto de
reiniciar um upload que tenha falhado devido a um erro de rede.
• Pausar e retomar uploads de objeto - Você pode fazer upload de partes do objeto ao longo do tempo.
Após iniciar um multipart upload, não há expiração; você deverá concluir ou interromper explicitamente o
multipart upload.
• Começar um upload antes de saber o tamanho final do objeto - Você pode fazer upload de um objeto à
medida que ele for criado.

Recomendamos que você use o multipart upload das seguintes formas:

• Se você estiver fazendo upload de objetos grandes em uma rede de banda larga estável, use o multipart
upload para maximizar o uso da banda larga disponível, fazendo upload de partes do objeto em paralelo
para performance com vários threads.
• Se você estiver fazendo upload em uma rede lenta, use o multipart upload para aumentar a resiliência
dos erros de rede, evitando reinícios de upload. Ao usar o multipart upload, tente fazer upload
novamente apenas das partes que foram interrompidas durante o upload. Você não precisa reiniciar o
upload do seu objeto do começo.

Processo multipart upload


O multipart upload é um processo de três etapas: você inicia o upload, faz upload de partes do objeto
e, depois de fazer upload de todas as partes, conclui o multipart upload. Ao receber a solicitação de
conclusão do multipart upload, o Amazon S3 cria o objeto a partir das partes carregadas, e você poderá
então acessar o objeto como qualquer outro objeto em seu bucket.

Você pode listar todos os seus multipart uploads em andamento ou obter uma lista das partes que
carregou para um multipart upload específico. Cada uma dessas operações é explicada nesta seção.

Iniciação do multipart upload

Quando você envia uma solicitação para iniciar um multipart upload, o Amazon S3 retorna uma resposta
com um ID de upload, que é um identificador exclusivo do seu multipart upload. É necessário incluir esse

Versão da API 2006-03-01


80
Amazon Simple Storage Service Guia do usuário
Processo multipart upload

ID de upload sempre que fizer upload de partes, listar as partes, concluir um upload ou interromper um
upload. Se você desejar fornecer metadados que descrevem o objeto que está sendo carregado, deverá
fornecê-los na solicitação para iniciar o multipart upload.

Upload de partes

Ao fazer upload de uma parte, além do ID de upload, você deve especificar um número de parte.
Você pode escolher qualquer número de parte entre 1 e 10.000. Um número de parte identifica com
exclusividade a parte e sua posição no objeto do qual você está fazendo upload. O número de parte que
você escolheu não precisa estar em uma sequência consecutiva (por exemplo, pode ser 1, 5 e 14). Se
você fizer upload de uma nova parte usando o mesmo número da parte anteriormente carregada, a parte
anteriormente carregada será substituída.

Sempre que fizer upload de uma parte, o Amazon S3 retornará um cabeçalho ETag na resposta. Para
cada upload de parte, você deve registrar o número de parte e o valor de ETag. Você tem que incluir esses
valores na solicitação subsequente para concluir o multipart upload.
Note

Após iniciar um multipart upload e fazer upload de uma ou mais partes, é necessário concluir
ou interromper o multipart upload para parar de ser cobrado pelo armazenamento de peças
carregadas. Somente depois que você concluir ou interromper um multipart upload é que o
Amazon S3 liberará o armazenamento das partes e deixará de cobrar pelo armazenamento das
partes.

Conclusão do multipart upload

Quando você concluir um multipart upload, o Amazon S3 criará um objeto concatenando as partes em
ordem crescente com base no número da parte. Se algum metadado de objeto for fornecido na solicitação
iniciar multipart upload, o Amazon S3 associará esses metadados ao objeto. Depois de uma solicitação de
conclusão bem-sucedida, as partes não existem mais.

Sua solicitação completa de multipart upload deve incluir o ID de upload e uma lista de números de peça e
valores ETag correspondentes. A resposta do Amazon S3 inclui um ETag que identifica exclusivamente os
dados do objeto combinados. Esse ETag não é necessariamente um hash MD5 dos dados do objeto.

Se preferir, você poderá interromper o multipart upload. Depois de interromper um multipart upload, você
não pode fazer upload de nenhuma parte usando esse ID de upload novamente. Todo o armazenamento
de qualquer parte do multipart upload cancelado é então liberado. Se algum upload de parte estiver em
andamento, ele ainda poderá ser bem-sucedido ou falhar mesmo depois da interrupção. Para liberar todo
o armazenamento consumido por todas as partes, é necessário interromper um multipart upload somente
depois que todos os uploads de parte tiverem sido concluídos.

Listagens de multipart upload

Você pode listar as partes de um multipart upload específico ou de todos os multipart uploads em
andamento. A operação de listagem de partes retorna as informações das partes que você fez upload
em um multipart upload específico. Para cada solicitação de listagem de partes, o Amazon S3 retorna
informações das partes do multipart upload especificado, até no máximo 1.000 partes. Se houver mais de
1.000 partes no multipart upload, você deverá enviar uma série de solicitações de listagem para recuperar
todas as partes. Observe que a lista de partes retornada não inclui partes que não tiveram o upload
concluído. Usando a operação listar multipart uploads, você pode obter uma lista de multipart uploads em
andamento.

Um multipart upload em andamento é um upload que você iniciou, mas que ainda não concluiu nem
interrompeu. Cada solicitação retorna no máximo 1.000 multipart uploads. Se houver mais de 1.000
multipart uploads em andamento, você precisará enviar solicitações adicionais para recuperar os
multipart uploads restantes. Use a listagem retornada apenas para verificação. Você não deve usar
o resultado desta listagem ao enviar uma solicitação completa de multipart upload. Em vez disso,

Versão da API 2006-03-01


81
Amazon Simple Storage Service Guia do usuário
Operações simultâneas de multipart upload

mantenha sua própria lista de números de parte que você especificou ao fazer upload das partes e valores
correspondentes de ETag que o Amazon S3 retorna.

Operações simultâneas de multipart upload


Em um ambiente de desenvolvimento distribuído, é possível que seu aplicativo inicie várias atualizações
no mesmo objeto ao mesmo tempo. Seu aplicativo pode iniciar vários multipart uploads usando a mesma
chave de objeto. Para cada um desses uploads, sua aplicação pode fazer upload das partes e enviar
uma solicitação de conclusão de upload ao Amazon S3 para criar o objeto. Quando os buckets têm o
versionamento habilitado, concluir um multipart upload sempre cria uma nova versão. Para os buckets que
não têm o versionamento habilitado, é possível que alguma outra solicitação recebida entre o momento em
que um multipart upload é iniciado e quando ele é concluído tenha precedência.
Note

É possível que alguma outra solicitação recebida entre o momento em que você iniciou um
multipart upload e o concluiu tenha precedência. Por exemplo, se outra operação excluir uma
chave depois que você iniciar um multipart upload com essa chave, mas antes de o concluir, a
resposta de conclusão do multipart upload poderá indicar a criação bem-sucedida de um objeto
sem você nunca ter visto o objeto.

Multipart upload e definição de preço


Depois que você iniciar um multipart upload, o Amazon S3 reterá todas as partes até você concluir ou
interromper o upload. Durante todo o ciclo de vida, você será cobrado por armazenamento, largura de
banda e solicitações desse multipart upload e das partes associadas. Se você interromper o multipart
upload, o Amazon S3 excluirá os artefatos de upload e as partes carregadas, e você não mais será
cobrado por eles. Para obter mais informações sobre a definição de preços, consulte Definição de preços
do Amazon S3.

Suporte de API para multipart upload


Essas bibliotecas fornecem uma abstração de alto nível que facilita o multipart upload de objetos. Contudo,
se o seu aplicativo exigir, você pode usar a API REST diretamente. As seções a seguir na Referência de
APIs do Amazon Simple Storage Service descrevem a API REST para multipart upload.

• Criar Multipart Upload


• Upload de parte
• Upload de parte (Copiar)
• Concluir multipart upload
• Anular multipart upload
• Listar partes
• Listar multipart uploads

As seções a seguir na Interface de linha de comando da AWS descrevem as operações para multipart
upload.

• Iniciar multipart upload


• Upload de parte
• Upload de parte (Copiar)
• Concluir multipart upload
• Anular multipart upload
• Listar partes

Versão da API 2006-03-01


82
Amazon Simple Storage Service Guia do usuário
Suporte do SDK da AWS para multipart upload

• Listar multipart uploads

Suporte do SDK da AWS para multipart upload


Você pode usar SDKs da AWS para fazer upload de um objeto em partes. Para obter uma lista dos SDKs
da AWS compatíveis com a ação da API, consulte:

• Criar Multipart Upload


• Upload de parte
• Upload de parte (Copiar)
• Concluir multipart upload
• Anular multipart upload
• Listar partes
• Listar multipart uploads

API de multipart upload e permissões


Você deve ter as permissões necessárias para usar as operações do multipart upload. É possível usar
listas de controle de acesso (ACLs), a política de bucket ou a política de usuário para conceder permissões
às pessoas para realizar essas operações. A tabela a seguir lista as permissões necessárias para várias
operações de multipart upload ao usar ACLs, uma política de bucket ou uma política de usuário.

Ação Permissões obrigatórias

Criar multipart Você deve ter permissão para realizar a ação s3:PutObject em um objeto para criar
upload o multipart upload.

O proprietário do bucket pode permitir que outros principais realizem a ação


s3:PutObject.

Iniciar multipart Você deve ter permissão para realizar a ação s3:PutObject em um objeto para
upload iniciar o multipart upload.

O proprietário do bucket pode permitir que outros principais realizem a ação


s3:PutObject.

Iniciador O elemento de contêiner que identifica quem iniciou o multipart upload. Se o iniciador
for uma conta da AWS, esse elemento fornecerá as mesmas informações que
o elemento do proprietário. Se o iniciador for um usuário do IAM, esse elemento
fornecerá o ARN e o nome da exibição do usuário.

Upload de Você deve ter permissão para realizar a ação s3:PutObject em um objeto para fazer
parte upload de uma parte.

O proprietário do bucket deve permitir que o iniciador realize a ação s3:PutObject


em um objeto para que o iniciador possa fazer upload de uma parte desse objeto.

Upload de Você deve ter permissão para realizar a ação s3:PutObject em um objeto para fazer
parte (Copiar) upload de uma parte. Como você está fazendo upload de uma parte a partir de um
objeto existente, deverá ter permissão s3:GetObject no objeto de origem.

Para iniciador fazer upload de uma parte para um objeto, o proprietário do bucket deve
permitir que o iniciador realize a ação s3:PutObject no objeto.

Versão da API 2006-03-01


83
Amazon Simple Storage Service Guia do usuário
API de multipart upload e permissões

Ação Permissões obrigatórias

Concluir Você deve ter permissão para realizar a ação s3:PutObject em um objeto para
multipart concluir o multipart upload.
upload
O proprietário do bucket deve permitir que o iniciador realize a ação s3:PutObject
em um objeto para que o iniciador possa concluir um multipart upload desse objeto.

Parar o Você deve ter permissão para realizar a ação s3:AbortMultipartUpload em um


multipart objeto para interromper um multipart upload.
upload
Por padrão, o proprietário do bucket e o iniciador do multipart upload têm permissão
para executar essa ação. Se o iniciador for um usuário do IAM, a conta da AWS desse
usuário também terá permissão para interromper esse multipart upload.

Além desses padrões, o proprietário do bucket pode permitir que outros


principais executem a ação s3:AbortMultipartUpload em um objeto.
O proprietário do bucket pode negar que qualquer principal realize a ação
s3:AbortMultipartUpload.

Listar partes Você deve ter permissão para realizar a ação s3:ListMultipartUploadParts
para listar partes em um multipart upload.

Por padrão, o proprietário do bucket tem permissão para listar as partes de qualquer
multipart upload para o bucket. O iniciador do multipart upload tem permissão para
listar partes do multipart upload específico. Se o iniciador do multipart upload for
um usuário do IAM, a conta da AWS que controla o usuário do IAM também terá
permissão para listar partes desse upload.

Além desses padrões, o proprietário do bucket pode permitir que outros


principais executem a ação s3:ListMultipartUploadParts em um objeto. O
proprietário do bucket também pode negar que qualquer principal realize a ação
s3:ListMultipartUploadParts.

Listar multipart Você deve ter permissão para realizar a ação s3:ListBucketMultipartUploads
uploads em um bucket para listar multipart uploads em andamento no bucket.

Além desse padrão, o proprietário do bucket pode permitir que outros principais
executem a ação s3:ListBucketMultipartUploads no bucket.

Permissões Para fazer um multipart upload com criptografia usando uma chave mestra de cliente
relacionadas à do AWS Key Management Service (AWS KMS), o solicitante deve ter permissão para
criptografia e as ações kms:Decrypt e kms:GenerateDataKey* na chave. Essas permissões
descriptografia são necessárias porque o Amazon S3 precisa descriptografar e ler os dados de partes
do AWS KMS de arquivos criptografados antes de concluir o multipart upload.

Para obter mais informações, consulte Fazer upload de um arquivo grande para
o Amazon S3 com criptografia usando uma CMK do AWS KMS no Centro de
conhecimento da AWS.

Se o seu usuário ou sua função do IAM estiver na mesma conta da AWS que a
CMK do AWS KMS, você deverá ter essas permissões na política da chave. Se o
seu usuário ou a sua função do IAM pertencer a uma conta diferente da CMK, será
necessário ter as permissões na política da chave e no usuário ou na função do IAM.

Para obter informações sobre a relação entre permissões de ACL e permissões em políticas de acesso,
consulte Mapeamento das permissões da ACL e das permissões da política de acesso (p. 443). Para
obter informações sobre usuários do IAM, acesse Trabalhar com usuários e grupos.

Versão da API 2006-03-01


84
Amazon Simple Storage Service Guia do usuário
Configurar uma política de ciclo de vida

Tópicos
• Configurando uma política de ciclo de vida de bucket para anular multipart uploads
incompletos (p. 85)
• Fazer upload de um objeto usando multipart upload (p. 86)
• Fazer upload de um diretório usando a classe TransferUtility .NET de alto nível (p. 100)
• Listar multipart uploads (p. 102)
• Monitorar um multipart upload (p. 103)
• Abortar um multipart upload (p. 106)
• Copiar um objeto usando multipart upload (p. 110)
• Limites do multipart upload do Amazon S3 (p. 114)

Configurando uma política de ciclo de vida de bucket


para anular multipart uploads incompletos
Como melhor prática, recomendamos que você configure uma regra de ciclo de vida usando a ação
AbortIncompleteMultipartUpload para minimizar os custos de armazenamento. Para obter mais
informações sobre como anular um multipart upload, consulte Abortar um multipart upload (p. 106).

O Amazon S3 é compatível com uma regra de ciclo de vida de bucket que pode ser usada para fazer
com que o Amazon S3 interrompa multipart uploads que não são concluídos dentro de um número
especificado de dias após a inicialização. Quando um multipart upload não é concluído no prazo, ele se
torna qualificado para uma operação de anulação e o Amazon S3 interrompe o multipart upload (e exclui
as partes associadas ao multipart upload).

Veja a seguir um exemplo de configuração de ciclo de vida que especifica uma regra com a ação
AbortIncompleteMultipartUpload.

<LifecycleConfiguration>
<Rule>
<ID>sample-rule</ID>
<Prefix></Prefix>
<Status>Enabled</Status>
<AbortIncompleteMultipartUpload>
<DaysAfterInitiation>7</DaysAfterInitiation>
</AbortIncompleteMultipartUpload>
</Rule>
</LifecycleConfiguration>

No exemplo, a regra não especifica um valor para o elemento Prefix (prefixo do nome da chave do
objeto). Portanto, ela se aplica a todos os objetos no bucket para o qual você iniciou multipart uploads.
Multipart uploads que foram iniciados e não concluídos dentro de sete dias tornam-se qualificados para
uma operação de anulação. A ação de anulação não tem efeito em multipart uploads concluídos.

Para obter mais informações sobre a configuração do ciclo de vida de bucket, consulte Gerenciando seu
ciclo de vida de armazenamento (p. 569).
Note
Se o multipart upload for concluído no número de dias especificado na regra, a ação de ciclo
de vida AbortIncompleteMultipartUpload não se aplicará (ou seja, o Amazon S3 não
executará nenhuma ação). Além disso, essa ação não se aplica a objetos. Nenhum objeto é
excluído por essa ação do ciclo de vida.

O comando put-bucket-lifecycle-configuration da CLI adiciona a configuração de ciclo de vida


do bucket especificado.

Versão da API 2006-03-01


85
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

$ aws s3api put-bucket-lifecycle-configuration  \


--bucket bucketname  \
--lifecycle-configuration filename-containing-lifecycle-configuration

Para testar o comando da CLI, faça o seguinte:

1. Configure a CLI da AWS. Para obter instruções, consulte Desenvolvimento com o Amazon S3 usando
a AWS CLI (p. 1033).
2. Salve a seguinte configuração de ciclo de vida de exemplo em um arquivo (lifecycle.json). A
configuração de exemplo especifica o prefixo vazio e, portanto, aplica-se a todos os objetos no bucket.
Você pode especificar um prefixo para restringir a política a um subconjunto de objetos.

{
"Rules": [
{
"ID": "Test Rule",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}
]
}

3. Execute o comando da CLI a seguir para definir a configuração do ciclo de vida no seu bucket.

aws s3api put-bucket-lifecycle-configuration   \


--bucket bucketname  \
--lifecycle-configuration file://lifecycle.json

4. Para verificar, recupere a configuração de ciclo de vida usando o comando da CLI get-bucket-
lifecycle.

aws s3api get-bucket-lifecycle  \


--bucket bucketname

5. Para excluir a configuração de ciclo de vida, use o comando da CLI delete-bucket-lifecycle.

aws s3api delete-bucket-lifecycle \


--bucket bucketname

Fazer upload de um objeto usando multipart upload


Você pode usar o multipart upload para fazer upload programático de um único objeto para o Amazon S3.

Para obter mais informações, consulte as seções a seguir.

Usar os SDKs da AWS (API de alto nível)


O AWS SDK expõe uma API de alto nível, chamada de TransferManager, que simplifica os
multipart uploads. Para obter mais informações, consulte Carregar e copiar objetos usando multipart
upload (p. 80).

Versão da API 2006-03-01


86
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

Você pode fazer upload de dados de um arquivo ou de um fluxo. Você também pode definir opções
avançadas, como o tamanho da parte que você deseja usar para o multipart upload, ou o número de
threads simultâneos que você quer usar quando fizer o upload das partes. Também é possível definir
propriedades opcionais de objetos, a classe de armazenamento ou a lista de controle de acesso (ACL).
Você usa as classes PutObjectRequest e TransferManagerConfiguration para definir essas
opções avançadas.

Quando possível, a classe TransferManager tenta usar vários threads para fazer upload de várias
partes de um upload único de uma vez só. Ao lidar com tamanhos grandes de conteúdo e com alta banda
larga, isso pode representar um aumento significativo na transferência.

Além da funcionalidade de upload de arquivos, a classe TransferManager possibilita a você parar um


multipart upload em andamento. Um upload é considerado como em andamento depois que você o inicia
até ser concluído ou parado. O TransferManager para todos os multipart uploads em andamento em um
bucket especificado que foi iniciado antes de uma data e hora especificadas.

Se precisar pausar e retomar multipart uploads, variar os tamanhos das partes durante o upload ou não
souber o tamanho necessário dos dados com antecedência, use a API de nível baixo PHP. Para obter
mais informações sobre multipart upload, incluindo a funcionalidade adicional oferecida por métodos API
de nível baixo, consulte Usar os SDKs da AWS (API de baixo nível) (p. 93).

Java

O exemplo a seguir carrega um objeto usando a API Java de alto nível de multipart upload (a classe
TransferManager). Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar
exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.File;

public class HighLevelMultipartUpload {

public static void main(String[] args) throws Exception {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";
String filePath = "*** Path for file to upload ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();
TransferManager tm = TransferManagerBuilder.standard()
.withS3Client(s3Client)
.build();

// TransferManager processes all transfers asynchronously,


// so this call returns immediately.
Upload upload = tm.upload(bucketName, keyName, new File(filePath));
System.out.println("Object upload started");

// Optionally, wait for the upload to finish before continuing.

Versão da API 2006-03-01


87
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

upload.waitForCompletion();
System.out.println("Object upload complete");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Para fazer upload de um arquivo para um bucket do S3, use a classe TransferUtility. Ao fazer o
upload de dados de um arquivo, você deve fornecer o nome da chave do objeto. Caso contrário, a API
usará o nome do arquivo no lugar do nome da chave. Ao fazer o upload de dados de um fluxo, você
deve fornecer o nome da chave do objeto.

Para definir opções de upload avançadas, como o tamanho da parte, o número de threads ao fazer
upload das partes simultaneamente, os metadados, a classe de armazenamento, ou ACL, use a
classe TransferUtilityUploadRequest.

O exemplo de C# a seguir faz upload de um arquivo em um bucket do Amazon S3 em várias partes.


Ele mostra como usar várias sobrecargas de TransferUtility.Upload para fazer upload de um
arquivo. Cada chamada sucessiva para upload substitui o upload anterior. Para obter informações
sobre a compatibilidade do exemplo com uma versão específica do AWS SDK para .NET e instruções
para criar e testar um exemplo funcional, consulte Executar os exemplos de código do Amazon
S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Transfer;
using System;
using System.IO;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class UploadFileMPUHighLevelAPITest
{
private const string bucketName = "*** provide bucket name ***";
private const string keyName = "*** provide a name for the uploaded object
***";
private const string filePath = "*** provide the full path name of the file to
upload ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
UploadFileAsync().Wait();
}

private static async Task UploadFileAsync()


{
try
{

Versão da API 2006-03-01


88
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

var fileTransferUtility =
new TransferUtility(s3Client);

// Option 1. Upload a file. The file name is used as the object key
name.
await fileTransferUtility.UploadAsync(filePath, bucketName);
Console.WriteLine("Upload 1 completed");

// Option 2. Specify object key name explicitly.


await fileTransferUtility.UploadAsync(filePath, bucketName, keyName);
Console.WriteLine("Upload 2 completed");

// Option 3. Upload data from a type of System.IO.Stream.


using (var fileToUpload =
new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
await fileTransferUtility.UploadAsync(fileToUpload,
bucketName, keyName);
}
Console.WriteLine("Upload 3 completed");

// Option 4. Specify advanced settings.


var fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
BucketName = bucketName,
FilePath = filePath,
StorageClass = S3StorageClass.StandardInfrequentAccess,
PartSize = 6291456, // 6 MB.
Key = keyName,
CannedACL = S3CannedACL.PublicRead
};
fileTransferUtilityRequest.Metadata.Add("param1", "Value1");
fileTransferUtilityRequest.Metadata.Add("param2", "Value2");

await fileTransferUtility.UploadAsync(fileTransferUtilityRequest);
Console.WriteLine("Upload 4 completed");
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}

}
}
}

PHP

Este tópico explica como usar a classe Aws\S3\Model\MultipartUpload\UploadBuilder de


alto nível do AWS SDK para PHP para multipart uploads de arquivos. Pressupõe-se que você já esteja
seguindo as instruções de Usar o AWS SDK para PHP e executar exemplos do PHP (p. 1044) e
tenha o AWS SDK para PHP devidamente instalado.

O exemplo de PHP a seguir faz upload de um arquivo em um bucket do Amazon S3. O exemplo
demonstra como definir parâmetros para o objeto MultipartUploader.

Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

Versão da API 2006-03-01


89
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

require 'vendor/autoload.php';

use Aws\Common\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Prepare the upload parameters.


$uploader = new MultipartUploader($s3, '/path/to/large/file.zip', [
'bucket' => $bucket,
'key' => $keyname
]);

// Perform the upload.


try {
$result = $uploader->upload();
echo "Upload complete: {$result['ObjectURL']}" . PHP_EOL;
} catch (MultipartUploadException $e) {
echo $e->getMessage() . PHP_EOL;
}

Python

O exemplo a seguir carrega um objeto usando a API do Python de multipart upload de alto nível (a
classe TransferManager).

"""
Use Boto 3 managed file transfers to manage multipart uploads to and downloads
from an Amazon S3 bucket.

When the file to transfer is larger than the specified threshold, the transfer
manager automatically uses multipart uploads or downloads. This demonstration
shows how to use several of the available transfer manager settings and reports
thread usage and time to transfer.
"""

import sys
import threading

import boto3
from boto3.s3.transfer import TransferConfig

MB = 1024 * 1024
s3 = boto3.resource('s3')

class TransferCallback:
"""
Handle callbacks from the transfer manager.

The transfer manager periodically calls the __call__ method throughout


the upload and download process so that it can take action, such as
displaying progress to the user and collecting data about the transfer.
"""

def __init__(self, target_size):

Versão da API 2006-03-01


90
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

self._target_size = target_size
self._total_transferred = 0
self._lock = threading.Lock()
self.thread_info = {}

def __call__(self, bytes_transferred):


"""
The callback method that is called by the transfer manager.

Display progress during file transfer and collect per-thread transfer


data. This method can be called by multiple threads, so shared instance
data is protected by a thread lock.
"""
thread = threading.current_thread()
with self._lock:
self._total_transferred += bytes_transferred
if thread.ident not in self.thread_info.keys():
self.thread_info[thread.ident] = bytes_transferred
else:
self.thread_info[thread.ident] += bytes_transferred

target = self._target_size * MB
sys.stdout.write(
f"\r{self._total_transferred} of {target} transferred "
f"({(self._total_transferred / target) * 100:.2f}%).")
sys.stdout.flush()

def upload_with_default_configuration(local_file_path, bucket_name,


object_key, file_size_mb):
"""
Upload a file from a local folder to an Amazon S3 bucket, using the default
configuration.
"""
transfer_callback = TransferCallback(file_size_mb)
s3.Bucket(bucket_name).upload_file(
local_file_path,
object_key,
Callback=transfer_callback)
return transfer_callback.thread_info

def upload_with_chunksize_and_meta(local_file_path, bucket_name, object_key,


file_size_mb, metadata=None):
"""
Upload a file from a local folder to an Amazon S3 bucket, setting a
multipart chunk size and adding metadata to the Amazon S3 object.

The multipart chunk size controls the size of the chunks of data that are
sent in the request. A smaller chunk size typically results in the transfer
manager using more threads for the upload.

The metadata is a set of key-value pairs that are stored with the object
in Amazon S3.
"""
transfer_callback = TransferCallback(file_size_mb)

config = TransferConfig(multipart_chunksize=1 * MB)


extra_args = {'Metadata': metadata} if metadata else None
s3.Bucket(bucket_name).upload_file(
local_file_path,
object_key,
Config=config,
ExtraArgs=extra_args,
Callback=transfer_callback)
return transfer_callback.thread_info

Versão da API 2006-03-01


91
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

def upload_with_high_threshold(local_file_path, bucket_name, object_key,


file_size_mb):
"""
Upload a file from a local folder to an Amazon S3 bucket, setting a
multipart threshold larger than the size of the file.

Setting a multipart threshold larger than the size of the file results
in the transfer manager sending the file as a standard upload instead of
a multipart upload.
"""
transfer_callback = TransferCallback(file_size_mb)
config = TransferConfig(multipart_threshold=file_size_mb * 2 * MB)
s3.Bucket(bucket_name).upload_file(
local_file_path,
object_key,
Config=config,
Callback=transfer_callback)
return transfer_callback.thread_info

def upload_with_sse(local_file_path, bucket_name, object_key,


file_size_mb, sse_key=None):
"""
Upload a file from a local folder to an Amazon S3 bucket, adding server-side
encryption with customer-provided encryption keys to the object.

When this kind of encryption is specified, Amazon S3 encrypts the object


at rest and allows downloads only when the expected encryption key is
provided in the download request.
"""
transfer_callback = TransferCallback(file_size_mb)
if sse_key:
extra_args = {
'SSECustomerAlgorithm': 'AES256',
'SSECustomerKey': sse_key}
else:
extra_args = None
s3.Bucket(bucket_name).upload_file(
local_file_path,
object_key,
ExtraArgs=extra_args,
Callback=transfer_callback)
return transfer_callback.thread_info

def download_with_default_configuration(bucket_name, object_key,


download_file_path, file_size_mb):
"""
Download a file from an Amazon S3 bucket to a local folder, using the
default configuration.
"""
transfer_callback = TransferCallback(file_size_mb)
s3.Bucket(bucket_name).Object(object_key).download_file(
download_file_path,
Callback=transfer_callback)
return transfer_callback.thread_info

def download_with_single_thread(bucket_name, object_key,


download_file_path, file_size_mb):
"""
Download a file from an Amazon S3 bucket to a local folder, using a
single thread.
"""

Versão da API 2006-03-01


92
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

transfer_callback = TransferCallback(file_size_mb)
config = TransferConfig(use_threads=False)
s3.Bucket(bucket_name).Object(object_key).download_file(
download_file_path,
Config=config,
Callback=transfer_callback)
return transfer_callback.thread_info

def download_with_high_threshold(bucket_name, object_key,


download_file_path, file_size_mb):
"""
Download a file from an Amazon S3 bucket to a local folder, setting a
multipart threshold larger than the size of the file.

Setting a multipart threshold larger than the size of the file results
in the transfer manager sending the file as a standard download instead
of a multipart download.
"""
transfer_callback = TransferCallback(file_size_mb)
config = TransferConfig(multipart_threshold=file_size_mb * 2 * MB)
s3.Bucket(bucket_name).Object(object_key).download_file(
download_file_path,
Config=config,
Callback=transfer_callback)
return transfer_callback.thread_info

def download_with_sse(bucket_name, object_key, download_file_path,


file_size_mb, sse_key):
"""
Download a file from an Amazon S3 bucket to a local folder, adding a
customer-provided encryption key to the request.

When this kind of encryption is specified, Amazon S3 encrypts the object


at rest and allows downloads only when the expected encryption key is
provided in the download request.
"""
transfer_callback = TransferCallback(file_size_mb)

if sse_key:
extra_args = {
'SSECustomerAlgorithm': 'AES256',
'SSECustomerKey': sse_key}
else:
extra_args = None
s3.Bucket(bucket_name).Object(object_key).download_file(
download_file_path,
ExtraArgs=extra_args,
Callback=transfer_callback)
return transfer_callback.thread_info

Usar os SDKs da AWS (API de baixo nível)


O AWS SDK expõe uma API de baixo nível que se assemelha à API REST do Amazon S3 para multipart
uploads (consulte Carregar e copiar objetos usando multipart upload (p. 80)). Use a API de baixo nível
quando precisar pausar e retomar multipart uploads, variar os tamanhos das partes durante o upload ou
não souber o tamanho dos dados com antecedência. Quando não tiver esses requisitos, use a API de nível
alto (consulte Usar os SDKs da AWS (API de alto nível) (p. 86)).

Versão da API 2006-03-01


93
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

Java

O exemplo a seguir mostra como usar as classes Java de baixo nível para fazer upload de um
arquivo. Ele realiza as seguintes etapas:

• Inicia um multipart upload usando o método AmazonS3Client.initiateMultipartUpload(),


e transmite a um objeto InitiateMultipartUploadRequest.
• Salva o ID de upload retornado pelo método AmazonS3Client.initiateMultipartUpload().
Você fornece esse ID de upload para cada operação de multipart upload subsequente.
• Faz upload das partes do objeto. Para cada parte, chame o método
AmazonS3Client.uploadPart(). Você fornece informações sobre o upload da parte usando um
objeto UploadPartRequest.
• Para cada parte, você salva a ETag da resposta do método AmazonS3Client.uploadPart() em
uma lista. Você usa os valores de ETag para concluir o multipart upload.
• Chama o método AmazonS3Client.completeMultipartUpload() para concluir o multipart
upload.

Example

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class LowLevelMultipartUpload {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ***";
String filePath = "*** Path to file to upload ***";

File file = new File(filePath);


long contentLength = file.length();
long partSize = 5 * 1024 * 1024; // Set part size to 5 MB.

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();

// Create a list of ETag objects. You retrieve ETags for each object part
uploaded,
// then, after each individual part has been uploaded, pass the list of
ETags to
// the request to complete the upload.
List<PartETag> partETags = new ArrayList<PartETag>();

Versão da API 2006-03-01


94
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

// Initiate the multipart upload.


InitiateMultipartUploadRequest initRequest = new
InitiateMultipartUploadRequest(bucketName, keyName);
InitiateMultipartUploadResult initResponse =
s3Client.initiateMultipartUpload(initRequest);

// Upload the file parts.


long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++) {
// Because the last part could be less than 5 MB, adjust the part size
as needed.
partSize = Math.min(partSize, (contentLength - filePosition));

// Create the request to upload a part.


UploadPartRequest uploadRequest = new UploadPartRequest()
.withBucketName(bucketName)
.withKey(keyName)
.withUploadId(initResponse.getUploadId())
.withPartNumber(i)
.withFileOffset(filePosition)
.withFile(file)
.withPartSize(partSize);

// Upload the part and add the response's ETag to our list.
UploadPartResult uploadResult = s3Client.uploadPart(uploadRequest);
partETags.add(uploadResult.getPartETag());

filePosition += partSize;
}

// Complete the multipart upload.


CompleteMultipartUploadRequest compRequest = new
CompleteMultipartUploadRequest(bucketName, keyName,
initResponse.getUploadId(), partETags);
s3Client.completeMultipartUpload(compRequest);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

O exemplo de C# a seguir mostra como usar a API de multipart upload do AWS SDK para .NET
de baixo nível para fazer upload de um arquivo para um bucket do S3. Para obter informações
sobre multipart uploads do Amazon S3, consulte Carregar e copiar objetos usando multipart
upload (p. 80).
Note

Ao usar a API do AWS SDK para .NET para fazer upload de objetos grandes, um tempo limite
pode ocorrer enquanto os dados são gravados no fluxo da solicitação. Você pode definir um
tempo limite explícito usando o UploadPartRequest.

O exemplo do C# a seguir faz upload de um arquivo para um bucket do S3 usando a API de multipart
upload de nível baixo. Para obter informações sobre a compatibilidade do exemplo com uma versão

Versão da API 2006-03-01


95
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

específica do AWS SDK para .NET e instruções para criar e testar um exemplo funcional, consulte
Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class UploadFileMPULowLevelAPITest
{
private const string bucketName = "*** provide bucket name ***";
private const string keyName = "*** provide a name for the uploaded object
***";
private const string filePath = "*** provide the full path name of the file to
upload ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
Console.WriteLine("Uploading an object");
UploadObjectAsync().Wait();
}

private static async Task UploadObjectAsync()


{
// Create list to store upload part responses.
List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();

// Setup information required to initiate the multipart upload.


InitiateMultipartUploadRequest initiateRequest = new
InitiateMultipartUploadRequest
{
BucketName = bucketName,
Key = keyName
};

// Initiate the upload.


InitiateMultipartUploadResponse initResponse =
await s3Client.InitiateMultipartUploadAsync(initiateRequest);

// Upload parts.
long contentLength = new FileInfo(filePath).Length;
long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB

try
{
Console.WriteLine("Uploading parts");

long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++)
{
UploadPartRequest uploadRequest = new UploadPartRequest
{
BucketName = bucketName,
Key = keyName,
UploadId = initResponse.UploadId,

Versão da API 2006-03-01


96
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

PartNumber = i,
PartSize = partSize,
FilePosition = filePosition,
FilePath = filePath
};

// Track upload progress.


uploadRequest.StreamTransferProgress +=
new
EventHandler<StreamTransferProgressArgs>(UploadPartProgressEventCallback);

// Upload a part and add the response to our list.


uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));

filePosition += partSize;
}

// Setup to complete the upload.


CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest
{
BucketName = bucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
completeRequest.AddPartETags(uploadResponses);

// Complete the upload.


CompleteMultipartUploadResponse completeUploadResponse =
await s3Client.CompleteMultipartUploadAsync(completeRequest);
}
catch (Exception exception)
{
Console.WriteLine("An AmazonS3Exception was thrown: { 0}",
exception.Message);

// Abort the upload.


AbortMultipartUploadRequest abortMPURequest = new
AbortMultipartUploadRequest
{
BucketName = bucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
await s3Client.AbortMultipartUploadAsync(abortMPURequest);
}
}
public static void UploadPartProgressEventCallback(object sender,
StreamTransferProgressArgs e)
{
// Process event.
Console.WriteLine("{0}/{1}", e.TransferredBytes, e.TotalBytes);
}
}
}

PHP

Este tópico mostra como usar o método de baixo nível uploadPart da versão 3 do AWS SDK para
PHP para fazer upload de um arquivo em várias partes. Pressupõe-se que você já esteja seguindo
as instruções de Usar o AWS SDK para PHP e executar exemplos do PHP (p. 1044) e tenha o AWS
SDK para PHP devidamente instalado.

Versão da API 2006-03-01


97
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

O exemplo de PHP a seguir faz upload de um arquivo para um bucket do Amazon S3 usando o
multipart upload da API de baixo nível do PHP. Para obter informações sobre a execução dos
exemplos de PHP neste guia, consulte Executar exemplos do PHP (p. 1045).

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';
$filename = '*** Path to and Name of the File to Upload ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

$result = $s3->createMultipartUpload([
'Bucket' => $bucket,
'Key' => $keyname,
'StorageClass' => 'REDUCED_REDUNDANCY',
'Metadata' => [
'param1' => 'value 1',
'param2' => 'value 2',
'param3' => 'value 3'
]
]);
$uploadId = $result['UploadId'];

// Upload the file in parts.


try {
$file = fopen($filename, 'r');
$partNumber = 1;
while (!feof($file)) {
$result = $s3->uploadPart([
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
'PartNumber' => $partNumber,
'Body' => fread($file, 5 * 1024 * 1024),
]);
$parts['Parts'][$partNumber] = [
'PartNumber' => $partNumber,
'ETag' => $result['ETag'],
];
$partNumber++;

echo "Uploading part {$partNumber} of {$filename}." . PHP_EOL;


}
fclose($file);
} catch (S3Exception $e) {
$result = $s3->abortMultipartUpload([
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId
]);

echo "Upload of {$filename} failed." . PHP_EOL;


}

// Complete the multipart upload.


$result = $s3->completeMultipartUpload([
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,

Versão da API 2006-03-01


98
Amazon Simple Storage Service Guia do usuário
Fazer upload de um objeto usando multipart upload

'MultipartUpload' => $parts,


]);
$url = $result['Location'];

echo "Uploaded {$filename} to {$url}." . PHP_EOL;

Como usar o AWS SDK para Ruby


O AWS SDK para Ruby versão 3 é compatível com multipart uploads do Amazon S3 de duas maneiras.
Para a primeira opção, é possível usar uploads de arquivos gerenciados. Para obter mais informações,
consulte Upload de arquivos para o Amazon S3 no blog do desenvolvedor da AWS. O upload de arquivos
gerenciado é o método recomendado para fazer upload de arquivos em um bucket. Eles fornecem os
seguintes benefícios:

• Gerenciam multipart uploads para objetos com mais de 15 MB.


• Abrem corretamente arquivos em modo binário para evitar problemas de codificação.
• Usam vários threads para upload de partes de grandes objetos em paralelo.

Como alternativa, você pode usar as seguintes operações de cliente do multipart upload diretamente:

• create_multipart_upload: inicia um multipart upload e retorna um ID de upload.


• upload_part: faz upload de uma parte em um multipart upload.
• upload_part_copy:f az upload de uma parte copiando dados de um objeto existente como a fonte de
dados.
• complete_multipart_upload: conclui um multipart upload montando as partes obtidas por upload
anteriormente.
• abort_multipart_upload: interrompe um multipart upload.

Para obter mais informações, consulte Usar o AWS SDK para Ruby versão 3 (p. 1045).

Uso dos REST API


As seções a seguir na Referência de APIs do Amazon Simple Storage Service descrevem a API REST
para multipart upload.

• Iniciar multipart upload


• Upload de parte
• Concluir multipart upload
• Parar o multipart upload
• Listar partes
• Listar multipart uploads

Usar a CLI da AWS


As seções a seguir na Interface de linha de comando da AWS (CLI da AWS) descrevem as operações
para multipart upload.

• Iniciar multipart upload


• Upload de parte
• Upload de parte (Copiar)

Versão da API 2006-03-01


99
Amazon Simple Storage Service Guia do usuário
Fazer upload de um diretório

• Concluir multipart upload


• Anular multipart upload
• Listar partes
• Listar multipart uploads

Também é possível usar essa API REST para fazer suas solicitações REST ou usar um dos SDKs da
AWS. Para obter mais informações sobre a API REST, consulte Uso dos REST API (p. 99). Para obter
mais informações sobre SDKs, consulte Fazer upload de um objeto usando multipart upload (p. 86).

Fazer upload de um diretório usando a classe


TransferUtility .NET de alto nível
Você pode usar a classe TransferUtility para fazer upload de um diretório inteiro. Por padrão, a API
faz upload somente dos arquivos na raiz do diretório especificado. No entanto, você pode especificar um
upload recursivo em todos os subdiretórios.

Para selecionar arquivos no diretório especificado, com base nos critérios de filtragem, especifique
expressões de filtragem. Por exemplo, para carregar somente os arquivos .pdf de um diretório, você
especifica a expressão de filtragem de "*.pdf".

Ao fazer upload de arquivos de um diretório, você não especifica os nomes da chave para os objetos
resultantes. O Amazon S3 cria os nomes de chave usando o caminho original do arquivo. Por exemplo,
suponha que você tem um diretório denominado c:\myfolder com a seguinte estrutura:

Example

C:\myfolder
\a.txt
\b.pdf
\media\
An.mp3

quando você faz upload desse diretório, o Amazon S3 usa os seguintes nomes de chave:

Example

a.txt
b.pdf
media/An.mp3

Example

O exemplo de C# a seguir faz upload de um diretório em um bucket do Amazon S3. Ele mostra como usar
várias sobrecargas de TransferUtility.UploadDirectory para fazer upload do diretório. Cada
chamada sucessiva para upload substitui o upload anterior. Para obter instruções sobre como criar e testar
um exemplo funcional, consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Transfer;
using System;
using System.IO;
using System.Threading.Tasks;

Versão da API 2006-03-01


100
Amazon Simple Storage Service Guia do usuário
Fazer upload de um diretório

namespace Amazon.DocSamples.S3
{
class UploadDirMPUHighLevelAPITest
{
private const string existingBucketName = "*** bucket name ***";
private const string directoryPath = @"*** directory path ***";
// The example uploads only .txt files.
private const string wildCard = "*.txt";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
static void Main()
{
s3Client = new AmazonS3Client(bucketRegion);
UploadDirAsync().Wait();
}

private static async Task UploadDirAsync()


{
try
{
var directoryTransferUtility =
new TransferUtility(s3Client);

// 1. Upload a directory.
await directoryTransferUtility.UploadDirectoryAsync(directoryPath,
existingBucketName);
Console.WriteLine("Upload statement 1 completed");

// 2. Upload only the .txt files from a directory


// and search recursively.
await directoryTransferUtility.UploadDirectoryAsync(
directoryPath,
existingBucketName,
wildCard,
SearchOption.AllDirectories);
Console.WriteLine("Upload statement 2 completed");

// 3. The same as Step 2 and some optional configuration.


// Search recursively for .txt files to upload.
var request = new TransferUtilityUploadDirectoryRequest
{
BucketName = existingBucketName,
Directory = directoryPath,
SearchOption = SearchOption.AllDirectories,
SearchPattern = wildCard
};

await directoryTransferUtility.UploadDirectoryAsync(request);
Console.WriteLine("Upload statement 3 completed");
}
catch (AmazonS3Exception e)
{
Console.WriteLine(
"Error encountered ***. Message:'{0}' when writing an object",
e.Message);
}
catch (Exception e)
{
Console.WriteLine(
"Unknown encountered on server. Message:'{0}' when writing an object",
e.Message);
}
}
}

Versão da API 2006-03-01


101
Amazon Simple Storage Service Guia do usuário
Listar multipart uploads

Listar multipart uploads


Você pode usar os AWS SDKs (API de baixo nível) para recuperar uma lista de multipart uploads em
andamento no Amazon S3.

Listar multipart uploads usando o AWS SDK (API de baixo nível)


Java

As tarefas a seguir fornecem orientações para usar as classes Java de baixo nível para listar todos os
multipart uploads em andamento em um bucket.

Processo de listagem de multipart uploads da API de baixo nível

1 Crie uma instância da classe ListMultipartUploadsRequest e forneça o nome do


bucket.

2 Execute o método AmazonS3Client.listMultipartUploads. O método retorna


uma instância da classe MultipartUploadListing que fornece informações sobre
os multipart uploads em andamento.

O exemplo de código Java a seguir demonstra as tarefas anteriores.

Example

ListMultipartUploadsRequest allMultpartUploadsRequest =
new ListMultipartUploadsRequest(existingBucketName);
MultipartUploadListing multipartUploadListing =
s3Client.listMultipartUploads(allMultpartUploadsRequest);

.NET

Para listar todos os multipart uploads em andamento em um bucket, use a classe


ListMultipartUploadsRequest da API de multipart upload do AWS SDK para .NET de
baixo nível. O AmazonS3Client.ListMultipartUploads método retorna uma instância da
classe ListMultipartUploadsResponse que fornece informações sobre multipart uploads em
andamento.

Um multipart upload em andamento é um multipart upload que foi iniciado com o uso da solicitação
para iniciar o multipart upload, mas que ainda não foi concluído ou parado. Para obter mais
informações sobre multipart uploads do Amazon S3, consulte Carregar e copiar objetos usando
multipart upload (p. 80).

O exemplo de C# a seguir mostra como usar o AWS SDK para .NET para listar todos os multipart
uploads em andamento em um bucket. Para obter informações sobre a compatibilidade do exemplo
com uma versão específica do AWS SDK para .NET e instruções sobre como criar e testar um
exemplo funcional, consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

ListMultipartUploadsRequest request = new ListMultipartUploadsRequest


{
BucketName = bucketName // Bucket receiving the uploads.
};

ListMultipartUploadsResponse response = await


AmazonS3Client.ListMultipartUploadsAsync(request);

Versão da API 2006-03-01


102
Amazon Simple Storage Service Guia do usuário
Monitorar um multipart upload

PHP

Este tópico mostra como usar as classes da API de baixo nível da versão 3 do AWS SDK para PHP
para listar todos os multipart uploads em andamento para um bucket. Pressupõe-se que você já esteja
seguindo as instruções de Usar o AWS SDK para PHP e executar exemplos do PHP (p. 1044) e
tenha o AWS SDK para PHP devidamente instalado.

O exemplo de PHP a seguir demonstra a listagem de todos os multipart uploads em andamento em


um bucket.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Retrieve a list of the current multipart uploads.


$result = $s3->listMultipartUploads([
'Bucket' => $bucket
]);

// Write the list of uploads to the page.


print_r($result->toArray());

Listar multipart uploads usando a API REST


As seções a seguir na Referência de APIs do Amazon Simple Storage Service descrevem a API REST
para listagem de multipart uploads:

• ListParts‐lista as partes enviadas por upload de um multipart upload específico.


• ListMultipartUploads lista multipart uploads em andamento.

Listar multipart uploads usando a CLI da AWS


As seções a seguir na Interface de linha de comando da AWS descrevem as operações para listagem de
multipart uploads.

• list-parts: liste as partes enviadas por upload de um multipart upload específico.


• list-multipart-uploads: liste multipart uploads em andamento.

Monitorar um multipart upload


A API multipart upload de alto nível upload fornece uma interface de escuta, ProgressListener, para
acompanhar o progresso ao fazer upload de um objeto para o Amazon S3. Os eventos de progresso
ocorrem periodicamente e notificam o listener que os bytes foram transferidos.

Java

Example

TransferManager tm = new TransferManager(new ProfileCredentialsProvider());

Versão da API 2006-03-01


103
Amazon Simple Storage Service Guia do usuário
Monitorar um multipart upload

PutObjectRequest request = new PutObjectRequest(


existingBucketName, keyName, new File(filePath));

// Subscribe to the event and provide event handler.


request.setProgressListener(new ProgressListener() {
public void progressChanged(ProgressEvent event) {
System.out.println("Transferred bytes: " +
event.getBytesTransfered());
}
});

Example

O código Java a seguir carrega um arquivo e usa o ProgressListener para rastrear o progresso
do upload. Para obter instruções sobre como criar e testar um exemplo funcional, consulte Testar
exemplos de código Java no Amazon S3 (p. 1042).

import java.io.File;

import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.Upload;

public class TrackMPUProgressUsingHighLevelAPI {

public static void main(String[] args) throws Exception {


String existingBucketName = "*** Provide bucket name ***";
String keyName = "*** Provide object key ***";
String filePath = "*** file to upload ***";

TransferManager tm = new TransferManager(new ProfileCredentialsProvider());

// For more advanced uploads, you can create a request object


// and supply additional request parameters (ex: progress listeners,
// canned ACLs, etc.)
PutObjectRequest request = new PutObjectRequest(
existingBucketName, keyName, new File(filePath));

// You can ask the upload for its progress, or you can
// add a ProgressListener to your request to receive notifications
// when bytes are transferred.
request.setGeneralProgressListener(new ProgressListener() {
@Override
public void progressChanged(ProgressEvent progressEvent) {
System.out.println("Transferred bytes: " +
progressEvent.getBytesTransferred());
}
});

// TransferManager processes all transfers asynchronously,


// so this call will return immediately.
Upload upload = tm.upload(request);

try {
// You can block and wait for the upload to finish
upload.waitForCompletion();
} catch (AmazonClientException amazonClientException) {
System.out.println("Unable to upload file, upload aborted.");

Versão da API 2006-03-01


104
Amazon Simple Storage Service Guia do usuário
Monitorar um multipart upload

amazonClientException.printStackTrace();
}
}
}

.NET

O seguinte exemplo do C# faz upload de um arquivo em um bucket do S3 usando a classe


TransferUtility e monitora o andamento do upload. Para obter informações sobre a
compatibilidade do exemplo com uma versão específica do AWS SDK para .NET e instruções
para criar e testar um exemplo funcional, consulte Executar os exemplos de código do Amazon
S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Transfer;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class TrackMPUUsingHighLevelAPITest
{
private const string bucketName = "*** provide the bucket name ***";
private const string keyName = "*** provide the name for the uploaded object
***";
private const string filePath = " *** provide the full path name of the file to
upload **";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
TrackMPUAsync().Wait();
}

private static async Task TrackMPUAsync()


{
try
{
var fileTransferUtility = new TransferUtility(s3Client);

// Use TransferUtilityUploadRequest to configure options.


// In this example we subscribe to an event.
var uploadRequest =
new TransferUtilityUploadRequest
{
BucketName = bucketName,
FilePath = filePath,
Key = keyName
};

uploadRequest.UploadProgressEvent +=
new EventHandler<UploadProgressArgs>
(uploadRequest_UploadPartProgressEvent);

await fileTransferUtility.UploadAsync(uploadRequest);
Console.WriteLine("Upload completed");
}
catch (AmazonS3Exception e)

Versão da API 2006-03-01


105
Amazon Simple Storage Service Guia do usuário
Abortar um multipart upload

{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

static void uploadRequest_UploadPartProgressEvent(object sender,


UploadProgressArgs e)
{
// Process event.
Console.WriteLine("{0}/{1}", e.TransferredBytes, e.TotalBytes);
}
}
}

Abortar um multipart upload


Após iniciar um multipart upload, você começa a fazer upload de partes. O Amazon S3 armazena essas
partes, mas cria o objeto a partir das partes somente após o upload de todas e envia uma solicitação
successful para concluir o multipart upload (você deve verificar se a solicitação para concluir o multipart
upload teve êxito). Ao receber a solicitação para concluir o multipart upload, o Amazon S3 monta as partes
e cria um objeto. Se você não enviar a solicitação de conclusão do multipart upload, o Amazon S3 não
montará as partes e não criará nenhum objeto.

Você é cobrado por todo o armazenamento associado a partes enviadas por upload. Para obter mais
informações, consulte Multipart upload e definição de preço (p. 82). Portanto, é importante que você
conclua o multipart upload para ter o objeto criado ou pare o multipart upload para remover todas as partes
enviadas por upload.

Você pode interromper um multipart upload em andamento no Amazon S3 usando a Interface de linha
de comando da AWS (CLI da AWS), a API REST ou os AWS SDKs. Você também pode interromper um
multipart upload incompleto usando uma política de ciclo de vida de bucket.

Usar os SDKs da AWS (API de alto nível)


Java

A classe TransferManager fornece o método abortMultipartUploads para interromper


multipart uploads em andamento. Um upload é considerado como em andamento depois que você
o inicia até ser concluído ou parado. Você fornece um valor Date e essa API interrompe todos os
multipart uploads, naquele bucket, que foram iniciados antes da Date especificada e que ainda estão
em andamento.

As tarefas a seguir orientam sobre a utilização de classes Java de alto nível para interromper multipart
uploads.

Processo de interrupção de multipart uploads com API de alto nível

1 Crie uma instância da classe TransferManager.

2 Execute o método TransferManager.abortMultipartUploads passando o nome


do bucket e um valor de Date.

Versão da API 2006-03-01


106
Amazon Simple Storage Service Guia do usuário
Abortar um multipart upload

O código Java a seguir interrompe todos os multipart uploads em andamento que foram iniciados em
um bucket específico uma semana atrás. Para obter instruções sobre como criar e testar um exemplo
funcional, consulte Testar exemplos de código Java no Amazon S3 (p. 1042).

import java.util.Date;

import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.transfer.TransferManager;

public class AbortMPUUsingHighLevelAPI {

public static void main(String[] args) throws Exception {


String existingBucketName = "*** Provide existing bucket name ***";

TransferManager tm = new TransferManager(new ProfileCredentialsProvider());

int sevenDays = 1000 * 60 * 60 * 24 * 7;


Date oneWeekAgo = new Date(System.currentTimeMillis() - sevenDays);

try {
tm.abortMultipartUploads(existingBucketName, oneWeekAgo);
} catch (AmazonClientException amazonClientException) {
System.out.println("Unable to upload file, upload was aborted.");
amazonClientException.printStackTrace();
}
}
}

Note

Você também pode parar um multipart upload específico. Para obter mais informações,
consulte Usar os AWS SDKs (API de baixo nível) (p. 108).
.NET

O exemplo do C# a seguir interrompe todos os multipart uploads em andamento que foram iniciados
em um bucket específico há uma semana. Para obter informações sobre a compatibilidade do
exemplo com uma versão específica do AWS SDK para .NET e instruções para criar e testar um
exemplo funcional, consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Transfer;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class AbortMPUUsingHighLevelAPITest
{
private const string bucketName = "*** provide bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
AbortMPUAsync().Wait();
}

Versão da API 2006-03-01


107
Amazon Simple Storage Service Guia do usuário
Abortar um multipart upload

private static async Task AbortMPUAsync()


{
try
{
var transferUtility = new TransferUtility(s3Client);

// Abort all in-progress uploads initiated before the specified date.


await transferUtility.AbortMultipartUploadsAsync(
bucketName, DateTime.Now.AddDays(-7));
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
}
}

Note

Você também pode parar um multipart upload específico. Para obter mais informações,
consulte Usar os AWS SDKs (API de baixo nível) (p. 108).

Usar os AWS SDKs (API de baixo nível)


É possível interromper um multipart upload em andamento chamando o método
AmazonS3.abortMultipartUpload. Esse método exclui todas as partes que foram carregadas
no Amazon S3 e libera os recursos. Você deve fornecer o ID de upload, o nome do bucket e o nome
da chave. O código Java de exemplo a seguir demonstra como interromper um multipart upload em
andamento.

Para parar um multipart upload, é preciso fornecer o ID de upload e nomes do bucket e da chave usados
no upload. Após parar um multipart upload, não é possível usar o ID de upload para fazer upload de partes
adicionais. Para obter mais informações sobre multipart uploads do Amazon S3, consulte Carregar e copiar
objetos usando multipart upload (p. 80).

Java

O exemplo de código Java a seguir interrompe um multipart upload em andamento.

Example

InitiateMultipartUploadRequest initRequest =
new InitiateMultipartUploadRequest(existingBucketName, keyName);
InitiateMultipartUploadResult initResponse =
s3Client.initiateMultipartUpload(initRequest);

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());


s3Client.abortMultipartUpload(new AbortMultipartUploadRequest(
existingBucketName, keyName, initResponse.getUploadId()));

Note

Em vez de um multipart upload específico, você pode interromper todos os multipart iniciados
antes de uma determinada hora que ainda estiverem em andamento. Essa operação de

Versão da API 2006-03-01


108
Amazon Simple Storage Service Guia do usuário
Abortar um multipart upload

limpeza é útil para interromper multipart uploads antigos que você iniciou, mas não concluiu
ou parou. Para obter mais informações, consulte Usar os SDKs da AWS (API de alto
nível) (p. 106).
.NET

O exemplo do C# a seguir mostra como parar um multipart upload. Para um exemplo do C# completo
que inclui o código seguinte, consulte Usar os SDKs da AWS (API de baixo nível) (p. 93).

AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest


{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
await AmazonS3Client.AbortMultipartUploadAsync(abortMPURequest);

Você também pode anular todos os multipart uploads em andamento que foram iniciados antes de um
horário específico. Essa operação de limpeza é útil para anular os multipart uploads que não foram
concluídos nem anulados. Para obter mais informações, consulte Usar os SDKs da AWS (API de alto
nível) (p. 106).
PHP

Este tópico descreve como usar uma classe da versão 3 do AWS SDK para PHP para anular um
multipart upload que está em andamento. Pressupõe-se que você já esteja seguindo as instruções de
Usar o AWS SDK para PHP e executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP
devidamente instalado. O exemplo do método abortMultipartUpload().

Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';
$uploadId = '*** Upload ID of upload to Abort ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Abort the multipart upload.


$s3->abortMultipartUpload([
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
]);

Uso dos REST API


Para obter mais informações sobre o uso da API REST para interromper um multipart upload, consulte
AbortMultipartUpload na Referência da API do Amazon Simple Storage Service.

Usar a CLI da AWS


Para obter mais informações sobre o uso da CLI da AWS para interromper um multipart upload, consulte
abort-multipart-upload na Referência de comandos da CLI da AWS.

Versão da API 2006-03-01


109
Amazon Simple Storage Service Guia do usuário
Copiar um objeto

Copiar um objeto usando multipart upload


Os exemplos nesta seção mostram como copiar objetos maiores que 5 GB usando a API de multipart
upload. Copie objetos menores que 5 GB em uma única operação. Para obter mais informações, consulte
Cópia de objetos (p. 114).

Uso dos AWS SDKs


Para copiar um objeto usando a API de baixo nível, faça o seguinte:

• Inicie um multipart upload chamando o método AmazonS3Client.initiateMultipartUpload().


• Salve o ID de upload do objeto de resposta retornado pelo método
AmazonS3Client.initiateMultipartUpload(). Você fornece esse ID de upload para cada
operação do upload de parte.
• Copie todas as partes. Para cada parte que você precisar copiar, crie uma nova instância da classe
CopyPartRequest. Forneça as informações da parte, incluindo a origem e os nomes do bucket de
destino, as chaves de objeto de origem e de destino, o ID de upload, os locais dos primeiros e últimos
bytes da parte, e o número da parte.
• Salve as respostas das chamadas de método AmazonS3Client.copyPart(). Cada resposta inclui o
valor ETag e o número da parte para a parte cujo upload foi feito. Você precisa dessas informações para
concluir o multipart upload.
• Chame o método AmazonS3Client.completeMultipartUpload() para concluir a operação de
cópia.

Java

Example

O exemplo a seguir mostra como usar a API Java de baixo nível do Amazon S3 para realizar uma
cópia multipart. Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar
exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class LowLevelMultipartCopy {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String sourceBucketName = "*** Source bucket name ***";
String sourceObjectKey = "*** Source object key ***";
String destBucketName = "*** Target bucket name ***";
String destObjectKey = "*** Target object key ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)

Versão da API 2006-03-01


110
Amazon Simple Storage Service Guia do usuário
Copiar um objeto

.build();

// Initiate the multipart upload.


InitiateMultipartUploadRequest initRequest = new
InitiateMultipartUploadRequest(destBucketName, destObjectKey);
InitiateMultipartUploadResult initResult =
s3Client.initiateMultipartUpload(initRequest);

// Get the object size to track the end of the copy operation.
GetObjectMetadataRequest metadataRequest = new
GetObjectMetadataRequest(sourceBucketName, sourceObjectKey);
ObjectMetadata metadataResult =
s3Client.getObjectMetadata(metadataRequest);
long objectSize = metadataResult.getContentLength();

// Copy the object using 5 MB parts.


long partSize = 5 * 1024 * 1024;
long bytePosition = 0;
int partNum = 1;
List<CopyPartResult> copyResponses = new ArrayList<CopyPartResult>();
while (bytePosition < objectSize) {
// The last part might be smaller than partSize, so check to make sure
// that lastByte isn't beyond the end of the object.
long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

// Copy this part.


CopyPartRequest copyRequest = new CopyPartRequest()
.withSourceBucketName(sourceBucketName)
.withSourceKey(sourceObjectKey)
.withDestinationBucketName(destBucketName)
.withDestinationKey(destObjectKey)
.withUploadId(initResult.getUploadId())
.withFirstByte(bytePosition)
.withLastByte(lastByte)
.withPartNumber(partNum++);
copyResponses.add(s3Client.copyPart(copyRequest));
bytePosition += partSize;
}

// Complete the upload request to concatenate all uploaded parts and make
the copied object available.
CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest(
destBucketName,
destObjectKey,
initResult.getUploadId(),
getETags(copyResponses));
s3Client.completeMultipartUpload(completeRequest);
System.out.println("Multipart copy complete.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

// This is a helper function to construct a list of ETags.


private static List<PartETag> getETags(List<CopyPartResult> responses) {
List<PartETag> etags = new ArrayList<PartETag>();
for (CopyPartResult response : responses) {
etags.add(new PartETag(response.getPartNumber(), response.getETag()));
}

Versão da API 2006-03-01


111
Amazon Simple Storage Service Guia do usuário
Copiar um objeto

return etags;
}
}

.NET

O exemplo de C# a seguir mostra como usar o AWS SDK para .NET para copiar um objeto do
Amazon S3 com mais de 5 GB de um local de origem para outro, como de um bucket para outro. Para
copiar objetos menores que 5 GB, use um procedimento de cópia de operação única descrito em
Uso dos AWS SDKs (p. 117). Para obter mais informações sobre multipart uploads do Amazon S3,
consulte Carregar e copiar objetos usando multipart upload (p. 80).

Este exemplo mostra como copiar um objeto Amazon S3 com mais de 5 GB de um bucket do S3 para
outro usando a API de multipart upload do AWS SDK para .NET. Para obter informações sobre a
compatibilidade com o SDK e instruções para criar e testar um exemplo funcional, consulte Executar
os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class CopyObjectUsingMPUapiTest
{
private const string sourceBucket = "*** provide the name of the bucket with
source object ***";
private const string targetBucket = "*** provide the name of the bucket to copy
the object to ***";
private const string sourceObjectKey = "*** provide the name of object to copy
***";
private const string targetObjectKey = "*** provide the name of the object copy
***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
Console.WriteLine("Copying an object");
MPUCopyObjectAsync().Wait();
}
private static async Task MPUCopyObjectAsync()
{
// Create a list to store the upload part responses.
List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
List<CopyPartResponse> copyResponses = new List<CopyPartResponse>();

// Setup information required to initiate the multipart upload.


InitiateMultipartUploadRequest initiateRequest =
new InitiateMultipartUploadRequest
{
BucketName = targetBucket,
Key = targetObjectKey
};

// Initiate the upload.


InitiateMultipartUploadResponse initResponse =

Versão da API 2006-03-01


112
Amazon Simple Storage Service Guia do usuário
Copiar um objeto

await s3Client.InitiateMultipartUploadAsync(initiateRequest);

// Save the upload ID.


String uploadId = initResponse.UploadId;

try
{
// Get the size of the object.
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
{
BucketName = sourceBucket,
Key = sourceObjectKey
};

GetObjectMetadataResponse metadataResponse =
await s3Client.GetObjectMetadataAsync(metadataRequest);
long objectSize = metadataResponse.ContentLength; // Length in bytes.

// Copy the parts.


long partSize = 5 * (long)Math.Pow(2, 20); // Part size is 5 MB.

long bytePosition = 0;
for (int i = 1; bytePosition < objectSize; i++)
{
CopyPartRequest copyRequest = new CopyPartRequest
{
DestinationBucket = targetBucket,
DestinationKey = targetObjectKey,
SourceBucket = sourceBucket,
SourceKey = sourceObjectKey,
UploadId = uploadId,
FirstByte = bytePosition,
LastByte = bytePosition + partSize - 1 >= objectSize ?
objectSize - 1 : bytePosition + partSize - 1,
PartNumber = i
};

copyResponses.Add(await s3Client.CopyPartAsync(copyRequest));

bytePosition += partSize;
}

// Set up to complete the copy.


CompleteMultipartUploadRequest completeRequest =
new CompleteMultipartUploadRequest
{
BucketName = targetBucket,
Key = targetObjectKey,
UploadId = initResponse.UploadId
};
completeRequest.AddPartETags(copyResponses);

// Complete the copy.


CompleteMultipartUploadResponse completeUploadResponse =
await s3Client.CompleteMultipartUploadAsync(completeRequest);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}

Versão da API 2006-03-01


113
Amazon Simple Storage Service Guia do usuário
Limites do multipart upload

}
}
}

Uso dos REST API


As seções a seguir na Referência de APIs do Amazon Simple Storage Service descrevem a API
REST para multipart upload. Para copiar um objeto existente, use a API para upload de parte (cópia)
e especifique o objeto de origem adicionando o cabeçalho de solicitação x-amz-copy-source na
solicitação.

• Iniciar multipart upload


• Upload de parte
• Upload de parte (Copiar)
• Concluir multipart upload
• Anular multipart upload
• Listar partes
• Listar multipart uploads

Use essas APIs para fazer suas solicitações REST ou use um dos SDKs que fornecemos. Para obter
mais informações sobre como usar o multipart upload com a CLI da AWS, consulte Usar a CLI da
AWS (p. 99). Para obter mais informações sobre o recurso SDKs, consulte Suporte do SDK da AWS
para multipart upload (p. 83).

Limites do multipart upload do Amazon S3


A tabela a seguir fornece especificações básicas do multipart upload. Para obter mais informações,
consulte Carregar e copiar objetos usando multipart upload (p. 80).

Item Especificação

Tamanho máximo do objeto 5 TB

Número máximo de partes por upload 10.000

Números de parte 1 a 10.000 (inclusive)

Tamanho da parte 5 MB a 5 GB. Não há limite de tamanho na última parte do


multipart upload.

Número máximo de partes retornadas 1000


em uma solicitação de listagem de
partes

Número máximo de multipart uploads 1000


retornados em uma solicitação de
listagem de multipart uploads

Cópia de objetos
A operação de cópia cria uma cópia de um objeto que já está armazenado no Amazon S3.

Versão da API 2006-03-01


114
Amazon Simple Storage Service Guia do usuário
Cópia de objetos

Você pode criar uma cópia do seu objeto de até 5 GB em uma única operação atômica. Contudo, para
copiar um objeto maior que 5 GB, você deve usar a API de multipart upload.

Usando a operação copy você pode:

• Criar cópias adicionais de objetos


• Renomear objetos copiando-os e excluindo os originais
• Mover objetos entre locais do Amazon S3 (por exemplo, us-west-1 e Europa)
• Alterar metadados do objeto

Cada objeto do Amazon S3 tem metadados. É um conjunto de pares nome-valor. Você pode definir
metadados de objeto no momento em que fizer seu upload. Após fazer upload do objeto, você não pode
modificar seus metadados. A única forma de modificar metadados de objeto é fazer uma cópia do objeto
e definir os metadados. Na operação de cópia, você define o mesmo objeto como origem e destino.

Cada objeto tem metadados. Alguns deles são metadados de sistema e outros são definidos pelo usuário.
Usuários controlam alguns dos metadados de sistema, como a configuração de classe de armazenamento
para usar o objeto e configurar a criptografia do lado do servidor. Quando você copia um objeto, os
metadados de sistema controlados pelo usuário e os metadados definidos pelo usuário também são
copiados. O Amazon S3 redefine os metadados controlados pelo sistema. Por exemplo, quando você
copia um objeto, o Amazon S3 redefine a data de criação do objeto copiado. Você não precisa definir
nenhum desses valores na sua solicitação de cópia.

Ao copiar um objeto, você pode decidir atualizar alguns dos valores de metadados. Por exemplo, se
o objeto de origem é configurado para usar o armazenamento padrão, você pode escolher usar o
armazenamento com redundância reduzida para a cópia de objeto. Você também pode modificar os
valores de metadados definidos pelo usuário presentes no objeto de origem. Se optar por atualizar
metadados configuráveis do usuário do objeto (definidos pelo sistema ou pelo usuário) durante a cópia,
você deverá especificar explicitamente todos os metadados configuráveis pelo usuário presentes no objeto
de origem na solicitação, mesmo se estiver apenas alterando um dos valores de metadados.

Para obter mais informações sobre metadados de objeto, consulte Trabalhar com metadados de
objeto (p. 66).
Note

• Cópia de objetos por locais incorre em alterações de banda larga.


• Se o objeto de origem estiver arquivado em S3 Glacier ou em S3 Glacier Deep
Archive, será necessário primeiramente restaurar uma cópia temporária antes de copiar o
objeto para outro bucket. Para obter informações sobre objetos de arquivo, consulte Transição
para as classes de armazenamento S3 Glacier e S3 Glacier Deep Archive (arquivamento de
objetos) (p. 573).

Ao copiar objetos, é possível solicitar que o Amazon S3 salve o objeto de destino criptografado com
uma chave mestra de cliente (CMK) do AWS Key Management Service (AWS KMS), uma chave de
criptografia gerenciada pelo Amazon S3 ou uma chave de criptografia fornecida pelo cliente. Da mesma
forma, você deve especificar informações de criptografia na solicitação. Se a origem da cópia for um
objeto armazenado no Amazon S3 usando criptografia do lado do servidor com chave fornecida pelo
cliente, você precisará fornecer informações de criptografia na solicitação, de maneira que o Amazon S3
possa decodificar o objeto para a cópia. Para obter mais informações, consulte Proteção de dados usando
criptografia (p. 194).

Para copiar mais de um objeto do Amazon S3 com uma única solicitação, é possível usar operações em
lote do Amazon S3. Você fornece às operações em lote do S3 uma lista de objetos nos quais operar. O
S3 Batch Operations chama a respectiva API para executar a operação especificada. Um único trabalho

Versão da API 2006-03-01


115
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

de operações em lote pode realizar a operação especificada em bilhões de objetos contendo exabytes de
dados.

O recurso S3 Batch Operations rastreia o progresso, envia notificações e armazena um relatório de


conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável
e sem servidor. Você pode usar as operações em lote do S3 por meio do Console de Gerenciamento da
AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para obter mais informações, consulte the section
called “Noções básicas do Batch Ops” (p. 739).

Para copiar um objeto


Para copiar um objeto, use os exemplos abaixo.

Usar o console do S3
No console do S3, você pode copiar ou mover um objeto. Para obter mais informações, consulte os
procedimentos abaixo.

Para copiar um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Navegue até o bucket ou pasta do Amazon S3 que contém os objetos que você deseja copiar.
3. Marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja copiar.
4. Escolha Actions (Ações) e escolha Copy (Copiar) na lista de opções exibida.

Como alternativa, escolha Copy (Copiar) nas opções no canto superior direito.
5. Selecione o tipo de destino e a conta de destino. Para especificar o caminho de destino, escolha
Browse S3 (Procurar S3), navegue até o destino e marque a caixa de seleção à esquerda do destino.
Escolha Choose destination (Escolher destino) no canto inferior direito.

Outra alternativa é inserir o caminho de destino.


6. Se você não tiver o versionamento de bucket habilitado, pode ser solicitado que você confirme
que objetos existentes com o mesmo nome serão substituídos. Se estiver tudo certo, marque a
caixa de seleção e prossiga. Se você quiser manter todas as versões de objetos neste bucket,
selecione Enable Bucket Versioning (Ativar versionamento de bucket). Você também pode atualizar as
propriedades de criptografia padrão e de bloqueio de objetos.
7. Escolha Copy (Copiar) no canto inferior direito e o Amazon S3 moverá seus objetos para o destino.

Como mover objetos

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Navegue até o bucket ou pasta do Amazon S3 que contém os objetos que você deseja mover.
3. Marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja mover.
4. Escolha Actions (Ações) e escolha Move (Mover) na lista de opções exibida.

Como alternativa, escolha Move (Mover) nas opções no canto superior direito.
5. Para especificar o caminho de destino, escolha Browse S3 (Procurar S3), navegue até o destino e
marque a caixa de seleção à esquerda do destino. Escolha Choose destination (Escolher destino) no
canto inferior direito.

Versão da API 2006-03-01


116
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

Outra alternativa é inserir o caminho de destino.


6. Se você não tiver o versionamento de bucket habilitado, pode ser solicitado que você confirme
que objetos existentes com o mesmo nome serão substituídos. Se estiver tudo certo, marque a
caixa de seleção e prossiga. Se você quiser manter todas as versões de objetos neste bucket,
selecione Enable Bucket Versioning (Ativar versionamento de bucket). Você também pode atualizar as
propriedades de criptografia padrão e de bloqueio de objetos.
7. Escolha Move (Mover) no canto inferior direito e o Amazon S3 move seus objetos para o destino.

Note

• Essa ação cria uma cópia de todos os objetos especificados com configurações atualizadas,
atualiza a data da última modificação no local especificado e adiciona um marcador de exclusão
ao objeto original.
• Ao mover pastas, aguarde a conclusão da ação de movimentação antes de fazer alterações
adicionais nas pastas.
• Objetos criptografados com chaves de criptografia fornecidas pelo cliente (SSE-C) não podem
ser copiados usando o console do S3. Para copiar objetos criptografados com o SSE-C, use a
AWS CLI, o AWS SDK ou a API REST do Amazon S3.
• Essa ação atualiza metadados para versionamento de bucket, criptografia, recursos de bloqueio
de objetos e objetos arquivados.

Uso dos AWS SDKs


O exemplo nesta seção mostra como copiar objetos de até 5 GB em uma única operação. Para copiar
objetos maiores do que 5 GB, você deve usar a API de multipart upload. Para obter mais informações,
consulte Copiar um objeto usando multipart upload (p. 110).

Java

Example

O exemplo a seguir copia um objeto no Amazon S3 usando o AWS SDK para Java. Para obter
instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java no
Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;

import java.io.IOException;

public class CopyObjectSingleOperation {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String sourceKey = "*** Source object key *** ";
String destinationKey = "*** Destination object key ***";

try {

Versão da API 2006-03-01


117
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Copy the object into a new object in the same bucket.


CopyObjectRequest copyObjRequest = new CopyObjectRequest(bucketName,
sourceKey, bucketName, destinationKey);
s3Client.copyObject(copyObjRequest);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

O exemplo de C# a seguir usa o AWS SDK para .NET de alto nível para copiar objetos de até 5 GB
em uma única operação. Para objetos maiores do que 5 GB, use o exemplo de cópia do multipart
upload descrito em Copiar um objeto usando multipart upload (p. 110).

Esse exemplo faz a cópia de um objeto de até 5 GB. Para obter informações sobre a compatibilidade
do exemplo com uma versão específica do AWS SDK para .NET e instruções sobre como
criar e testar um exemplo funcional, consulte Executar os exemplos de código do Amazon
S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class CopyObjectTest
{
private const string sourceBucket = "*** provide the name of the bucket with
source object ***";
private const string destinationBucket = "*** provide the name of the bucket to
copy the object to ***";
private const string objectKey = "*** provide the name of object to copy ***";
private const string destObjectKey = "*** provide the destination object key
name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
Console.WriteLine("Copying an object");
CopyingObjectAsync().Wait();
}

private static async Task CopyingObjectAsync()


{

Versão da API 2006-03-01


118
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

try
{
CopyObjectRequest request = new CopyObjectRequest
{
SourceBucket = sourceBucket,
SourceKey = objectKey,
DestinationBucket = destinationBucket,
DestinationKey = destObjectKey
};
CopyObjectResponse response = await s3Client.CopyObjectAsync(request);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
}
}

PHP

Este tópico orienta como usar classes da versão 3 do AWS SDK para PHP para copiar um único
objeto e múltiplos objetos no Amazon S3 de um bucket para outro ou no mesmo bucket.

Este tópico pressupõe que você já esteja seguindo as instruções para Usar o AWS SDK para PHP e
executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

O exemplo de PHP a seguir ilustra o uso do método copyObject() para copiar um único objeto no
Amazon S3. Mostra também como um lote de chamadas para CopyObject, por meio do método
getcommand(), é usado para fazer várias cópias de um objeto.

Cópia de objetos

1 Crie uma instância de um cliente do Amazon S3 usando o construtor da classe Aws


\S3\S3Client.

2 Para fazer várias cópias de um objeto, execute um lote de chamadas para o


método getCommand() do cliente do Amazon S3, que é herdado da classe Aws
\CommandInterface. Você fornece o comando CopyObject como o primeiro argumento
e uma matriz contendo o bucket de origem, o nome de uma chave de origem, o bucket
de destino e o nome do destino como segundo argumento.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';


$sourceKeyname = '*** Your Source Object Key ***';
$targetBucket = '*** Your Target Bucket Name ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

Versão da API 2006-03-01


119
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

// Copy an object.
$s3->copyObject([
'Bucket' => $targetBucket,
'Key' => "{$sourceKeyname}-copy",
'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
]);

// Perform a batch of CopyObject operations.


$batch = array();
for ($i = 1; $i <= 3; $i++) {
$batch[] = $s3->getCommand('CopyObject', [
'Bucket' => $targetBucket,
'Key' => "{targetKeyname}-{$i}",
'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
]);
}
try {
$results = CommandPool::batch($s3, $batch);
foreach($results as $result) {
if ($result instanceof ResultInterface) {
// Result handling here
}
if ($result instanceof AwsException) {
// AwsException handling here
}
}
} catch (\Exception $e) {
// General error handling here
}

Ruby

As tarefas a seguir orientam como usar classes Ruby para copiar um objeto no Amazon S3 de um
bucket para outro ou no mesmo bucket.

Cópia de objetos

1 Use o gem modularizado do Amazon S3 para a versão 3 do AWS SDK para Ruby, exija
'aws-sdk-s3' e forneça suas credenciais da AWS. Para obter mais informações sobre
como fornecer suas credenciais, consulte Fazer solicitações usando credenciais de
usuário do IAM ou da conta da AWS (p. 999).

2 Forneça as informações da solicitação, como o nome do bucket de origem, o nome da


chave de origem, o nome do bucket de destino e a chave de destino.

O exemplo de código Ruby a seguir demonstra as tarefas precedentes usando o método


#copy_object para copiar um objeto de um bucket para outro.

require 'aws-sdk-s3'

# Copies an object from one Amazon S3 bucket to another.


#
# Prerequisites:
#
# - Two S3 buckets (a source bucket and a target bucket).
# - An object in the source bucket to be copied.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param source_bucket_name [String] The source bucket's name.
# @param source_key [String] The name of the object
# in the source bucket to be copied.

Versão da API 2006-03-01


120
Amazon Simple Storage Service Guia do usuário
Para copiar um objeto

# @param target_bucket_name [String] The target bucket's name.


# @param target_key [String] The name of the copied object.
# @return [Boolean] true if the object was copied; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless object_copied?(
# s3_client,
# 'doc-example-bucket1',
# 'my-source-file.txt',
# 'doc-example-bucket2',
# 'my-target-file.txt'
# )
def object_copied?(
s3_client,
source_bucket_name,
source_key,
target_bucket_name,
target_key)

return true if s3_client.copy_object(


bucket: target_bucket_name,
copy_source: source_bucket_name + '/' + source_key,
key: target_key
)
rescue StandardError => e
puts "Error while copying object: #{e.message}"
end

Copiar um objeto usando a API REST


Este exemplo descreve como copiar um objeto usando REST. Para obter mais informações sobre a API
REST, consulte PUT Object (Cópia).

Este exemplo copia o objeto flotsam do bucket pacific para o objeto jetsam do bucket atlantic,
preservando seus metadados.

PUT /jetsam HTTP/1.1


Host: atlantic.s3.amazonaws.com
x-amz-copy-source: /pacific/flotsam
Authorization: AWS AKIAIOSFODNN7EXAMPLE:ENoSbxYByFA0UGLZUqJN5EUnLDg=
Date: Wed, 20 Feb 2008 22:12:21 +0000

A assinatura foi gerada a partir das informações a seguir.

PUT\r\n
\r\n
\r\n
Wed, 20 Feb 2008 22:12:21 +0000\r\n

x-amz-copy-source:/pacific/flotsam\r\n
/atlantic/jetsam

O Amazon S3 retorna a resposta a seguir, que especifica a ETag do objeto e quando ele foi modificado
pela última vez.

HTTP/1.1 200 OK
x-amz-id-2: Vyaxt7qEbzv34BnSu5hctyyNSlHTYZFMWK4FtzO+iX8JQNyaLdTshL0KxatbaOZt
x-amz-request-id: 6B13C3C5B34AF333
Date: Wed, 20 Feb 2008 22:13:01 +0000

Versão da API 2006-03-01


121
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

Content-Type: application/xml
Transfer-Encoding: chunked
Connection: close
Server: AmazonS3
<?xml version="1.0" encoding="UTF-8"?>

<CopyObjectResult>
<LastModified>2008-02-20T22:13:01</LastModified>
<ETag>"7e9c608af58950deeb370c98608ed097"</ETag>
</CopyObjectResult>

Fazer download de um objeto


Esta seção explica como fazer download de objetos de um bucket do S3.

As taxas de transferência de dados se aplicam ao baixar objetos. Para obter informações sobre os
recursos e a definição de preço do Amazon S3, consulte Amazon S3.
Important

Se o nome da chave de um objeto consistir em um único ponto (.) ou em dois pontos (..), não
será possível fazer download do objeto usando o console do Amazon S3. Para fazer download
de um objeto com um nome de chave “.” ou “..”, é necessário usar a AWS CLI, os AWS SDKs ou
a API REST. Para obter mais informações sobre como nomear objetos, consulte Diretrizes de
nomeação de chave de objeto (p. 64).

É possível fazer download de um único objeto por solicitação usando o console do Amazon S3. Para fazer
download de vários objetos, use a CLI da AWS CLI, os SDKs da AWS ou a API REST.

Quando você faz download de um objeto programaticamente, seus metadados são retornados nos
cabeçalhos de resposta. Às vezes, você deseja substituir certos valores no cabeçalho da resposta
retornados em uma resposta do GET. Por exemplo, você pode substituir o valor Content-Disposition
no cabeçalho da resposta em sua solicitação GET. A API REST GET Object (consulte GET Object) permite
que você especifique parâmetros de query string na sua solicitação GET para substituir esses valores. Os
AWS SDKs para Java, .NET e PHP também fornecem os objetos necessários que você pode usar para
especificar valores para esses cabeçalhos na resposta à sua solicitação GET.

Ao recuperar objetos que são armazenados com criptografia usando criptografia do lado do servidor,
você precisará fornecer os cabeçalhos apropriados de solicitação. Para obter mais informações, consulte
Proteção de dados usando criptografia (p. 194).

Uso do console do S3
Esta seção explica como usar o console do Amazon S3 para fazer download de objetos de um bucket do
S3.

As taxas de transferência de dados se aplicam ao baixar objetos. Para obter informações sobre os
recursos e a definição de preço do Amazon S3, consulte Amazon S3.
Important

Se o nome da chave de um objeto consistir em um único ponto (.) ou em dois pontos (..), não
será possível fazer download do objeto usando o console do Amazon S3. Para fazer download
de um objeto com um nome de chave “.” ou “..”, é necessário usar a AWS CLI, os AWS SDKs ou
a API REST. Para obter mais informações sobre como nomear objetos, consulte Diretrizes de
nomeação de chave de objeto (p. 64).

Versão da API 2006-03-01


122
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

Fazer download de um objeto de um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket do qual você deseja fazer download de um objeto.

3. Você pode fazer download de um objeto de um bucket do S3 de qualquer uma das formas a seguir:

• Selecione o nome do objeto cujo download você deseja fazer.

Na página Overview (Visão geral) selecione Download (Fazer download).


• Selecione o objeto de que deseja fazer download e, depois, selecione Download ou Download as
(Fazer download como) no menu Action (Ação).
• Selecione o nome do objeto cujo download você deseja fazer. Selecione Latest version (Versão
mais recente) e, depois, selecione o ícone de download.

Uso dos AWS SDKs


Java

Ao fazer download de um objeto com o AWS SDK para Java, o Amazon S3 retorna todos os
metadados do objeto e um fluxo de entrada de onde ler os conteúdos do objeto.

Para recuperar um objeto, faça o seguinte:

• Execute o método AmazonS3Client.getObject(), fornecendo o nome do bucket e a chave de


objeto na solicitação.
• Execute um dos métodos de instância S3Object para processar o fluxo de entrada.

Note

A conexão de rede permanece aberta até que você leia todos os dados ou feche o fluxo de
entrada. Recomendamos que você leia o conteúdo de fluxo o mais rápido possível.

Veja a seguir algumas variações que você pode usar:

• Em vez de ler o objeto inteiro, você pode ler apenas uma parte dos dados do objeto especificando o
intervalo de bytes que você deseja na solicitação.
• Opcionalmente, é possível substituir os valores do cabeçalho de resposta usando um objeto
ResponseHeaderOverrides e definindo a propriedade de solicitação correspondente. Por
exemplo, você pode usar esse recurso para indicar que o objeto deve ser baixado em um arquivo
com um nome de arquivo diferente do nome da chave do objeto.

O exemplo a seguir recupera o objeto de um bucket do Amazon S3 de três maneiras: primeiro, como
um objeto completo, depois, como uma faixa de bytes do objeto e, por fim, como um objeto completo
com os valores do cabeçalho da resposta substituídos. Para obter mais informações sobre como obter
objetos do Amazon S3, consulte GET Object. Para obter instruções sobre criar e testar um exemplo
funcional, consulte Testar exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;

Versão da API 2006-03-01


123
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3Object;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class GetObject2 {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String key = "*** Object key ***";

S3Object fullObject = null, objectPortion = null, headerOverrideObject = null;


try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();

// Get an object and print its contents.


System.out.println("Downloading an object");
fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
System.out.println("Content-Type: " +
fullObject.getObjectMetadata().getContentType());
System.out.println("Content: ");
displayTextInputStream(fullObject.getObjectContent());

// Get a range of bytes from an object and print the bytes.


GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key)
.withRange(0, 9);
objectPortion = s3Client.getObject(rangeObjectRequest);
System.out.println("Printing bytes retrieved.");
displayTextInputStream(objectPortion.getObjectContent());

// Get an entire object, overriding the specified response headers, and


print the object's content.
ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides()
.withCacheControl("No-cache")
.withContentDisposition("attachment; filename=example.txt");
GetObjectRequest getObjectRequestHeaderOverride = new
GetObjectRequest(bucketName, key)
.withResponseHeaders(headerOverrides);
headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride);
displayTextInputStream(headerOverrideObject.getObjectContent());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
} finally {
// To ensure that the network connection doesn't remain open, close any
open input streams.
if (fullObject != null) {
fullObject.close();
}
if (objectPortion != null) {

Versão da API 2006-03-01


124
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

objectPortion.close();
}
if (headerOverrideObject != null) {
headerOverrideObject.close();
}
}
}

private static void displayTextInputStream(InputStream input) throws IOException {


// Read the text input stream one line at a time and display each line.
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println();
}
}

.NET

Ao fazer download de um objeto, você obtém todos os metadados do objeto e um fluxo do qual você
lê o conteúdo. É necessário ler o conteúdo do fluxo o mais rápido possível porque os dados são
transmitidos diretamente do Amazon S3 e sua conexão de rede permanecerá aberta até que você leia
todos os dados ou feche o fluxo de entrada. Para obter um objeto, faça o seguinte:

• Execute o método getObject, fornecendo o nome do bucket e a chave de objeto na solicitação.


• Execute um dos métodos GetObjectResponse para processar o fluxo.

Veja a seguir algumas variações que você pode usar:

• Em vez de ler o objeto inteiro, você pode ler apenas a parte dos dados do objeto especificando o
intervalo de bytes na solicitação, conforme exibido no seguinte exemplo do C#:

Example

GetObjectRequest request = new GetObjectRequest


{
BucketName = bucketName,
Key = keyName,
ByteRange = new ByteRange(0, 10)
};

• Ao recuperar um objeto, você pode substituir os valores do cabeçalho da resposta (consulte Fazer
download de um objeto (p. 122)) usando o objeto ResponseHeaderOverrides e configurando
a propriedade da solicitação correspondente. O exemplo de código C# a seguir mostra como fazer
isso. Por exemplo, você pode usar esse recurso para indicar que o objeto deve ser baixado em um
arquivo com um nome de arquivo diferente do nome da chave do objeto.

Example

GetObjectRequest request = new GetObjectRequest


{
BucketName = bucketName,
Key = keyName
};

ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides();


responseHeaders.CacheControl = "No-cache";

Versão da API 2006-03-01


125
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

responseHeaders.ContentDisposition = "attachment; filename=testing.txt";

request.ResponseHeaderOverrides = responseHeaders;

Example
O exemplo de código C# a seguir recupera um objeto de um bucket do Amazon
S3. A partir da resposta, o exemplo lê os dados do objeto usando a propriedade
GetObjectResponse.ResponseStream. O exemplo também mostra como você pode usar a
coleção GetObjectResponse.Metadata para ler os metadados do objeto. Se o objeto que você
recupera têm os metadados x-amz-meta-title, o código imprime o valor dos metadados.

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class GetObjectTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** object key ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
ReadObjectDataAsync().Wait();
}

static async Task ReadObjectDataAsync()


{
string responseBody = "";
try
{
GetObjectRequest request = new GetObjectRequest
{
BucketName = bucketName,
Key = keyName
};
using (GetObjectResponse response = await
client.GetObjectAsync(request))
using (Stream responseStream = response.ResponseStream)
using (StreamReader reader = new StreamReader(responseStream))
{
string title = response.Metadata["x-amz-meta-title"]; // Assume you
have "title" as medata added to the object.
string contentType = response.Headers["Content-Type"];
Console.WriteLine("Object metadata, Title: {0}", title);
Console.WriteLine("Content type: {0}", contentType);

responseBody = reader.ReadToEnd(); // Now you process the response


body.
}

Versão da API 2006-03-01


126
Amazon Simple Storage Service Guia do usuário
Fazer download de um objeto

}
catch (AmazonS3Exception e)
{
// If bucket or object does not exist
Console.WriteLine("Error encountered ***. Message:'{0}' when reading
object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
reading object", e.Message);
}
}
}
}

PHP

Este tópico explica como usar uma classe do AWS SDK para PHP para recuperar um objeto do
Amazon S3. Você pode recuperar um objeto inteiro ou um intervalo de bytes do objeto. Presumimos
que você já esteja seguindo as instruções para Usar o AWS SDK para PHP e executar exemplos do
PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Ao recuperar um objeto, você pode substituir os valores do cabeçalho da resposta adicionando


as chaves da resposta, ResponseContentType, ResponseContentLanguage,
ResponseContentDisposition, ResponseCacheControl, e ResponseExpires, ao
getObject() método, conforme exibido no seguinte exemplo de código PHP:

Example

$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname,
'ResponseContentType' => 'text/plain',
'ResponseContentLanguage' => 'en-US',
'ResponseContentDisposition' => 'attachment; filename=testing.txt',
'ResponseCacheControl' => 'No-cache',
'ResponseExpires' => gmdate(DATE_RFC2822, time() + 3600),
]);

Para obter mais informações sobre recuperação de objetos, consulte Fazer download de um
objeto (p. 122).

O exemplo de PHP a seguir recupera um objeto e exibe o conteúdo do objeto no navegador. O


exemplo mostra como usar o método getObject(). Para obter informações sobre a execução dos
exemplos de PHP neste guia, consulte Executar exemplos do PHP (p. 1045).

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

Versão da API 2006-03-01


127
Amazon Simple Storage Service Guia do usuário
Excluir objetos

try {
// Get the object.
$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname
]);

// Display the object in the browser.


header("Content-Type: {$result['ContentType']}");
echo $result['Body'];
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

Uso dos REST API


Você pode usar o AWS SDK para recuperar chaves de objeto de um bucket. Contudo, se o seu aplicativo
exigir, você pode enviar solicitações REST diretamente. Você pode enviar uma solicitação GET para
recuperar chaves de objeto.

Para obter mais informações sobre o formato de solicitação e de resposta, consulte Objeto GET.

Usar a CLI da AWS


O exemplo abaixo mostra como você pode usar a AWS CLI para baixar um objeto do Amazon S3. Para
obter mais informações e exemplos, consulte get-object na Referência de comando da AWS CLI.

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET1 --key dir/my_images.tar.bz2


my_images.tar.bz2

Excluir objetos do Amazon S3


Você pode excluir um ou mais objetos diretamente do Amazon S3 usando o console do Amazon S3,
os AWS SDKs, a Interface de linha de comando da AWS (CLI da AWS) ou a API REST. Como todos
os objetos em seu bucket do S3 incorrem em custos de armazenamento, você deve excluir os objetos
de que não precisa mais. Se estiver coletando arquivos de log, por exemplo, é uma boa ideia excluí-
los quando não forem mais necessários. Você pode definir uma regra de ciclo de vida para excluir
automaticamente objetos como arquivos de log. Para obter mais informações, consulte the section called
“Definir a configuração do ciclo de vida” (p. 575).

Para obter informações sobre os recursos e a definição de preço do Amazon S3, consulte a definição de
preço do Amazon S3.

Você tem as seguintes opções da API para excluir um objeto:

• Excluir um único objeto: o Amazon S3 fornece a API DELETE que pode ser usada para excluir um objeto
em uma única solicitação HTTP.
• Excluir vários objetos: o Amazon S3 fornece a API para exclusão de vários objetos que pode ser usada
para excluir até 1.000 objetos em uma única solicitação HTTP.

Ao excluir objetos de um bucket que não esteja habilitado para versionamento, você fornece apenas o
nome da chave de objeto. No entanto, ao excluir objetos de um bucket habilitado para versionamento, você
tem a opção de fornecer o ID da versão do objeto para excluir uma versão específica dele.

Versão da API 2006-03-01


128
Amazon Simple Storage Service Guia do usuário
Excluir objetos de um bucket habilitado para
versionamento de maneira programática

Excluir objetos de um bucket habilitado para


versionamento de maneira programática
Se seu bucket for habilitado para versão, várias versões do mesmo objeto poderão existir no bucket. Ao
trabalhar com buckets habilitados para versão a API de exclusão permite as seguintes opções:

• Especificar uma solicitação de exclusão não versionada: especifique somente a chave do objeto, e não
o ID de versão. Nesse caso, o Amazon S3 cria um marcador de exclusão e retorna o ID de versão na
resposta. Isso faz com que o objeto desapareça do bucket. Para obter informações sobre versionamento
de objetos e sobre o conceito de marcador de exclusão, consulte Usando o controle de versão em
buckets do S3 (p. 516).
• Especificar uma solicitação de exclusão versionada: especifique a chave e um ID de versão. Nesse
caso, os dois resultados a seguir são possíveis:
• Se o ID de versão for mapeado para uma versão de objeto específica, o Amazon S3 excluirá versão
específica do objeto.
• Se o ID de versão for mapeado para o marcador de exclusão do objeto em questão, o Amazon S3
excluirá o marcador de exclusão. Isso faz com que o objeto reapareça no bucket.

Excluir objetos de um bucket com MFA habilitada


Ao excluir objetos de um bucket habilitado para autenticação multifator (MFA, Multi-Factor Authentication),
observe:

• Se você fornecer um token de MFA inválido, a solicitação falhará sempre.


• Se tiver um bucket habilitado para MFA e fizer uma solicitação de exclusão em versões (fornecendo uma
chave de objeto e um ID de versão), a solicitação falhará se você não fornecer um token de MFA válido.
Além disso, ao usar a API de exclusão de vários objetos em um bucket habilitado para MFA, se alguma
exclusão for uma solicitação de exclusão versionada (se você especificar a chave de objeto e o ID de
versão), a solicitação inteira falhará se o token de MFA não for fornecido.

No entanto, nos seguintes casos, a solicitação é bem-sucedida:

• Se você tiver um bucket habilitado para MFA, fizer uma solicitação de exclusão não versionada (sem
excluir um objeto versionado) e não fornecer um token de MFA, a exclusão será concluída.
• Se você tiver uma solicitação de exclusão de vários objetos especificando somente objetos não
versionados a serem excluídos de um bucket habilitado para MFA e não fornecer um token de MFA, as
exclusões serão feitas com êxito.

Para obter informações sobre a exclusão de MFA, consulte Configurando a exclusão de MFA (p. 524).

Tópicos
• Excluir um único objeto (p. 129)
• Excluir vários objetos (p. 136)

Excluir um único objeto


Você pode usar o console do Amazon S3 ou a API DELETE para excluir um único objeto existente de um
bucket do S3.

Como todos os objetos em seu bucket do S3 incorrem em custos de armazenamento, você deve excluir
os objetos de que não precisa mais. Por exemplo, se estiver coletando arquivos de log, é uma boa ideia

Versão da API 2006-03-01


129
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

excluí-los quando não forem mais necessários. Você pode definir uma regra de ciclo de vida para excluir
automaticamente objetos como arquivos de log. Para obter mais informações, consulte the section called
“Definir a configuração do ciclo de vida” (p. 575).

Para obter informações sobre os recursos e a definição de preço do Amazon S3, consulte a definição de
preço do Amazon S3.

Uso do console do S3
Siga as etapas a seguir para usar o console do Amazon S3 a fim de excluir um único objeto de um bucket.

Para excluir um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Bucket name (Nome do bucket), escolha o nome do bucket do qual você deseja excluir um
objeto.
3. Escolha o nome do objeto que você deseja excluir.
4. Para excluir a versão atual do objeto, escolha Latest version (Versão mais recente) e escolha o ícone
da lixeira.
5. Para excluir uma versão anterior do objeto, escolha Latest version (Versão mais recente) e escolha o
ícone da lixeira ao lado da versão que você deseja excluir.

Uso dos AWS SDKs


Os exemplos a seguir mostram como você pode usar os AWS SDKs para excluir um objeto de um bucket.
Para obter mais informações, acesse DELETE Object na Referência de APIs do Amazon Simple Storage
Service.

Se tiver habilitado o versionamento do S3 no bucket, você terá as seguintes opções:

• Excluir uma versão específica do objeto ao especificar um ID de versão.


• Excluir um objeto sem especificar um ID de versão, caso em que o Amazon S3 adicionará um marcador
de exclusão para o objeto.

Para obter mais informações sobre versionamento do S3, consulte Usando o controle de versão em
buckets do S3 (p. 516).

Java

Example Exemplo 1: Excluir um objeto (bucket sem versionamento)

O exemplo a seguir pressupõe que o bucket não esteja habilitado para versionamento e o objeto não
tenha IDs de versão. Na solicitação de exclusão, especifique somente a chave do objeto e não um ID
de versão.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;

Versão da API 2006-03-01


130
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectRequest;

import java.io.IOException;

public class DeleteObjectNonVersionedBucket {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ****";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName));


} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Example Exemplo 2: excluir um objeto (bucket com versionamento)

O exemplo a seguir exclui um objeto de um bucket com versionamento. O exemplo exclui uma versão
específica do objeto ao especificar o nome da chave e o ID de versão do objeto.

O exemplo faz o seguinte:

1. Adiciona um objeto de exemplo ao bucket. O Amazon S3 retorna o ID de versão do objeto recém-


adicionado. O exemplo usa esse ID de versão na solicitação de exclusão.
2. Exclui a versão do objeto ao especificar o nome da chave e um ID de versão do objeto. Se não
houver nenhuma outra versão do objeto, o Amazon S3 excluirá o objeto totalmente. Caso contrário,
o Amazon S3 excluirá somente a versão especificada.
Note

Você pode obter os IDs de versão de um objeto enviando uma solicitação ListVersions.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.DeleteVersionRequest;
import com.amazonaws.services.s3.model.PutObjectResult;

import java.io.IOException;

Versão da API 2006-03-01


131
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

public class DeleteObjectVersionEnabledBucket {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ****";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Check to ensure that the bucket is versioning-enabled.


String bucketVersionStatus =
s3Client.getBucketVersioningConfiguration(bucketName).getStatus();
if (!bucketVersionStatus.equals(BucketVersioningConfiguration.ENABLED)) {
System.out.printf("Bucket %s is not versioning-enabled.", bucketName);
} else {
// Add an object.
PutObjectResult putResult = s3Client.putObject(bucketName, keyName,
"Sample content for deletion example.");
System.out.printf("Object %s added to bucket %s\n", keyName,
bucketName);

// Delete the version of the object that we just created.


System.out.println("Deleting versioned object " + keyName);
s3Client.deleteVersion(new DeleteVersionRequest(bucketName, keyName,
putResult.getVersionId()));
System.out.printf("Object %s, version %s deleted\n", keyName,
putResult.getVersionId());
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Os exemplos a seguir mostram como excluir um objeto de buckets com e sem versionamento. Para
obter mais informações sobre versionamento do S3, consulte Usando o controle de versão em buckets
do S3 (p. 516).

Example Excluir um objeto de um bucket sem versionamento

O exemplo do C# a seguir exclui um objeto de um bucket sem versionamento. O exemplo pressupõe


que os objetos não têm IDs de versão, portanto, você não especifica IDs de versão. Especifique
somente a chave do objeto.

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;

Versão da API 2006-03-01


132
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class DeleteObjectNonVersionedBucketTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** object key ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
DeleteObjectNonVersionedBucketAsync().Wait();
}
private static async Task DeleteObjectNonVersionedBucketAsync()
{
try
{
var deleteObjectRequest = new DeleteObjectRequest
{
BucketName = bucketName,
Key = keyName
};

Console.WriteLine("Deleting an object");
await client.DeleteObjectAsync(deleteObjectRequest);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
deleting an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
deleting an object", e.Message);
}
}
}
}

Example Excluir um objeto de um bucket com versionamento

O exemplo do C# a seguir exclui um objeto de um bucket com versionamento. Ele exclui uma versão
específica do objeto ao especificar o nome da chave e o ID de versão do objeto.

O código realiza as seguintes tarefas:

1. Permite o versionamento do S3 no bucket que você especificar (se o versionamento do S3 já


estiver habilitado, isso não terá efeito).
2. Adiciona um objeto de exemplo ao bucket. Em resposta, o Amazon S3 retorna o ID de versão do
objeto recém-adicionado. O exemplo usa esse ID de versão na solicitação de exclusão.
3. Exclui o objeto de exemplo ao especificar o nome da chave e um ID de versão do objeto.
Note

Você também pode obter o ID de versão de um objeto enviando uma solicitação


ListVersions.

Versão da API 2006-03-01


133
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

var listResponse = client.ListVersions(new ListVersionsRequest { BucketName =


bucketName, Prefix = keyName });

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class DeleteObjectVersion
{
private const string bucketName = "*** versioning-enabled bucket name ***";
private const string keyName = "*** Object Key Name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
CreateAndDeleteObjectVersionAsync().Wait();
}

private static async Task CreateAndDeleteObjectVersionAsync()


{
try
{
// Add a sample object.
string versionID = await PutAnObject(keyName);

// Delete the object by specifying an object key and a version ID.


DeleteObjectRequest request = new DeleteObjectRequest
{
BucketName = bucketName,
Key = keyName,
VersionId = versionID
};
Console.WriteLine("Deleting an object");
await client.DeleteObjectAsync(request);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
deleting an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
deleting an object", e.Message);
}
}

static async Task<string> PutAnObject(string objectKey)


{
PutObjectRequest request = new PutObjectRequest
{
BucketName = bucketName,

Versão da API 2006-03-01


134
Amazon Simple Storage Service Guia do usuário
Excluir um único objeto

Key = objectKey,
ContentBody = "This is the content body!"
};
PutObjectResponse response = await client.PutObjectAsync(request);
return response.VersionId;
}
}
}

PHP

Este exemplo mostra como usar classes da versão 3 do AWS SDK para PHP para excluir um objeto
de um bucket sem versionamento. Para obter informações sobre como excluir um objeto de um bucket
com versões, consulte Uso dos REST API (p. 136).

Este exemplo pressupõe que você já esteja seguindo as instruções para Usar o AWS SDK para PHP
e executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado. Para
obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar exemplos
do PHP (p. 1045).

O exemplo de PHP a seguir exclui um objeto de um bucket. Como esse exemplo mostra como excluir
objetos de bucket sem versionamento, ele oferece apenas o nome do bucket e a chave do objeto (não
um ID de versão) na solicitação de exclusão.

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// 1. Delete the object from the bucket.


try
{
echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL;

$result = $s3->deleteObject([
'Bucket' => $bucket,
'Key' => $keyname
]);

if ($result['DeleteMarker'])
{
echo $keyname . ' was deleted or does not exist.' . PHP_EOL;
} else {
exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL);
}
}
catch (S3Exception $e) {
exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL);
}

// 2. Check to see if the object was deleted.


try
{

Versão da API 2006-03-01


135
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL;

$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname
]);

echo 'Error: ' . $keyname . ' still exists.';


}
catch (S3Exception $e) {
exit($e->getAwsErrorMessage());
}

Usar a CLI da AWS

Para excluir um objeto por solicitação, use a API DELETE. Para obter mais informações, consulte DELETE
Object. Para obter mais informações sobre como usar a CLI para excluir um objeto, consulte delete-object.

Uso dos REST API


Você pode usar os SDKs da AWS para excluir um objeto. Contudo, se o seu aplicativo exigir, você
pode enviar solicitações REST diretamente. Para obter mais informações, consulte DELETE Object na
Referência de APIs do Amazon Simple Storage Service.

Excluir vários objetos


Como todos os objetos em seu bucket do S3 incorrem em custos de armazenamento, você deve excluir
os objetos de que não precisa mais. Por exemplo, se estiver coletando arquivos de log, é uma boa ideia
excluí-los quando não forem mais necessários. Você pode definir uma regra de ciclo de vida para excluir
automaticamente objetos como arquivos de log. Para obter mais informações, consulte the section called
“Definir a configuração do ciclo de vida” (p. 575).

Para obter informações sobre os recursos e a definição de preço do Amazon S3, consulte a definição de
preço do Amazon S3.

Você pode usar o console do Amazon S3 ou a API Multi-Object Delete para excluir vários objetos
simultaneamente de um bucket do S3.

Uso do console do S3
Siga etapas a seguir para usar o console do Amazon S3 a fim de excluir vários objetos de um bucket.

Para excluir objetos

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Navegue até o bucket ou pasta do Amazon S3 que contém os objetos que você deseja excluir.
3. Marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja excluir.
4. Escolha Actions (Ações) e escolha Delete (Excluir) na lista de opções exibida.

Como alternativa, escolha Delete (Excluir) nas opções no canto superior direito.
5. Digite delete se solicitado para confirmar que você deseja excluir esses objetos.
6. Escolha Delete objects (Excluir objetos) no canto inferior direito e o Amazon S3 excluirá os objetos
especificados.

Versão da API 2006-03-01


136
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

Warning

• A exclusão dos objetos especificados não poderá ser desfeita.


• Essa ação exclui todos os objetos especificados. Ao excluir pastas, aguarde a conclusão da
ação de exclusão antes de adicionar objetos novos à pasta. Caso contrário, os objetos novos
também podem ser excluídos.
• A exclusão dos objetos especificados não poderá ser desfeita.

Uso dos AWS SDKs


O Amazon S3 fornece a API Multi-Object Delete, que você pode usar para excluir vários objetos em uma
única solicitação. A API oferece suporte a dois modos para a resposta: detalhado e silencioso. Por padrão,
a operação usa o modo detalhado. No modo detalhado, a resposta inclui o resultado da exclusão de cada
chave especificada na sua solicitação. No modo silencioso, a resposta inclui apenas as chaves para as
quais a operação de exclusão encontrou um erro. Se todas as chaves forem excluídas com êxito ao usar
o modo silencioso, o Amazon S3 retornará uma resposta vazia. Para obter mais informações, consulte
Delete - Multi-Object Delete.

Para saber mais sobre exclusão de objetos, consulte Excluir objetos do Amazon S3 (p. 128).

Java

O AWS SDK para Java fornece o método AmazonS3Client.deleteObjects() para a exclusão de


vários objetos. Para cada objeto que você deseja excluir, especifique o nome da chave. Se o bucket
estiver habilitado para o versionamento, você tem as seguintes opções:

• Especifique somente o nome da chave do objeto. O Amazon S3 adiciona um marcador de exclusão


ao objeto.
• Especifique o nome da chave do objeto e o ID de versão a serem excluídos. O Amazon S3 exclui a
versão especificada do objeto.

Example

O exemplo a seguir usa a API de Exclusão de vários objetos para excluir objetos de um bucket
sem versionamento. O exemplo faz upload de objetos de exemplo no bucket e, em seguida, usa o
método AmazonS3Client.deleteObjects() para excluir os objetos em uma única solicitação. Na
DeleteObjectsRequest, o exemplo especifica apenas os nomes de chaves de objeto porque os
objetos não têm IDs de versão.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
import com.amazonaws.services.s3.model.DeleteObjectsResult;

import java.io.IOException;
import java.util.ArrayList;

public class DeleteMultipleObjectsNonVersionedBucket {

public static void main(String[] args) throws IOException {

Versão da API 2006-03-01


137
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

Regions clientRegion = Regions.DEFAULT_REGION;


String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.build();

// Upload three sample objects.


ArrayList<KeyVersion> keys = new ArrayList<KeyVersion>();
for (int i = 0; i < 3; i++) {
String keyName = "delete object example " + i;
s3Client.putObject(bucketName, keyName, "Object number " + i + " to be
deleted.");
keys.add(new KeyVersion(keyName));
}
System.out.println(keys.size() + " objects successfully created.");

// Delete the sample objects.


DeleteObjectsRequest multiObjectDeleteRequest = new
DeleteObjectsRequest(bucketName)
.withKeys(keys)
.withQuiet(false);

// Verify that the objects were deleted successfully.


DeleteObjectsResult delObjRes =
s3Client.deleteObjects(multiObjectDeleteRequest);
int successfulDeletes = delObjRes.getDeletedObjects().size();
System.out.println(successfulDeletes + " objects successfully deleted.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Example

O exemplo a seguir usa a API de Exclusão de vários objetos para excluir objetos de um bucket com
versionamento. Ela faz o seguinte:

1. Cria objetos de exemplo e em seguida os exclui, especificando o nome da chave e o ID de versão


para cada objeto a excluir. A operação exclui somente as versões especificadas do objeto.
2. Cria objetos de exemplo e os exclui especificando somente os nomes de chave. Como o exemplo
não especifica os IDs de versão, a operação adiciona um marcador de exclusão para cada objeto,
sem excluir nenhuma versão específica do objeto. Depois que os marcadores de exclusão forem
adicionados, esses objetos não serão exibidos no Console de Gerenciamento da AWS.
3. Remove os marcadores de exclusão especificando as chaves de objeto e os IDs de versão
dos marcadores de exclusão. A operação exclui os marcadores de exclusão, o que resulta no
reaparecimento de objetos no Console de Gerenciamento da AWS.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;

Versão da API 2006-03-01


138
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
import com.amazonaws.services.s3.model.DeleteObjectsResult;
import com.amazonaws.services.s3.model.DeleteObjectsResult.DeletedObject;
import com.amazonaws.services.s3.model.PutObjectResult;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class DeleteMultipleObjectsVersionEnabledBucket {


private static AmazonS3 S3_CLIENT;
private static String VERSIONED_BUCKET_NAME;

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
VERSIONED_BUCKET_NAME = "*** Bucket name ***";

try {
S3_CLIENT = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Check to make sure that the bucket is versioning-enabled.


String bucketVersionStatus =
S3_CLIENT.getBucketVersioningConfiguration(VERSIONED_BUCKET_NAME).getStatus();
if (!bucketVersionStatus.equals(BucketVersioningConfiguration.ENABLED)) {
System.out.printf("Bucket %s is not versioning-enabled.",
VERSIONED_BUCKET_NAME);
} else {
// Upload and delete sample objects, using specific object versions.
uploadAndDeleteObjectsWithVersions();

// Upload and delete sample objects without specifying version IDs.


// Amazon S3 creates a delete marker for each object rather than
deleting
// specific versions.
DeleteObjectsResult unversionedDeleteResult =
uploadAndDeleteObjectsWithoutVersions();

// Remove the delete markers placed on objects in the non-versioned


create/delete method.
multiObjectVersionedDeleteRemoveDeleteMarkers(unversionedDeleteResult);
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

private static void uploadAndDeleteObjectsWithVersions() {


System.out.println("Uploading and deleting objects with versions specified.");

// Upload three sample objects.


ArrayList<KeyVersion> keys = new ArrayList<KeyVersion>();
for (int i = 0; i < 3; i++) {

Versão da API 2006-03-01


139
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

String keyName = "delete object without version ID example " + i;


PutObjectResult putResult = S3_CLIENT.putObject(VERSIONED_BUCKET_NAME,
keyName,
"Object number " + i + " to be deleted.");
// Gather the new object keys with version IDs.
keys.add(new KeyVersion(keyName, putResult.getVersionId()));
}

// Delete the specified versions of the sample objects.


DeleteObjectsRequest multiObjectDeleteRequest = new
DeleteObjectsRequest(VERSIONED_BUCKET_NAME)
.withKeys(keys)
.withQuiet(false);

// Verify that the object versions were successfully deleted.


DeleteObjectsResult delObjRes =
S3_CLIENT.deleteObjects(multiObjectDeleteRequest);
int successfulDeletes = delObjRes.getDeletedObjects().size();
System.out.println(successfulDeletes + " objects successfully deleted");
}

private static DeleteObjectsResult uploadAndDeleteObjectsWithoutVersions() {


System.out.println("Uploading and deleting objects with no versions
specified.");

// Upload three sample objects.


ArrayList<KeyVersion> keys = new ArrayList<KeyVersion>();
for (int i = 0; i < 3; i++) {
String keyName = "delete object with version ID example " + i;
S3_CLIENT.putObject(VERSIONED_BUCKET_NAME, keyName, "Object number " + i +
" to be deleted.");
// Gather the new object keys without version IDs.
keys.add(new KeyVersion(keyName));
}

// Delete the sample objects without specifying versions.


DeleteObjectsRequest multiObjectDeleteRequest = new
DeleteObjectsRequest(VERSIONED_BUCKET_NAME).withKeys(keys)
.withQuiet(false);

// Verify that delete markers were successfully added to the objects.


DeleteObjectsResult delObjRes =
S3_CLIENT.deleteObjects(multiObjectDeleteRequest);
int successfulDeletes = delObjRes.getDeletedObjects().size();
System.out.println(successfulDeletes + " objects successfully marked for
deletion without versions.");
return delObjRes;
}

private static void


multiObjectVersionedDeleteRemoveDeleteMarkers(DeleteObjectsResult response) {
List<KeyVersion> keyList = new ArrayList<KeyVersion>();
for (DeletedObject deletedObject : response.getDeletedObjects()) {
// Note that the specified version ID is the version ID for the delete
marker.
keyList.add(new KeyVersion(deletedObject.getKey(),
deletedObject.getDeleteMarkerVersionId()));
}
// Create a request to delete the delete markers.
DeleteObjectsRequest deleteRequest = new
DeleteObjectsRequest(VERSIONED_BUCKET_NAME).withKeys(keyList);

// Delete the delete markers, leaving the objects intact in the bucket.
DeleteObjectsResult delObjRes = S3_CLIENT.deleteObjects(deleteRequest);
int successfulDeletes = delObjRes.getDeletedObjects().size();
System.out.println(successfulDeletes + " delete markers successfully deleted");

Versão da API 2006-03-01


140
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

}
}

.NET

O AWS SDK para .NET fornece um método conveniente para excluir vários objetos: DeleteObjects.
Para cada objeto que você deseja excluir, especifique o nome da chave e a versão do objeto. Se o
bucket não for habilitado para versionamento, você especifica null para o ID de versão. Se uma
exceção ocorrer, reveja a resposta DeleteObjectsException para determinar quais objetos não
foram excluídos e por quê.

Example Excluir vários objetos de um bucket sem versionamento

O exemplo do C# a seguir usa a API de Exclusão de vários objetos para excluir objetos de um
bucket sem versionamento. O exemplo faz upload dos objetos de exemplo no bucket e, em
seguida, usa o método DeleteObjects para excluir os objetos em uma única solicitação. Na
DeleteObjectsRequest, o exemplo especifica apenas os nomes das chaves dos objetos porque os
IDs das versões são nulos.

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class DeleteMultipleObjectsNonVersionedBucketTest
{
private const string bucketName = "*** versioning-enabled bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
MultiObjectDeleteAsync().Wait();
}

static async Task MultiObjectDeleteAsync()


{
// Create sample objects (for subsequent deletion).
var keysAndVersions = await PutObjectsAsync(3);

// a. multi-object delete by specifying the key names and version IDs.


DeleteObjectsRequest multiObjectDeleteRequest = new DeleteObjectsRequest
{
BucketName = bucketName,
Objects = keysAndVersions // This includes the object keys and null
version IDs.
};
// You can add specific object key to the delete request using the .AddKey.
// multiObjectDeleteRequest.AddKey("TickerReference.csv", null);
try
{
DeleteObjectsResponse response = await
s3Client.DeleteObjectsAsync(multiObjectDeleteRequest);

Versão da API 2006-03-01


141
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

Console.WriteLine("Successfully deleted all the {0} items",


response.DeletedObjects.Count);
}
catch (DeleteObjectsException e)
{
PrintDeletionErrorStatus(e);
}
}

private static void PrintDeletionErrorStatus(DeleteObjectsException e)


{
// var errorResponse = e.ErrorResponse;
DeleteObjectsResponse errorResponse = e.Response;
Console.WriteLine("x {0}", errorResponse.DeletedObjects.Count);

Console.WriteLine("No. of objects successfully deleted = {0}",


errorResponse.DeletedObjects.Count);
Console.WriteLine("No. of objects failed to delete = {0}",
errorResponse.DeleteErrors.Count);

Console.WriteLine("Printing error data...");


foreach (DeleteError deleteError in errorResponse.DeleteErrors)
{
Console.WriteLine("Object Key: {0}\t{1}\t{2}", deleteError.Key,
deleteError.Code, deleteError.Message);
}
}

static async Task<List<KeyVersion>> PutObjectsAsync(int number)


{
List<KeyVersion> keys = new List<KeyVersion>();
for (int i = 0; i < number; i++)
{
string key = "ExampleObject-" + new System.Random().Next();
PutObjectRequest request = new PutObjectRequest
{
BucketName = bucketName,
Key = key,
ContentBody = "This is the content body!",
};

PutObjectResponse response = await s3Client.PutObjectAsync(request);


KeyVersion keyVersion = new KeyVersion
{
Key = key,
// For non-versioned bucket operations, we only need object key.
// VersionId = response.VersionId
};
keys.Add(keyVersion);
}
return keys;
}
}
}

Example Exclusão de vários objetos para um bucket com versionamento

O exemplo do C# a seguir usa a API de exclusão de vários objetos para excluir objetos de um bucket
com versionamento. O exemplo executa as seguintes ações:

1. Cria objetos de exemplo e os exclui especificando o nome da chave e o ID de versão para cada
objeto. A operação exclui versões específicas dos objetos.
2. Cria objetos de exemplo e os exclui especificando somente os nomes de chave. Como o exemplo
não especifica IDs de versão, a operação somente adiciona marcadores de exclusão. Ela não

Versão da API 2006-03-01


142
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

exclui nenhuma versão específica dos objetos. Após a exclusão, esses objetos não são exibidos no
console do Amazon S3.
3. Exclui os marcadores de exclusão especificando as chaves de objeto e os IDs de versão dos
marcadores de exclusão. Quando a operação exclui os marcadores de exclusão, os objetos
reaparecem no console.

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class DeleteMultipleObjVersionedBucketTest
{
private const string bucketName = "*** versioning-enabled bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
DeleteMultipleObjectsFromVersionedBucketAsync().Wait();
}

private static async Task DeleteMultipleObjectsFromVersionedBucketAsync()


{

// Delete objects (specifying object version in the request).


await DeleteObjectVersionsAsync();

// Delete objects (without specifying object version in the request).


var deletedObjects = await DeleteObjectsAsync();

// Additional exercise - remove the delete markers S3 returned in the


preceding response.
// This results in the objects reappearing in the bucket (you can
// verify the appearance/disappearance of objects in the console).
await RemoveDeleteMarkersAsync(deletedObjects);
}

private static async Task<List<DeletedObject>> DeleteObjectsAsync()


{
// Upload the sample objects.
var keysAndVersions2 = await PutObjectsAsync(3);

// Delete objects using only keys. Amazon S3 creates a delete marker and
// returns its version ID in the response.
List<DeletedObject> deletedObjects = await
NonVersionedDeleteAsync(keysAndVersions2);
return deletedObjects;
}

private static async Task DeleteObjectVersionsAsync()


{
// Upload the sample objects.
var keysAndVersions1 = await PutObjectsAsync(3);

Versão da API 2006-03-01


143
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

// Delete the specific object versions.


await VersionedDeleteAsync(keysAndVersions1);
}

private static void PrintDeletionReport(DeleteObjectsException e)


{
var errorResponse = e.Response;
Console.WriteLine("No. of objects successfully deleted = {0}",
errorResponse.DeletedObjects.Count);
Console.WriteLine("No. of objects failed to delete = {0}",
errorResponse.DeleteErrors.Count);
Console.WriteLine("Printing error data...");
foreach (var deleteError in errorResponse.DeleteErrors)
{
Console.WriteLine("Object Key: {0}\t{1}\t{2}", deleteError.Key,
deleteError.Code, deleteError.Message);
}
}

static async Task VersionedDeleteAsync(List<KeyVersion> keys)


{
// a. Perform a multi-object delete by specifying the key names and version
IDs.
var multiObjectDeleteRequest = new DeleteObjectsRequest
{
BucketName = bucketName,
Objects = keys // This includes the object keys and specific version
IDs.
};
try
{
Console.WriteLine("Executing VersionedDelete...");
DeleteObjectsResponse response = await
s3Client.DeleteObjectsAsync(multiObjectDeleteRequest);
Console.WriteLine("Successfully deleted all the {0} items",
response.DeletedObjects.Count);
}
catch (DeleteObjectsException e)
{
PrintDeletionReport(e);
}
}

static async Task<List<DeletedObject>> NonVersionedDeleteAsync(List<KeyVersion>


keys)
{
// Create a request that includes only the object key names.
DeleteObjectsRequest multiObjectDeleteRequest = new DeleteObjectsRequest();
multiObjectDeleteRequest.BucketName = bucketName;

foreach (var key in keys)


{
multiObjectDeleteRequest.AddKey(key.Key);
}
// Execute DeleteObjects - Amazon S3 add delete marker for each object
// deletion. The objects disappear from your bucket.
// You can verify that using the Amazon S3 console.
DeleteObjectsResponse response;
try
{
Console.WriteLine("Executing NonVersionedDelete...");
response = await s3Client.DeleteObjectsAsync(multiObjectDeleteRequest);
Console.WriteLine("Successfully deleted all the {0} items",
response.DeletedObjects.Count);
}

Versão da API 2006-03-01


144
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

catch (DeleteObjectsException e)
{
PrintDeletionReport(e);
throw; // Some deletes failed. Investigate before continuing.
}
// This response contains the DeletedObjects list which we use to delete
the delete markers.
return response.DeletedObjects;
}

private static async Task RemoveDeleteMarkersAsync(List<DeletedObject>


deletedObjects)
{
var keyVersionList = new List<KeyVersion>();

foreach (var deletedObject in deletedObjects)


{
KeyVersion keyVersion = new KeyVersion
{
Key = deletedObject.Key,
VersionId = deletedObject.DeleteMarkerVersionId
};
keyVersionList.Add(keyVersion);
}
// Create another request to delete the delete markers.
var multiObjectDeleteRequest = new DeleteObjectsRequest
{
BucketName = bucketName,
Objects = keyVersionList
};

// Now, delete the delete marker to bring your objects back to the bucket.
try
{
Console.WriteLine("Removing the delete markers .....");
var deleteObjectResponse = await
s3Client.DeleteObjectsAsync(multiObjectDeleteRequest);
Console.WriteLine("Successfully deleted all the {0} delete markers",
deleteObjectResponse.DeletedObjects.Count);
}
catch (DeleteObjectsException e)
{
PrintDeletionReport(e);
}
}

static async Task<List<KeyVersion>> PutObjectsAsync(int number)


{
var keys = new List<KeyVersion>();

for (var i = 0; i < number; i++)


{
string key = "ObjectToDelete-" + new System.Random().Next();
PutObjectRequest request = new PutObjectRequest
{
BucketName = bucketName,
Key = key,
ContentBody = "This is the content body!",

};

var response = await s3Client.PutObjectAsync(request);


KeyVersion keyVersion = new KeyVersion
{
Key = key,
VersionId = response.VersionId

Versão da API 2006-03-01


145
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

};

keys.Add(keyVersion);
}
return keys;
}
}
}

PHP

Estes exemplos mostram como usar as classes da versão 3 do AWS SDK para PHP para excluir
vários objetos de buckets do Amazon S3 com e sem versionamento. Para obter mais informações
sobre controle de versão, consulte Usando o controle de versão em buckets do S3 (p. 516).

Os exemplos presumem que você já esteja seguindo as instruções para Usar o AWS SDK para PHP e
executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Example Excluir vários objetos de um bucket sem versionamento

O PHP de exemplo a seguir usa o método deleteObjects() para excluir vários objetos de um
bucket sem versionamento.

Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// 1. Create a few objects.


for ($i = 1; $i <= 3; $i++) {
$s3->putObject([
'Bucket' => $bucket,
'Key' => "key{$i}",
'Body' => "content {$i}",
]);
}

// 2. List the objects and get the keys.


$keys = $s3->listObjects([
'Bucket' => $bucket
]);

// 3. Delete the objects.


foreach ($keys['Contents'] as $key)
{
$s3->deleteObjects([
'Bucket' => $bucket,
'Delete' => [
'Objects' => [
[
'Key' => $key['Key']
]

Versão da API 2006-03-01


146
Amazon Simple Storage Service Guia do usuário
Excluir vários objetos

]
]
]);
}

Example Excluir vários objetos de um bucket habilitado para versionamento

O PHP de exemplo a seguir usa o método deleteObjects() para excluir vários objetos de um
bucket habilitado para versionamento.

Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// 1. Enable object versioning for the bucket.


$s3->putBucketVersioning([
'Bucket' => $bucket,
'VersioningConfiguration' => [
'Status' => 'Enabled'
]
]);

// 2. Create a few versions of an object.


for ($i = 1; $i <= 3; $i++) {
$s3->putObject([
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => "content {$i}",
]);
}

// 3. List the objects versions and get the keys and version IDs.
$versions = $s3->listObjectVersions(['Bucket' => $bucket]);

// 4. Delete the object versions.


$deletedResults = 'The following objects were deleted successfully:' . PHP_EOL;
$deleted = false;
$errorResults = 'The following objects could not be deleted:' . PHP_EOL;
$errors = false;

foreach ($versions['Versions'] as $version)


{
$result = $s3->deleteObjects([
'Bucket' => $bucket,
'Delete' => [
'Objects' => [
[
'Key' => $version['Key'],
'VersionId' => $version['VersionId']
]
]

Versão da API 2006-03-01


147
Amazon Simple Storage Service Guia do usuário
Organizar e listar objetos

]
]);

if (isset($result['Deleted']))
{
$deleted = true;

$deletedResults .= "Key: {$result['Deleted'][0]['Key']}, " .


"VersionId: {$result['Deleted'][0]['VersionId']}" . PHP_EOL;
}

if (isset($result['Errors']))
{
$errors = true;

$errorResults .= "Key: {$result['Errors'][0]['Key']}, " .


"VersionId: {$result['Errors'][0]['VersionId']}, " .
"Message: {$result['Errors'][0]['Message']}" . PHP_EOL;
}
}

if ($deleted)
{
echo $deletedResults;
}

if ($errors)
{
echo $errorResults;
}

// 5. Suspend object versioning for the bucket.


$s3->putBucketVersioning([
'Bucket' => $bucket,
'VersioningConfiguration' => [
'Status' => 'Suspended'
]
]);

Uso dos REST API


Você pode usar os AWS SDKs para excluir vários objetos usando a API de Exclusão de vários objetos.
Contudo, se o seu aplicativo exigir, você pode enviar solicitações REST diretamente.

Para obter mais informações, consulte Excluir vários objetos na Referência da API do Amazon Simple
Storage Service.

Organizar, listar e trabalhar com seus objetos


No Amazon S3, você pode usar prefixos para organizar seu armazenamento. Um prefixo é um
agrupamento lógico dos objetos em um bucket. O valor do prefixo é semelhante a um nome de diretório
que permite que você armazene dados semelhantes em um bucket no mesmo diretório. Quando você faz
upload de objetos de maneira programática, é possível usar prefixos para organizar seus dados.

No console do Amazon S3, os prefixos são chamados de pastas. Você pode exibir todos os objetos e
pastas no console do S3 navegando até um bucket. Você também pode exibir informações sobre cada
objeto incluindo propriedades do objeto.

Para obter mais informações sobre como listar e organizar seus dados no Amazon S3, consulte os tópicos
a seguir.

Versão da API 2006-03-01


148
Amazon Simple Storage Service Guia do usuário
Usar prefixos

Tópicos
• Organizar objetos usando prefixos (p. 149)
• Listar chaves de objeto programaticamente (p. 150)
• Organizar objetos no console do Amazon S3 usando pastas (p. 155)
• Exibir uma visão geral do objeto no console do Amazon S3 (p. 157)
• Exibir propriedades do objeto no console do Amazon S3 (p. 157)

Organizar objetos usando prefixos


Você pode usar prefixos para organizar os dados armazenados nos buckets do Amazon S3. Um valor de
prefixo é semelhante a um nome de diretório que permite agrupar objetos semelhantes em um bucket.
Quando você faz upload de objetos de maneira programática, é possível usar prefixos para organizar seus
dados.

O prefixo limita os resultados a somente essas chaves que começam com o prefixo especificado. O
delimitador faz com que uma operação de lista acumule todas as chaves que compartilham um prefixo
comum em um único resultado da lista de resumo.

A finalidade dos parâmetros de prefixo e delimitador é ajudá-lo a organizar e navegar, hierarquicamente,


por suas chaves. Para fazer isso, escolha primeiro um delimitador para seu bucket, tal como barra (/), que
você não prevê que apareça em nomes de chave. Em seguida, crie seus nomes de chave concatenando
todos os níveis de contenção de hierarquia, separando cada nível com o delimitador.

Por exemplo, se você estava armazenando informações sobre cidades, pode, naturalmente, organizá-las
por continente, país, província ou estado. Como esses nomes geralmente não usam pontuação, você pode
usar a barra (/) como delimitador. Os seguintes exemplos usam uma barra (/) como delimitador.

• Europa/França/Nova Aquitânia/Bordeaux
• América do Norte/Canadá/Quebec/Montreal
• América do Norte /EUA/Washington/Bellevue
• América do Norte /EUA/Washington/Seattle

Se você armazenou dados de cada cidade do mundo desta forma, ficaria estranho gerenciar um
namespace plano de chave. Usando Prefix e Delimiter com a operação de lista, você pode usar a
hierarquia que criou para listar seus dados. Por exemplo, para listar todos os estados nos EUA, defina
Delimiter='/' e Prefix='América do Norte/USA/'. Para listar todas as províncias no Canadá para as
quais você tenha dados, defina Delimiter='/' e Prefix='América do Norte/Canadá/'.

Listar objetos usando prefixos e delimitadores


Uma solicitação de lista com um delimitador permite pesquisar a hierarquia em apenas um nível, pulando
e resumindo as (possivelmente milhões de) chaves aninhadas em níveis mais profundos. Por exemplo,
suponha que você tenha um bucket (ExampleBucket) com as chaves a seguir.

sample.jpg

photos/2006/January/sample.jpg

photos/2006/February/sample2.jpg

photos/2006/February/sample3.jpg

photos/2006/February/sample4.jpg

Versão da API 2006-03-01


149
Amazon Simple Storage Service Guia do usuário
Listar objetos

O bucket de exemplo tem somente sample.jpg o objeto no nível raiz. Para listar somente os objetos
no nível raiz no bucket, você envia uma solicitação GET no bucket com o caractere delimitador “/”. Em
resposta, o Amazon S3 retorna a chave do objeto sample.jpg porque ela não contém o caractere
delimitador “/”. Todas as outras chaves contêm o caractere delimitador. O Amazon S3 agrupa essas
chaves e retorna um único elemento CommonPrefixes com valor de prefixo photos/ que é uma
substring do início dessas chaves até a primeira ocorrência do delimitador especificado.

Example

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>ExampleBucket</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>sample.jpg</Key>
<LastModified>2011-07-24T19:39:30.000Z</LastModified>
<ETag>&quot;d1a7fb5eab1c16cb4f7cf341cf188c3d&quot;</ETag>
<Size>6</Size>
<Owner>
<ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
<DisplayName>displayname</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<CommonPrefixes>
<Prefix>photos/</Prefix>
</CommonPrefixes>
</ListBucketResult>

Para obter mais informações sobre como listar chaves de objeto programaticamente, consulte Listar
chaves de objeto programaticamente (p. 150).

Listar chaves de objeto programaticamente


No Amazon S3, as chaves podem ser listadas por prefixo. Você pode escolher um prefixo comum para
os nomes das chaves relacionadas e marcar essas chaves com um caractere especial que delimite
a hierarquia. Em seguida, você pode usar a operação de lista para selecionar e procurar chaves
hierarquicamente. Isso é semelhante à forma como arquivos são armazenados em diretórios em um
sistema de arquivos.

O Amazon S3 expõe uma operação de lista que permite a enumeração das chaves contidas em um
bucket. As chaves são selecionadas para a listagem pelo bucket e pelo prefixo. Por exemplo, considere um
bucket chamado “dictionary” que contém uma chave para cada palavra inglesa. Você pode fazer uma
chamada para listar todas as chaves no bucket iniciadas com a letra “q”. Os resultados da lista são obtidos
sempre em ordem binária UTF-8.

As operações de lista SOAP e REST retornam um documento XML que contém nomes de chaves
correspondentes e informações sobre o objeto identificado em cada chave.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Grupos de chaves que compartilham um prefixo terminado por um delimitador especial podem ser rolados
para acima pelo prefixo comum para fins de listagem. Isso permite que aplicativos organizem e naveguem

Versão da API 2006-03-01


150
Amazon Simple Storage Service Guia do usuário
Listar objetos

por suas chaves hierarquicamente, de maneira muito similar a como você organizaria seus arquivos em
diretórios em um sistema de arquivos.

Por exemplo, para estender o bucket de dicionário para conter mais do que apenas palavras inglesas,
você poderia formar chaves prefixando cada palavra com seu idioma e um delimitador, tal como “French/
logical”. Usando esse esquema de nomeação e o recurso hierárquico de listagem, você poderia
recuperar uma lista somente de palavras francesas. Você também poderia pesquisar a parte superior
da lista de idiomas sem ter que iterar com todas as chaves de iteração lexicográficas. Para obter mais
informações sobre esse aspecto de listagem, consulte Organizar objetos usando prefixos (p. 149).

API REST

Se a sua aplicação exigir, você pode enviar solicitações REST diretamente. Você pode enviar uma
solicitação GET para retornar alguns ou todos os objetos em um bucket ou pode usar critérios de seleção
para obter um subconjunto de objetos em um bucket. Para obter mais informações, consulte GET Bucket
(listar objetos) versão 2 na Referência da API do Amazon Simple Storage Service.

Implementação eficiente de lista

A performance da lista não é substancialmente afetada pelo número total de chaves no bucket. Também
não é afetada pela presença ou ausência dos argumentos prefix, marker, maxkeys ou delimiter.

Iterar em resultados de várias páginas

Como os buckets podem conter um número praticamente ilimitado de chaves, os resultados completos
de uma consulta de lista podem ser muito extensos. Para gerenciar grandes conjuntos de resultados, a
API do Amazon S3 é compatível com a paginação para separá-los em várias respostas. Cada resposta de
chaves de lista retorna uma página com até 1.000 chaves com um indicador apontando se a resposta está
truncada. Você envia uma série de requisições de chaves de lista até que você receba todas as chaves. As
bibliotecas wrapper do AWS SDK fornecem a mesma paginação.

Java

O exemplo a seguir lista as chaves de objeto em um bucket. O exemplo usa a paginação para
recuperar um conjunto de chaves de objeto. Se houver mais chaves a retornar após a primeira página,
o Amazon S3 incluirá um token de continuação na resposta. O exemplo usa o token de continuação
na solicitação subsequente para buscar o próximo conjunto de chaves de objeto.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsV2Request;
import com.amazonaws.services.s3.model.ListObjectsV2Result;
import com.amazonaws.services.s3.model.S3ObjectSummary;

import java.io.IOException;

public class ListKeys {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()

Versão da API 2006-03-01


151
Amazon Simple Storage Service Guia do usuário
Listar objetos

.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

System.out.println("Listing objects");

// maxKeys is set to 2 to demonstrate the use of


// ListObjectsV2Result.getNextContinuationToken()
ListObjectsV2Request req = new
ListObjectsV2Request().withBucketName(bucketName).withMaxKeys(2);
ListObjectsV2Result result;

do {
result = s3Client.listObjectsV2(req);

for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {


System.out.printf(" - %s (size: %d)\n", objectSummary.getKey(),
objectSummary.getSize());
}
// If there are more than maxKeys keys in the bucket, get a
continuation token
// and list the next objects.
String token = result.getNextContinuationToken();
System.out.println("Next Continuation Token: " + token);
req.setContinuationToken(token);
} while (result.isTruncated());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

O exemplo do C# a seguir lista as chaves de objeto para um bucket. No exemplo, a paginação é


usada para recuperar um conjunto de chaves de objeto. Se houver mais chaves a retornar, o Amazon
S3 incluirá um token de continuação na resposta. O código usa o token de continuação na solicitação
subsequente para buscar o próximo conjunto de chaves de objeto.

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class ListObjectsTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;

private static IAmazonS3 client;

Versão da API 2006-03-01


152
Amazon Simple Storage Service Guia do usuário
Listar objetos

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
ListingObjectsAsync().Wait();
}

static async Task ListingObjectsAsync()


{
try
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await client.ListObjectsV2Async(request);

// Process the response.


foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);
}
Console.WriteLine("Next Continuation Token: {0}",
response.NextContinuationToken);
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated);
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("S3 error occurred. Exception: " +
amazonS3Exception.ToString());
Console.ReadKey();
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
Console.ReadKey();
}
}
}
}

PHP

Este exemplo orienta como usar classes da versão 3 do AWS SDK para PHP para listar chaves de
objeto contidas em um bucket do Amazon S3.

Este exemplo pressupõe que você já esteja seguindo as instruções para Usar o AWS SDK para PHP
e executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Para listar as chaves de objeto contidas em um bucket usando o AWS SDK para PHP, primeiramente
é necessário listar os objetos contidos no bucket e então extrair a chave de cada um dos objetos
listados. Ao listar objetos em um bucket, você tem a opção de usar o método de baixo nível Aws
\S3\S3Client::listObjects() ou a classe de alto nível Aws\ResultPaginator.

O método de baixo nível listObjects() mapeia para a API REST subjacente do Amazon S3. Cada
solicitação listObjects() retorna uma página de até 1.000 objetos. Se houver mais de 1.000

Versão da API 2006-03-01


153
Amazon Simple Storage Service Guia do usuário
Listar objetos

objetos no bucket, a resposta será truncada e você precisará enviar outra solicitação listObjects()
para recuperar o conjunto seguinte de 1.000 objetos.

Você pode usar o paginador de alto nível ListObjects para facilitar a listagem de objetos contidos
em um bucket. Para usar o paginador ListObjects para criar uma lista de objetos, execute o
método getPaginator() do cliente do Amazon S3 (herdado da classe Aws/AwsClientInterface) com
o comando ListObjects como o primeiro argumento e uma matriz que contenha os objetos
retornados do bucket especificado como o segundo argumento.

Quando usado como paginador ListObjects, o método getPaginator() retorna todos os


objetos contidos em um bucket. Não há limite de 1.000 objetos, de maneira que você não precisa se
preocupar se a resposta é truncada.

As tarefas a seguir orientam como usar métodos PHP do cliente do Amazon S3 para listar objetos
contidos em um bucket no qual é possível listar as chaves do objeto.

Example Listar chaves de objeto


O exemplo PHP a seguir demonstra como listar as chaves a partir de um bucket especificado. Ele
mostra como usar o método de alto nível getIterator() para listar os objetos em um bucket
e extrair a chave de cada um dos objetos na lista. Ele mostra como usar o método de alto nível
listObjects() para listar os objetos em um bucket e extrair a chave de cada um dos objetos
na lista retornada. Para obter informações sobre como executar os exemplos de PHP neste guia,
consulte Executar exemplos do PHP (p. 1045).

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';

// Instantiate the client.


$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1'
]);

// Use the high-level iterators (returns ALL of your objects).


try {
$results = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);

foreach ($results as $result) {


foreach ($result['Contents'] as $object) {
echo $object['Key'] . PHP_EOL;
}
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

// Use the plain API (returns ONLY up to 1000 of your objects).


try {
$objects = $s3->listObjects([
'Bucket' => $bucket
]);
foreach ($objects['Contents'] as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;

Versão da API 2006-03-01


154
Amazon Simple Storage Service Guia do usuário
Usar pastas

Organizar objetos no console do Amazon S3 usando


pastas
Nos buckets e objetos do Amazon S3 estão os recursos primários e os objetos são armazenados em
buckets. O Amazon S3 tem uma estrutura plana em vez de uma hierarquia como você normalmente veria
em um sistema de arquivos. No entanto, para fins de simplicidade organizacional, o console do Amazon
S3 oferece suporte ao conceito de pastas como meio de agrupar objetos. Ele faz isso usando um prefixo
de nome compartilhado para os objetos (ou seja, objetos com nomes que começam com uma string em
comum). Nomes de objetos também são chamados de nomes de chave.

Por exemplo, é possível criar uma pasta no console chamada photos, e armazenar um objeto chamado
myphoto.jpg nela. Em seguida, o objeto é armazenado como o nome da chave photos/myphoto.jpg,
em que photos/ é o prefixo.

Estes são mais dois exemplos:

• Se você tiver três objetos no bucket — logs/date1.txt, logs/date2.txt e logs/date3.txt


— o console mostrará uma pasta chamada logs. Se você abrir a pasta no console, verá três objetos:
date1.txt, date2.txt e date3.txt.
• Se você tiver um objeto chamado photos/2017/example.jpg, o console mostrará uma pasta
chamada photos que contém a pasta 2017. A pasta 2017 conterá o objeto example.jpg.

Você pode ter pastas dentro de pastas, mas não buckets dentro de buckets. Você pode carregar e copiar
objetos diretamente em uma pasta. As pastas podem ser criadas, excluídas e tornadas públicas, mas não
podem ser renomeadas. Os objetos podem ser copiados de uma pasta para outra.
Important

O console do Amazon S3 trata todos os objetos que têm um caractere barra (“/”) como o último
caractere (final) no nome da chave como uma pasta, por exemplo, examplekeyname/. Não é
possível fazer upload de um objeto que tenha um nome de chave com caractere de “/” no final
usando o console do Amazon S3. No entanto, é possível fazer upload de objetos nomeados com
uma “/” no final com a API do Amazon S3 usando a AWS CLI, os AWS SDKs ou a API REST.
Um objeto que é nomeado com uma “/” no final aparece como uma pasta no console do Amazon
S3. O console do Amazon S3 não exibe o conteúdo e os metadados desse objeto. Ao usar o
console para copiar um objeto nomeado com uma barra "/" no final, é criada uma pasta no local
de destino, mas os dados e os metadados do objeto não são copiados.

Tópicos
• Criar uma pasta (p. 155)
• Tornar as pastas públicas (p. 156)
• Excluir pastas (p. 156)

Criar uma pasta


Esta seção descreve como usar o console do Amazon S3 para criar uma pasta.
Important

Se sua política de bucket impedir o upload de objetos para este bucket sem beneficiários de
criptografia, tags, metadados ou lista de controle de acesso (ACL), você não poderá criar uma

Versão da API 2006-03-01


155
Amazon Simple Storage Service Guia do usuário
Usar pastas

pasta usando essa configuração. Em vez disso, carregue uma pasta vazia e especifique essas
configurações na configuração de upload.

Para criar uma pasta

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, selecione o nome do bucket no qual você deseja criar uma pasta.
3. Selecione Create folder (Criar pasta).
4. Insira um nome para a pasta (por exemplo, favorite-pics). Em seguida, escolha Create folder
(Criar pasta).

Tornar as pastas públicas


Recomendamos bloquear todo o acesso público às pastas e aos buckets do Amazon S3, a menos que
você exija especificamente uma pasta ou um bucket públicos. Ao tornar uma pasta pública, qualquer
pessoa na Internet pode visualizar todos os objetos agrupados nessa pasta.

No console do Amazon S3, você pode tornar uma pasta pública. Também é possível tornar uma pasta
pública criando uma política de bucket que limita o acesso por prefixo. Para obter mais informações,
consulte Identity and Access Management no Amazon S3 (p. 252).
Warning

Após tornar uma pasta pública no console do Amazon S3, não será possível torná-la privada
novamente. Em vez disso, é necessário definir permissões em cada objeto individual na pasta
pública para que o objeto não tenha acesso público. Para obter mais informações, consulte
Configurar ACLs (p. 448).

Excluir pastas
Esta seção explica como usar o console do Amazon S3 para excluir pastas de um bucket do S3.

Para obter informações sobre os recursos e a definição de preço do Amazon S3, consulte Amazon S3.

Para excluir pastas de um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket do qual você deseja excluir pastas.
3. Na lista Objects (Objetos), marque a caixa de seleção ao lado das pastas e objetos que você deseja
excluir.
4. Escolha Delete (Excluir).
5. Na página Delete objects (Excluir objetos) verifique se os nomes das pastas selecionadas para
exclusão estão listados.
6. Na caixa Delete objects (Excluir objetos), insira delete e escolha Delete objects (Excluir objetos).

Warning

Essa ação exclui todos os objetos especificados. Ao excluir pastas, aguarde a conclusão da ação
de exclusão antes de adicionar objetos novos à pasta. Caso contrário, os objetos novos também
podem ser excluídos.

Versão da API 2006-03-01


156
Amazon Simple Storage Service Guia do usuário
Exibir uma visão geral do objeto

Exibir uma visão geral do objeto no console do


Amazon S3
Você pode usar o console do Amazon S3 para exibir uma visão geral de um objeto. A visão geral do objeto
no console fornece todas as informações essenciais de um objeto em um só lugar.

Para abrir o painel de visão geral de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Objects (Objetos), escolha o nome do objeto do qual deseja uma visão geral.

A visão geral do objeto é aberta.


4. Para fazer download do objeto, escolha Object actions (Ações de objeto)e, em seguida, escolha
Download. Para copiar o caminho do objeto para a área de transferência, em Object URL (URL do
objeto), escolha o URL.
5. Se o versionamento estiver habilitado no bucket, escolha Versions (Versões) para listar as versões do
objeto.

• Para fazer download de uma versão do objeto, marque a caixa de seleção ao lado do ID da versão,
escolha Actions (Ações) e, em seguida, escolha Download.
• Para excluir uma versão de objeto, marque a caixa de seleção ao lado do ID da versão e escolha
Delete (Excluir).

Important

Você pode cancelar a exclusão de um objeto somente se ele foi excluído como a versão mais
recente (atual). Não é possível cancelar a exclusão de uma versão anterior de um objeto que
foi excluído.

Exibir propriedades do objeto no console do Amazon


S3
Você pode usar o console do Amazon S3 para exibir as propriedades de um objeto, incluindo classe de
armazenamento, configurações de criptografia, tags e metadados.

Para visualizar as propriedades de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Objects (Objetos), escolha o nome do objeto do qual você deseja visualizar as propriedades.

A Object overview (Visão geral do objeto) de seu objeto é aberta. Você pode rolar para baixo para
exibir as propriedades do objeto.
4. Na página Object overview (Visão geral do objeto), você pode configurar as propriedades a seguir
para o objeto.

Versão da API 2006-03-01


157
Amazon Simple Storage Service Guia do usuário
Usar pre-signed URLs

Note
Se você alterar as propriedades Storage Class (Classe de armazenamento), Encryption
(Criptografia) ou Metadata (Metadados), um novo objeto será criado para substituir o antigo.
Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o
objeto existente se tornará uma versão mais antiga. A função que altera a propriedade
também se torna o proprietário do novo objeto ou (versão do objeto).

a. Storage class (Classe de armazenamento) – cada objeto no Amazon S3 tem uma classe de
armazenamento associada a ela. A classe de armazenamento que você decide usar depende
da frequência com que acessa o objeto. A classe de armazenamento padrão de objetos do
S3 é STANDARD. Escolha qual classe de armazenamento usar ao fazer upload de um objeto.
Para obter mais informações sobre classes de armazenamento, consulte Uso de classes de
armazenamento do Amazon S3 (p. 563).

Para alterar a classe de armazenamento depois de fazer upload de um objeto, escolha Storage
class (Classe de armazenamento). Escolha a classe de armazenamento desejada e Save
(Salvar).
b. Server-side encryption settings (Configurações de criptografia no lado do servidor): você pode
usar a criptografia no lado do servidor para criptografar seus objetos do S3. Para obter mais
informações, consulte Especificando criptografia no lado do servidor com o AWS KMS (SSE-
KMS) (p. 198) ou Especificação de criptografia do Amazon S3 (p. 214).
c. Metadata (Metadados) – cada objeto no Amazon S3 tem um conjunto de pares de nome-valor
que representa seus metadados. Para obter informações sobre como adicionar metadados a um
objeto do S3, consulte Editar metadados de objeto no console do Amazon S3 (p. 69).
d. Tags: você categoriza o armazenamento adicionando tags a um objeto do S3. Para obter mais
informações, consulte Categorizando seu armazenamento usando tags (p. 683).
e. Object lock legal hold and retention (Retenção legal e retenção do Bloqueio de objetos): você
pode impedir que um objeto seja excluído. Para obter mais informações, consulte Usar o S3
Object Lock (p. 554).

Usar pre-signed URLs


Por padrão, todos os objetos e buckets são privados. No entanto, você pode usar uma pre-signed URL
para compartilhar objetos opcionalmente ou permitir que seus clientes/usuários façam upload de objetos
em buckets sem credenciais ou permissões de segurança da AWS.

Limitar recursos de pre-signed URLs


É possível usar pre-signed URLs para gerar um URL que possa ser usado para acessar seus buckets do
S3. Ao criar um pre-signed URL, você o associa a uma ação específica. É possível compartilhar o URL,
e qualquer pessoa com acesso a ele pode executar a ação incorporada no URL como se fosse o usuário
de assinatura original. O URL expirará e não funcionará mais quando atingir seu tempo de expiração. Os
recursos do URL são limitados pelas permissões do usuário que criou o pre-signed URL.

Em essência, os pre-signed URLs são um token de portador que concede acesso aos clientes que os têm.
Dessa forma, recomendamos que você os proteja adequadamente.

Se quiser restringir o uso de pre-signed URLs e todo o acesso do S3 a caminhos de rede específicos,
você poderá escrever políticas do AWS Identity and Access Management (IAM) que exijam um caminho
de rede específico. Essas políticas podem ser definidas no principal do IAM que faz a chamada, no bucket
do Amazon S3 ou em ambos. Uma restrição de caminho de rede no principal exige que o usuário dessas
credenciais faça solicitações na rede especificada. Uma restrição no bucket limita o acesso a esse bucket
somente às solicitações originadas da rede especificada. Perceba que essas restrições também se
aplicam fora do cenário de pre-signed URL.

Versão da API 2006-03-01


158
Amazon Simple Storage Service Guia do usuário
Compartilhar um objeto com uma pre-signed URL

A condição global do IAM que você usa depende do tipo de endpoint. Se estiver usando o endpoint público
para o Amazon S3, use aws:SourceIp. Se estiver usando um VPC endpoint para o Amazon S3, use
aws:SourceVpc ou aws:SourceVpce.

A declaração de política do IAM a seguir requer que o principal acesse a AWS somente pelo intervalo de
rede especificado. Com essa declaração de política em vigor, exige-se que todo acesso seja originário
desse intervalo. Isso inclui o caso de alguém usando um pre-signed URL para o S3.

{
"Sid": "NetworkRestrictionForIAMPrincipal",
"Effect": "Deny",
"Action": "",
"Resource": "",
"Condition": {
"NotIpAddressIfExists": { "aws:SourceIp": "IP-address" },
"BoolIfExists": { "aws:ViaAWSService": "false" }
}
}

Para obter mais informações sobre como usar uma pre-signed URL para compartilhar ou fazer upload de
objetos, consulte os tópicos a seguir.

Tópicos
• Compartilhar um objeto com uma pre-signed URL (p. 159)
• Fazer upload de objetos usando pre-signed URLs (p. 162)

Compartilhar um objeto com uma pre-signed URL


Todos os objetos são privados por padrão. Somente o proprietário do objeto tem permissão para acessar
esses objetos. Contudo, o proprietário do objeto pode compartilhar objetos com os outros criando um pre-
signed URL, usando suas próprias credenciais de segurança para conceder permissão de prazo limitado
para download de objetos.

Quando cria um pre-signed URL para seu objeto, você deve fornecer as credenciais de segurança,
especificar um nome de bucket, uma chave de objeto, especificar o método HTTP (GET para download do
objeto) e data e hora de expiração. Os pre-signed URLs são válidos apenas pela duração especificada.

Qualquer um que recebe o pre-signed URL pode acessar o objeto. Por exemplo, se você tiver um vídeo
em seu bucket e o bucket e o objeto forem privados, será possível compartilhar o vídeo gerando um pre-
signed URL.
Note
• Qualquer um com credenciais de segurança válidas pode criar um pre-signed URL. No entanto,
para acessar com êxito um objeto, o pre-signed URL deve ter sido criado por alguém que tenha
permissão para executar a operação na qual o pre-signed URL está baseado.
• As credenciais que podem ser usadas para criar um pre-signed URL incluem:
• Perfil de instância do IAM: válido por até 6 horas
• AWS Security Token Service: válido por até 36 horas quando assinado com credenciais
permanentes, como as credenciais do usuário raiz da conta da AWS ou um usuário do IAM.
• Usuário do IAM: válido por até 7 dias quando o AWS Signature versão 4 estiver sendo usado

Para criar um pre-signed URL, que é válido por até 7 dias, primeiro designe credenciais de
usuário do IAM (a chave de acesso e a chave de acesso secreta) para o SDK que está sendo
usado. Depois, gere um pre-signed URL usando o AWS Signature versão 4.
• Se você criou um pre-signed URL usando um token temporário, o URL expirará quando o token
expirar, mesmo se o URL tiver sido criado com uma hora de expiração posterior.

Versão da API 2006-03-01


159
Amazon Simple Storage Service Guia do usuário
Compartilhar um objeto com uma pre-signed URL

• Como os URLs pré-assinados concedem acesso aos buckets do Amazon S3 a quem tiver o
URL, recomendamos que você os proteja adequadamente. Para obter mais detalhes sobre
como proteger pre-signed URLs, consulte Limitar recursos de pre-signed URLs (p. 158).

Gerar um URL pré-assinado


É possível gerar uma URL predefinida programaticamente usando a API REST, a Interface da linha de
comando da AWS e o AWS SDK para Java, .NET, Ruby, PHP, Node.js, Python e Go.

Usar o AWS Explorer para Visual Studio


Se você estiver usando o Visual Studio, poderá gerar um pre-signed URL para um objeto sem gravar
nenhum código usando o AWS Explorer for Visual Studio. Qualquer um com esse URL pode fazer
download do objeto. Para obter mais informações, acesse Usar o Amazon S3 no AWS Explorer.

Para instruções sobre como instalar o AWS Explorer, consulte Desenvolvimento com o Amazon S3 usando
os AWS SDKs e exploradores (p. 1034).

Uso dos AWS SDKs


O exemplo a seguir gera um URL pré-assinado que você pode compartilhar para recuperar um objeto.
Para obter mais informações, consulte Compartilhar um objeto com uma pre-signed URL (p. 159).

.NET

Example
O exemplo a seguir gera um pre-signed URL que você pode compartilhar para recuperar um objeto.
Para obter mais informações, consulte Compartilhar um objeto com uma pre-signed URL (p. 159).

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;

namespace Amazon.DocSamples.S3
{
class GenPresignedURLTest
{
private const string bucketName = "*** bucket name ***";
private const string objectKey = "*** object key ***";
// Specify how long the presigned URL lasts, in hours
private const double timeoutDuration = 12;
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
string urlString = GeneratePreSignedURL(timeoutDuration);
}
static string GeneratePreSignedURL(double duration)
{
string urlString = "";
try
{
GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest
{

Versão da API 2006-03-01


160
Amazon Simple Storage Service Guia do usuário
Compartilhar um objeto com uma pre-signed URL

BucketName = bucketName,
Key = objectKey,
Expires = DateTime.UtcNow.AddHours(duration)
};
urlString = s3Client.GetPreSignedURL(request1);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
return urlString;
}
}
}

Go

Você pode usar o SDK para Go para fazer upload de um objeto. Você pode enviar uma solicitação
PUT para fazer upload de dados em uma única operação. Para obter mais informações, consulte
Gerar um URL pré-assinado para uma operação PUT do Amazon S3 com uma carga útil específica no
Guia do desenvolvedor do AWS SDK para Go.
Java

Example
O exemplo a seguir gera um pre-signed URL que você pode compartilhar para recuperar um objeto de
um bucket do S3. Para obter mais informações, consulte Compartilhar um objeto com uma pre-signed
URL (p. 159).

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.HttpMethod;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;

import java.io.IOException;
import java.net.URL;
import java.time.Instant;

public class GeneratePresignedURL {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String objectKey = "*** Object key ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();

Versão da API 2006-03-01


161
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

// Set the presigned URL to expire after one hour.


long expTimeMillis = Instant.now().toEpochMilli();
expTimeMillis += 1000 * 60 * 60;
expiration.setTime(expTimeMillis);

// Generate the presigned URL.


System.out.println("Generating pre-signed URL.");
GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(bucketName, objectKey)
.withMethod(HttpMethod.GET)
.withExpiration(expiration);
URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

System.out.println("Pre-Signed URL: " + url.toString());


} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

PHP

Para obter mais informações sobre o uso do AWS SDK for PHP versão 3 para gerar uma pre-signed
URL, consulte Pre-signed URL do Amazon S3 com o AWS SDK para PHP versão 3 no Guia do
desenvolvedor do AWS SDK para PHP.
Python

Gere uma URL pré-assinada para compartilhar um objeto usando o SDK para Python (Boto3). Por
exemplo, use um cliente Boto3 e a função generate_presigned_url para gerar uma URL pré-
assinada que obtém um objeto.

import boto3
url = boto3.client('s3').generate_presigned_url(
ClientMethod='get_object',
Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'},
ExpiresIn=3600)

Para obter um exemplo completo que mostra como gerar URLs pré-assinadas e como usar o pacote
de Solicitações para carregar e baixar objetos, consulte o exemplo de URL pré-assinada do PHP no
GitHub. Para obter mais informações sobre como usar o SDK para Python (Boto3) para gerar uma
URL pré-assinada, consulte Python na Referência do AWS SDK para API de PHP.

Fazer upload de objetos usando pre-signed URLs


Um pre-signed URL fornece acesso ao objeto identificado no URL, desde que o criador do pre-signed URL
tenha permissões para acessar esse objeto. Isto é, se você receber um pre-signed URL para fazer upload
de um objeto, poderá fazer upload do objeto somente se o criador do pre-signed URL tiver as permissões
necessárias para fazer upload desse objeto.

Por padrão, todos os objetos e buckets são privados. Os pre-signed URLs serão úteis se você desejar que
o usuário/cliente seja capaz de fazer upload de um objeto específico no seu bucket, mas não exigir que ele
tenha credenciais ou permissões de segurança da AWS.

Versão da API 2006-03-01


162
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

Quando cria um pre-signed URL, você deve fornecer as credenciais de segurança, e então especificar
um nome de bucket, uma chave de objeto, um método HTTP (PUT para upload de objetos) e data e hora
de expiração. Os pre-signed URLs são válidos apenas pela duração especificada. Ou seja, é necessário
iniciar a ação antes da data e a hora de expiração. Se a ação consistir em várias etapas, como um
multipart upload, todas as etapas devem ser iniciadas antes da expiração, caso contrário, você receberá
um erro quando o Amazon S3 tentar iniciar uma etapa com um URL expirado.

É possível usar o pre-signed URL várias vezes, até a data e a hora de expiração.

Acesso à pre-signed URL

Como os URLs pré-assinados concedem acesso aos buckets do Amazon S3 a quem tiver o URL,
recomendamos que você os proteja adequadamente. Para obter mais detalhes sobre como proteger pre-
signed URLs, consulte Limitar recursos de pre-signed URLs (p. 158).

Qualquer um com credenciais de segurança válidas pode criar um pre-signed URL. No entanto, para
fazer upload de um objeto, o pre-signed URL deve ter sido criado por alguém que tenha permissão para
executar a operação na qual o pre-signed URL está baseado.

Gerar um pre-signed URL para upload de objetos

É possível gerar uma URL pré-assinada de forma programática usando o AWS SDK para Java, .NET,
Ruby, PHP, Node.js e Python.

Se você estiver usando o Microsoft Visual Studio, também poderá usar o AWS Explorer para gerar um
pre-signed URL de objeto sem gravar nenhum código. Qualquer pessoa que receber um pre-signed URL
válido poderá fazer upload de um objeto programaticamente. Para obter mais informações, consulte Usar
o Amazon S3 no AWS Explorer. Para obter instruções sobre como instalar o AWS Explorer, consulte
Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

É possível usar o AWS SDK para gerar um URL pré-assinado que você, ou qualquer pessoa a quem você
der o URL, poderá usar para fazer upload de um objeto no Amazon S3. Quando você usar o URL para
fazer upload de um objeto, o Amazon S3 cria o objeto no bucket especificado. Se um objeto com a mesma
chave especificada no pre-signed URL já existir no bucket, o Amazon S3 substituirá o objeto existente pelo
objeto obtido por upload.

Exemplos
Os exemplos a seguir mostram como fazer upload de objetos usando URLs pré-assinados.

.NET

O exemplo de C# a seguir mostra como usar o AWS SDK para .NET para fazer upload de um objeto
para um bucket do S3 usando um pre-signed URL.

Esse exemplo gera um pre-signed URL para um objeto específico e o utiliza para fazer upload de um
arquivo. Para obter informações sobre a compatibilidade do exemplo com uma versão específica do
AWS SDK para .NET e instruções sobre como criar e testar um exemplo funcional, consulte Executar
os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Net;

namespace Amazon.DocSamples.S3
{

Versão da API 2006-03-01


163
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

class UploadObjectUsingPresignedURLTest
{
private const string bucketName = "*** provide bucket name ***";
private const string objectKey = "*** provide the name for the uploaded object
***";
private const string filePath = "*** provide the full path name of the file
to upload ***";
// Specify how long the presigned URL lasts, in hours
private const double timeoutDuration = 12;
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
var url = GeneratePreSignedURL(timeoutDuration);
UploadObject(url);
}

private static void UploadObject(string url)


{
HttpWebRequest httpRequest = WebRequest.Create(url) as HttpWebRequest;
httpRequest.Method = "PUT";
using (Stream dataStream = httpRequest.GetRequestStream())
{
var buffer = new byte[8000];
using (FileStream fileStream = new FileStream(filePath, FileMode.Open,
FileAccess.Read))
{
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
dataStream.Write(buffer, 0, bytesRead);
}
}
}
HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;
}

private static string GeneratePreSignedURL(double duration)


{
var request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = objectKey,
Verb = HttpVerb.PUT,
Expires = DateTime.UtcNow.AddHours(duration)
};

string url = s3Client.GetPreSignedURL(request);


return url;
}
}
}

Java

Para concluir um upload com êxito, você deve fazer o seguinte:

• Especificar o verbo HTTP PUT ao criar os objetos GeneratePresignedUrlRequest e


HttpURLConnection.
• Interagir com o objeto HttpURLConnection de alguma forma após concluir o upload. O exemplo a
seguir faz isso usando o objeto HttpURLConnection para verificar o código de resposta HTTP.

Versão da API 2006-03-01


164
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

Example
Esse exemplo gera um pre-signed URL e o usa para fazer upload dos dados de amostra como um
objeto. Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de
código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.HttpMethod;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.S3Object;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class GeneratePresignedUrlAndUploadObject {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String objectKey = "*** Object key ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Set the pre-signed URL to expire after one hour.


java.util.Date expiration = new java.util.Date();
long expTimeMillis = expiration.getTime();
expTimeMillis += 1000 * 60 * 60;
expiration.setTime(expTimeMillis);

// Generate the pre-signed URL.


System.out.println("Generating pre-signed URL.");
GeneratePresignedUrlRequest generatePresignedUrlRequest = new
GeneratePresignedUrlRequest(bucketName, objectKey)
.withMethod(HttpMethod.PUT)
.withExpiration(expiration);
URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

// Create the connection and use it to upload the new object using the pre-
signed URL.
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
OutputStreamWriter out = new
OutputStreamWriter(connection.getOutputStream());
out.write("This text uploaded as an object via presigned URL.");
out.close();

// Check the HTTP response code. To complete the upload and make the object
available,
// you must interact with the connection object in some way.
connection.getResponseCode();
System.out.println("HTTP response code: " + connection.getResponseCode());

Versão da API 2006-03-01


165
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

// Check to make sure that the object was uploaded successfully.


S3Object object = s3Client.getObject(bucketName, objectKey);
System.out.println("Object " + object.getKey() + " created in bucket " +
object.getBucketName());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Python

Gere uma URL pré-assinada para compartilhar um objeto usando o SDK para Python (Boto3). Por
exemplo, use um cliente Boto3 e a função generate_presigned_url para gerar uma URL pré-
assinada que coloca um objeto.

import boto3
url = boto3.client('s3').generate_presigned_url(
ClientMethod='get_object',
Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'},
ExpiresIn=3600)

Para obter um exemplo completo que mostra como gerar URLs pré-assinadas e como usar o pacote
de Solicitações para carregar e baixar objetos, consulte o exemplo de URL pré-assinada do PHP no
GitHub. Para obter mais informações sobre como usar o SDK para Python (Boto3) para gerar uma
URL pré-assinada, consulte Python na Referência do AWS SDK para API de PHP.
Ruby

As tarefas a seguir orientam como usar um script do Ruby para fazer upload de um objeto usando um
pre-signed URL para SDK para Ruby – Versão 3.

Fazer upload de objetos com o SDK para Ruby – versão 3

1 Crie uma instância da classe Aws::S3::Resource.

2 Forneça um nome de bucket e uma chave de objeto chamando os métodos #bucket[]


e #object[] da instância da classe Aws::S3::Resource.

Gere um pre-signed URL criando uma instância da classe URI e use-a para analisar o
método .presigned_url da instância da classe Aws::S3::Resource. Você deve
especificar :put como um argumento para .presigned_url e especificar PUT como
Net::HTTP::Session#send_request se quiser fazer upload de um objeto.

3 Qualquer pessoa com o pre-signed URL pode fazer upload de um objeto.

O upload cria um objeto ou substitui qualquer objeto existente pela mesma chave
especificada no pre-signed URL.

O exemplo de código do Ruby a seguir demonstra as tarefas precedentes para o SDK para Ruby –
Versão 3.

Versão da API 2006-03-01


166
Amazon Simple Storage Service Guia do usuário
Fazer upload de objetos usando pre-signed URLs

Example

require 'aws-sdk-s3'
require 'net/http'

# Uploads an object to a bucket in Amazon Simple Storage Service (Amazon S3)


# by using a presigned URL.
#
# Prerequisites:
#
# - An S3 bucket.
# - An object in the bucket to upload content to.
#
# @param s3_client [Aws::S3::Resource] An initialized S3 resource.
# @param bucket_name [String] The name of the bucket.
# @param object_key [String] The name of the object.
# @param object_content [String] The content to upload to the object.
# @param http_client [Net::HTTP] An initialized HTTP client.
# This is especially useful for testing with mock HTTP clients.
# If not specified, a default HTTP client is created.
# @return [Boolean] true if the object was uploaded; otherwise, false.
# @example
# exit 1 unless object_uploaded_to_presigned_url?(
# Aws::S3::Resource.new(region: 'us-east-1'),
# 'doc-example-bucket',
# 'my-file.txt',
# 'This is the content of my-file.txt'
# )
def object_uploaded_to_presigned_url?(
s3_resource,
bucket_name,
object_key,
object_content,
http_client = nil
)
object = s3_resource.bucket(bucket_name).object(object_key)
url = URI.parse(object.presigned_url(:put))

if http_client.nil?
Net::HTTP.start(url.host) do |http|
http.send_request(
'PUT',
url.request_uri,
object_content,
'content-type' => ''
)
end
else
http_client.start(url.host) do |http|
http.send_request(
'PUT',
url.request_uri,
object_content,
'content-type' => ''
)
end
end
content = object.get.body
puts "The presigned URL for the object '#{object_key}' in the bucket " \
"'#{bucket_name}' is:\n\n"
puts url
puts "\nUsing this presigned URL to get the content that " \
"was just uploaded to this object, the object\'s content is:\n\n"
puts content.read
return true

Versão da API 2006-03-01


167
Amazon Simple Storage Service Guia do usuário
Transformar objetos

rescue StandardError => e


puts "Error uploading to presigned URL: #{e.message}"
return false
end

Transformar objetos com o S3 Object Lambda


Com o S3 Object Lambda, você pode adicionar seu próprio código às solicitações GET do Amazon S3
para modificar e processar dados conforme eles são retornados para uma aplicação. Você pode usar
o código personalizado para modificar os dados retornados por solicitações S3 GET padrão para filtrar
linhas, redimensionar imagens dinamicamente, editar dados confidenciais e muito mais. Desenvolvido
pelas funções do AWS Lambda, seu código é executado em uma infraestrutura totalmente gerenciada pela
AWS, eliminando a necessidade de criar e armazenar cópias derivadas de seus dados ou de executar
proxies, tudo sem a necessidade de alterações nas aplicações.

O S3 Object Lambda usa funções do AWS Lambda para processar automaticamente a saída de uma
solicitação GET padrão do S3. O AWS Lambda é um serviço de computação sem servidor que executa
código definido pelo cliente sem exigir o gerenciamento de recursos de computação subjacentes. Você
pode criar e executar suas próprias funções do Lambda personalizadas, adaptando a transformação de
dados para seus casos de uso específicos. Você pode configurar uma função do Lambda e anexá-la a
um endpoint de serviço S3 Object Lambda e o S3 chamará automaticamente sua função. Em seguida,
qualquer dado recuperado usando uma solicitação S3 GET por meio do endpoint do S3 Object Lambda
retornará um resultado transformado de volta à aplicação. Todas as outras solicitações serão processadas
como normais, conforme ilustrado no diagrama a seguir.

Versão da API 2006-03-01


168
Amazon Simple Storage Service Guia do usuário
Transformar objetos

Os tópicos nesta seção descrevem como trabalhar com pontos de acesso do Object Lambda.

Tópicos
• Criar pontos de acesso do Object Lambda (p. 170)
• Configurando políticas do IAM para pontos de acesso do Object Lambda (p. 173)
• Escrever e depurar funções do Lambda para pontos de acesso do S3 Object Lambda (p. 175)
• Usar funções do Lambda criadas pela AWS (p. 186)
• Práticas recomendadas e diretrizes para o S3 Object Lambda (p. 187)
• Considerações de segurança para pontos de acesso do S3 Object Lambda (p. 189)

Versão da API 2006-03-01


169
Amazon Simple Storage Service Guia do usuário
Criar pontos de acesso do Object Lambda

Criar pontos de acesso do Object Lambda


Um ponto de acesso do Object Lambda está associado a exatamente um ponto de acesso padrão e,
portanto, a um bucket do Amazon S3. Para criar um ponto de acesso do Object Lambda, você precisa dos
seguintes recursos:

• Uma política do IAM


• Um bucket do Amazon S3
• Um ponto de acesso do S3 padrão
• Uma função do AWS Lambda

As seções a seguir descrevem como criar um ponto de acesso do Object Lambda usando o Console de
Gerenciamento da AWS e a CLI da AWS.

Criar um ponto de acesso do Object Lambda


Para obter informações sobre como criar pontos de acesso usando a API REST, consulte
CreateAccessPoint na Referência da API do Amazon Simple Storage Service.

Uso do console do S3

Para criar um ponto de acesso do Object Lambda usando o console

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação no lado esquerdo do console, escolha Object Lambda access points (Pontos
de acesso do Object Lambda).
3. Na página Object Lambda access points (Pontos de acesso do Objeto Lambda), escolha Create
Object Lambda access point (Criar ponto de acesso do Object Lambda).
4. Em Object Lambda access point name (Nome do ponto de acesso do Object Lambda), insira o nome
que deseja usar para o ponto de acesso.

Tal como acontece com pontos de acesso padrão, existem regras para nomeação. Para obter mais
informações, consulte Regras para nomear pontos de acesso do Amazon S3 (p. 485).
5. Para Supporting Access Point (Ponto de acesso de suporte), insira ou navegue até o ponto de acesso
padrão que você deseja usar. O ponto de acesso deve estar na mesma região da AWS que os objetos
que você deseja transformar.
6. Para Invoke Lambda function (Invocar uma função do Lambda), você pode optar por usar uma função
pré-criada ou inserir o nome do recurso da Amazon (ARN) de uma função do AWS Lambda em sua
conta da AWS.

Para obter mais informações sobre funções pré-construídas, consulte Usar funções do Lambda
criadas pela AWS (p. 186).
7. (Opcional) Para Range and part number (Intervalo e número de peça), você deve habilitar esta opção
a fim processar solicitações GET com cabeçalhos de intervalo e número de peça. Selecionar essa
opção confirma que sua função do Lambda é capaz de reconhecer e processar essas solicitações.
Para obter mais informações sobre cabeçalhos de intervalo e números de peça, consulte Trabalhar
com cabeçalhos Range e partNumber (p. 183).
8. (Opcional) Em Payload (Carga útil), adicione um texto JSON para fornecer informações adicionais à
sua função do Lambda. Uma carga útil é um JSON opcional que você pode fornecer à sua função do
Lambda como entrada. Você pode configurar cargas úteis com parâmetros diferentes para pontos de
acesso do Object Lambda diferentes que invocam a mesma função do Lambda, estendendo assim a
flexibilidade da sua função do Lambda.

Versão da API 2006-03-01


170
Amazon Simple Storage Service Guia do usuário
Criar pontos de acesso do Object Lambda

9. (Opcional) Para Request metrics (Métricas de solicitação), escolha Enable (Habilitar) ou Disable
(Desabilitar) para adicionar o monitoramento do Amazon S3 ao seu ponto de acesso do Object
Lambda. As métricas de solicitação são cobradas na taxa padrão do CloudWatch.
10. (Opcional) Em Object Lambda access point policy (Política de ponto de acesso do Object Lambda),
defina uma política de recursos. Esta política de recurso concede permissão GetObject para o ponto
de acesso do Object Lambda especificado.
11. Escolha Create Object Lambda access point (Criar ponto de acesso do Object Lambda).

Usar a CLI da AWS

O exemplo a seguir cria um ponto de acesso do Object Lambda nomeado my-object-lambda-ap para o
bucket DOC-EXAMPLE-BUCKET1 na conta 111122223333. Este exemplo supõe que um ponto de acesso
padrão nomeado example-ap já foi criado. Para obter informações sobre como criar um ponto de acesso
padrão, consulte the section called “Criar pontos de acesso” (p. 485).

Para criar um ponto de acesso do Object Lambda usando a CLI da AWS

Este exemplo usa a função pré-construída da AWS compress. Para exemplos de funções do AWS
Lambda, consulte the section called “Usar funções criadas pela AWS” (p. 186).

1. Crie um bucket. Neste exemplo, usaremos DOC-EXAMPLE-BUCKET1. Para obter mais informações
sobre a criação de buckets, consulte the section called “Criação de um bucket” (p. 31).
2. Crie um ponto de acesso padrão e anexe-o ao seu bucket. Neste exemplo, usaremos example-ap.
Para obter informações sobre a criação de pontos de acesso padrão, consulte the section called “Criar
pontos de acesso” (p. 485)
3. Crie uma função do Lambda em sua conta que você gostaria de usar para transformar seu objeto
S3. Consulte Usar o Lambda com a CLI da AWS no Guia do desenvolvedor do AWS Lambda. Você
também pode usar uma função do Lambda pré-criada pela AWS.
4. Crie um arquivo de configuração JSON denominado my-olap-configuration.json. Nesta
configuração, forneça o ponto de acesso de suporte e o ARN da função do Lambda criados nas
etapas anteriores.

Example

{
"SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-
ap",
"TransformationConfigurations": [{
"Actions" : ["GetObject"],
"ContentTransformation" : {
"AwsLambda": {
"FunctionPayload" : "{\"compressionType\":\"gzip\"}",
"FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/
compress"
}
}
}]
}

5. Execute create-access-point-for-object-lambda para criar seu ponto de acesso do Object


Lambda.

aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name


my-object-lambda-ap --configuration file://my-olap-configuration.json

6. (Opcional) Crie um arquivo de política JSON chamado my-olap-policy.json.

Versão da API 2006-03-01


171
Amazon Simple Storage Service Guia do usuário
Criar pontos de acesso do Object Lambda

Essa política de recursos concede permissão GetObject para a conta 444455556666 ao ponto de
acesso do Object Lambda especificado.

Example

{
"Version" : "2008-10-17",
"Statement":[{
"Sid": "Grant account 444455556666 GetObject access",
"Effect":"Allow",
"Principal" : {
"AWS": "arn:aws:iam::444455556666:root"
}
}
]
}

7. (Opcional) Execute put-access-point-policy-for-object-lambda para definir sua política de


recursos.

aws s3control put-access-point-policy-for-object-lambda --account-id 123456789012 --


name my-object-lambda-ap --policy file://my-olap-policy.json

8. (Opcional) Especifique uma carga útil.

Uma carga útil é um JSON opcional que você pode fornecer à sua função do AWS Lambda como
entrada. Você pode configurar cargas úteis com parâmetros diferentes para pontos de acesso do
Object Lambda diferentes que invocam a mesma função do Lambda, estendendo assim a flexibilidade
da sua função do Lambda.

A configuração do ponto de acesso do Object Lambda a seguir mostra uma carga útil com dois
parâmetros.

{
"SupportingAccessPoint": "AccessPointArn",
"CloudWatchMetricsEnabled": false,
"TransformationConfigurations": [{
"Actions": ["GetObject"],
"ContentTransformation": {
"AwsLambda": {
"FunctionArn": "FunctionArn",
"FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}"
}
}
}]
}

A configuração do ponto de acesso do Object Lambda a seguir mostra uma carga útil com um
parâmetro, intervalo e número de peça habilitados.

{
"SupportingAccessPoint":"AccessPointArn",
"CloudWatchMetricsEnabled": false,
"AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber"],
"TransformationConfigurations": [{
"Actions": ["GetObject"],
"ContentTransformation": {
"AwsLambda": {
"FunctionArn":"FunctionArn",

Versão da API 2006-03-01


172
Amazon Simple Storage Service Guia do usuário
Configurar políticas do IAM

"FunctionPayload": "{\"compression-amount\": \"5\"}"


}
}
}]
}

Important

Ao usar pontos de acesso do Object Lambda, a carga útil não deve conter nenhuma
informação confidencial.

Configurando políticas do IAM para pontos de acesso


do Object Lambda
Os pontos de acesso S3 oferecem suporte às políticas de recursos do AWS Identity and Access
Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou outras
condições.

No caso de uma única conta da AWS, os seguintes quatro recursos devem ter permissões concedidas
para trabalhar com pontos de acesso do Object Lambda:

• Usuário ou função do IAM


• O bucket e o ponto de acesso padrão associado
• O ponto de acesso do Object Lambda
• A função do AWS Lambda

Esses exemplos assumem que você tem os seguintes recursos:

• Um bucket do Amazon S3 com permissões delegadas ao seu ponto de acesso. Para obter mais
informações, consulte Delegar controle de acesso a pontos de acesso (p. 482).

O bucket tem o seguinte nome do recurso da Amazon (ARN):

arn:aws:s3:::DOC-EXAMPLE-BUCKET1
• Um ponto de acesso padrão do Amazon S3 neste bucket com o seguinte ARN:

arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point
• Um ponto de acesso do Object Lambda com o seguinte ARN:

arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-
ap
• Uma função do AWS Lambda com o seguinte ARN:

arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction

A política do IAM a seguir concede permissão de usuário para interagir com esses recursos.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowLambdaInvocation",
"Action": [
"lambda:InvokeFunction"

Versão da API 2006-03-01


173
Amazon Simple Storage Service Guia do usuário
Configurar políticas do IAM

],
"Effect": "Allow",
"Resource": "arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:CalledVia": [
"s3-object-lambda.amazonaws.com"
]
}
}
},
{
"Sid": "AllowStandardAccessPointAccess",
"Action": [
"s3: Get*",
"s3: List*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:CalledVia": [
"s3-object-lambda.amazonaws.com"
]
}
}
},
{
"Sid": "AllowObjectLambdaAccess",
"Action": [
"s3-object-lambda:Get*",
"s3-object-lambda:List*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-
lambda-ap"
}
]
}

Sua função do AWS Lambda precisa de permissão para chamar de volta ao ponto de acesso do Object
Lambda com o WriteGetObjectResponse. Adicione a instrução a seguir à função Execution usada
pela função do Lambda.

{
{
"Sid": "AllowObjectLambdaAccess",
"Action": ["s3-object-lambda:WriteGetObjectResponse"],
"Effect": "Allow",
"Resource": "*"
}

Usar chaves de contexto com pontos de acesso do Object


Lambda
Com o S3 Object Lambda, as solicitações GET invocarão automaticamente funções do Lambda e todas
as outras solicitações serão encaminhadas para o S3. O S3 Object Lambda avaliará chaves de contexto,
como s3-object-lambda:TlsVersion ou s3-object-lambda:AuthType relacionadas à conexão
ou assinatura da solicitação. Todas as outras chaves de contexto, como s3:prefix, são avaliadas pelo
S3.

Versão da API 2006-03-01


174
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

Escrever e depurar funções do Lambda para pontos


de acesso do S3 Object Lambda
Esta seção detalha sobre como escrever e depurar funções do Lambda para uso com pontos de acesso do
Object Lambda.

Tópicos
• Trabalhar com WriteGetObjectResponse (p. 175)
• Depuração do S3 Object Lambda (p. 183)
• Trabalhar com cabeçalhos Range e partNumber (p. 183)
• Formato e uso de contexto de evento (p. 184)

Trabalhar com WriteGetObjectResponse


O S3 Object Lambda expõe uma nova API do Amazon S3, WriteGetObjectResponse, que permite que
a função do Lambda forneça dados personalizados e cabeçalhos de resposta para o autor da chamada
GetObject. WriteGetObjectResponse oferece ao autor do Lambda controle extensivo sobre o código de
status, cabeçalhos de resposta e corpo de resposta com base em suas necessidades de processamento.
Você pode usar WriteGetObjectResponse para responder com todo o objeto transformado, partes do
objeto transformado ou outras respostas com base no contexto da sua aplicação. A seção a seguir mostra
exemplos exclusivos do uso de WriteGetObjectResponse.

• Exemplo 1: responda com um 403 Proibido


• Exemplo 2:responda com uma imagem transformada
• Exemplo 3: Transmitir conteúdo compactado

Exemplo 1:

Você pode usar WriteGetObjectResponse para responder com um 403 Proibido com base no conteúdo do
objeto.

Java

package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.WriteGetObjectResponseRequest;

import java.io.ByteArrayInputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example1 {

public void handleRequest(S3ObjectLambdaEvent event, Context context) throws


Exception {
AmazonS3 s3Client = AmazonS3Client.builder().build();

// We're checking to see if the request contains all of the information we


need.

Versão da API 2006-03-01


175
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

// If it does not, we send a 4XX response and a custom error code and message.
// If we're happy with the request, we retrieve the object from S3 and stream
it
// to the client unchanged.
var tokenIsNotPresent = !
event.getUserRequest().getHeaders().containsKey("requiredToken");
if (tokenIsNotPresent) {
s3Client.writeGetObjectResponse(new WriteGetObjectResponseRequest()
.withRequestRoute(event.outputRoute())
.withRequestToken(event.outputToken())
.withStatusCode(403)
.withContentLength(0L).withInputStream(new ByteArrayInputStream(new
byte[0]))
.withErrorCode("MissingRequiredToken")
.withErrorMessage("The required token was not present in the
request."));
return;
}

// Prepare the presigned URL for use and make the request to S3.
HttpClient httpClient = HttpClient.newBuilder().build();
var presignedResponse = httpClient.send(
HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
HttpResponse.BodyHandlers.ofInputStream());

// Stream the original bytes back to the caller.


s3Client.writeGetObjectResponse(new WriteGetObjectResponseRequest()
.withRequestRoute(event.outputRoute())
.withRequestToken(event.outputToken())
.withInputStream(presignedResponse.body()));
}
}

Python

import boto3
import requests

def handler(event, context):


s3 = boto3.client('s3')

"""
Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
should be delivered and a presigned URL in `inputS3Url` where we can download the
requested object from.
The `userRequest` object has information related to the user which made this
`GetObject` request to S3OL.
"""
get_context = event["getObjectContext"]
user_request_headers = event["userRequest"]["headers"]

route = get_context["outputRoute"]
token = get_context["outputToken"]
s3_url = get_context["inputS3Url"]

# Check for the presence of a `CustomHeader` header and deny or allow based on that
header
is_token_present = "SuperSecretToken" in user_request_headers

if is_token_present:
# If the user presented our custom `SuperSecretToken` header we send the
requested object back to the user.
response = requests.get(s3_url)

Versão da API 2006-03-01


176
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

s3.write_get_object_response(RequestRoute=route, RequestToken=token,
Body=response.content)
else:
# If the token is not present we send an error back to the user.
s3.write_get_object_response(RequestRoute=route, RequestToken=token,
StatusCode=403,
ErrorCode="NoSuperSecretTokenFound", ErrorMessage="The request was not secret
enough.")

# Gracefully exit the Lambda function


return { 'status_code': 200 }

NodeJS

const { S3 } = require('aws-sdk');
const axios = require('axios').default;

exports.handler = async (event) => {


const s3 = new S3();

// Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
// should be delivered and a presigned URL in `inputS3Url` where we can download
the requested object from.
// The `userRequest` object has information related to the user which made this
`GetObject` request to S3OL.
const { userRequest, getObjectContext } = event;
const { outputRoute, outputToken, inputS3Url } = getObjectContext;

// Check for the presence of a `CustomHeader` header and deny or allow based on
that header
const isTokenPresent = Object
.keys(userRequest.headers)
.includes("SuperSecretToken");

if (!isTokenPresent) {
// If the token is not present we send an error back to the user. Notice the
`await` infront of the request as
// we want to wait for this request to finish sending before moving on.
await s3.writeGetObjectResponse({
RequestRoute: outputRoute,
RequestToken: outputToken,
StatusCode: 403,
ErrorCode: "NoSuperSecretTokenFound",
ErrorMessage: "The request was not secret enough.",
}).promise();
} else {
// If the user presented our custom `SuperSecretToken` header we send the
requested object back to the user.
// Again notice the presence of `await`.
const presignedResponse = await axios.get(inputS3Url);
await s3.writeGetObjectResponse({
RequestRoute: outputRoute,
RequestToken: outputToken,
Body: presignedResponse.data,
}).promise();
}

// Gracefully exit the Lambda function


return { statusCode: 200 };
}

Versão da API 2006-03-01


177
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

Exemplo 2:

Ao executar uma transformação de imagem, você pode achar que você precisa de todos os bytes do
objeto de origem antes de começar a processá-los. Consequentemente, seu WriteGetObjectResponse
retornará todo o objeto à aplicação solicitante de uma só vez.

Java

package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.WriteGetObjectResponseRequest;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example2 {

private static final int HEIGHT = 250;


private static final int WIDTH = 250;

public void handleRequest(S3ObjectLambdaEvent event, Context context) throws


Exception {
AmazonS3 s3Client = AmazonS3Client.builder().build();
HttpClient httpClient = HttpClient.newBuilder().build();

// Prepare the presigned URL for use and make the request to S3.
var presignedResponse = httpClient.send(
HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
HttpResponse.BodyHandlers.ofInputStream());

// The entire image is loaded into memory here so that we can resize it.
// Once the resizing is completed, we write the bytes into the body
// of the WriteGetObjectResponse.
var originalImage = ImageIO.read(presignedResponse.body());
var resizingImage = originalImage.getScaledInstance(WIDTH, HEIGHT,
Image.SCALE_DEFAULT);
var resizedImage = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB);
resizedImage.createGraphics().drawImage(resizingImage, 0, 0, WIDTH, HEIGHT,
null);

var baos = new ByteArrayOutputStream();


ImageIO.write(resizedImage, "png", baos);

// Stream the bytes back to the caller.


s3Client.writeGetObjectResponse(new WriteGetObjectResponseRequest()
.withRequestRoute(event.outputRoute())
.withRequestToken(event.outputToken())
.withInputStream(new ByteArrayInputStream(baos.toByteArray())));
}
}

Versão da API 2006-03-01


178
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

Python

import boto3
import requests
import io
from PIL import Image

def handler(event, context):


"""
Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
should be delivered and a presigned URL in `inputS3Url` where we can download the
requested object from.
The `userRequest` object has information related to the user which made this
`GetObject` request to S3OL.
"""
get_context = event["getObjectContext"]
route = get_context["outputRoute"]
token = get_context["outputToken"]
s3_url = get_context["inputS3Url"]

"""
In this case we're resizing `.png` images which are stored in S3 and are accessible
via the presigned url
`inputS3Url`.
"""
image_request = requests.get(s3_url)
image = Image.open(io.BytesIO(image_request.content))
image.thumbnail((256,256), Image.ANTIALIAS)

transformed = io.BytesIO()
image.save(transformed, "png")

# Sending the resized image back to the client


s3 = boto3.client('s3')
s3.write_get_object_response(Body=transformed.getvalue(), RequestRoute=route,
RequestToken=token)

# Gracefully exit the Lambda function


return { 'status_code': 200 }

NodeJS

const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const sharp = require('sharp');

exports.handler = async (event) => {


const s3 = new S3();

// Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
// should be delivered and a presigned URL in `inputS3Url` where we can download
the requested object from
const { getObjectContext } = event;
const { outputRoute, outputToken, inputS3Url } = getObjectContext;

// In this case we're resizing `.png` images which are stored in S3 and are
accessible via the presigned url
// `inputS3Url`.
const { data } = await axios.get(inputS3Url, { responseType: 'arraybuffer' });

// Resizing the image

Versão da API 2006-03-01


179
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

const resized = await sharp(data)


.resize({ height: 256, height: 256 })
.toBuffer();

// Sending the resized image back to the client


await s3.writeGetObjectResponse({
RequestRoute: outputRoute,
RequestToken: outputToken,
Body: resized,
}).promise();

// Gracefully exit the Lambda function


return { statusCode: 200 };
}

Exemplo 3:

Ao comprimir objetos, os dados compactados são produzidos de forma incremental. Consequentemente,


seu WriteGetObjectResponse pode ser usado para retornar os dados compactados assim que estiverem
prontos. Como mostrado neste exemplo, não é necessário saber o tamanho da transformação concluída.

Java

package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.WriteGetObjectResponseRequest;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example3 {

public void handleRequest(S3ObjectLambdaEvent event, Context context) throws


Exception {
AmazonS3 s3Client = AmazonS3Client.builder().build();
HttpClient httpClient = HttpClient.newBuilder().build();

// Request the original object from S3.


var presignedResponse = httpClient.send(
HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
HttpResponse.BodyHandlers.ofInputStream());

// We're consuming the incoming response body from the presigned request,
// applying our transformation on that data and emitting the transformed bytes
// into the body of the WriteGetObjectResponse request as soon as they're
ready.
// This example compresses the data from S3, but any processing pertinent
// to your application can be performed here.
var bodyStream = new GZIPCompressingInputStream(presignedResponse.body());

// Stream the bytes back to the caller.


s3Client.writeGetObjectResponse(new WriteGetObjectResponseRequest()
.withRequestRoute(event.outputRoute())
.withRequestToken(event.outputToken())
.withInputStream(bodyStream));
}

Versão da API 2006-03-01


180
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

Python

import boto3
import requests
import zlib
from botocore.config import Config

"""
A helper class to work with content iterators. Takes an interator and compresses the
bytes that come from it. It
implements `read` and `__iter__` so the SDK can stream the response
"""
class Compress:
def __init__(self, content_iter):
self.content = content_iter
self.compressed_obj = zlib.compressobj()

def read(self, _size):


for data in self.__iter__()
return data

def __iter__(self):
while True:
data = next(self.content)
chunk = self.compressed_obj.compress(data)
if not chunk:
break

yield chunk

yield self.compressed_obj.flush()

def handler(event, context):


"""
Setting the `payload_signing_enabled` property to False will allow us to send a
streamed response back to the client
in this scenario a streamed response means that the bytes are not buffered into
memory as we're compressing them
but are sent straight to the user
"""
my_config = Config(
region_name='eu-west-1',
signature_version='s3v4',
s3={
"payload_signing_enabled": False
}
)
s3 = boto3.client('s3', config=my_config)

"""
Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
should be delivered and a presigned URL in `inputS3Url` where we can download the
requested object from.
The `userRequest` object has information related to the user which made this
`GetObject` request to S3OL.
"""
get_context = event["getObjectContext"]
route = get_context["outputRoute"]

Versão da API 2006-03-01


181
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

token = get_context["outputToken"]
s3_url = get_context["inputS3Url"]

# Compress the `get` request stream


with requests.get(s3_url, stream=True) as r:
compressed = Compress(r.iter_content())

# Send the stream back to the client


s3.write_get_object_response(Body=compressed, RequestRoute=route,
RequestToken=token, ContentType="text/plain",
ContentEncoding="gzip")

# Gracefully exit the Lambda function


return {'status_code': 200}

NodeJS

const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const zlib = require('zlib');

exports.handler = async (event) => {


const s3 = new S3();

// Retrieve the operation context object from event. This has info to where the
WriteGetObjectResponse request
// should be delivered and a presigned URL in `inputS3Url` where we can download
the requested object from
const { getObjectContext } = event;
const { outputRoute, outputToken, inputS3Url } = getObjectContext;

// Let's download the object from S3 and process it as a stream as it might be a


huge object and we don't want to
// buffer it in memory. Notice the `await` as we want to wait for
`writeGetObjectResponse` to complete before we can
// exit the Lambda function
await axios({
method: 'GET',
url: inputS3Url,
responseType: 'stream',
}).then(
// Gzip the stream
response => response.data.pipe(zlib.createGzip())
).then(
// Finally send the gzip-ed stream back to the client
stream => s3.writeGetObjectResponse({
RequestRoute: outputRoute,
RequestToken: outputToken,
Body: stream,
ContentType: "text/plain",
ContentEncoding: "gzip",
}).promise()
);

// Gracefully exit the Lambda function


return { statusCode: 200 };
}

Note

Embora o S3 Object Lambda permita enviar uma resposta completa ao autor da chamada
WriteGetObjectResponse em até 60 segundos, a quantidade real de tempo disponível pode ser

Versão da API 2006-03-01


182
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

menor, por exemplo, se o tempo limite da função do Lambda for inferior a 60 segundos. Em outros
casos, o autor da chamada pode ter tempos limite mais rigorosos.

A chamada WriteGetObjectResponse deve ser feita para que o autor da chamada original receba uma
resposta que não seja 500. Se a função do Lambda retornar, excepcionalmente ou de outra forma,
antes que a API do WriteGetObjectResponse seja chamada, o autor da chamada original receberá uma
resposta 500. Exceções lançadas durante o tempo necessário para concluir a resposta resultarão em
respostas truncadas ao autor da chamada. Se o Lambda receber uma resposta 200 da chamada da API
do WriteGetObjectResponse, o autor da chamada original enviou a solicitação completa. A resposta do
Lambda, excepcional ou não, é ignorada pelo S3 Object Lambda.

Ao chamar essa API, o S3 requer a rota e o token de solicitação do contexto do evento. Para obter mais
informações, consulte Formato e uso de contexto de evento (p. 184).

Esses parâmetros são necessários para conectar o WriteGetObjectResult com o autor da chamada
original. Embora seja sempre apropriado repetir respostas 500, observe que o token de solicitação é um
token de uso único e as tentativas subsequentes de usá-lo podem resultar em respostas 400 Bad Request.
Embora a chamada para WriteGetObjectResponse com os tokens de rota e solicitação não precise ser
feita a partir do Lambda invocado, ela precisa ser feita por uma identidade na mesma conta e deve ser
concluída antes que o Lambda termine a execução.

Depuração do S3 Object Lambda


As solicitações de objeto GET para os pontos de acesso do S3 Object Lambda podem resultar em novas
respostas de erro quando algo der errado com a chamada ou execução do Lambda. Esses erros seguem
o mesmo formato que os erros padrão do S3. Para obter informações sobre erros do S3 Object Lambda,
consulte Lista de códigos de erro do S3 Object Lambda na Referência da API do Amazon Simple Storage
Service.

Para obter mais informações sobre a depuração geral da função do Lambda, consulte Monitoramento e
solução de problemas de aplicações do Lambda no Guia do desenvolvedor do AWS Lambda.

Para obter informações sobre erros padrão do Amazon S3, consulte Respostas de erro na Referência da
API do Amazon Simple Storage Service.

Você pode habilitar métricas de solicitação no CloudWatch para seus pontos de acesso do Object Lambda.
Essas métricas podem ser usadas para monitorar a performance operacional do seu ponto de acesso.

Os eventos de dados do CloudTrail podem ser ativados para obter registros em log mais granulares sobre
solicitações feitas aos seus pontos de acesso do Object Lambda. Para obter mais informações, consulte
Registrar em log eventos de dados para trilhas no Guia do usuário do AWS CloudTrail.

Trabalhar com cabeçalhos Range e partNumber


Ao trabalhar com objetos grandes, você pode usar o cabeçalho Range HTTP para baixar um byte-range
especificado de um objeto buscando apenas a parte especificada. É possível usar conexões simultâneas
ao Amazon S3 para buscar diferentes escalas de bytes no mesmo objeto. Você também pode usar
partNumber (inteiro entre 1 e 10.000) que efetivamente executa uma solicitação GET “intervalada” para a
parte especificada do objeto. Para obter mais informações, consulte Sintaxe de solicitação GetObject na
Referência da API do Amazon Simple Storage Service.

Ao receber uma solicitação GET, o S3 Object Lambda invoca sua função do Lambda especificada
primeiro, portanto, se sua solicitação GET contiver parâmetros de intervalo ou número de peça, você
deve garantir que sua função do Lambda esteja equipada para reconhecer e gerenciar esses parâmetros.
Como pode haver várias entidades conectadas em tal configuração (solicitando clientes e serviços como
Lambda, S3, outros), é aconselhável que todas as entidades envolvidas interpretem o intervalo solicitado
(ou partNumber) de forma uniforme. Isso garante que os intervalos que a aplicação está esperando
correspondam aos intervalos que a função do Lambda está processando. Ao criar uma função para lidar
com solicitações com cabeçalhos de intervalo, teste todas as combinações de tamanhos de resposta,
tamanhos de objetos originais e tamanhos de intervalo de solicitações que sua aplicação planeja usar.

Versão da API 2006-03-01


183
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

Por padrão, os pontos de acesso do S3 Object Lambda responderão com um 501 a qualquer solicitação
GetObject que contenha um parâmetro de intervalo ou número de peça, seja nos cabeçalhos ou
parâmetros de consulta. Você pode confirmar que sua função do Lambda está preparada para lidar com
solicitações de intervalo ou parte atualizando sua configuração de ponto de acesso do Object Lambda por
meio do Console de Gerenciamento da AWS ou da CLI da AWS.

O exemplo de código a seguir demonstra como recuperar o cabeçalho Range da solicitação GET e
adicioná-lo ao presignedURL que o Lambda pode usar para recuperar o intervalo solicitado do S3.

private HttpRequest.Builder applyRangeHeader(ObjectLambdaEvent event, HttpRequest.Builder


presignedRequest) {
var header = event.getUserRequest().getHeaders().entrySet().stream()
.filter(e -> e.getKey().toLowerCase(Locale.ROOT).equals("range"))
.findFirst();

// Add check in the query string itself.


header.ifPresent(entry -> presignedRequest.header(entry.getKey(), entry.getValue()));
return presignedRequest;
}

As solicitações de intervalo para o S3 podem ser feitas usando cabeçalhos ou parâmetros de consulta.
Se a solicitação original usou o cabeçalho Range, ele pode ser encontrado no contexto de evento em
userRequest.headers.Range. Se a solicitação original usou um parâmetro de consulta, então ele
estará presente em userRequest.url como “Range”. Em ambos os casos, o URL predefinido fornecido
não conterá o intervalo especificado e o cabeçalho do intervalo deve ser adicionado a ele para recuperar o
intervalo solicitado de S3.

As solicitações de parte para o S3 são feitas usando parâmetros de consulta. Se a solicitação original
incluiu um número de peça, ele pode ser encontrado nos parâmetros de consulta em userRequest.url
como “partNumber”. O URL predefinido fornecido não conterá o partNumber especificado.

Formato e uso de contexto de evento


O S3 Object Lambda fornece contexto sobre a solicitação que está sendo feita no evento passado para o
Lambda. A seguir é mostrado um exemplo de solicitação e descrições de campo.

{
"xAmzRequestId": "requestId",
"getObjectContext": {
"inputS3Url": "https://my-s3-ap-111122223333.s3-accesspoint.us-
east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>",
"outputRoute": "io-use1-001",
"outputToken": "OutputToken"
},
"configuration": {
"accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/
example-object-lambda-ap",
"supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-
ap",
"payload": "{}"
},
"userRequest": {
"url": "https://object-lambda-111122223333.s3-object-lambda.us-
east-1.amazonaws.com/example",
"headers": {
"Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
"Accept-Encoding": "identity",
"X-Amz-Content-SHA256": "e3b0c44298fc1example"
}
},

Versão da API 2006-03-01


184
Amazon Simple Storage Service Guia do usuário
Escrever funções do Lambda

"userIdentity": {
"type": "AssumedRole",
"principalId": "principalId",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
"accountId": "111122223333",
"accessKeyId": "accessKeyId",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "Wed Mar 10 23:41:52 UTC 2021"
},
"sessionIssuer": {
"type": "Role",
"principalId": "principalId",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "111122223333",
"userName": "Admin"
}
}
},
"protocolVersion": "1.00"
}

• xAmzRequestId ‐ O ID de solicitação do Amazon S3 para esta solicitação. Recomendamos que você


registre esse valor para ajudar na depuração.
• getObjectContext ‐ Os detalhes de entrada e saída para conexões com o Amazon S3 e o S3 Object
Lambda.
• inputS3Url ‐ Um URL predesignado que pode ser usado para buscar o objeto original do Amazon
S3. O URL é assinado usando a identidade do autor da chamada original, e suas permissões serão
aplicadas quando o URL for usado. Se houver cabeçalhos assinados no URL, a função do Lambda
deverá incluí-las na chamada para o Amazon S3, exceto para o Host.
• outputRoute ‐ Um token de roteamento que é adicionado ao URL do S3 Object Lambda quando a
função do Lambda chama WriteGetObjectResponse.
• outputToken ‐ Um token opaco usado pelo S3 Object Lambda para corresponder à chamada
WriteGetObjectResponse com o autor da chamada original.
• configuration ‐ Informações de configuração sobre o ponto de acesso do S3 Object Lambda.
• accessPointArn ‐ O nome do recurso da Amazon (ARN) do ponto de acesso do S3 Object Lambda
que recebeu essa solicitação.
• supportingAccessPointArn ‐ O ARN do ponto de acesso de suporte especificado na
configuração do ponto de acesso do S3 Object Lambda.
• payload ‐ Dados personalizados que são aplicados à configuração do ponto de acesso do S3
Object Lambda. O S3 Object Lambda trata isso como uma string opaca, portanto, pode precisar ser
decodificado antes de usar.
• userRequest ‐ Informações sobre a chamada original para o S3 Object Lambda.
• url ‐ O URL decodificado da solicitação, conforme recebido pelo S3 Object Lambda, excluindo
quaisquer parâmetros de consulta relacionados à autorização.
• headers ‐ Um mapa de string para strings contendo os cabeçalhos HTTP e seus valores da chamada
original, excluindo quaisquer cabeçalhos relacionados à autorização. Se o mesmo cabeçalho aparecer
várias vezes, seus valores serão combinados em uma lista delimitada por vírgulas. O caso dos
cabeçalhos originais é retido neste mapa.
• userIdentity ‐ Detalhes sobre a identidade que fez a chamada para o S3 Object Lambda. Para obter
mais informações, consulte Registrar em log eventos de dados para trilhas no Guia do usuário do AWS
CloudTrail.
• type ‐ O tipo de identidade.
• accountId ‐ A conta da AWS à qual a identidade pertence.
• userName ‐ O nome amigável da identidade que fez a ligação.

Versão da API 2006-03-01


185
Amazon Simple Storage Service Guia do usuário
Usar funções criadas pela AWS

• principalId ‐ O identificador exclusivo da identidade que fez a chamada.


• arn ‐ O ARN do principal que fez a chamada. A última seção do ARN contém o usuário ou função que
fez a chamada.
• sessionContext ‐ Se a solicitação foi feita com credenciais de segurança temporárias, este
elemento fornece informações sobre a sessão que foi criada para essas credenciais.
• invokedBy ‐ O nome do serviço da AWS que fez a solicitação, como o Amazon EC2 Auto Scaling ou
o AWS Elastic Beanstalk.
• sessionIssuer ‐ Se a solicitação foi feita com credenciais de segurança temporárias, este elemento
fornece informações sobre como as credenciais foram obtidas.
• protocolVersion ‐ O ID da versão do contexto fornecido. O formato deste campo é {Major
Version}.{Minor Version}. Os números de versão menores são sempre números de dois dígitos.
Qualquer remoção ou alteração na semântica de um campo exigirá um aumento da versão principal,
assim como adesão ativa. O Amazon S3 pode adicionar novos campos a qualquer momento, no qual
você pode experimentar um aumento da versão secundária. Devido à natureza das implementações de
software, é possível que você possa ver várias versões secundárias em uso ao mesmo tempo.

Usar funções do Lambda criadas pela AWS


A AWS fornece algumas funções pré-criadas do Lambda que você pode usar com o S3 Object Lambda
para detectar e remover informações de identificação pessoal (PII) e descompactar objetos do S3.
Essas funções do Lambda estão disponíveis no AWS Serverless Application Repository e podem ser
selecionadas por meio do Console de Gerenciamento da AWS ao criar seu ponto de acesso do Object
Lambda.

Para obter mais informações sobre como implantar várias aplicações no AWS Serverless Application
Repository, consulte Implantando aplicações no Guia do desenvolvedor do AWS Serverless Application
Repository.

Exemplo 1: Controle de Acesso da PII


Essa função do Lambda usa o Amazon Comprehend, um serviço de processamento de linguagem
natural (NLP) que usa machine learning para encontrar insights e relacionamentos no texto. Ele detecta
automaticamente informações de identificação pessoal (PII), como nomes, endereços, datas, números
de cartão de crédito e números de previdência social de documentos em seu bucket do Amazon S3. Se
você tiver documentos no bucket que incluam PII, poderá configurar a função do S3 Object Lambda de
controle de acesso da PII para detectar esses tipos de entidade da PII e restringir o acesso a usuários não
autorizados.

Para começar, basta implantar a função do Lambda a seguir em sua conta e adicionar o ARN na
configuração do ponto de acesso do Object Lambda.

ARN:

arn:aws:serverlessrepo:us-east-1:839782855223:applications/
ComprehendPiiAccessControlS3ObjectLambda

Você pode adicionar a exibição dessa função no Console de Gerenciamento da AWS usando o seguinte
link SAR: ComprehendPiiAccessControlS3ObjectLambda.

Para visualizar essa função no GitHub, consulte S3 Object Lambda do Amazon Comprehend.

Exemplo 2: remoção de PII


Essa função do Lambda usa o Amazon Comprehend, um serviço de processamento de linguagem
natural (NLP) que usa machine learning para encontrar insights e relacionamentos no texto. Ele remove

Versão da API 2006-03-01


186
Amazon Simple Storage Service Guia do usuário
Práticas recomendadas e diretrizes
para o S3 Object Lambda

automaticamente informações de identificação pessoal (PII), como nomes, endereços, datas, números
de cartão de crédito e números de previdência social de documentos em seu bucket do Amazon S3. Se
você tiver documentos em seu bucket que incluam informações como números de cartão de crédito ou
informações de contas bancárias, você poderá configurar a função do S3 Object Lambda de remoção de
PII para detectar PII e, em seguida, retornar uma cópia desses documentos nos quais os tipos de entidade
de PII são removidos.

Para começar, basta implantar a função do Lambda a seguir em sua conta e adicionar o ARN na
configuração do ponto de acesso do Object Lambda.

ARN:

arn:aws:serverlessrepo:us-east-1:839782855223:applications/
ComprehendPiiRedactionS3ObjectLambda

Você pode adicionar a exibição dessa função no Console de Gerenciamento da AWS usando o seguinte
link SAR: ComprehendPiiRedactionS3ObjectLambda.

Para visualizar essa função no GitHub, consulte S3 Object Lambda do Amazon Comprehend.

Exemplo 3: descompressão
A função do Lambda S3ObjectLambdaDecompression está equipada para descomprimir objetos
armazenados no S3 em um dos seis formatos de arquivo compactados, incluindo bzip2, gzip, snappy, zlib,
zstandard e ZIP. Para começar, basta implantar a função do Lambda a seguir em sua conta e adicionar o
ARN na configuração do ponto de acesso do Object Lambda.

ARN:

arn:aws:serverlessrepo:eu-west-1:123065155563:applications/S3ObjectLambdaDecompression

Você pode adicionar a exibição desta função no Console de Gerenciamento da AWS usando o seguinte
link SAR: S3ObjectLambdaDecompression.

Para visualizar essa função no GitHub, consulte Descompressão do S3 Object Lambda.

Práticas recomendadas e diretrizes para o S3 Object


Lambda
Ao usar o S3 Object Lambda, siga estas práticas recomendadas e diretrizes para otimizar operações e
performance.

Tópicos
• Trabalhar com o S3 Object Lambda (p. 187)
• Serviços da AWS usados em conexão com o S3 Object Lambda (p. 188)
• Trabalhar com cabeçalhos GET Range e partNumber (p. 188)
• Trabalhar com CLI da AWS e SDKs (p. 188)

Trabalhar com o S3 Object Lambda


O S3 Object Lambda suporta somente o processamento de solicitações GET. Quaisquer solicitações que
não sejam GET, como LIST ou HEAD, não invocarão o Lambda e retornarão respostas de API padrão e

Versão da API 2006-03-01


187
Amazon Simple Storage Service Guia do usuário
Práticas recomendadas e diretrizes
para o S3 Object Lambda

não transformadas. Você pode criar no máximo 1.000 pontos de acesso do Object Lambda por conta da
AWS por região. A função do AWS Lambda que você usa deve estar na mesma conta e região da AWS
que o ponto de acesso do Object Lambda.

O S3 Object Lambda permite transmitir uma resposta completa ao seu autor da chamada em até 60
segundos. Sua função também está sujeita a cotas padrão do Lambda. Para obter mais informações,
consulte Cotas do Lambda no Guia do desenvolvedor do AWS Lambda. O uso do S3 Object Lambda
invoca sua função do Lambda especificada e você é responsável por garantir que todos os dados
substituídos ou excluídos do S3 pela função ou aplicação do Lambda especificada sejam pretendidos e
corretos.

Você só pode usar o S3 Object Lambda para executar operações em objetos. Você não pode usá-los para
realizar outras operações do Amazon S3, como modificar ou excluir buckets. Para obter uma lista completa
das operações do S3 que oferecem suporte a pontos de acesso, consulte Compatibilidade de ponto de
acesso com operações do S3 e serviços da AWS (p. 493).

Além dessa lista, os pontos de acesso do S3 Object Lambda não suportam POST Object, Copiar (como
origem) ou Selecionar conteúdo do objeto.

Serviços da AWS usados em conexão com o S3 Object Lambda


O S3 Object Lambda conecta Amazon S3, AWS Lambda e, opcionalmente, outros serviços da AWS de
sua escolha para fornecer objetos relevantes para as aplicações solicitadas. Todos os serviços da AWS
usados em conexão com o S3 Object Lambda continuarão a ser regidos por seus respectivos Acordos de
nível de serviço (SLA). Por exemplo, no caso de qualquer serviço da AWS não cumprir seu compromisso
de serviço, você estará qualificado para receber um crédito de serviço conforme documentado no SLA do
serviço.

Trabalhar com cabeçalhos GET Range e partNumber


Ao trabalhar com objetos grandes, você pode usar o cabeçalho Range HTTP para baixar um byte-range
especificado de um objeto buscando apenas a parte especificada. É possível usar conexões simultâneas
ao Amazon S3 para buscar diferentes escalas de bytes no mesmo objeto. Você também pode usar
partNumber (inteiro entre 1 e 10.000) que efetivamente executa uma solicitação GET “intervalada” para a
parte especificada do objeto. Para obter mais informações, consulte Sintaxe de solicitação GetObject na
Referência da API do Amazon Simple Storage Service.

Ao receber uma solicitação GET, o S3 Object Lambda invoca sua função do Lambda especificada
primeiro, portanto, se sua solicitação GET contiver parâmetros de intervalo ou número de peça, você
deve garantir que sua função do Lambda esteja equipada para reconhecer e gerenciar esses parâmetros.
Como pode haver várias entidades conectadas em tal configuração (solicitando clientes e serviços como
Lambda, S3, outros), é aconselhável que todas as entidades envolvidas interpretem o intervalo solicitado
(ou partNumber) de forma uniforme. Isso garante que os intervalos que a aplicação está esperando
correspondam aos intervalos que a função do Lambda está processando. Ao criar uma função para lidar
com solicitações com cabeçalhos de intervalo, teste todas as combinações de tamanhos de resposta,
tamanhos de objetos originais e tamanhos de intervalo de solicitações que sua aplicação planeja usar.

Por padrão, os pontos de acesso do S3 Object Lambda responderão com um 501 a qualquer solicitação
GetObject que contenha um parâmetro de intervalo ou número de peça, seja nos cabeçalhos ou
parâmetros de consulta. Você pode confirmar que sua função do Lambda está preparada para lidar com
solicitações de intervalo ou parte atualizando sua configuração de ponto de acesso do Object Lambda por
meio do Console de Gerenciamento da AWS ou da CLI da AWS.

Trabalhar com CLI da AWS e SDKs


Os subcomandos da CLI da AWS S3 (cp, mv e sync) e o uso do gerenciador de transferência não são
suportados em conjunto com o S3 Object Lambda.

Versão da API 2006-03-01


188
Amazon Simple Storage Service Guia do usuário
Considerações sobre segurança

Considerações de segurança para pontos de acesso


do S3 Object Lambda
O S3 Object Lambda permite aos clientes a capacidade de realizar transformações personalizadas em
dados à medida que deixa o S3 usando a escala e a flexibilidade do AWS Lambda como uma plataforma
de computação. O S3 e o Lambda permanecem seguros por padrão, mas é necessária uma consideração
especial do autor do Lambda para manter essa segurança. O S3 Object Lambda exige que todo o acesso
seja feito por entidades autenticadas (sem acesso anônimo) e por HTTPS.

Para mitigar esse risco, recomendamos que a função de execução do Lambda seja cuidadosamente
definida para o menor conjunto de privilégios possível. Além disso, o Lambda deve fazer seus acessos ao
S3 através do URL pré-assinado fornecido sempre que possível.

Configurar políticas do IAM


Os pontos de acesso S3 oferecem suporte às políticas de recursos do AWS Identity and Access
Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou outras
condições. Para obter mais informações, consulte Configurando políticas do IAM para pontos de acesso do
Object Lambda (p. 173).

Comportamento de criptografia
Como o ponto de acesso do Object Lambda usa o Amazon S3 e o AWS Lambda, há diferenças no
comportamento de criptografia. Para obter mais informações sobre o comportamento de criptografia
padrão do S3, consulte Definir o comportamento padrão de criptografia do lado do servidor para buckets
do Amazon S3 (p. 43).

• Ao usar a criptografia do lado do servidor do S3 com pontos de acesso do Object Lambda, o objeto será
descriptografado antes de ser enviado para o AWS Lambda, onde será processado sem criptografia até
o autor da chamada original (no caso de um GET).
• Para evitar que a chave seja registrada em log, o S3 rejeitará solicitações GET para objetos
criptografados por meio de criptografia no lado do servidor usando chaves fornecidas pelo cliente. A
função do Lambda ainda pode recuperar esses objetos desde que tenha acesso à chave fornecida pelo
cliente.
• Ao usar a criptografia do lado do cliente do S3 com pontos de acesso do Object Lambda, verifique se o
Lambda tem acesso à chave para descriptografar e criptografar novamente o objeto.

Para obter mais informações sobre pontos de acesso padrão, consulte Gerenciamento de acesso a dados
com pontos de acesso do Amazon S3 (p. 480).

Para obter informações sobre como trabalhar com buckets, consulte Visão geral dos buckets (p. 26).
Para obter mais informações sobre como trabalhar com objetos, consulte Visão geral de objetos Amazon
S3 (p. 62).

Recuperar objetos do Amazon S3 usando


BitTorrent
O BitTorrent é um protocolo ponto a ponto aberto para distribuição de arquivos. Você pode usar o
protocolo BitTorrent para recuperar qualquer objeto publicamente acessível no Amazon S3. Esta seção
descreve como você pode desejar usar o BitTorrent para distribuir seus dados fora do Amazon S3 e como
fazer isso.

Versão da API 2006-03-01


189
Amazon Simple Storage Service Guia do usuário
Como você será cobrado pela entrega de BitTorrent

O Amazon S3 oferece suporte ao protocolo BitTorrent para que os desenvolvedores possam economizar
ao distribuir conteúdo em alta escala. O Amazon S3 é útil para armazenamento simples e confiável de
qualquer dado. O mecanismo de distribuição padrão para dados do Amazon S3 é via download de cliente/
servidor. Na distribuição de cliente/servidor, o objeto inteiro é transferido ponto a ponto do Amazon S3 para
cada usuário autorizado que solicitar esse objeto. Embora a entrega de cliente/servidor seja adequada
para uma grande variedade de casos de uso, ela não é ideal para todos. Especificamente, os custos da
distribuição de cliente/servidor aumentam linearmente conforme aumenta o número de usuários que fazem
download de objetos. Isso pode torná-lo caro para distribuição de objetos populares.

O BitTorrent resolve esse problema recrutando os próprios clientes que estão fazendo download do objeto
como distribuidores: cada cliente faz download de algumas partes do objeto do Amazon S3 e algumas
de outros clientes, fazendo o upload das partes do mesmo objeto para outros “pares" interessados. O
benefício para os publicadores é que, para arquivos populares grandes, a quantidade de dados fornecida
pelo Amazon S3 pode ser substancialmente menor do que seria ao atender os mesmos clientes via
download de cliente/servidor. Menos dados transferidos significa custos reduzidos para o publicador do
objeto.
Note

• O Amazon S3 não é compatível com o protocolo BitTorrent nas regiões da AWS lançadas após
30 de maio de 2016.
• É possível obter somente um arquivo de torrent para objetos com menos de 5 GB de tamanho.

Para obter mais informações, consulte os tópicos abaixo.

Tópicos
• Como você será cobrado pela entrega de BitTorrent (p. 190)
• Uso do BitTorrent para recuperar objetos armazenados no Amazon S3 (p. 191)
• Publicação de conteúdo com o Amazon S3 e o BitTorrent (p. 191)

Como você será cobrado pela entrega de BitTorrent


Não há sobretaxa para uso do BitTorrent com o Amazon S3. A transferência de dados via protocolo
BitTorrent é medida na mesma taxa da entrega de cliente/servidor. Para ser exato, sempre que o download
de um cliente do BitTorrent solicita um "pedaço" de um objeto do "seeder" do Amazon S3, as cobranças
são acumuladas como se uma solicitação anônima desse pedaço fosse feita usando o protocolo REST
ou SOAP. Essas cobranças aparecerão na fatura e nos relatórios de uso do Amazon S3 da mesma
forma. A diferença é que, se muitos clientes solicitarem o mesmo objeto simultaneamente via BitTorrent,
a quantidade de dados que o Amazon S3 deve servir para satisfazer esses clientes será menor do que
a da entrega de cliente/servidor. Isso porque os clientes do BitTorrent fazem upload e download entre si
simultaneamente.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

A economia de transferência de dados conseguida com o uso do BitTorrent pode variar amplamente
dependendo da popularidade do objeto. Os objetos menos populares exigem um uso mais pesado do
"seeder" para servir os clientes, e a diferença entre custos de distribuição do BitTorrent e custos de
distribuição de cliente/servidor pode ser pequena para tais objetos. Especificamente, se apenas um
cliente fizer download de um objeto específico por vez, o custo de entrega do BitTorrent será o mesmo do
download direto.

Versão da API 2006-03-01


190
Amazon Simple Storage Service Guia do usuário
Uso do BitTorrent para recuperar
objetos armazenados no Amazon S3

Uso do BitTorrent para recuperar objetos


armazenados no Amazon S3
Os objetos no Amazon S3 que podem ser lidos anonimamente também podem ser baixados via BitTorrent.
Fazer isso requer o uso de um aplicativo cliente BitTorrent. A Amazon não distribui um aplicativo cliente
BitTorrent, mas há muitos clientes gratuitos disponíveis. A implementação do S3BitTorrent foi testada para
trabalhar com o cliente BitTorrent oficial (acesse http://www.bittorrent.com/).

O ponto inicial para um download do BitTorrent é um arquivo .torrent. Esse arquivo pequeno descreve
para clientes BitTorrent os dados a serem baixados e onde começar a encontrar esses dados. Um
arquivo .torrent é uma pequena fração do tamanho do objeto real a ser baixado. Assim que você executa
um arquivo .torrent gerado pelo Amazon S3 na aplicação cliente BitTorrent, o download dele deve começar
imediatamente pelo Amazon S3 e por qualquer “par” nos clientes BitTorrent.

É fácil recuperar um arquivo .torrent para qualquer objeto publicamente disponível. Basta adicionar
um parâmetro de string de consulta "?torrent" ao final da solicitação REST GET do objeto. Nenhuma
autenticação é necessária. Assim que você tiver um cliente BitTorrent instalado, o download de um objeto
usando o download do BitTorrent pode ser tão fácil quanto abrir esse URL em seu navegador da web.

Não há nenhum mecanismo para buscar o .torrent para um objeto do Amazon S3 usando a API SOAP.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Example

Este exemplo recupera o arquivo Torrent para o objeto “Nelson” no bucket "quotes".

Sample Request

GET /quotes/Nelson?torrent HTTP/1.0


Date: Wed, 25 Nov 2009 12:00:00 GMT

Sample Response

HTTP/1.1 200 OK
x-amz-request-id: 7CD745EBB7AB5ED9
Date: Wed, 25 Nov 2009 12:00:00 GMT
Content-Disposition: attachment; filename=Nelson.torrent;
Content-Type: application/x-bittorrent
Content-Length: 537
Server: AmazonS3

<body: a Bencoded dictionary as defined by the BitTorrent specification>

Publicação de conteúdo com o Amazon S3 e o


BitTorrent
Todo objeto legível de forma anônima armazenado no Amazon S3 está automaticamente disponível
para download usando o BitTorrent. O processo para de alteração da ACL em um objeto para permitir
operações READ anônimas é descrito em Identity and Access Management no Amazon S3 (p. 252).

Versão da API 2006-03-01


191
Amazon Simple Storage Service Guia do usuário
Publicação de conteúdo com o Amazon S3 e o BitTorrent

É possível direcionar os clientes para seus objetos acessíveis pelo BitTorrent fornecendo a eles o
arquivo .torrent diretamente ou publicando um link para o URL ?torrent do objeto, conforme descrito por
GetObjectTorrent na Referência da API do Amazon Simple Storage Service. É importante salientar que
o arquivo .torrent que descreve um objeto do Amazon S3 é gerado sob demanda na primeira vez que é
solicitado (por meio do recurso ?torrent REST). A geração do .torrent de um objeto demora um tempo
proporcional ao tamanho desse objeto. Para objetos grandes, esse tempo pode ser significativo. Portanto,
antes de publicar um link para o ?torrent, sugerimos que você mesmo faça a primeira solicitação para ele.
O Amazon S3 pode demorar vários minutos para responder à essa primeira solicitação, porque ele gera
o arquivo .torrent. A menos que você atualize o objeto em questão, as solicitações subsequentes para
o .torrent serão rápidas. Seguindo este procedimento antes de implantar um link para o ?torrent garantirá
uma experiência de download do BitTorrent suave para seus clientes.

Para parar a distribuição de um arquivo usando o BitTorrent, simplesmente remova o acesso anônimo a
ele. Isso pode ser realizado excluindo o arquivo do Amazon S3 ou modificando a política de controle de
acesso para proibir leituras anônimas. Depois disso, o Amazon S3 não atuará como um “propagador” na
rede do BitTorrent para seu arquivo e não atenderá o arquivo .torrent por meio da API REST ?torrent. No
entanto, após a publicação de um .torrent para seu arquivo, essa ação talvez não interrompa downloads
públicos do objeto que acontecem exclusivamente usando a rede ponto a ponto do BitTorrent.

Versão da API 2006-03-01


192
Amazon Simple Storage Service Guia do usuário
Proteção de dados

Segurança do Amazon S3
A segurança da nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você aproveita um
datacenter e uma arquitetura de rede criados para atender aos requisitos das empresas com as maiores
exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O modelo de responsabilidade


compartilhada descreve isto como segurança da nuvem e segurança na nuvem:

• Segurança da nuvem – a AWS é responsável por proteger a infraestrutura que executa serviços da
AWS na Nuvem AWS. A AWS também fornece serviços que você pode usar com segurança. A eficácia
de nossa segurança é regularmente testada e verificada por auditores de terceiros como parte dos
programas de conformidade da AWS. Para saber mais sobre os programas de conformidade que se
aplicam ao Amazon S3, consulte Serviços da AWS no escopo por programa de conformidade.
• Segurança na nuvem – a responsabilidade é determinada pelo serviço da AWS usado. Você também
é responsável por outros fatores, incluindo a confidencialidade de seus dados, os requisitos da sua
organização e as leis e regulamentos aplicáveis.

Esta documentação ajudará você a entender como aplicar o modelo de responsabilidade compartilhada
ao usar o Amazon S3. Os tópicos a seguir mostram como configurar o Amazon S3 para atender aos seus
objetivos de segurança e de conformidade. Você também aprenderá como usar outros serviços da AWS
que podem ajudar a monitorar e proteger seus recursos do Amazon S3.

Tópicos
• Proteção de dados no Amazon S3 (p. 193)
• Proteção de dados usando criptografia (p. 194)
• Privacidade do tráfego entre redes (p. 243)
• AWS PrivateLink para Amazon S3 (p. 243)
• Identity and Access Management no Amazon S3 (p. 252)
• Registrar em log e monitorar no Amazon S3 (p. 506)
• Validação de conformidade para o Amazon S3 (p. 507)
• Resiliência no Amazon S3 (p. 508)
• Segurança da infraestrutura no Amazon S3 (p. 509)
• Análise de configuração e vulnerabilidade no Amazon S3 (p. 510)
• Melhores práticas de segurança para o Amazon S3 (p. 510)

Proteção de dados no Amazon S3


O Amazon S3 fornece uma infraestrutura de armazenamento resiliente projetada para armazenamento
de dados de missão crítica e primários. Os objetos são armazenados de forma redundante em vários
dispositivos em diversas instalações em uma região do Amazon S3. Para garantir uma melhor durabilidade
dos dados, as operações PUT e PUT Object copy do Amazon S3 armazenam, sincronamente, os dados
em diversas instalações. Assim que os objetos são armazenados, o Amazon S3 mantém sua durabilidade
ao detectar e reparar, rapidamente, qualquer redundância perdida.

O armazenamento Amazon S3 Standard oferece os seguintes recursos:

Versão da API 2006-03-01


193
Amazon Simple Storage Service Guia do usuário
Criptografia de dados

• Respaldado pelo Acordo de Nível de Serviço do Amazon S3


• Projetado para fornecer 99,999999999% de durabilidade e 99,99% de disponibilidade dos objetos em
um determinado ano
• Projetado para sustentar a perda simultânea de dados em duas instalações

O Amazon S3 protege ainda mais seus dados usando o versionamento. O versionamento pode ser usado
para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do Amazon
S3. Com o versionamento, você pode se recuperar, facilmente, de ações não intencionais do usuário e
de falhas de aplicativo. Por padrão, as solicitações recuperam a versão gravada mais recente. Você pode
recuperar as versões mais antigas de um objeto, especificando uma versão do objeto em uma solicitação.

Para fins de proteção de dados, recomendamos que você proteja as credenciais da conta da AWS e
configure contas de usuário individuais com o AWS Identity and Access Management (IAM), de modo que
cada usuário receba somente as permissões necessárias para cumprir suas funções de trabalho.

Se você precisar de módulos criptográficos validados pelo FIPS 140-2 ao acessar a AWS por meio de uma
interface de linha de comando ou uma API, use um endpoint do FIPS. Para obter mais informações sobre
endpoints do FIPS, consulte Federal Information Processing Standard (FIPS) 140-2.

As melhores práticas de segurança a seguir também abordam a proteção de dados no Amazon S3:

• Implementar criptografia no lado do servidor


• Aplicar a criptografia de dados em trânsito
• Considere usar o Amazon Macie com o Amazon S3
• Identificar e auditar todos os buckets do Amazon S3
• Monitorar os aconselhamentos de segurança da AWS

Proteção de dados usando criptografia


Proteção de dados protege os dados em trânsito (à medida que são transferidos para e do Amazon S3) e
em repouso (enquanto estão armazenados em discos em datacenters do Amazon S3). É possível proteger
dados em trânsito usando SSL/TLS (Secure Socket Layer/Transport Layer Security) ou criptografia no lado
do cliente. Você tem as seguintes opções de proteção de dados em repouso no Amazon S3:

• Criptografia no lado do servidor: peça que o Amazon S3 criptografe o objeto antes de salvá-lo em discos
em seus datacenters e descriptografe-o ao fazer download dos objetos.

Para configurar a criptografia do lado do servidor, consulte Especificando criptografia no lado do servidor
com o AWS KMS (SSE-KMS) (p. 198) ou Especificação de criptografia do Amazon S3 (p. 214).
• Criptografia no lado do cliente: criptografe dados no lado do cliente e faça upload dos dados
criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves de
criptografia e as ferramentas relacionadas.

Para configurar a criptografia do lado do cliente, consulte Proteger dados usando a criptografia no lado
do cliente (p. 239).

Para obter mais informações sobre criptografia do lado do servidor e criptografia do lado do cliente,
consulte os tópicos listados abaixo.

Tópicos
• Proteção de dados usando criptografia no lado do servidor (p. 195)
• Proteger dados usando a criptografia no lado do cliente (p. 239)

Versão da API 2006-03-01


194
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Proteção de dados usando criptografia no lado do


servidor
A criptografia do lado do servidor é a criptografia de dados em seu destino pela aplicação ou serviço
que os recebe. O Amazon S3 criptografa os dados no nível do objeto no momento em que os grava em
discos nos datacenters e descriptografa-os quando você os acessa. Contanto que você autentique sua
solicitação e tenha permissões de acesso, não há diferença na forma de acesso aos objetos criptografados
ou não criptografados. Por exemplo, se você compartilhar seus objetos usando um pre-signed URL, esse
URL funcionará da mesma forma para objetos criptografados e não criptografados. Além disso, quando
você lista objetos no bucket, a API de lista retorna uma lista de todos os objetos, independentemente de
estarem ou não criptografados.
Note

Não é possível aplicar diferentes tipos de criptografia de servidor ao mesmo objeto


simultaneamente.

Você tem três opções mutuamente exclusivas, dependendo de como escolhe gerenciar as chaves de
criptografia.

Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)

Quando usar criptografia no lado do servidor com as chaves gerenciadas pelo Amazon S3 (SSE-S3),
cada objeto será criptografado com uma chave exclusiva. Como proteção adicional, a própria chave é
criptografada com uma chave mestra que é alterada regularmente. A criptografia no lado do servidor do
Amazon S3 usa uma das cifras de bloco mais fortes disponíveis, o padrão de criptografia avançada de 256
bits (AES-256), para criptografar seus dados. Para obter mais informações, consulte Proteção de dados
usando criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-
S3) (p. 213).

Criptografia do lado do servidor com chaves mestras do cliente (CMKs) armazenadas no AWS Key
Management Service (SSE-KMS)

A criptografia no lado do servidor com chaves mestras de cliente (CMKs) armazenadas no AWS Key
Management Service (SSE-KMS) é semelhante a SSE-S3, mas com alguns benefícios adicionais e
cobranças para usar esse serviço. Há outras permissões para uso de uma CMK que fornece maior
proteção contra acesso não autorizado de seus objetos no Amazon S3. O SSE-KMS também fornece
uma trilha de auditoria que mostra quando a CMK foi usada e por quem. Além disso, é possível criar e
gerenciar CMKs gerenciadas pelo cliente ou usar CMKs gerenciadas pela AWS que são exclusivas para
você, para o seu serviço e para a sua região. Para obter mais informações, consulte Proteção de dados
usando criptografia do lado do servidor com CMKs armazenadas no AWS Key Management Service (SSE-
KMS) (p. 195).

Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)

Com a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), você gerencia
as chaves de criptografia e o Amazon S3 gerencia a criptografia, conforme grava em discos; e a
descriptografia, ao acessar os objetos. Para obter mais informações, consulte Proteger dados usando a
criptografia de servidor com chaves de criptografia fornecidas pelo cliente (SSE-C) (p. 225).

Proteção de dados usando criptografia do lado do servidor com


CMKs armazenadas no AWS Key Management Service (SSE-
KMS)
A criptografia do lado do servidor é a criptografia de dados em seu destino pela aplicação ou serviço que
os recebe. O AWS Key Management Service (AWS KMS) é um serviço que combina hardware e software

Versão da API 2006-03-01


195
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

seguros e altamente disponíveis para fornecer um sistema de gerenciamento de chave com escalabilidade
para a nuvem. O Amazon S3 usa chaves mestras do cliente (CMKs) do AWS KMS para criptografar seus
objetos do Amazon S3. O AWS KMS criptografa somente os dados de objeto. Nenhum metadado de
objeto é criptografado.

Se você usar CMKs, usará o AWS KMS por meio do Console de Gerenciamento da AWS ou APIs do AWS
KMS para criar centralmente CMKs, definir as políticas que controlam como as CMKs podem ser usadas
e auditar o uso de CMKs para provar que estão sendo usadas corretamente. Você pode usar essas CMKs
para proteger seus dados em buckets do Amazon S3. Ao usar a criptografia SSE-KMS com um bucket do
S3, a CMK do AWS KMS deve estar na mesma região que o bucket.

Há custos adicionais pelo uso de CMKs do AWS KMS. Para obter mais informações, consulte Conceitos
do AWS KMS — Chaves mestras do cliente (CMKs) no Guia do desenvolvedor do AWS Key Management
Service e definição de preço do AWS KMS.
Important

Para fazer upload de um objeto criptografado com uma CMK do AWS KMS para o Amazon S3,
você precisa das permissões kms:Decrypt e kms:GenerateDataKey na chave. Para fazer
download de um objeto criptografado com uma CMK do AWS KMS, você precisa de permissões
kms:Decrypt. Para obter informações sobre permissões do AWS KMS e multipart upload,
consulte API de multipart upload e permissões (p. 83).

CMKs gerenciadas pela AWS e CMKs gerenciadas pelo cliente


Ao usar a criptografia no lado do servidor com o AWS KMS (SSE-KMS), você pode usar a CMK
gerenciada pela AWS padrão ou especificar uma CMK gerenciada pelo cliente que você já criou.

Se você não especificar uma CMK gerenciada pelo cliente, o Amazon S3 criará automaticamente uma
CMK gerenciada pela AWS em sua conta da AWS na primeira vez que adicionar um objeto criptografado
com SSE-KMS a um bucket. Por padrão, o Amazon S3 usa essa CMK para SSE-KMS.

Se você quiser usar uma CMK gerenciada pelo cliente para SSE-KMS, poderá criar a CMK antes de
configurar o SSE-KMS. Depois, ao configurar o SSE-KMS para seu bucket, especifique a CMK gerenciada
pelo cliente existente.

Criar sua própria CMK gerenciada pelo cliente oferece mais flexibilidade e controle sobre a CMK. Por
exemplo, você pode criar, alternar e desabilitar CMKs gerenciadas pelo cliente. Você também pode definir
controles de acesso e auditar as CMKs gerenciadas pelo cliente que você usa para proteger seus dados.
Para obter mais informações sobre CMKs gerenciadas pelo cliente e gerenciadas pela AWS, consulte
Conceitos do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
Important

Quando você usa uma CMK do AWS KMS para criptografia no lado do servidor no Amazon
S3, você deve escolher uma CMK simétrica. O Amazon S3 é compatível apenas com CMKs
simétricas e não com CMKs assimétricas. Para obter mais informações, consulte Usar chaves
simétricas e assimétricas no Guia do desenvolvedor do AWS Key Management Service.

Chaves do bucket do Amazon S3


Ao configurar a criptografia do lado do servidor usando o AWS KMS (SSE-KMS), você pode configurar seu
bucket para usar chaves de bucket do S3 para SSE-KMS. Essa chave no nível de bucket para SSE-KMS
pode reduzir os custos de solicitação do KMS em até 99%, diminuindo o tráfego de solicitação do Amazon
S3 para o AWS KMS.

Quando você configura seu bucket para usar Chaves de bucket do S3 para SSE-KMS em novos objetos, o
AWS KMS gera uma chave no nível de bucket usada para criar chaves de dados exclusivas para objetos
no bucket. Essa chave de bucket é usada por um período limitado no Amazon S3, reduzindo ainda mais a
necessidade do Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia. Para

Versão da API 2006-03-01


196
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

obter mais informações sobre como usar Chaves de bucket do S3, consulte Redução do custo do SSE-
KMS com chaves de bucket do Amazon S3 (p. 204).

AWS Signature versão 4


Se você fizer upload ou acessar objetos criptografados por SSE-KMS, precisará usar a versão 4 do AWS
Signature para maior segurança. Para obter mais informações sobre como fazer isso usando um AWS
SDK, consulte Especificar a versão da assinatura na autenticação de solicitações (p. 1035).
Important

Todas as solicitações GET e PUT para um objeto protegido pelo AWS KMS falharão se não forem
feitas por SSL ou TLS ou se não forem feitas usando o SigV4.

Destaques de SSE-KMS
Os destaques de SSE-KMS são os seguintes:

• É possível escolher a CMK gerenciada pelo cliente que você cria e gerencia ou pode escolher uma CMK
gerenciada pela AWS que o Amazon S3 cria em sua conta da AWS e gerencia por você. Como uma
CMK gerenciada pelo cliente, sua CMK gerenciada pela AWS é exclusiva à sua conta e região da AWS.
Somente o Amazon S3 tem permissão para usar essa CMK em seu nome. O Amazon S3 só oferece
suporte a CMKs simétricas.
• É possível criar, alternar e desabilitar CMKs gerenciadas pelo cliente auditáveis no console do AWS
KMS.
• O ETag na resposta não é o MD5 dos dados de objeto.
• As chaves de dados usadas para criptografar os dados também são criptografadas e armazenadas com
os dados protegidos.
• Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade
relacionados à criptografia.

Exigir a criptografia no lado do servidor


Para exigir criptografia no lado do servidor de todos os objetos em um bucket específico do Amazon S3,
é possível usar uma política. Por exemplo, a política de bucket a seguir negará permissão de upload de
objeto (s3:PutObject) para todos se a solicitação não incluir o cabeçalho x-amz-server-side-
encryption que solicita criptografia de servidor com SSE-KMS.

{
"Version":"2012-10-17",
"Id":"PutObjectPolicy",
"Statement":[{
"Sid":"DenyUnEncryptedObjectUploads",
"Effect":"Deny",
"Principal":"*",
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::awsexamplebucket1/*",
"Condition":{
"StringNotEquals":{
"s3:x-amz-server-side-encryption":"aws:kms"
}
}
}
]
}

Para exigir que uma CMK do AWS KMS específica seja usada para criptografar os objetos em um bucket,
use a chave de condição s3:x-amz-server-side-encryption-aws-kms-key-id. Para especificar

Versão da API 2006-03-01


197
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

a CMK do AWS KMS, é necessário usar um nome de recurso da Amazon (ARN) da chave no formato
"arn:aws:kms:region:acct-id:key/key-id".
Note
Ao fazer upload de um objeto, você pode especificar a CMK do AWS KMS usando o cabeçalho x-
amz-server-side-encryption-aws-kms-key-id. Se o cabeçalho não estiver presente na
solicitação, o Amazon S3 assumirá a CMK gerenciada pela AWS. No entanto, o ID de chave do
AWS KMS que o Amazon S3 usa para a criptografia de objeto deve corresponder ao ID de chave
do AWS KMS na política. Caso contrário, o Amazon S3 negará a solicitação.

Para obter uma lista completa de chaves de condição específicas do Amazon S3 e mais informações sobre
como especificar chaves de condição, consulte Exemplos de chave de condição do Amazon S3 (p. 278).

Contexto de criptografia
O Amazon S3 oferece suporte a um contexto de criptografia com o cabeçalho x-amz-server-side-
encryption-context. Um contexto de criptografia é um conjunto opcional de pares chave-valor que
pode conter informações contextuais adicionais sobre os dados.

Para obter informações sobre o contexto de criptografia no Amazon S3, consulte Contexto de
criptografia (p. 198). Para obter mais informações sobre o contexto de criptografia, consulte Conceitos
do AWS Key Management Service Concepts - contexto de criptografia no Guia do desenvolvedor do AWS
Key Management Service.

O contexto de criptografia pode ser qualquer valor desejado, desde que o cabeçalho tenha o formato
JSON com codificação Base64. No entanto, como o contexto de criptografia não é criptografado e só é
registrado em log se o registro em log do AWS CloudTrail estiver ativado, ele não deve incluir informações
confidenciais. Recomendamos ainda que o contexto descreva os dados que estão sendo criptografados ou
descriptografados para que você possa compreender os eventos do CloudTrail produzidos pelo AWS KMS.

No Amazon S3, o objeto ou bucket do Amazon Resource Name (ARN) é comumente usado como um
contexto de criptografia. Se você usar o SSE-KMS sem habilitar uma chave de bucket do S3, você usará
o ARN de objeto como seu contexto de criptografia, por exemplo, arn:aws:s3:::object_ARN. No
entanto, se você usar o SSE-KMS e habilitar uma chave de bucket do S3, use o ARN do bucket para o
contexto de criptografia, por exemplo, arn:aws:s3:::bucket_ARN. Para obter mais informações sobre
chaves de buckets do S3, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon
S3 (p. 204).

Se a chave ainda não aws:s3:arn estiver no contexto de criptografia, o Amazon S3 poderá anexar
uma chave predefinida do aws:s3:arn ao contexto de criptografia fornecido por você. O Amazon S3
acrescenta essa chave predefinida quando processa suas solicitações. Se você usar o SSE-KMS sem uma
chave de bucket do S3, o valor será igual ao ARN do objeto. Se você usar o SSE-KMS com uma chave de
bucket do S3 ativada, o valor será igual ao ARN do bucket.

Você pode usar essa chave predefinida para rastrear solicitações relevantes no CloudTrail. Assim, você
sempre pode ver qual ARN do Amazon S3 foi usado com qual chave de criptografia. Você pode usar
logs do CloudTrail para garantir que o contexto de criptografia não seja idêntico entre diferentes objetos
e buckets do Amazon S3, o que fornece segurança adicional. Seu contexto de criptografia completo será
validado para ter o valor igual ao objeto ou ARN do bucket.

Tópicos
• Especificando criptografia no lado do servidor com o AWS KMS (SSE-KMS) (p. 198)
• Redução do custo do SSE-KMS com chaves de bucket do Amazon S3 (p. 204)

Especificando criptografia no lado do servidor com o AWS KMS (SSE-KMS)


Ao criar um objeto, você pode especificar o uso da criptografia no lado do servidor com as chaves mestras
do cliente (CMKs) do AWS Key Management Service (AWS KMS) para criptografar seus dados. Isso é

Versão da API 2006-03-01


198
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

verdade quando você está fazendo upload de um novo objeto ou copiando um objeto existente. Essa
criptografia é conhecida como SSE-KMS.

Você pode especificar o SSE-KMS usando o console do S3, as APIs REST, os SDKs da AWS e a AWS
CLI. Para obter mais informações, consulte os tópicos abaixo.

Uso do console do S3

Este tópico descreve como definir ou alterar o tipo de criptografia de um objeto usando o console do
Amazon S3.
Note

Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo.
Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto
existente se tornará uma versão mais antiga. A função que altera a propriedade também se torna
o proprietário do novo objeto ou (versão do objeto).

Como adicionar ou alterar a criptografia de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Name (Nome), escolha o nome do objeto ao qual você deseja adicionar ou no qual deseja
alterar a criptografia.

A Object overview (visão geral do Objeto) é aberta, exibindo as propriedades do objeto.


4. Em Server-side encryption settings (Configurações de criptografia do lado do servidor), escolha Edit
(Editar).

A página da Edit server-side encryption (criptografia do lado do servidor da edição) é aberta


5. Para habilitar a criptografia do lado do servidor para seu objeto, em Server-side encryption
(Criptografia do lado do servidor), escolha Enable (Ativar).
6. Em Encryption key type (Tipo de chave de criptografia), escolha AWS Key Management Service key
(SSE-KMS) (Chave do AWS Key Management Service (SSE-KMS)).
Important

Se você usar a opção do AWS KMS na sua configuração de criptografia padrão, estará
sujeito aos limites de RPS (solicitações por segundo) do AWS KMS. Para obter mais
informações sobre os limites do AWS KMS e sobre como solicitar um aumento de limite,
consulte Limites do AWS KMS.
7. Em AWS KMS key (Chave do AWS KMS) escolha uma das seguintes opções:

• AWS managed key (aws/s3) (Chave gerenciada pela AWS (aws/s3))


• Choose from your KMS master keys (Escolha entre suas chaves-mestre do KMS), e selecione sua
KMS master key (chave mestra do KMS).
• Enter KMS master key ARN (Insira o ARN da chave mestra do KMS), e insira o ARN da sua chave
do AWS KMS.

Important

Você só pode usar CMKs do KMS habilitadas na mesma região da AWS que o bucket.
Quando você seleciona Choose from your KMS master keys (Escolher entre as chaves
mestras do KMS), o console do S3 lista somente 100 CMKs do KMS por região. Se você tiver
mais de 100 CMKs na mesma região, será possível ver somente as primeiras 100 CMKs
Versão da API 2006-03-01
199
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

no console do S3. Para usar uma CMK do KMS que não esteja listada no console, escolha
Custom KMS ARN (Personalizar o ARN do KMS) e insira o ARN da CMK do KMS.
Quando você usa uma CMK do AWS KMS para criptografia no lado do servidor no Amazon
S3, você deve escolher uma CMK habilitada na mesma região do bucket. O Amazon S3 é
compatível apenas com CMKs simétricas e não com CMKs assimétricas. Para obter mais
informações, consulte Usar chaves simétricas e assimétricas no Guia do desenvolvedor do
AWS Key Management Service.

Para obter mais informações sobre como criar uma CMK do AWS KMS, consulte Criar chaves no Guia
do desenvolvedor do AWS Key Management Service. Para obter mais informações sobre como usar
AWS KMS com o Amazon S3, consulte Proteção de dados usando criptografia do lado do servidor
com CMKs armazenadas no AWS Key Management Service (SSE-KMS) (p. 195).
8. Selecione Save changes.

Note

Essa ação aplica criptografia a todos os objetos especificados. Ao criptografar pastas, aguarde a
conclusão da operação de salvamento antes de adicionar novos objetos à pasta.

Uso dos REST API

Quando você cria um objeto, ou seja, quando você carrega um novo objeto ou copia um objeto existente,
você pode especificar a utilização de criptografia pelo servidor com chaves mestres do cliente (CMKs)
do AWS Key Management Service (AWS KMS) para criptografar seus dados. Para fazer isso, adicione
o cabeçalho x-amz-server-side-encryption à solicitação. Defina o valor do cabeçalho como o
algoritmo de criptografia aws:kms. O Amazon S3 confirma que o objeto foi armazenado usando SSE-KMS
retornando o cabeçalho de resposta x-amz-server-side-encryption.

Se você especificar o cabeçalho x-amz-server-side-encryption com um valor de aws:kms,


também poderá usar os seguintes cabeçalhos de solicitação:

• x-amz-server-side-encryption-aws-kms-key-id
• x-amz-server-side-encryption-context
• x-amz-server-side-encryption-bucket-key-enabled

Tópicos
• APIs REST do Amazon S3 compatíveis com SSE-KMS (p. 200)
• Contexto de criptografia (x-amz-server-side-encryption-context) (p. 201)
• ID da chave do AWS KMS (x-amz-server-side-encryption-aws-kms-key-id) (p. 201)
• Chaves de bucket do S3 (x-amz-server-side-encryption-aws-bucket-key-enabled) (p. 202)

APIs REST do Amazon S3 compatíveis com SSE-KMS

As seguintes APIs REST aceitam os cabeçalhos de solicitação x-amz-server-side-encryption,


x-amz-server-side-encryption-aws-kms-key-id, e x-amz-server-side-encryption-
context.

• Objeto PUT: ao carregar dados usando a API PUT, você pode especificar esses cabeçalhos de
solicitação.
• Objeto PUT - Copiar: quando você copia um objeto, tem um objeto de origem e um objeto de destino.
Ao transmitir cabeçalhos de SSE-KMS com a operação de COPY (Copiar), eles são aplicados somente
ao objeto de destino. Ao copiar um objeto existente, independentemente de o objeto de origem ser
criptografado ou não, o objeto de destino não é criptografado, a menos que você solicite explicitamente a
criptografia de servidor.

Versão da API 2006-03-01


200
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

• Objeto POST: ao usar uma operação POST para fazer upload de um objeto, em vez dos cabeçalhos de
solicitação, você fornece as mesmas informações nos campos de formulário.
• Iniciar multipart upload: ao fazer upload de objetos grandes usando a API de multipart upload, você pode
especificar esses cabeçalhos. Esses cabeçalhos são especificados na solicitação de início.

Os cabeçalhos de resposta das seguintes APIs REST retornam o cabeçalho x-amz-server-side-


encryption quando um objeto é armazenado usando criptografia de servidor.

• Objeto PUT
• Objeto PUT - Copiar
• Objeto POST
• Iniciar multipart upload
• Upload de parte
• Upload de parte - Copiar
• Concluir multipart upload
• Objeto Get
• Objeto Head

Important

• Todas as solicitações GET e PUT para um objeto protegido por AWS KMS falharão se elas não
forem feitas usando SSL (Secure Sockets Language) ou o Signature versão 4.
• Se o objeto usar SSE-KMS, os cabeçalhos de solicitação de criptografia não deverão ser
enviados para solicitações GET e solicitações HEAD,ou um erro HTTP 400 BadRequest será
exibido.

Contexto de criptografia (x-amz-server-side-encryption-context)

Se você especificar x-amz-server-side-encryption:aws:kms, a API do Amazon S3 oferece


suporte a um contexto de criptografia com o cabeçalho x-amz-server-side-encryption-context.
Um contexto de criptografia é um conjunto opcional de pares chave-valor que pode conter informações
contextuais adicionais sobre os dados.

No Amazon S3, o objeto ou bucket do Amazon Resource Name (ARN) é comumente usado como um
contexto de criptografia. Se você usar o SSE-KMS sem habilitar uma chave de bucket do S3, você usará
o ARN de objeto como seu contexto de criptografia, por exemplo, arn:aws:s3:::object_ARN. No
entanto, se você usar o SSE-KMS e habilitar uma chave de bucket do S3, use o ARN do bucket para o
contexto de criptografia, por exemplo, arn:aws:s3:::bucket_ARN.

Para obter informações sobre o contexto de criptografia no Amazon S3, consulte Contexto de
criptografia (p. 198). Para obter mais informações sobre o contexto de criptografia, consulte Conceitos
do AWS Key Management Service Concepts - contexto de criptografia no Guia do desenvolvedor do AWS
Key Management Service.

ID da chave do AWS KMS (x-amz-server-side-encryption-aws-kms-key-id)

Você pode usar o cabeçalho x-amz-server-side-encryption-aws-kms-key-id para especificar o


ID do CMK gerenciado pelo cliente usado para proteger os dados. Se você especificar o x-amz-server-
side-encryption:aws:kms, mas não fornecer x-amz-server-side-encryption-aws-kms-key-
id, o Amazon S3 usa a CMK gerenciada pela AWS no AWS KMS para proteger os dados. Se quiser
usar uma CMK do AWS KMS gerenciada pelo cliente, você deve fornecer o x-amz-server-side-
encryption-aws-kms-key-id da CMK gerenciada pelo cliente.

Versão da API 2006-03-01


201
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Important

Quando você usa uma CMK do AWS KMS para criptografia no lado do servidor no Amazon
S3, você deve escolher uma CMK simétrica. O Amazon S3 é compatível apenas com CMKs
simétricas e não com CMKs assimétricas. Para obter mais informações, consulte Usar chaves
simétricas e assimétricas no Guia do desenvolvedor do AWS Key Management Service.

Chaves de bucket do S3 (x-amz-server-side-encryption-aws-bucket-key-enabled)

Você pode usar o cabeçalho da x-amz-server-side-encryption-aws-bucket-key-enabled


solicitação para ativar ou desativar uma chave de bucket do S3 no nível do objeto. As chaves de bucket do
S3 podem reduzir os custos de solicitação do AWS KMS diminuindo o tráfego de solicitação 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 (p. 204).

Se você especificar x-amz-server-side-encryption:aws:kms, mas não fornecer x-amz-server-


side-encryption-aws-bucket-key-enabled, seu objeto usará as configurações da chave de
bucket do S3 para o bucket de destino para criptografar seu objeto. Para obter mais informações, consulte
Configuração de uma chave de bucket do S3 no nível do objeto usando a API REST, AWS SDKs ou AWS
CLI (p. 210).

Uso dos AWS SDKs

Ao usar AWS SDKs, você pode solicitar que o Amazon S3 use as chaves mestras do cliente (CMKs) do
AWS Key Management Service (AWS KMS). Esta seção fornece exemplos de uso dos AWS SDKs para
Java e .NET. Para obter informações sobre outros SDKs, consulte Código de exemplo e bibliotecas.
Important

Quando você usa uma CMK do AWS KMS para criptografia no lado do servidor no Amazon
S3, você deve escolher uma CMK simétrica. O Amazon S3 é compatível apenas com CMKs
simétricas e não com CMKs assimétricas. Para obter mais informações, consulte Usar chaves
simétricas e assimétricas no Guia do desenvolvedor do AWS Key Management Service.

Operação de cópia

Ao copiar objetos, você adiciona as mesmas propriedades de solicitação


(ServerSideEncryptionMethod e ServerSideEncryptionKeyManagementServiceKeyId) para
pedir ao Amazon S3 para usar uma CMK do AWS KMS. Para obter mais informações sobre cópia de
objetos, consulte Cópia de objetos (p. 114).

Operação PUT

Java

Ao fazer upload de um objeto usando o AWS SDK para Java, você pode pedir ao Amazon S3 para
usar uma CMK do AWS KMS adicionando a propriedade SSEAwsKeyManagementParams, conforme
exibido na seguinte solicitação:

PutObjectRequest putRequest = new PutObjectRequest(bucketName,


keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());

Nesse caso, o Amazon S3 usa a CMK gerenciada pela AWS (consulte Usar a criptografia no lado do
servidor com CMKs armazenadas no AWS KMS (p. 195)). Opcionalmente, é possível criar uma
CMK simétrica gerenciada pelo cliente e especificar isso na solicitação.

PutObjectRequest putRequest = new PutObjectRequest(bucketName,

Versão da API 2006-03-01


202
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));

Para obter mais informações sobre como criar CMKs gerenciadas pelo cliente, consulte Programar a
API do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Você
precisará atualizar esses exemplos de código e fornecer informações de criptografia conforme exibido
no fragmento de código anterior.

• Para fazer upload de um objeto em uma única operação, consulte Fazer upload de objetos (p. 71).
• Para um multipart upload, consulte os seguintes tópicos:
• Para saber como usar a API de multipart upload de alto nível, consulte Fazer upload de um objeto
usando multipart upload (p. 86).
• Se você estiver usando a API de multipart upload de baixo nível, consulte Usar os SDKs da AWS
(API de baixo nível) (p. 93).

.NET

Ao fazer upload de um objeto usando o AWS SDK para .NET, você pode pedir ao Amazon S3
para usar uma CMK do AWS KMS adicionando a propriedade ServerSideEncryptionMethod,
conforme exibido na seguinte solicitação:

PutObjectRequest putRequest = new PutObjectRequest


{
BucketName = bucketName,
Key = keyName,
// other properties.
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
};

Nesse caso, o Amazon S3 usa a CMK gerenciada pela AWS. Para obter mais informações, consulte
Proteção de dados usando criptografia do lado do servidor com CMKs armazenadas no AWS Key
Management Service (SSE-KMS) (p. 195). Opcionalmente, é possível criar sua própria CMK
simétrica gerenciada pelo cliente e especificar isso na solicitação.

PutObjectRequest putRequest1 = new PutObjectRequest


{
BucketName = bucketName,
Key = keyName,
// other properties.
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
ServerSideEncryptionKeyManagementServiceKeyId = keyId
};

Para obter mais informações sobre como criar CMKs gerenciadas pelo cliente, consulte Programar a
API do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Você
precisará atualizar esses exemplos de código e fornecer informações de criptografia, conforme exibido
no fragmento de código anterior.

• Para fazer upload de um objeto em uma única operação, consulte Fazer upload de objetos (p. 71).
• Para multipart upload, consulte os seguintes tópicos:
• Para saber como usar a API de multipart upload de alto nível, consulte Fazer upload de um objeto
usando multipart upload (p. 86).
• Para saber como usar a API de multipart upload de baixo nível, consulte Fazer upload de um
objeto usando multipart upload (p. 86).

Versão da API 2006-03-01


203
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Pre-signed URLs

Java

Ao criar um pre-signed URL para um objeto criptografado usando uma CMK do AWS KMS, você
deverá especificar explicitamente o Signature versão 4.

ClientConfiguration clientConfiguration = new ClientConfiguration();


clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
new ProfileCredentialsProvider(), clientConfiguration);
...

Para ver um exemplo de código, consulte Compartilhar um objeto com uma pre-signed URL (p. 159).
.NET

Ao criar um pre-signed URL para um objeto criptografado usando uma CMK do AWS KMS, você
deverá especificar explicitamente o Signature versão 4.

AWSConfigs.S3Config.UseSignatureVersion4 = true;

Para ver um exemplo de código, consulte Compartilhar um objeto com uma pre-signed URL (p. 159).

Redução do custo do SSE-KMS com chaves de bucket do Amazon S3


As chaves de bucket do Amazon S3 reduzem o custo da criptografia do lado do servidor do Amazon S3
usando o AWS Key Management Service (SSE-KMS). Essa nova chave de nível de bucket para SSE
pode reduzir os custos de solicitação do AWS KMS em até 99%, diminuindo o tráfego de solicitações
do Amazon S3 para o AWS KMS. Com alguns cliques no Console de Gerenciamento da AWS e sem
alterações em aplicações do cliente, você pode configurar seus buckets para usar uma Chave de bucket
do S3 para criptografia baseada em KMS em novos objetos.

Chaves de bucket S3 para SSE-KMS

Cargas de trabalho que acessam milhões ou bilhões de objetos criptografados com o SSE-KMS podem
gerar grandes volumes de solicitações para o KMS. Quando você usa o SSE-KMS para proteger seus
dados sem uma chave de bucket do S3, o Amazon S3 usa uma chave de dados individual do AWS KMS
para cada objeto. Ele faz uma chamada para o AWS KMS sempre que uma solicitação é feita contra um
objeto criptografado no KMS. Para obter informações sobre como o SSE-KMS funciona, consulte Proteção
de dados usando criptografia do lado do servidor com CMKs armazenadas no AWS Key Management
Service (SSE-KMS) (p. 195).

Quando você configura seu bucket para usar uma chave de bucket do S3 para SSE-KMS, o KMS da
AWS gera uma chave em nível de bucket que é usada para criar chaves de dados exclusivas para novos
objetos que você adiciona ao bucket. Essa chave de bucket do S3 é usada por um período limitado
no Amazon S3, reduzindo a necessidade do Amazon S3 fazer solicitações ao AWS KMS para concluir
operações de criptografia. Isso reduz o tráfego do S3 para o AWS KMS, permitindo que você acesse
objetos criptografados no AWS KMS no S3 por uma fração do custo anterior.

Quando você configura uma chave de bucket do S3, os objetos que já estão no bucket não usam a chave
do bucket do S3. Para configurar uma chave de bucket do S3 para objetos existentes, você pode usar uma
operação COPY. Para obter mais informações, consulte Configuração de uma chave de bucket do S3 no
nível do objeto usando a API REST, AWS SDKs ou AWS CLI (p. 210).

O Amazon S3 compartilhará apenas uma chave de bucket do S3 para objetos criptografados pela mesma
chave mestre do cliente (CMK) do AWS KMS.

Versão da API 2006-03-01


204
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Configurando chaves de bucket do S3

Você pode configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos
por meio do console do Amazon S3, AWS SDKs, AWS CLI ou REST API. Você também pode substituir
a configuração da chave de bucket do S3 para objetos específicos em um bucket por uma chave KMS
individual por objeto usando a API REST, o AWS SDK ou a AWS CLI. Você também pode visualizar as
configurações da Chave do bucket do S3.

Antes de configurar seu bucket para usar uma chave de bucket do S3, revise Alterações na observação
antes de habilitar uma chave de bucket do S3 (p. 206).

Configuração de uma chave de bucket do S3 usando o console do Amazon S3

Ao criar um novo bucket, você pode configurar seu bucket para usar uma Chave de bucket do S3 para
SSE-KMS em novos objetos. Você também pode configurar um bucket existente para usar uma Chave de
bucket do S3 para SSE-KMS em novos objetos atualizando suas propriedades do bucket. 

Para obter mais informações, consulte Configurando seu bucket para usar uma chave de bucket do S3
com SSE-KMS para novos objetos (p. 207).

Suporte de API REST, AWS CLI e AWS SDK para chaves de bucket do S3

Você pode usar a API REST, a AWS CLI ou o AWS SDK para configurar seu bucket para usar uma chave
de bucket do S3 para SSE-KMS em novos objetos. Você também pode habilitar uma chave de bucket do
S3 no nível do objeto.

Para obter mais informações, consulte: 

• Configuração de uma chave de bucket do S3 no nível do objeto usando a API REST, AWS SDKs ou
AWS CLI (p. 210)
• Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos
objetos (p. 207)

As seguintes APIs suportam chaves de bucket do S3 para SSE-KMS:

• PutBucketEncryption
• ServerSideEncryptionRule aceita o parâmetro BucketKeyEnabled para habilitar e desabilitar
uma chave de bucket do S3.
• GetBucketEncryption

Versão da API 2006-03-01


205
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

• ServerSideEncryptionRule retorna as configurações para BucketKeyEnabled.


• PutObject, CopyObject, CreateMutLipartUploade PostObject
• O cabeçalho de solicitaçãox-amz-server-side-encryption-bucket-key-enabled ativa ou
desativa uma Chave de bucket do S3 no nível do objeto.
• HeadObject, GetObject, UploadPartCopy, UploadPart e CompleteMultipartUpload
• O cabeçalho de respostax-amz-server-side-encryption-bucket-key-enabled indica se
uma Chave de bucket S3 está ativada ou desativada para um objeto.

Como trabalhar com o AWS CloudFormation


No AWS CloudFormation, o recurso AWS::S3::Bucket inclui uma propriedade de criptografia chamada
BucketKeyEnabled que você pode usar para ativar ou desativar uma chave de bucket do S3.

Para obter mais informações, consulte Uso da AWS CloudFormation (p. 210).

Alterações na observação antes de habilitar uma chave de bucket do S3


Antes de ativar uma chave de bucket do S3, observe as seguintes alterações relacionadas:

permissões kms:Decrypt para copiar e fazer upload


Important

Para copiar ou fazer upload de objetos com chaves de bucket do S3, a política de chaves do AWS
KMS para a CMK deve incluir a permissão kms:Decrypt para o principal de chamada.

Quando você habilita uma chave de bucket do S3, a política de chaves do AWS KMS para a CMK deve
incluir a permissão kms:Decrypt para o principal de chamada. Se o principal de chamada estiver em uma
conta diferente da CMK do AWS KMS, você também deverá incluir a permissão kms:Decrypt na política
do IAM. A chamada para kms:Decrypt verifica a integridade da chave do bucket do S3 antes de usá-la.

Você só precisa incluir as permissões kms:Decrypt na política de chaves se usar uma CMK do AWS
KMS gerenciada pelo cliente. Se você habilitar uma chave de bucket do S3 para criptografia no lado do
servidor usando uma CMK gerenciada pela AWS (aws/s3), sua política de chaves do AWS KMS já incluirá
permissões kms:Decrypt.

Políticas de chave do IAM ou KMS


Se suas políticas do IAM existentes ou políticas de chave do AWS KMS usarem seu objeto do nome de
recurso da Amazon (ARN) como contexto de criptografia para refinar ou limitar o acesso às CMKs do AWS
KMS, essas políticas não funcionarão com uma chave de bucket do S3. As Chaves de bucket do S3 usam
o ARN do bucket como contexto de criptografia. Antes de ativar uma chave de bucket do S3, atualize
suas políticas do IAM ou políticas de chave do AWS KMS para usar o ARN do bucket como contexto de
criptografia.

Para obter mais informações sobre contexto de criptografia e chaves de bucket do S3, consulte Contexto
de criptografia (x-amz-server-side-encryption-context) (p. 201).

Eventos do AWS KMS CloudTrail


Depois de habilitar uma chave de bucket do S3, seus eventos do AWS KMS CloudTrail registram o ARN
do bucket em vez do ARN do objeto. Além disso, você vê menos eventos do KMS CloudTrail para objetos
SSE-KMS em seus logs. Como o material de chave é limitado no Amazon S3, menos solicitações são
feitas ao AWS KMS. 

Uso de uma chave de bucket do S3 com replicação


Você pode usar chaves de bucket do S3 com SRR (Same-Region Replication, replicação entre regiões) e
CRR (Cross-Region Replication, replicação entre regiões).

Versão da API 2006-03-01


206
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Quando o Amazon S3 replica um objeto criptografado, ele geralmente preserva as configurações


de criptografia do objeto de réplica no bucket de destino. No entanto, se o objeto de origem não for
criptografado e seu bucket de destino usar criptografia padrão ou uma chave de bucket do S3, o Amazon
S3 criptografa o objeto com a configuração do bucket de destino.
Important

Para usar a replicação com uma chave de bucket do S3, a política de chaves do AWS KMS para
a CMK usada para criptografar a réplica do objeto deve incluir permissões kms:Decrypt para o
principal de chamada. A chamada para kms:Decrypt verifica a integridade da chave do bucket
do S3 antes de usá-la. Para obter mais informações, consulte Uso de uma chave de bucket do
S3 com replicação (p. 206). Para obter mais informações sobre SSE-KMS e chave de bucket do
S3, consulte Chaves de bucket do Amazon S3 e replicação (p. 674).

Os exemplos a seguir ilustram como uma chave de bucket do S3 funciona com a replicação. Para obter
mais informações, consulte Replicação de objetos criados com criptografia no lado do servidor (SSE)
usando CMKs do AWS KMS (p. 672). 

Example Exemplo 1 — O objeto de origem usa chaves de bucket do S3, o bucket de destino usa
criptografia padrão

Se o objeto de origem usa uma Chave de bucket do S3, mas seu bucket de destino usa criptografia padrão
com o SSE-KMS, o objeto de réplica manterá suas configurações de criptografia S3 Bucket Key no bucket
de destino. O bucket de destino ainda usa criptografia padrão com SSE-KMS.

Example Exemplo 2 — O objeto de origem não é criptografado, o bucket de destino usa uma
chave de bucket do S3 com SSE-KMS

Se o objeto de origem não estiver criptografado e o bucket de destino usar uma chave de bucket S3 com
SSE-KMS, o objeto de origem será criptografado com uma chave de bucket S3 usando SSE-KMS no
bucket de destino. Isso faz com que a ETag do objeto de origem seja diferente da ETag do objeto de
réplica. Você precisa atualizar os aplicativos que usam a ETag para acomodar essa diferença.

Como trabalhar com chaves de bucket do S3

Para obter mais informações sobre como ativar e trabalhar com chaves de bucket do S3, consulte as
seguintes seções:

• Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos
objetos (p. 207)
• Configuração de uma chave de bucket do S3 no nível do objeto usando a API REST, AWS SDKs ou
AWS CLI (p. 210)
• Exibição de configurações para uma chave de bucket do S3 (p. 211)

Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos
objetos

Ao configurar a criptografia do lado do servidor usando o SSE-KMS, você pode configurar seu bucket para
usar uma chave de bucket do S3 para SSE-KMS em novos objetos. As chaves de bucket do S3 diminuem
o tráfego de solicitações do Amazon S3 para o AWS Key Management Service (AWS KMS) e reduzem o
custo do SSE-KMS. Para obter mais informações, consulte Redução do custo do SSE-KMS com chaves
de bucket do Amazon S3 (p. 204).

Você pode configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos
usando o console do Amazon S3, a API REST, o AWS SDK, a AWS CLI ou o AWS CloudFormation. Se

Versão da API 2006-03-01


207
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

você quiser ativar ou desativar uma chave de bucket S3 para objetos existentes, você pode usar uma
operação COPY. Para obter mais informações, consulte Configuração de uma chave de bucket do S3 no
nível do objeto usando a API REST, AWS SDKs ou AWS CLI (p. 210).

Quando uma chave de bucket do S3 estiver habilitada para o bucket de origem ou de destino, o contexto
de criptografia será o Amazon Resource Name (ARN) do bucket e não o ARN do objeto, por exemplo,
arn:aws:s3:::bucket_ARN. Você precisa atualizar suas políticas do IAM para usar o ARN de bucket
para o contexto de criptografia. Para obter mais informações, consulte Conceder permissões adicionais
para a função do IAM (p. 674).

Os exemplos a seguir ilustram como uma chave de bucket do S3 funciona com a replicação. Para obter
mais informações, consulte Replicação de objetos criados com criptografia no lado do servidor (SSE)
usando CMKs do AWS KMS (p. 672). 

Pré-requisito:

Antes de configurar seu bucket para usar uma chave de bucket do S3, revise Alterações na observação
antes de habilitar uma chave de bucket do S3 (p. 206).

Uso do console do S3

No console do S3, você pode ativar ou desativar uma chave de bucket do S3 para um bucket novo
ou existente. Os objetos no console do S3 herdam sua configuração de chave de bucket do S3 da
configuração do bucket. Quando você habilita uma chave de bucket do S3 para seu bucket, novos objetos
que você envia para o bucket usam uma chave de bucket do S3 para criptografia no lado do servidor
usando o AWS KMS.

Carregando, copiando ou modificando objetos em buckets que tenham uma chave de bucket S3 ativada

Se você carregar, modificar ou copiar um objeto em um bucket que tenha uma chave de bucket S3 ativada,
as configurações da chave de bucket do S3 para esse objeto poderão ser atualizadas para alinhar com a
configuração do bucket.

Se um objeto já tiver uma chave de bucket S3 ativada, as configurações da chave de bucket do S3 para
esse objeto não serão alteradas quando você copia ou modifica o objeto. No entanto, se você modificar
ou copiar um objeto que não tenha uma chave de bucket S3 ativada e o bucket de destino tiver uma
configuração de chave de bucket S3, o objeto herdará as configurações da chave de bucket S3 do bucket
de destino. Por exemplo, se o objeto de origem não tiver uma chave de bucket S3 ativada, mas o bucket
de destino tiver a chave de bucket S3 ativada, uma chave de bucket S3 será habilitada para o objeto.

Para habilitar uma chave de bucket do S3 ao criar um novo bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Selecione Create bucket (Criar bucket).
3. Insira o nome do bucket e escolha sua região da AWS.
4. Em Default encryption (Criptografia padrão), escolha Edit (Editar).
5. Em Encryption type (Tipo de criptografia), escolha AWS Key Management Service key (SSE-KMS)
(Chave do AWS Key Management Service (SSE-KMS).
6. Escolha uma chave do AWS KMS:

• Escolher AWS managed key (aws/s3) (chave gerenciada da AWS (aws/s3).


• Escolha Customer managed key (Chave gerenciada pelo cliente) e escolha uma CMK gerenciada
pelo cliente simétrica na mesma região do seu bucket.
7. Em Bucket key (Chave do bucket), escolha Enable (Ativar).
8. Selecione Create bucket (Criar bucket).

Versão da API 2006-03-01


208
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

O Amazon S3 cria seu bucket com uma chave de bucket do S3 ativada. Novos objetos que você
carregar no bucket usarão uma chave de bucket do S3. Para desabilitar uma chave de bucket do S3,
siga as etapas anteriores e escolha disable (desativar).

Para habilitar uma chave de bucket do S3 para um bucket existente

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Buckets (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do
S3.
3. Escolha Propriedades.
4. Em Default encryption (Criptografia padrão), escolha Edit (Editar).
5. Em Default encryption (Criptografia padrão), escolha Edit (Editar).
6. Em Encryption type (Tipo de criptografia), escolha AWS Key Management Service key (SSE-KMS)
(Chave do AWS Key Management Service (SSE-KMS).
7. Escolha uma chave do AWS KMS:

• Escolher AWS managed key (aws/s3) (chave gerenciada da AWS (aws/s3).


• Escolha Customer managed key (Chave gerenciada pelo cliente) e escolha uma CMK gerenciada
pelo cliente simétrica na mesma região do seu bucket.
8. Em Bucket key (Chave do bucket), escolha Enable (Ativar).
9. Selecione Save changes.

O Amazon S3 habilita uma chave de bucket do S3 para novos objetos adicionados ao seu bucket. Os
objetos existentes não usam a chave de bucket do S3. Para desativar uma chave de bucket do S3,
siga as etapas anteriores e escolha Disable (Desativar).

Uso dos REST API

Você pode usar o PutBucketenCryption para ativar ou desativar uma chave de bucket S3 para seu
bucket. Para configurar uma chave de bucket do S3 com PutBucketEncryption, especifique o
ServerSideEncryptionRule, que inclui criptografia padrão com criptografia no lado do servidor usando
chaves mestre de cliente (CMKs) do AWS KMS. Você também pode usar opcionalmente uma CMK
gerenciada pelo cliente especificando o ID da chave KMS para a CMK. 

Para obter mais informações e sintaxe de exemplo, consulte PutBucketenCryption.

Usando o AWS SDK Java

O exemplo a seguir permite a criptografia de bucket padrão com SSE-KMS e uma chave de bucket do S3
usando o AWS SDK para Java.

Java

AmazonS3 s3client = AmazonS3ClientBuilder.standard()


    .withRegion(Regions.DEFAULT_REGION)
    .build();
   
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new
ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =

Versão da API 2006-03-01


209
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new


SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);

Usar a CLI da AWS

O exemplo a seguir permite a criptografia de bucket padrão com SSE-KMS e uma chave de bucket do S3
usando a AWS CLI.

aws s3api put-bucket-encryption --bucket <bucket-name> --server-side-encryption-


configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "<KMS-Key-ARN>"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'

Uso da AWS CloudFormation

Para obter mais informações sobre como configurar uma chave de bucket do S3 usando o AWS
CloudFormation, consulte AWS# S3# Bucket ServerSideEncryptionRule no Guia do usuário do AWS
CloudFormation.

Configuração de uma chave de bucket do S3 no nível do objeto usando a API REST, AWS SDKs
ou AWS CLI

Quando você executa uma operação PUT ou COPY usando a API REST, AWS SDKs ou AWS CLI,
você pode ativar ou desativar uma chave de bucket do S3 no nível do objeto. As chaves de bucket do
S3 reduzem o custo da criptografia do lado do servidor usando o AWS Key Management Service (AWS
KMS) (SSE-KMS) diminuindo 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 (p. 204).

Quando você configura uma chave de bucket do S3 para um objeto usando uma operação PUT ou COPY,
o Amazon S3 atualiza somente as configurações desse objeto. As configurações da chave de bucket S3
para o bucket de destino não são alteradas. Se você não especificar uma chave de bucket do S3 para seu
objeto, o Amazon S3 aplicará as configurações da chave de bucket do S3 para o bucket de destino ao
objeto.

Pré-requisito:

Antes de configurar seu objeto para usar uma chave de bucket do S3, revise Alterações na observação
antes de habilitar uma chave de bucket do S3 (p. 206).

Tópicos
• Uso dos REST API (p. 211)
• Uso do AWS SDK Java (PutObject) (p. 211)
• Uso da AWS CLI (PutObject) (p. 211)

Versão da API 2006-03-01


210
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Uso dos REST API

Ao usar o SSE-KMS, você pode habilitar uma chave de bucket do S3 para um objeto usando as seguintes
APIs:

• PutObject — Ao fazer upload de um objeto, você pode especificar o cabeçalho da x-amz-server-


side-encryption-bucket-key-enabled solicitação para ativar ou desativar uma chave de bucket
do S3 no nível do objeto.
• CopyObject (Copiar objeto) — Quando você copia um objeto e configura o SSE-KMS, você pode
especificar o cabeçalho da solicitação x-amz-server-side-encryption-bucket-key-enabled
para ativar ou desativar uma chave de bucket do S3 para seu objeto.
• PostObject — Quando você usa uma operação POST para fazer upload de um objeto e configurar o
SSE-KMS, você pode usar o campo do formulário x-amz-server-side-encryption-bucket-key-
enabled para ativar ou desativar uma chave de bucket S3 para seu objeto.
• CreateMutLipartUpload — Quando você faz upload de objetos grandes usando a API de multipart
upload e configura o SSE-KMS, você pode usar o cabeçalho de solicitação x-amz-server-side-
encryption-bucket-key-enabled para ativar ou desativar uma chave de bucket do S3 para seu
objeto.

Para habilitar uma chave de bucket do S3 no nível do objeto, inclua o cabeçalho da solicitação x-amz-
server-side-encryption-bucket-key-enabled. Para obter mais informações sobre o SSE-KMS e
a API REST, consulte Uso dos REST API (p. 200).

Uso do AWS SDK Java (PutObject)

Você pode usar o exemplo a seguir para configurar uma chave de bucket do S3 no nível de objeto usando
o AWS SDK para Java.

Java

AmazonS3 s3client = AmazonS3ClientBuilder.standard()


    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "bucket name";


String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)


    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);

Uso da AWS CLI (PutObject)

Você pode usar o seguinte exemplo da AWS CLI para configurar uma chave de bucket do S3 no nível de
objeto como parte de uma solicitação dePutObject.

aws s3api put-object --bucket <bucket name> --key <object key name> --server-side-
encryption aws:kms --bucket-key-enabled --body <filepath>

Exibição de configurações para uma chave de bucket do S3

Você pode visualizar as configurações de uma chave de bucket do S3 no nível de bucket ou objeto usando
o console do Amazon S3, a API REST, a AWS CLI ou os SDKs da AWS.

Versão da API 2006-03-01


211
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

As chaves de bucket do S3 diminuem o tráfego de solicitações do Amazon S3 para o AWS KMS e


reduzem o custo da criptografia no lado do servidor usando o AWS Key Management Service (SSE-KMS).
Para obter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon
S3 (p. 204).

Para exibir as configurações da chave de bucket do S3 para um bucket ou um objeto que herdou
as configurações da chave de bucket S3 da configuração do bucket, você precisa de permissão
para executar a ação s3:GetEncryptionConfiguration. Para obter mais informações,
consulteGetBucketEncryption na Referência da API do Amazon Simple Storage Service.

Uso do console do S3

No console do S3, você pode visualizar as configurações da chave de bucket do S3 para seu bucket ou
objeto. As configurações da chave de bucket do S3 são herdadas da configuração do bucket, a menos que
os objetos de origem já tenham uma chave de bucket S3 configurada.

Objetos e pastas no mesmo bucket podem ter configurações diferentes da chave de bucket do S3. Por
exemplo, se você fizer upload de um objeto usando a API REST e habilitar uma chave de bucket S3 para
o objeto, o objeto manterá sua configuração da chave de bucket de S3 no bucket de destino, mesmo que
a chave de bucket S3 esteja desativada no bucket de destino. Como outro exemplo, se você habilitar uma
chave de bucket S3 para um bucket existente, os objetos que já estão no bucket não usarão uma chave de
bucket do S3. No entanto, novos objetos têm uma chave de bucket S3 ativada.

Para exibir o nível de bucket uma configuração de chave de bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do
S3.
3. Escolha Propriedades.
4. Na seção Default encryption (Criptografia padrão), em Bucket Key (Chave do bucket), você verá a
configuração da chave de bucket do S3 para seu bucket.

Se você não conseguir ver a configuração da chave de bucket do S3, talvez não tenha permissão
para executar a açãos3:GetEncryptionConfiguration. Para obter mais informações,
consulteGetBucketEncryption na Referência da API do Amazon Simple Storage Service.

Para exibir a configuração da chave de bucket do S3 para seu objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do
S3.
3. Na lista Objects (Objetos), escolha o nome do objeto.
4. Na guia Details (Detalhes), em Server-side encryption settings (Configurações de criptografia do lado
do servidor), escolha Edit (Editar).

Em Bucket Key, (Chave de bucket) você vê a configuração da chave de bucket do S3 para seu objeto,
mas não pode editá-la.

Uso dos REST API

Para retornar as configurações da chave de bucket do S3 no nível de bucket

Para retornar informações de criptografia de um bucket, incluindo configurações para uma chave de
bucket do S3, use a operação GetBucketEncryption. As configurações da chave de bucket do S3

Versão da API 2006-03-01


212
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

são retornadas no corpo da resposta no ServerSideEncryptionConfiguration com a configuração


BucketKeyEnabled. Para obter mais informações, consulte GetBucketenCryption na Referência da API
do Amazon S3.

Para retornar configurações de nível de objeto para uma chave de bucket do S3

Para retornar o status da chave de bucket S3 para um objeto, use a operação HeadObject. O
HeadObject retorna o cabeçalho de resposta de x-amz-server-side-encryption-bucket-key-
enabled para mostrar se uma chave de bucket de S3 está ativada ou desativada para o objeto. Para
obter mais informações, consulte HeadObject (Objeto do cabeçalho) na Referência da API do Amazon S3.

As seguintes operações de API também retornam o cabeçalho de resposta x-amz-server-side-


encryption-bucket-key-enabled se uma chave de bucket de S3 estiver configurada para um objeto:

• PutObject
• PostObject
• CopyObject
• CreateMultipartUpload
• UploadPartCopy
• UploadPart
• CompleteMultipartUpload
• GetObject

Proteção de dados usando criptografia no lado do servidor com


chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3)
A criptografia no lado do servidor protege dados em repouso. O Amazon S3 criptografa cada objeto com
uma chave exclusiva. Como proteção adicional, a própria chave é criptografada com uma chave mestra
que é alterada regularmente. A criptografia no lado do servidor do Amazon S3 usa uma das cifras de
bloco mais fortes disponíveis para criptografar seus dados, o padrão de criptografia avançada de 256 bits
(AES-256).

Não há novas cobranças pelo uso da criptografia no lado do servidor com chaves gerenciadas pelo
Amazon S3 (SSE-S3). No entanto, as solicitações para configurar e usar o SSE-S3 incorrem em cobranças
padrão de solicitação do Amazon S3. Para obter mais informações sobre definição de preços, consulte
Definição de preços do Amazon S3.

Se você precisar de criptografia no lado do servidor para todos os objetos armazenados em um bucket,
use uma política de bucket. Por exemplo, a política de bucket a seguir negará permissões para fazer
upload de um objeto, a menos que a solicitação não inclua o cabeçalho x-amz-server-side-
encryption a fim de solicitar criptografia no lado do servidor:

{
"Version": "2012-10-17",
"Id": "PutObjectPolicy",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}

Versão da API 2006-03-01


213
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

}
},
{
"Sid": "DenyUnencryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
}

Note

• A criptografia no lado do servidor criptografa somente os dados de objeto, não os metadados de


objeto.

Suporte de API para criptografia no lado do servidor


Para solicitar criptografia no lado do servidor usando as APIs REST de criação de objeto, forneça o
cabeçalho de solicitação x-amz-server-side-encryption. Para obter informações sobre as APIs
REST, consulte Uso dos REST API (p. 215).

As APIs do Amazon S3 a seguir são compatíveis com este cabeçalho:

• Operações PUT — Especifique o cabeçalho de solicitação ao fazer upload de dados usando a API PUT.
Para obter mais informações, consulte Objeto PUT.
• Iniciar multipart upload — Especifique o cabeçalho na solicitação de inicialização ao fazer upload
de objetos grandes usando a API de multipart upload. Para obter mais informações, consulte Iniciar
Multipart Upload.
• Operações COPY — Quando você copia um objeto, tem um objeto de origem e um objeto de destino.
Para obter mais informações, consulte Objeto PUT - Copiar.

Note

Ao usar uma operação POST para fazer upload de um objeto, em vez de fornecer o cabeçalho
de solicitação, você fornece as mesmas informações nos campos de formulário. Para obter mais
informações, consulte Objeto POST.

Os SDKs da AWS também fornecem APIs de wrapper que você pode usar para solicitar criptografia no
lado do servidor. Você também pode usar o Console de Gerenciamento da AWS para fazer upload de
objetos e solicitar a criptografia no lado do servidor.

Tópicos
• Especificação de criptografia do Amazon S3 (p. 214)

Especificação de criptografia do Amazon S3


Ao criar um objeto, você pode especificar o uso da criptografia no lado do servidor com chaves de
criptografia gerenciadas pelo Amazon S3 para criptografar seus dados. Isso é verdade quando você está

Versão da API 2006-03-01


214
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

fazendo upload de um novo objeto ou copiando um objeto existente. Essa criptografia é conhecida como
SSE-S3.

Você pode especificar o SSE-S3 usando o console do S3, APIs REST, AWS SDKs e AWS CLI. Para obter
mais informações, consulte os tópicos abaixo.

Para obter um exemplo de como copiar um objeto sem criptografia, consulte Cópia de objetos (p. 114).

Uso do console do S3

Este tópico descreve como definir ou alterar o tipo de criptografia de um objeto usando o console de
Gerenciamento da AWS. Quando você copia um objeto usando o console, ele copia o objeto no estado em
que ele se encontra. Ou seja, se a origem é criptografada, o objeto de destino também é criptografado. O
console também permite que você adicione ou altere a criptografia de um objeto.
Note

Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo.
Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto
existente se tornará uma versão mais antiga. A função que altera a propriedade também se torna
o proprietário do novo objeto ou (versão do objeto).

Como adicionar ou alterar a criptografia de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Name (Nome), escolha o nome do objeto ao qual você deseja adicionar ou no qual deseja
alterar a criptografia.

A Object overview (visão geral do Objeto) é aberta, exibindo as propriedades do objeto.


4. Em Server-side encryption settings (Configurações de criptografia do lado do servidor), escolha Edit
(Editar).

A página Edit server-side encryption (Editar criptografia do lado do servidor) é aberta.


5. Para habilitar a criptografia do lado do servidor para seu objeto, em Server-side encryption
(Criptografia do lado do servidor), escolha Enable (Ativar).
6. Para habilitar a criptografia no lado do servidor usando uma chave gerenciada pelo Amazon S3, em
Encryption key type (Tipo de chave de criptografia), escolha Amazon S3 key (SSE-S3) (Chave do
Amazon S3 (SSE-S3)).

Para obter mais informações sobre como usar a criptografia no lado do servidor do Amazon S3 para
criptografar seus dados, consulte Proteção de dados usando criptografia no lado do servidor com
chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) (p. 213).
7. Selecione Save changes.

Note

Essa ação aplica criptografia a todos os objetos especificados. Ao criptografar pastas, aguarde a
conclusão da operação de salvamento antes de adicionar novos objetos à pasta.

Uso dos REST API

No momento da criação do objeto (quando você faz upload de um objeto novo ou faz uma cópia de um
objeto existente), você pode especificar se deseja que o Amazon S3 criptografe seus dados adicionando

Versão da API 2006-03-01


215
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

o cabeçalho x-amz-server-side-encryption à solicitação. Defina o valor do cabeçalho como o


algoritmo de criptografia AES256 compatível com o Amazon S3. O Amazon S3 confirma que o objeto
foi armazenado usando a criptografia no lado do servidor retornando o cabeçalho de resposta x-amz-
server-side-encryption.

As seguintes APIs de upload REST aceitam o cabeçalho de solicitação x-amz-server-side-


encryption.

• Objeto PUT
• Objeto PUT - Copiar
• Objeto POST
• Iniciar multipart upload

Ao fazer upload de objetos grandes usando a API de multipart upload, você pode especificar a criptografia
no lado do servidor adicionando o cabeçalho x-amz-server-side-encryption à solicitação
Iniciar multipart upload. Ao copiar um objeto existente, independentemente de o objeto de origem ser
criptografado ou não, o objeto de destino não é criptografado, a menos que você solicite explicitamente a
criptografia de servidor.

Os cabeçalhos de resposta das seguintes APIs REST retornam o cabeçalho x-amz-server-side-


encryption quando um objeto é armazenado usando criptografia de servidor.

• Objeto PUT
• Objeto PUT - Copiar
• Objeto POST
• Iniciar multipart upload
• Upload de parte
• Upload de parte - Copiar
• Concluir multipart upload
• Objeto Get
• Objeto Head

Note

Os cabeçalhos de solicitação de criptografia não deverão ser enviados para solicitações GET e
solicitações HEAD se o objeto usar SSE-S3 ou for exibido um erro HTTP 400 BadRequest.

Uso dos AWS SDKs

Ao usar AWS SDKs, você pode solicitar ao Amazon S3 que use chaves de criptografia gerenciadas pelo
Amazon S3. Esta seção fornece exemplos de uso dos SDKs da AWS em vários idiomas. Para obter
informações sobre outros SDKs, consulte Código de exemplo e bibliotecas.

Java

Ao usar o AWS SDK para Java para carregar um objeto, você pode usar criptografia no lado do
servidor para criptografar o objeto. Para solicitar a criptografia no lado do servidor, use a propriedade
ObjectMetadata da PutObjectRequest para configurar o cabeçalho da solicitação x-amz-
server-side-encryption. Ao chamar o método putObject() do AmazonS3Client, o Amazon
S3 criptografa e salva os dados.

Você também pode solicitar a criptografia de servidor ao fazer upload de objetos com a API multipart
upload:

Versão da API 2006-03-01


216
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

• Ao usar a API de alto nível de multipart upload, você usa os métodos TransferManager para
aplicar criptografia no lado do servidor aos objetos conforme faz upload desses objetos. Você pode
usar qualquer um dos métodos de upload que assumem ObjectMetadata como um parâmetro.
Para obter mais informações, consulte Fazer upload de um objeto usando multipart upload (p. 86).
• Ao usar a API de multipart upload de baixo nível, você especifica a criptografia de servidor ao
iniciar o multipart upload. Você adiciona a propriedade ObjectMetadata chamando o método
InitiateMultipartUploadRequest.setObjectMetadata(). Para obter mais informações,
consulte Usar os SDKs da AWS (API de baixo nível) (p. 93).

Você não poderá alterar diretamente o estado de criptografia de um objeto (criptografando um objeto
não criptografado ou descriptografando um objeto criptografado). Para alterar o estado de criptografia
de um objeto, faça uma cópia do objeto, especificando o estado desejado de criptografia para a cópia
e, em seguida, exclua o objeto original. O Amazon S3 criptografa o objeto copiado somente se você
solicitar explicitamente criptografia no lado do servidor. Para solicitar a criptografia do objeto copiado
por meio da API Java, use a propriedade ObjectMetadata para especificar a criptografia no lado do
servidor na CopyObjectRequest.

Example Exemplo

O exemplo a seguir mostra como definir a criptografia no lado do servidor usando o AWS SDK para
Java. Ele mostra como executar as seguintes tarefas:

• Fazer upload de um novo objeto usando criptografia no lado do servidor.


• Alterar o estado de criptografia de um objeto (neste exemplo, criptografar um objeto anteriormente
não criptografado) fazendo uma cópia do objeto.
• Verificar o estado de criptografia do objeto.

Para obter mais informações sobre criptografia no lado do servidor, consulte Uso dos REST
API (p. 215). Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar
exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

public static void main(String[] args) {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyNameToEncrypt = "*** Key name for an object to upload and encrypt
***";
String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be
encrypted by copying ***";
String copiedObjectKeyName = "*** Key name for the encrypted copy of the
unencrypted object ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())

Versão da API 2006-03-01


217
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

.build();

// Upload an object and encrypt it with SSE.


uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

// Upload a new unencrypted object, then change its encryption state


// to encrypted by making a copy.
changeSSEEncryptionStatusByCopying(s3Client,
bucketName,
keyNameToCopyAndEncrypt,
copiedObjectKeyName);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String


bucketName, String keyName) {
String objectContent = "Test object encrypted with SSE";
byte[] objectBytes = objectContent.getBytes();

// Specify server-side encryption.


ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(objectBytes.length);
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
keyName,
new ByteArrayInputStream(objectBytes),
objectMetadata);

// Upload the object and check its encryption status.


PutObjectResult putResult = s3Client.putObject(putRequest);
System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
printEncryptionStatus(putResult);
}

private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,


String bucketName,
String sourceKey,
String destKey) {
// Upload a new, unencrypted object.
PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object
example to encrypt by copying");
System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
printEncryptionStatus(putResult);

// Make a copy of the object and use server-side encryption when storing the
copy.
CopyObjectRequest request = new CopyObjectRequest(bucketName,
sourceKey,
bucketName,
destKey);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
request.setNewObjectMetadata(objectMetadata);

// Perform the copy operation and display the copy's encryption status.
CopyObjectResult response = s3Client.copyObject(request);
System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
printEncryptionStatus(response);

Versão da API 2006-03-01


218
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

// Delete the original, unencrypted object, leaving only the encrypted copy in
Amazon S3.
s3Client.deleteObject(bucketName, sourceKey);
System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
}

private static void printEncryptionStatus(SSEResultBase response) {


String encryptionStatus = response.getSSEAlgorithm();
if (encryptionStatus == null) {
encryptionStatus = "Not encrypted with SSE";
}
System.out.println("Object encryption status is: " + encryptionStatus);
}
}

.NET

Ao fazer upload de um objeto, você pode instruir o Amazon S3 a criptografar esse objeto. Para alterar
o estado de criptografia de um objeto existente, faça uma cópia do objeto e exclua o objeto de origem.
Por padrão, a operação de cópia criptografa o destino somente se você solicitar explicitamente a
criptografia no lado do servidor do objeto de destino. Para especificar a criptografia no lado do servidor
na CopyObjectRequest, adicione o seguinte:

ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256

Para obter um exemplo funcional de como copiar um objeto, consulte Uso dos AWS SDKs (p. 117).

O exemplo a seguir faz upload de um objeto. Na solicitação, o exemplo instrui o Amazon S3 a


criptografar o objeto. O exemplo então recupera metadados do objeto e verifica o método de
criptografia que foi usado. Para obter informações sobre como criar e testar um exemplo funcional,
consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class SpecifyServerSideEncryptionTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** key name for object created ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
WritingAnObjectAsync().Wait();
}

static async Task WritingAnObjectAsync()


{
try
{
var putRequest = new PutObjectRequest

Versão da API 2006-03-01


219
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

{
BucketName = bucketName,
Key = keyName,
ContentBody = "sample text",
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
};

var putResponse = await client.PutObjectAsync(putRequest);

// Determine the encryption state of an object.


GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
{
BucketName = bucketName,
Key = keyName
};
GetObjectMetadataResponse response = await
client.GetObjectMetadataAsync(metadataRequest);
ServerSideEncryptionMethod objectEncryption =
response.ServerSideEncryptionMethod;

Console.WriteLine("Encryption method used: {0}",


objectEncryption.ToString());
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered ***. Message:'{0}' when writing an
object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
}
}

PHP

Este tópico mostra como usar classes da versão 3 do AWS SDK para PHP para adicionar criptografia
no lado do servidor a objetos que você envia para o Amazon Simple Storage Service (Amazon S3).
Pressupõe-se que você já esteja seguindo as instruções de Usar o AWS SDK para PHP e executar
exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Para fazer upload de um objeto no Amazon S3, use o método Aws\S3\S3Client::putObject(). Para
adicionar o cabeçalho de solicitação x-amz-server-side-encryption à sua solicitação de
upload, especifique o parâmetro ServerSideEncryption com o valor AES256, conforme exibido
no seguinte exemplo de código. Para obter informações sobre solicitações de criptografia no lado do
servidor, consulte Uso dos REST API (p. 215).

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.


$filepath = '*** Your File Path ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

Versão da API 2006-03-01


220
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

// Upload a file with server-side encryption.


$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filepath,
'ServerSideEncryption' => 'AES256',
]);

Em resposta, o Amazon S3 retorna o cabeçalho x-amz-server-side-encryption com o valor do


algoritmo de criptografia que foi usado para criptografar os dados de objeto.

Ao fazer upload de objetos grandes usando a API de multipart upload, você pode especificar a
criptografia de servidor para os objetos que estiver fazendo upload, conforme segue:

• Ao usar a API de multipart upload de baixo nível, especifique a criptografia de servidor ao chamar
o método Aws\S3\S3Client::createMultipartUpload(). Para adicionar o cabeçalho de solicitação x-
amz-server-side-encryption à sua solicitação, especifique a chave array do parâmetro
ServerSideEncryption com o valor AES256. Para obter mais informações sobre a API de baixo
nível de multipart upload, consulte Usar os SDKs da AWS (API de baixo nível) (p. 93).
• Ao usar a API de alto nível de multipart upload, especifique a criptografia de servidor usando o
parâmetro ServerSideEncryption do método CreateMultipartUpload. Para ver um exemplo de
uso do método setOption() com a API de alto nível de multipart upload, consulte Fazer upload de
um objeto usando multipart upload (p. 86).

Para determinar o estado de criptografia de um objeto existente, recupere os metadados de objeto


chamando o método Aws\S3\S3Client::headObject() conforme exibido no seguinte exemplo de código
PHP.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';


$keyname = '*** Your Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.


$result = $s3->headObject([
'Bucket' => $bucket,
'Key' => $keyname,
]);
echo $result['ServerSideEncryption'];

Para alterar o estado de criptografia de um objeto existente, faça uma cópia do objeto usando o
método Aws\S3\S3Client::copyObject() e exclua o objeto de origem. Por padrão, o copyObject()
não criptografará o destino, a menos que você solicite explicitamente a criptografia de servidor do
objeto de destino usando o parâmetro ServerSideEncryption com o valor AES256. O exemplo
de código PHP a seguir faz uma cópia de um objeto e adiciona a criptografia no lado do servidor ao
objeto copiado.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

Versão da API 2006-03-01


221
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

$sourceBucket = '*** Your Source Bucket Name ***';


$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';


$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Copy an object and add server-side encryption.


$s3->copyObject([
'Bucket' => $targetBucket,
'Key' => $targetKeyname,
'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
'ServerSideEncryption' => 'AES256',
]);

• AWS SDK para PHP para a classe Aws\S3\S3Client do Amazon S3


• Documentação do AWS SDK para PHP

Ruby

Ao usar o AWS SDK para Ruby para fazer upload de um objeto, você pode especificar que o objeto
seja armazenado criptografado em repouso com a criptografia no lado do servidor (SSE). Ao ler o
objeto de volta, ele é descriptografado automaticamente.

O exemplo de AWS SDK para Ruby - Versão 3 a seguir demonstra como especificar que um arquivo
carregado no Amazon S3 seja criptografado em repouso.

require 'aws-sdk-s3'

# Uploads a file to an Amazon S3 bucket and then encrypts the file server-side
# by using the 256-bit Advanced Encryption Standard (AES-256) block cipher.
#
# Prerequisites:
#
# - An Amazon S3 bucket.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The name of the bucket.
# @param object_key [String] The name for the uploaded object.
# @param object_content [String] The content to upload into the object.
# @return [Boolean] true if the file was successfully uploaded and then
# encrypted; otherwise, false.
# @example
# exit 1 unless upload_file_encrypted_aes256_at_rest?(
# Aws::S3::Client.new(region: 'us-east-1'),
# 'doc-example-bucket',
# 'my-file.txt',
# 'This is the content of my-file.txt.'
# )
def upload_file_encrypted_aes256_at_rest?(
s3_client,
bucket_name,
object_key,
object_content
)
s3_client.put_object(
bucket: bucket_name,
key: object_key,

Versão da API 2006-03-01


222
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

body: object_content,
server_side_encryption: 'AES256'
)
return true
rescue StandardError => e
puts "Error uploading object: #{e.message}"
return false
end

Para obter um exemplo que mostra como fazer upload de um objeto sem SSE, consulte Fazer upload
de objetos (p. 71).

O exemplo de código a seguir demonstra como determinar o estado de criptografia de um objeto


existente.

require 'aws-sdk-s3'

# Gets the server-side encryption state of an object in an Amazon S3 bucket.


#
# Prerequisites:
#
# - An Amazon S3 bucket.
# - An object within that bucket.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @param object_key [String] The object's key.
# @return [String] The server-side encryption state.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# puts get_server_side_encryption_state(
# s3_client,
# 'doc-example-bucket',
# 'my-file.txt'
# )
def get_server_side_encryption_state(s3_client, bucket_name, object_key)
response = s3_client.get_object(
bucket: bucket_name,
key: object_key
)
encryption_state = response.server_side_encryption
encryption_state.nil? ? 'not set' : encryption_state
rescue StandardError => e
"unknown or error: #{e.message}"
end

Se a criptografia no lado do servidor não for usada para o objeto que é armazenado no Amazon S3, o
método retornará nulo.

Para alterar o estado de criptografia de um objeto existente, faça uma cópia do objeto e exclua o
objeto de origem. Por padrão, os métodos de cópia não criptografam o destino, a menos que você
solicite explicitamente a criptografia no lado do servidor. Você pode solicitar a criptografia do objeto
de destino especificando o valor server_side_encryption no argumento de hash de opções
conforme exibido no seguinte exemplo de código Ruby. O exemplo de código demonstra como copiar
um objeto e criptografar a cópia.

require 'aws-sdk-s3'

# Copies an object from one Amazon S3 bucket to another,


# changing the object's server-side encryption state during
# the copy operation.
#

Versão da API 2006-03-01


223
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

# Prerequisites:
#
# - A bucket containing an object to be copied.
# - A separate bucket to copy the object into.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param source_bucket_name [String] The source bucket's name.
# @param source_object_key [String] The name of the object to be copied.
# @param target_bucket_name [String] The target bucket's name.
# @param target_object_key [String] The name of the copied object.
# @param encryption_type [String] The server-side encryption type for
# the copied object.
# @return [Boolean] true if the object was copied with the specified
# server-side encryption; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# if object_copied_with_encryption?(
# s3_client,
# 'doc-example-bucket1',
# 'my-source-file.txt',
# 'doc-example-bucket2',
# 'my-target-file.txt',
# 'AES256'
# )
# puts 'Copied.'
# else
# puts 'Not copied.'
# end
def object_copied_with_encryption?(
s3_client,
source_bucket_name,
source_object_key,
target_bucket_name,
target_object_key,
encryption_type
)
response = s3_client.copy_object(
bucket: target_bucket_name,
copy_source: source_bucket_name + '/' + source_object_key,
key: target_object_key,
server_side_encryption: encryption_type
)
return true if response.copy_object_result
rescue StandardError => e
puts "Error while copying object: #{e.message}"
end

Usar a CLI da AWS

Para especificar o SSE-S3 ao fazer upload de um objeto usando a AWS CLI, use o exemplo a seguir.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET1 --key object-key-name --server-side-


encryption AES256 --body file path

Para obter mais informações, consulte put-object na referência da AWS CLI. Para especificar o SSE-S3 ao
copiar um objeto usando a AWS CLI, consulte copy-object.

Uso da AWS CloudFormation

Para obter exemplos de configuração de criptografia usando o AWS CloudFormation, consulte Criar um
bucket com criptografia padrão e Criar um bucket usando a criptografia do lado do servidor do AWS KMS
com uma chave de bucket do S3 no Guia do usuário do AWS CloudFormation.

Versão da API 2006-03-01


224
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Proteger dados usando a criptografia de servidor com chaves de


criptografia fornecidas pelo cliente (SSE-C)
A criptografia de servidor envolve a proteção de dados em repouso. A criptografia no lado do servidor
criptografa somente os dados de objeto, não os metadados de objeto. Usar a criptografia de servidor com
chaves de criptografia fornecidas pelo cliente (SSE-C) permite definir suas próprias chaves de criptografia.
Com a chave de criptografia que você fornece como parte de sua solicitação, o Amazon S3 gerencia a
criptografia ao gravar em discos, e a descriptografia quando você acessa seus objetos. Portanto, você não
precisa manter um código para executar a criptografia e a descriptografia de dados. A única coisa a fazer é
gerenciar as chaves de criptografia que você fornece.

Quando você faz upload de um objeto, o Amazon S3 usa a chave de criptografia fornecida para aplicar a
criptografia AES-256 aos seus dados e elimina a chave de criptografia da memória. Quando você recupera
um objeto, deve fornecer a mesma chave de criptografia como parte de sua solicitação. O Amazon S3
primeiro verifica se a chave de criptografia fornecida é correspondente e, depois, decifra o objeto antes de
retornar os dados de objeto.

Não há novas cobranças pelo uso da criptografia do lado do servidor com chaves de criptografia
fornecidas pelo cliente (SSE-C). No entanto, as solicitações para configurar e usar o SSE-C incorrem em
cobranças padrão de solicitação do Amazon S3. Para obter mais informações sobre definição de preços,
consulte Definição de preços do Amazon S3.
Important

O Amazon S3 não armazena a chave de criptografia que você fornece. Em vez disso, ele
armazena um valor de HMAC com salt aleatório da chave de criptografia para validar solicitações
futuras. O valor de HMAC com salt não pode ser usado para derivar o valor da chave de
criptografia ou para decifrar o conteúdo do objeto criptografado. Isso significa que, se você perder
a chave de criptografia, perderá o objeto.

Visão geral do SSE-C


Esta seção fornece uma visão geral do SSE-C.

• Você deve usar HTTPS.


Important

O Amazon S3 rejeitará todas as solicitações feitas por HTTP ao usar o SSE-C. Por questões de
segurança, recomendamos considerar que todas as chaves enviadas erroneamente por HTTP
como estando comprometidas. Você deve descartar a chave e alterná-la conforme apropriado.
• O ETag na resposta não é o MD5 dos dados de objeto.
• Você gerencia um mapeamento cuja chave de criptografia foi usada para criptografar objetos. O Amazon
S3 não armazena chaves de criptografia. Você é responsável por acompanhar a chave de criptografia
que forneceu para um objeto.
• Se seu bucket tiver versionamento ativado, cada versão de objeto carregada usando esse recurso
poderá ter sua própria chave de criptografia. Você é responsável por acompanhar a chave de
criptografia usada para uma versão de objeto.
• Como gerencia chaves de criptografia no lado do cliente, você gerencia todas as proteções adicionais,
como a alternância de chave, no lado do cliente.
Warning

Se você perder a chave de criptografia, qualquer solicitação GET de um objeto sem chave de
criptografia falhará e você perderá o objeto.

Tópicos

Versão da API 2006-03-01


225
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

• Especificação de criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-
C). (p. 226)

Especificação de criptografia no lado do servidor com chaves fornecidas pelo


cliente (SSE-C).
No momento da criação do objeto com a API REST, você pode especificar a criptografia do lado do
servidor com chaves de criptografia fornecidas pelo cliente (SSE-C). Ao usar o SSE-C, você deve fornecer
informações da chave de encriptação utilizando os cabeçalhos de pedido a seguir.

Nome Descrição

x-amz-server-side- Use esse cabeçalho para especificar o algoritmo de criptografia. O valor do


encryption-customer- cabeçalho deve ser "AES256".
algorithm

x-amz-server-side- Use esse cabeçalho para fornecer a chave de criptografia com codificação
encryption-customer- base64 de 256 bits para o Amazon S3 a ser usada para criptografar ou
key descriptografar seus dados.

x-amz-server-side- Use esse cabeçalho para fornecer o resumo MD5 com codificação base64
encryption-customer- de 128 bits da chave de criptografia de acordo com RFC 1321. O Amazon
key-MD5 S3 usa esse cabeçalho para fazer uma verificação de integridade de
mensagens e conferir se a chave de criptografia foi transmitida sem erros.

Você pode usar bibliotecas de wrapper do AWS SDK para adicionar esses cabeçalhos à sua solicitação.
Se precisar, você pode fazer com que a API REST do Amazon S3 seja chamada diretamente na aplicação.
Note

Você não pode usar o console do Amazon S3 para fazer upload de um objeto e solicitar o SSE-
C. Também não é possível usar o console para atualizar (por exemplo, alterar a classe de
armazenamento ou adicionar metadados) um objeto armazenado com o SSE-C.

Pre-signed URLs e SSE-C

Você pode gerar um pre-signed URL que pode ser usado para operações, como fazer upload de um objeto
novo, recuperar um objeto existente ou metadados de objeto. Os pre-signed URLs oferecem suporte para
SSE-C da seguinte maneira:

• Ao criar um pre-signed URL, você deve especificar o algoritmo, usando x-amz-server-side-


encryption-customer-algorithm no cálculo de assinatura.
• Ao usar o pre-signed URL para fazer upload de um objeto novo, recuperar um objeto existente ou
recuperar somente metadados de objeto, você deve fornecer todos os cabeçalhos de criptografia em
seu aplicativo cliente.
Note

Para objetos não SSE-C, é possível gerar um pre-signed URL e colá-lo diretamente em um
navegador, por exemplo, para acessar os dados.
No entanto, isso não é válido para objetos SSE-C porque, além do pre-signed URL, você
também precisa incluir cabeçalhos HTTP específicos para objetos SSE-C. Dessa forma, é
possível usar o pre-signed URL para objetos SSE-C somente de maneira programática.

Versão da API 2006-03-01


226
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Uso dos REST API

APIs REST do Amazon S3 que oferecem suporte ao SSE-C

As APIs do Amazon S3 a seguir oferecem suporte à criptografia pelo servidor com chaves de criptografia
fornecidas pelo cliente (SSE-C).

• Operação GET: ao recuperar objetos usando a API GET (consulte GET Object), você pode especificar
os cabeçalhos da solicitação. O Torrent não é compatível com objetos criptografados usando SSE-C.
• Operação HEAD: para recuperar metadados de objeto usando a API HEAD (consulte HEAD Object),
você pode especificar esses cabeçalhos de solicitação.
• Operação PUT: ao fazer upload de dados usando a API PUT (consulte PUT Object), você pode
especificar esses cabeçalhos de solicitação.
• Multipart upload: ao fazer upload de objetos grandes usando a API de multipart upload, você pode
especificar esses cabeçalhos. Especifique esses cabeçalhos na solicitação iniciada (consulte Iniciar
o multipart upload) e em cada solicitação de upload de parte subsequente (consulte Fazer upload de
parte) ou

Upload de parte - Copiar)

). Para cada solicitação de upload de parte, as informações de criptografia devem ser as mesmas que
você forneceu na solicitação iniciada do multipart upload.
• Operação POST: ao usar uma operação POST para fazer upload de um objeto (consulte Objeto POST),
em vez dos cabeçalhos de solicitação, você fornece as mesmas informações nos campos de formulário.
• Operação de cópia: quando você copia um objeto (consulte Objeto PUT - Copiar), tem um objeto de
origem e um objeto de destino.
• Se você quiser que o objeto de destino seja criptografado usando criptografia de servidor com chaves
gerenciadas pela AWS, forneça o cabeçalho de solicitação x-amz-server-side-encryption.
• Se você quiser que o objeto de destino seja criptografado usando SSE-C, forneça informações de
criptografia usando os três cabeçalhos descritos na tabela anterior.
• Se o objeto de origem for criptografado usando SSE-C, você deverá fornecer informações de chave
de criptografia usando os seguintes cabeçalhos para que o Amazon S3 possa descriptografar o objeto
para cópia.

Nome Descrição

x-amz-copy-source Inclua esse cabeçalho para especificar o algoritmo que o Amazon


-server-side S3 deve usar para decifrar o objeto de origem. Esse valor deve ser
-encryption- AES256.
customer-algorithm

x-amz-copy-source Inclua esse cabeçalho para fornecer a chave de criptografia com


-server-side codificação base64 para o Amazon S3 a ser usada para descriptografar
-encryption- o objeto de origem. Essa chave de criptografia deve ser a que você
customer-key forneceu ao Amazon S3 quando criou o objeto de origem. Caso
contrário, o Amazon S3 não pode descriptografar o objeto.

x-amz-copy- Inclua esse cabeçalho para fornecer o resumo MD5 com codificação
source-server- base64 de 128 bits da chave de criptografia, de acordo com RFC 1321.
side-encryption-
customer-key-MD5

Versão da API 2006-03-01


227
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Uso dos SDKs da AWS para especificar SSE-C para operações PUT, GET, Head e Copy
O exemplo a seguir mostra como solicitar a criptografia de servidor com chaves fornecidas pelo cliente
(SSE-C) para objetos. Os exemplos executam as seguintes operações. Cada operação mostra como
especificar cabeçalhos relacionados a SSE-C na solicitação:

• Objeto PUT: faz upload de um objeto e solicita a criptografia de servidor, usando uma chave de
criptografia fornecida pelo cliente.
• Objeto Get: faça download do objeto carregado na etapa anterior. Na solicitação, você fornece as
mesmas informações de criptografia fornecidas quando o objeto foi carregado. O Amazon S3 precisa
dessas informações para descriptografar o objeto e para que ele possa ser devolvido a você.
• Obter metadados do objeto: recupera os metadados do objeto. Você fornece as mesmas informações de
criptografia usadas quando o objeto foi criado.
• Copy object (Copiar objeto): faz uma cópia de um objeto carregado anteriormente. Como o objeto
de origem é armazenado usando SSE-C, você deve fornecer suas informações de criptografia na
solicitação de cópia. Por padrão, o Amazon S3 criptografa a cópia do objeto somente se você solicitar
explicitamente. Esse exemplo direciona o Amazon S3 a armazenar uma cópia criptografada do objeto.

Java
Note
Este exemplo mostra como fazer upload de um objeto em uma única operação. Ao usar a
API de Multipart Upload para fazer upload de objetos grandes, você fornece informações
de criptografia da mesma maneira que exibidas nesse exemplo. Para obter exemplos de
multipart uploads que usam o AWS SDK para Java, consulte Fazer upload de um objeto
usando multipart upload (p. 86).

Para adicionar informações necessárias de criptografia, inclua uma SSECustomerKey na solicitação.


Para obter mais informações sobre a classe SSECustomerKey, consulte a seção REST API.

Para obter informações sobre SSE-C, consulte Proteger dados usando a criptografia de servidor com
chaves de criptografia fornecidas pelo cliente (SSE-C) (p. 225). Para obter instruções sobre criar e
testar um exemplo funcional, consulte Testar exemplos de código Java no Amazon S3 (p. 1042).

Example

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {


private static SSECustomerKey SSE_KEY;
private static AmazonS3 S3_CLIENT;
private static KeyGenerator KEY_GENERATOR;

public static void main(String[] args) throws IOException, NoSuchAlgorithmException


{

Versão da API 2006-03-01


228
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

Regions clientRegion = Regions.DEFAULT_REGION;


String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ***";
String uploadFileName = "*** File path ***";
String targetKeyName = "*** Target key name ***";

// Create an encryption key.


KEY_GENERATOR = KeyGenerator.getInstance("AES");
KEY_GENERATOR.init(256, new SecureRandom());
SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

try {
S3_CLIENT = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Upload an object.
uploadObject(bucketName, keyName, new File(uploadFileName));

// Download the object.


downloadObject(bucketName, keyName);

// Verify that the object is properly encrypted by attempting to retrieve


it
// using the encryption key.
retrieveObjectMetadata(bucketName, keyName);

// Copy the object into a new object that also uses SSE-C.
copyObject(bucketName, keyName, targetKeyName);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

private static void uploadObject(String bucketName, String keyName, File file) {


PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName,
file).withSSECustomerKey(SSE_KEY);
S3_CLIENT.putObject(putRequest);
System.out.println("Object uploaded");
}

private static void downloadObject(String bucketName, String keyName) throws


IOException {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName,
keyName).withSSECustomerKey(SSE_KEY);
S3Object object = S3_CLIENT.getObject(getObjectRequest);

System.out.println("Object content: ");


displayTextInputStream(object.getObjectContent());
}

private static void retrieveObjectMetadata(String bucketName, String keyName) {


GetObjectMetadataRequest getMetadataRequest = new
GetObjectMetadataRequest(bucketName, keyName)
.withSSECustomerKey(SSE_KEY);
ObjectMetadata objectMetadata =
S3_CLIENT.getObjectMetadata(getMetadataRequest);
System.out.println("Metadata retrieved. Object size: " +
objectMetadata.getContentLength());

Versão da API 2006-03-01


229
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

private static void copyObject(String bucketName, String keyName, String


targetKeyName)
throws NoSuchAlgorithmException {
// Create a new encryption key for target so that the target is saved using
SSE-C.
SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName,


bucketName, targetKeyName)
.withSourceSSECustomerKey(SSE_KEY)
.withDestinationSSECustomerKey(newSSEKey);

S3_CLIENT.copyObject(copyRequest);
System.out.println("Object copied");
}

private static void displayTextInputStream(S3ObjectInputStream input) throws


IOException {
// Read one line at a time from the input stream and display each line.
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println();
}
}

.NET
Note

Para exemplos de upload de objetos grandes usando a API multipart upload, consulte Fazer
upload de um objeto usando multipart upload (p. 86) e Usar os SDKs da AWS (API de baixo
nível) (p. 93).

Para obter informações sobre SSE-C, consulte Proteger dados usando a criptografia de servidor
com chaves de criptografia fornecidas pelo cliente (SSE-C) (p. 225)). Para obter informações sobre
como criar e testar um exemplo funcional, consulte Executar os exemplos de código do Amazon
S3 .NET (p. 1044).

Example

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class SSEClientEncryptionKeyObjectOperationsTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** key name for new object created ***";
private const string copyTargetKeyName = "*** key name for object copy ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

Versão da API 2006-03-01


230
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
ObjectOpsUsingClientEncryptionKeyAsync().Wait();
}
private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
{
try
{
// Create an encryption key.
Aes aesEncryption = Aes.Create();
aesEncryption.KeySize = 256;
aesEncryption.GenerateKey();
string base64Key = Convert.ToBase64String(aesEncryption.Key);

// 1. Upload the object.


PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
// 2. Download the object and verify that its contents matches what you
uploaded.
await DownloadObjectAsync(base64Key, putObjectRequest);
// 3. Get object metadata and verify that the object uses AES-256
encryption.
await GetObjectMetadataAsync(base64Key);
// 4. Copy both the source and target objects using server-side
encryption with
// a customer-provided encryption key.
await CopyObjectAsync(aesEncryption, base64Key);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered ***. Message:'{0}' when writing an
object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)


{
PutObjectRequest putObjectRequest = new PutObjectRequest
{
BucketName = bucketName,
Key = keyName,
ContentBody = "sample text",
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key
};
PutObjectResponse putObjectResponse = await
client.PutObjectAsync(putObjectRequest);
return putObjectRequest;
}
private static async Task DownloadObjectAsync(string base64Key,
PutObjectRequest putObjectRequest)
{
GetObjectRequest getObjectRequest = new GetObjectRequest
{
BucketName = bucketName,
Key = keyName,
// Provide encryption information for the object stored in Amazon S3.
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,

Versão da API 2006-03-01


231
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

ServerSideEncryptionCustomerProvidedKey = base64Key
};

using (GetObjectResponse getResponse = await


client.GetObjectAsync(getObjectRequest))
using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
{
string content = reader.ReadToEnd();
if (String.Compare(putObjectRequest.ContentBody, content) == 0)
Console.WriteLine("Object content is same as we uploaded");
else
Console.WriteLine("Error...Object content is not same.");

if (getResponse.ServerSideEncryptionCustomerMethod ==
ServerSideEncryptionCustomerMethod.AES256)
Console.WriteLine("Object encryption method is AES256, same as we
set");
else
Console.WriteLine("Error...Object encryption method is not the same
as AES256 we set");

// Assert.AreEqual(putObjectRequest.ContentBody, content);
// Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256,
getResponse.ServerSideEncryptionCustomerMethod);
}
}
private static async Task GetObjectMetadataAsync(string base64Key)
{
GetObjectMetadataRequest getObjectMetadataRequest = new
GetObjectMetadataRequest
{
BucketName = bucketName,
Key = keyName,

// The object stored in Amazon S3 is encrypted, so provide the


necessary encryption information.
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key
};

GetObjectMetadataResponse getObjectMetadataResponse = await


client.GetObjectMetadataAsync(getObjectMetadataRequest);
Console.WriteLine("The object metadata show encryption method used is:
{0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
// Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256,
getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
}
private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
{
aesEncryption.GenerateKey();
string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

CopyObjectRequest copyRequest = new CopyObjectRequest


{
SourceBucket = bucketName,
SourceKey = keyName,
DestinationBucket = bucketName,
DestinationKey = copyTargetKeyName,
// Information about the source object's encryption.
CopySourceServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
// Information about the target object's encryption.
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,

Versão da API 2006-03-01


232
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

ServerSideEncryptionCustomerProvidedKey = copyBase64Key
};
await client.CopyObjectAsync(copyRequest);
}
}
}

Uso dos SDKs da AWS para especificar SSE-C para multipart uploads

O exemplo da seção anterior mostra como solicitar a criptografia de servidor com a chave fornecida pelo
cliente (SSE-C) nas operações PUT, GET, Head e Copy. Esta seção descreve outras APIs do Amazon S3
que oferecem suporte para SSE-C.

Java

Para fazer upload de objetos grandes, você pode usar a API de multipart upload (consulte Carregar e
copiar objetos usando multipart upload (p. 80)). Você pode usar APIs de alto ou baixo nível para fazer
upload de objetos grandes. Essas APIs oferecem suporte para cabeçalhos relacionados à criptografia
na solicitação.

• Ao usar a API do TransferManager de alto nível, você fornece os cabeçalhos específicos


de criptografia na PutObjectRequest (consulte Fazer upload de um objeto usando multipart
upload (p. 86)).
• Ao usar a API de baixo nível, você fornece informações relacionadas à criptografia na
InitiateMultipartUploadRequest, seguidas por informações de criptografia idênticas em
cada UploadPartRequest. Você não precisa fornecer cabeçalhos específicos de criptografia na
CompleteMultipartUploadRequest. Para ver exemplos, consulte Usar os SDKs da AWS (API
de baixo nível) (p. 93).

O exemplo a seguir usa TransferManager para criar objetos e mostra como fornecer informações
relacionadas a SSE-C. O exemplo faz o seguinte:

• Cria um objeto usando o método TransferManager.upload(). Na instância


PutObjectRequest, você fornece informações de chave de criptografia para solicitar. O Amazon
S3 criptografa o objeto usando a chave de criptografia fornecida pelo cliente.
• Faz uma cópia do objeto, chamando o método TransferManager.copy(). O exemplo instrui o
Amazon S3 a criptografar a cópia do objeto usando um novo SSECustomerKey. Como o objeto
de origem é criptografado usando SSE-C, o CopyObjectRequest também fornece a chave de
criptografia do objeto de origem para que o Amazon S3 possa descriptografar o objeto antes de
copiá-lo.

Example

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

Versão da API 2006-03-01


233
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

public static void main(String[] args) throws Exception {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String fileToUpload = "*** File path ***";
String keyName = "*** New object key name ***";
String targetKeyName = "*** Key name for object copy ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();
TransferManager tm = TransferManagerBuilder.standard()
.withS3Client(s3Client)
.build();

// Create an object from a file.


PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
keyName, new File(fileToUpload));

// Create an encryption key.


KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256, new SecureRandom());
SSECustomerKey sseCustomerEncryptionKey = new
SSECustomerKey(keyGenerator.generateKey());

// Upload the object. TransferManager uploads asynchronously, so this call


returns immediately.
putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
Upload upload = tm.upload(putObjectRequest);

// Optionally, wait for the upload to finish before continuing.


upload.waitForCompletion();
System.out.println("Object created.");

// Copy the object and store the copy using SSE-C with a new key.
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName,
keyName, bucketName, targetKeyName);
SSECustomerKey sseTargetObjectEncryptionKey = new
SSECustomerKey(keyGenerator.generateKey());
copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);

copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

// Copy the object. TransferManager copies asynchronously, so this call


returns immediately.
Copy copy = tm.copy(copyObjectRequest);

// Optionally, wait for the upload to finish before continuing.


copy.waitForCompletion();
System.out.println("Copy complete.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();

Versão da API 2006-03-01


234
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

}
}
}

.NET

Para fazer upload de objetos grandes, você pode usar a API de multipart upload (consulte Carregar
e copiar objetos usando multipart upload (p. 80)). O AWS SDK para .NET fornece APIs de alto ou
baixo nível para fazer upload de grandes objetos. Essas APIs oferecem suporte para cabeçalhos
relacionados à criptografia na solicitação.

• Ao usar a API do Transfer-Utility de alto nível, você fornece os cabeçalhos específicos de


criptografia na TransferUtilityUploadRequest, conforme mostrado. Para obter exemplos de
código, consulte Fazer upload de um objeto usando multipart upload (p. 86).

TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()


{
FilePath = filePath,
BucketName = existingBucketName,
Key = keyName,
// Provide encryption information.
ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key,
};

• Ao usar a API de baixo nível, você fornece informações relacionadas à criptografia na solicitação
para iniciar o multipart upload, seguidas por informações de criptografia idênticas nas solicitações
subsequentes de upload de parte. Você não precisa fornecer cabeçalhos específicos de criptografia
na solicitação de multipart upload completo. Para ver exemplos, consulte Usar os SDKs da AWS
(API de baixo nível) (p. 93).

O seguinte é um exemplo de multipart upload de baixo nível que faz uma cópia de um objeto grande
existente. No exemplo, o objeto a ser copiado é armazenado no Amazon S3 usando o SSE-C, e
você deseja salvar o objeto de destino também usando o SSE-C. No exemplo, faça o seguinte:
• Inicie uma solicitação de multipart upload fornecendo uma chave de criptografia e as informações
relacionadas.
• Forneça as chaves de criptografia de objeto de origem e de destino e as informações
relacionadas na CopyPartRequest.
• Obtenha o tamanho do objeto de origem a ser copiado recuperando os metadados do objeto.
• Faça upload dos objetos em partes de 5 MB.

Example

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class SSECLowLevelMPUcopyObjectTest
{
private const string existingBucketName = "*** bucket name ***";
private const string sourceKeyName = "*** source object key name ***";

Versão da API 2006-03-01


235
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

private const string targetKeyName = "*** key name for the target object
***";
private const string filePath = @"*** file path ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
static void Main()
{
s3Client = new AmazonS3Client(bucketRegion);
CopyObjClientEncryptionKeyAsync().Wait();
}

private static async Task CopyObjClientEncryptionKeyAsync()


{
Aes aesEncryption = Aes.Create();
aesEncryption.KeySize = 256;
aesEncryption.GenerateKey();
string base64Key = Convert.ToBase64String(aesEncryption.Key);

await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);

await CopyObjectAsync(s3Client, base64Key);


}
private static async Task CopyObjectAsync(IAmazonS3 s3Client, string
base64Key)
{
List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();

// 1. Initialize.
InitiateMultipartUploadRequest initiateRequest = new
InitiateMultipartUploadRequest
{
BucketName = existingBucketName,
Key = targetKeyName,
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key,
};

InitiateMultipartUploadResponse initResponse =
await s3Client.InitiateMultipartUploadAsync(initiateRequest);

// 2. Upload Parts.
long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
long firstByte = 0;
long lastByte = partSize;

try
{
// First find source object size. Because object is stored encrypted
with
// customer provided key you need to provide encryption information
in your request.
GetObjectMetadataRequest getObjectMetadataRequest = new
GetObjectMetadataRequest()
{
BucketName = existingBucketName,
Key = sourceKeyName,
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key // " *
**source object encryption key ***"
};

GetObjectMetadataResponse getObjectMetadataResponse = await


s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);

Versão da API 2006-03-01


236
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

long filePosition = 0;
for (int i = 1; filePosition <
getObjectMetadataResponse.ContentLength; i++)
{
CopyPartRequest copyPartRequest = new CopyPartRequest
{
UploadId = initResponse.UploadId,
// Source.
SourceBucket = existingBucketName,
SourceKey = sourceKeyName,
// Source object is stored using SSE-C. Provide encryption
information.
CopySourceServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
CopySourceServerSideEncryptionCustomerProvidedKey =
base64Key, //"***source object encryption key ***",
FirstByte = firstByte,
// If the last part is smaller then our normal part size then
use the remaining size.
LastByte = lastByte >
getObjectMetadataResponse.ContentLength ?
getObjectMetadataResponse.ContentLength - 1 : lastByte,

// Target.
DestinationBucket = existingBucketName,
DestinationKey = targetKeyName,
PartNumber = i,
// Encryption information for the target object.
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key
};
uploadResponses.Add(await
s3Client.CopyPartAsync(copyPartRequest));
filePosition += partSize;
firstByte += partSize;
lastByte += partSize;
}

// Step 3: complete.
CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest
{
BucketName = existingBucketName,
Key = targetKeyName,
UploadId = initResponse.UploadId,
};
completeRequest.AddPartETags(uploadResponses);

CompleteMultipartUploadResponse completeUploadResponse =
await s3Client.CompleteMultipartUploadAsync(completeRequest);
}
catch (Exception exception)
{
Console.WriteLine("Exception occurred: {0}", exception.Message);
AbortMultipartUploadRequest abortMPURequest = new
AbortMultipartUploadRequest
{
BucketName = existingBucketName,
Key = targetKeyName,
UploadId = initResponse.UploadId
};
s3Client.AbortMultipartUpload(abortMPURequest);
}
}

Versão da API 2006-03-01


237
Amazon Simple Storage Service Guia do usuário
Criptografia do lado do servidor

private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string


base64Key, IAmazonS3 s3Client)
{
// List to store upload part responses.
List<UploadPartResponse> uploadResponses = new
List<UploadPartResponse>();

// 1. Initialize.
InitiateMultipartUploadRequest initiateRequest = new
InitiateMultipartUploadRequest
{
BucketName = existingBucketName,
Key = sourceKeyName,
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key
};

InitiateMultipartUploadResponse initResponse =
await s3Client.InitiateMultipartUploadAsync(initiateRequest);

// 2. Upload Parts.
long contentLength = new FileInfo(filePath).Length;
long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB

try
{
long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++)
{
UploadPartRequest uploadRequest = new UploadPartRequest
{
BucketName = existingBucketName,
Key = sourceKeyName,
UploadId = initResponse.UploadId,
PartNumber = i,
PartSize = partSize,
FilePosition = filePosition,
FilePath = filePath,
ServerSideEncryptionCustomerMethod =
ServerSideEncryptionCustomerMethod.AES256,
ServerSideEncryptionCustomerProvidedKey = base64Key
};

// Upload part and add response to our list.


uploadResponses.Add(await
s3Client.UploadPartAsync(uploadRequest));

filePosition += partSize;
}

// Step 3: complete.
CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest
{
BucketName = existingBucketName,
Key = sourceKeyName,
UploadId = initResponse.UploadId,
//PartETags = new List<PartETag>(uploadResponses)

};
completeRequest.AddPartETags(uploadResponses);

CompleteMultipartUploadResponse completeUploadResponse =
await s3Client.CompleteMultipartUploadAsync(completeRequest);

Versão da API 2006-03-01


238
Amazon Simple Storage Service Guia do usuário
Uso de criptografia do lado do cliente

}
catch (Exception exception)
{
Console.WriteLine("Exception occurred: {0}", exception.Message);
AbortMultipartUploadRequest abortMPURequest = new
AbortMultipartUploadRequest
{
BucketName = existingBucketName,
Key = sourceKeyName,
UploadId = initResponse.UploadId
};
await s3Client.AbortMultipartUploadAsync(abortMPURequest);
}
}
}
}

Proteger dados usando a criptografia no lado do


cliente
Criptografia no lado do cliente é o ato de criptografar os dados antes de enviá-los para o Amazon S3.

Para habilitar a criptografia no lado do cliente, você tem as seguintes opções:

• Use uma chave mestra do cliente (CMK) armazenada no AWS Key Management Service (AWS KMS).
• Use uma chave mestra que você armazena na sua aplicação.

SDK de criptografia da AWS

O SDK de criptografia da AWS é uma biblioteca de criptografia do lado do cliente que é separada dos
SDKs específicos de linguagem. Você pode usar essa biblioteca de criptografia para implementar com
mais facilidade as práticas recomendadas no Amazon S3. Ao contrário dos clientes de criptografia do
Amazon S3 nos AWS SDKs específicos da linguagem, o SDK de Criptografia da AWS não é vinculado
ao Amazon S3 e pode ser usado para criptografar ou descriptografar os dados a serem armazenados em
qualquer lugar.

Os clientes de SDK de criptografia da AWS e do Amazon S3 não são compatíveis, pois eles produzem
textos cifrados com diferentes formatos de dados. Para obter mais informações sobre o SDK de
criptografia da AWS, consulte o Guia do desenvolvedor de SDK de criptografia da AWS.

Suporte do AWS SDK para criptografia do Amazon S3 do lado do cliente

Os AWS SDKs a seguir dão suporte à criptografia no lado do cliente:

• AWS SDK para .NET


• AWS SDK para Go
• AWS SDK para Java
• AWS SDK para PHP
• AWS SDK para Ruby
• AWS SDK para C++

Opção 1: Usar uma CMK armazenada no AWS KMS


Com essa opção, você usa uma CMK do AWS KMS para criptografia do lado do cliente ao fazer upload ou
baixar dados no Amazon S3.

Versão da API 2006-03-01


239
Amazon Simple Storage Service Guia do usuário
Uso de criptografia do lado do cliente

• Ao fazer upload de um objeto: usando o ID da CMK, o cliente primeiro envia uma solicitação ao AWS
KMS para uma nova chave simétrica que pode ser usada para criptografar seus dados de objeto. O
AWS KMS retorna duas versões de uma chave de dados gerada aleatoriamente:
• Uma versão em texto simples da chave de dados que o cliente usa para criptografar os dados de
objeto.
• Um blob de criptografia da mesma chave de dados que o cliente faz upload para o Amazon S3 como
metadados de objeto.
Note
O cliente obtém uma chave de dados exclusiva para cada objeto cujo upload é feito.
• Ao fazer download de um objeto: o cliente faz download do objeto criptografado do Amazon S3 junto
com a versão do blob de criptografia da chave de dados armazenada como metadados de objeto.
Depois, o cliente envia o blob de criptografia para o AWS KMS para obter a versão em texto simples da
chave de dados para poder descriptografar os dados de objeto.

Para obter mais informações sobre o AWS KMS, consulte O que é o AWS Key Management Service? no
Guia do desenvolvedor do AWS Key Management Service.

Example
O exemplo de código a seguir demonstra como fazer upload de um objeto para o Amazon S3 usando o
AWS KMS com o AWS SDK para Java. O exemplo usa uma CMK gerenciada pela AWS para criptografar
dados no lado do cliente antes de fazer upload no Amazon S3. Se já tiver uma CMK, você poderá usá-la
especificando o valor da variável keyId no código de exemplo. Se não tiver um CMK, ou precisar de outro,
você poderá gerar um por meio da API Java. O código de exemplo gera automaticamente uma CMK a ser
usada.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java
no Amazon S3 (p. 1042).

AWSKMS kmsClient = AWSKMSClientBuilder.standard()


.withRegion(Regions.DEFAULT_REGION)
.build();

// create CMK for for testing this example


CreateKeyRequest createKeyRequest = new CreateKeyRequest();
CreateKeyResult createKeyResult = kmsClient.createKey(createKeyRequest);

// --
// specify an Amazon KMS customer master key (CMK) ID
String keyId = createKeyResult.getKeyMetadata().getKeyId();

String s3ObjectKey = "EncryptedContent1.txt";


String s3ObjectContent = "This is the 1st content to encrypt";
// --

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()


.withRegion(Regions.US_WEST_2)
.withCryptoConfiguration(new
CryptoConfigurationV2().withCryptoMode(CryptoMode.StrictAuthenticatedEncryption))
.withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId))
.build();

s3Encryption.putObject(bucket_name, s3ObjectKey, s3ObjectContent);


System.out.println(s3Encryption.getObjectAsString(bucket_name, s3ObjectKey));

// schedule deletion of CMK generated for testing


ScheduleKeyDeletionRequest scheduleKeyDeletionRequest =
new
ScheduleKeyDeletionRequest().withKeyId(keyId).withPendingWindowInDays(7);

Versão da API 2006-03-01


240
Amazon Simple Storage Service Guia do usuário
Uso de criptografia do lado do cliente

kmsClient.scheduleKeyDeletion(scheduleKeyDeletionRequest);

s3Encryption.shutdown();
kmsClient.shutdown();

Opção 2: Usar uma chave mestra armazenada no seu aplicativo


Com essa opção, você usa uma chave mestra armazenada na aplicação para a criptografia de dados do
lado do cliente.
Important

As chaves mestras no lado do cliente e seus dados não criptografados nunca são enviados para a
AWS. É importante que você gerencie com segurança suas chaves de criptografia. Se perdê-las,
você não poderá descriptografar os seus dados.

Como funciona:

• Ao fazer upload de um objeto: você fornece uma chave mestra no lado do cliente para o cliente
de criptografia do Amazon S3. O cliente usa a chave mestra apenas para criptografar a chave de
criptografia de dados que gera aleatoriamente.

As etapas a seguir descrevem o processo:


1. O cliente de criptografia do Amazon S3 gera localmente uma chave simétrica de uso único (também
conhecida como uma chave de criptografia de dados ou chave de dados). Ele usa a chave de dados
para criptografar os dados de um único objeto do Amazon S3. O cliente gera uma chave de dados
diferente para cada objeto.
2. O cliente criptografa a chave de criptografia de dados usando a chave mestra que você forneceu. O
cliente faz upload da chave de dados criptografados e de sua descrição do material como parte dos
metadados de objeto. O cliente usa a descrição material para determinar qual chave mestra no lado
do cliente usar para a descriptografia.
3. O cliente faz upload dos dados criptografados para o Amazon S3 e salva a chave dos dados
criptografados como metadados de objeto (x-amz-meta-x-amz-key) no Amazon S3.
• Ao fazer download de um objeto: o cliente faz download do objeto criptografado do Amazon S3. Usando
a descrição do material nos metadados do objeto, o cliente determina qual chave mestra usar para
descriptografar a chave dos dados. O cliente usa essa chave mestra para descriptografar a chave de
dados e, em seguida, usa a chave de dados para descriptografar o objeto.

A chave mestra no lado do cliente que você fornece pode ser uma chave simétrica ou um par de chaves
pública/privada. Os exemplos de código a seguir mostram como usar cada tipo de chave.

Para obter mais informações, consulte Criptografia de dados no lado do cliente com o AWS SDK para Java
e o Amazon S3.
Note

Se você receber uma mensagem de erro de criptografia quando usar a API de criptografia
pela primeira vez, sua versão do JDK pode ter um arquivo de políticas de jurisdição JCE (Java
Cryptography Extension) que limita o tamanho máximo da chave para transformações de
criptografia e descriptografia para 128 bits. O AWS SDK requer uma chave de tamanho máximo
de 256 bits.
Para verificar o tamanho de chave máximo, use o método getMaxAllowedKeyLength() da
classe javax.crypto.Cipher. Para remover a restrição de tamanho da chave, instale os
arquivos de política de jurisdição de força ilimitada JCE (Java Cryptography Extension).

Example
O exemplo de código a seguir mostra como fazer essas tarefas:

Versão da API 2006-03-01


241
Amazon Simple Storage Service Guia do usuário
Uso de criptografia do lado do cliente

• Gere uma chave AES de 256 bits.


• Use a chave AES para criptografar dados no lado do cliente antes de enviá-los para o Amazon S3.
• Use a chave AES para descriptografar dados recebidos do Amazon S3.
• Imprima uma representação de string do objeto descriptografado.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java
no Amazon S3 (p. 1042).

KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");


keyGenerator.init(256);

// --
// generate a symmetric encryption key for testing
SecretKey secretKey = keyGenerator.generateKey();

String s3ObjectKey = "EncryptedContent2.txt";


String s3ObjectContent = "This is the 2nd content to encrypt";
// --

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()


.withRegion(Regions.DEFAULT_REGION)
.withClientConfiguration(new ClientConfiguration())
.withCryptoConfiguration(new
CryptoConfigurationV2().withCryptoMode(CryptoMode.AuthenticatedEncryption))
.withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new
EncryptionMaterials(secretKey)))
.build();

s3Encryption.putObject(bucket_name, s3ObjectKey, s3ObjectContent);


System.out.println(s3Encryption.getObjectAsString(bucket_name, s3ObjectKey));
s3Encryption.shutdown();

Example

O exemplo de código a seguir mostra como fazer essas tarefas:

• Gere um par de chaves RSA de 2048 bits para fins de teste.


• Use as chaves RSA para criptografar dados no lado do cliente antes de enviá-los para o Amazon S3.
• Use as chaves RSA para descriptografar dados recebidos do Amazon S3.
• Imprima uma representação de string do objeto descriptografado.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java
no Amazon S3 (p. 1042).

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");


keyPairGenerator.initialize(2048);

// --
// generate an asymmetric key pair for testing
KeyPair keyPair = keyPairGenerator.generateKeyPair();

String s3ObjectKey = "EncryptedContent3.txt";


String s3ObjectContent = "This is the 3rd content to encrypt";
// --

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()


.withRegion(Regions.US_WEST_2)

Versão da API 2006-03-01


242
Amazon Simple Storage Service Guia do usuário
Privacidade entre redes

.withCryptoConfiguration(new
CryptoConfigurationV2().withCryptoMode(CryptoMode.StrictAuthenticatedEncryption))
.withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new
EncryptionMaterials(keyPair)))
.build();

s3Encryption.putObject(bucket_name, s3ObjectKey, s3ObjectContent);


System.out.println(s3Encryption.getObjectAsString(bucket_name, s3ObjectKey));
s3Encryption.shutdown();

Privacidade do tráfego entre redes


Este tópico descreve como o Amazon S3 protege conexões do serviço com outros locais.

Tráfego entre clientes de serviço e no local e os


aplicativos
Você tem várias opções de conectividade entre sua rede privada e AWS:

• Uma conexão AWS Site-to-Site VPN. Para obter mais informações, consulte O que é o AWS Site-to-Site
VPN?
• Uma conexão AWS Direct Connect. Para obter mais informações, consulte O que é o AWS Direct
Connect?
• Uma conexão com o AWS PrivateLink. Para obter mais informações, consulte AWS PrivateLink para
Amazon S3 (p. 243).

O acesso ao Amazon S3 pela rede acontece por meio de APIs publicadas pela AWS. Os clientes devem
ter suporte ao Transport Layer Security (TLS) 1.0. Recomendamos TLS 1.2 ou posterior. Os clientes
também devem ter suporte a pacotes de criptografia com sigilo de encaminhamento perfeito (PFS) como
Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). A maioria dos
sistemas modernos como Java 7 e versões posteriores oferece suporte a esses modos. Além disso, você
deve assinar solicitações usando um ID de chave de acesso e uma chave de acesso secreta associados
a uma entidade principal do IAM, ou você pode usar o AWS Security Token Service (STS) para gerar
credenciais de segurança temporárias para assinar solicitações.

Tráfego entre recursos da AWS na mesma região


Um endpoint da Virtual Private Cloud (VPC) para Amazon S3 é uma entidade lógica dentro de uma VPC
que permite conectividade apenas com o Amazon S3. A VPC roteia as solicitações para o Amazon S3 e as
respostas de volta para a VPC. Para obter mais informações, consulte VPC Endpoints no Guia do usuário
da VPC. Para obter políticas de bucket de exemplo que podem ser usadas para controlar o acesso ao
bucket do S3 de VPC endpoints, consulte Controlar o acesso a partir de VPC endpoints com políticas de
bucket (p. 377).

AWS PrivateLink para Amazon S3


Com o AWS PrivateLink para Amazon S3, você pode provisionar VPC endpoints de interface (endpoints
de interface) em sua virtual private cloud (VPC) em vez de se conectar pela Internet. Esses endpoints são
diretamente acessíveis de aplicações que estão on-premisses por meio da VPN e do AWS Direct Connect,
ou em uma região diferente da AWS por emparelhamento de VPC.

Versão da API 2006-03-01


243
Amazon Simple Storage Service Guia do usuário
Tipos de VPC endpoints

Os endpoints de interface são representados por uma ou mais interfaces de rede elástica (ENIs) que
recebem endereços IP privados de sub-redes em sua VPC. As solicitações feitas para endpoints de
interface para o Amazon S3 são roteadas automaticamente para o Amazon S3 na rede da Amazon. Você
também pode acessar endpoints de interface em sua VPC a partir de aplicativos locais por meio do AWS
Direct Connect ou da AWS Virtual Private Network (AWS VPN). Para obter mais informações sobre como
conectar sua VPC à rede local, consulte o Guia do usuário do AWS Direct Connect e o Guia do usuário do
AWS Site-to-Site VPN.

Para obter informações gerais sobre endpoints de interface, consulte Endpoints da VPC de interface (AWS
PrivateLink) no Guia do AWS PrivateLink.

Tópicos
• Tipos de VPC endpoints para o Amazon S3 (p. 244)
• Restrições e limitações do AWS PrivateLink para Amazon S3 (p. 244)
• Acessar endpoints da interface do Amazon S3 (p. 245)
• Acessar buckets e pontos de acesso do S3 a partir de endpoints de interface S3 (p. 245)
• Atualizar uma configuração de DNS no local (p. 248)
• Criar uma política de VPC endpoint para o Amazon S3 (p. 250)

Tipos de VPC endpoints para o Amazon S3


Você pode usar dois tipos de VPC endpoints para acessar o Amazon S3: endpoints de gateway e
endpoints de interface. Um endpoint de gateway é um gateway que você especifica em sua tabela de
rotas para acessar o Amazon S3 da sua VPC pela rede da AWS. Os endpoints de interface estendem a
funcionalidade dos endpoints de gateway usando endereços IP privados para rotear solicitações para o
Amazon S3 de dentro de seu VPC, do local ou de uma região da AWS diferente. Os endpoints de interface
são compatíveis com os endpoints de gateway. Se você tiver um endpoint de gateway existente na VPC,
poderá usar ambos os tipos de endpoints na mesma VPC.

Endpoints de gateway para o Amazon S3 Endpoints de interface para o Amazon S3

Em ambos os casos, o tráfego de rede permanece na rede AWS.

Usar endereços IP públicos do Amazon S3 Usar endereços IP privados da


VPC para acessar o Amazon S3

Não permite o acesso a partir do local Permite o acesso a partir do local

Não permite acesso de outra região da AWS Permite acesso de outra região da AWS

Não faturado Faturado

Para obter mais informações sobre endpoints de gateway, consulte Endpoints da VPC de gateway no Guia
do AWS PrivateLink Guide.

Restrições e limitações do AWS PrivateLink para


Amazon S3
As limitações da VPC se aplicam ao AWS PrivateLink para Amazon S3. Para obter mais informações,
consulte Propriedades e limitações do endpoint de interface e cotas do AWS PrivateLink no Guia do AWS
PrivateLink. Além disso, as restrições a seguir se aplicam.

O AWS PrivateLink para Amazon S3 não oferece suporte ao seguinte:

Versão da API 2006-03-01


244
Amazon Simple Storage Service Guia do usuário
Acessar endpoints da interface do Amazon S3

• Endpoints do Federal Information Processing Standard (FIPS - Padrões Federais de Processamento de


Informações)
• Endpoints de site (p. 945)
• Endpoints globais legados (p. 1030)

Acessar endpoints da interface do Amazon S3


Important

Para acessar o Amazon S3 usando o AWS PrivateLink, você deve atualizar seus aplicativos para
usar nomes de DNS específicos de endpoint.

Quando você cria um endpoint de interface, o Amazon S3 gera dois tipos de nomes de DNS do S3
específicos do endpoint: regional e zonal.

• Os nomes de DNS regionais incluem um ID de VPC endpoint exclusivo, um identificador de serviço,


a região da AWS e vpce.amazonaws.com em seu nome. Por exemplo, para o ID de VPC endpoint
vpce-1a2b3c4d, o nome de DNS gerado pode ser semelhante a vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com.
• Os nomes de DNS zonais incluem a zona de disponibilidade. Por exemplo,
vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com. Você pode usar essa
opção se sua arquitetura isola zonas de disponibilidade. Por exemplo, você pode usá-lo para contenção
de falhas ou para reduzir os custos regionais de transferência de dados.

Os nomes de DNS do S3 específicos do endpoint podem ser resolvidos a partir do domínio DNS público do
S3.
Note

Os endpoints de interface do Amazon S3 não são compatíveis com o recurso DNS privado
dos endpoints de interface. Para obter mais informações sobre DNS privado para endpoints de
interface, consulte o Guia do AWS PrivateLink.

Acessar buckets e pontos de acesso do S3 a partir de


endpoints de interface S3
Você pode usar a CLI da AWS ou o AWS SDK para acessar buckets, pontos de acesso do S3 e APIs de
controle do S3 por meio de endpoints de interface do S3.

A imagem a seguir mostra a guia Detalhes do console da VPC, onde você pode encontrar o nome de DNS
de um VPC endpoint. Neste exemplo, o ID do VPC endpoint (vpce-id) é vpce-0e25b8cdd720f900e e o
nome de DNS é vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com.

Para obter mais informações sobre como visualizar os nomes de DNS específicos do endpoint, consulte
Visualizar a configuração de nome de DNS privado do serviço de endpoint no Guia do usuário da VPC.

Exemplos de CLI da AWS


Use os parâmetros --region e --endpoint-url para acessar buckets do S3, pontos de acesso do S3
ou APIs de controle do S3 por meio de endpoints de interface do S3.

Versão da API 2006-03-01


245
Amazon Simple Storage Service Guia do usuário
Acessar buckets e pontos de acesso do
S3 a partir de endpoints de interface S3

Exemplo: usar o URL de endpoint para listar objetos no bucket

No exemplo a seguir, substitua a região us-east-1, ID do endpoint de VPC


vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e o nome do bucket my-bucket pelas
informações apropriadas.

aws s3 --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com ls s3://my-bucket/

Exemplo: usar o URL de endpoint para listar objetos de um ponto de acesso

No exemplo a seguir, substitua o ARN us-east-1:123456789012:accesspoint/test, a região us-


east-1 e o ID do endpoint de VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
pelas informações apropriadas.

aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/


test --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com

Exemplo: usar o URL de endpoint para listar trabalhos com controle do S3

No exemplo a seguir, substitua a região us-east-1, o ID do endpoint de


VPCvpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e o ID da conta 12345678 pelas
informações apropriadas.

aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com list-jobs --account-id 12345678

Exemplos de AWS SDK


Atualize seus SDKs para a versão mais recente e configure seus clientes para usar um URL de endpoint
para acessar um bucket, ponto de acesso ou API de controle do S3 por meio de endpoints de interface do
S3.

SDK for Python (Boto3)

Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint de VPC


vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com pelas informações apropriadas.

s3_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)

Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint de VPC


vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com pelas informações apropriadas.

ap_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'

Versão da API 2006-03-01


246
Amazon Simple Storage Service Guia do usuário
Acessar buckets e pontos de acesso do
S3 a partir de endpoints de interface S3

Exemplo: use um URL de endpoint para acessar a API de controle do S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint de VPC


vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com pelas informações apropriadas.

control_client = session.client(
service_name='s3control',
region_name='us-east-1',
endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)

SDK for Java 1.x

Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com por informações apropriadas.

// bucket client
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration(
"https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
Regions.DEFAULT_REGION.getName()
)
).build();
List<Bucket> buckets = s3.listBuckets();

Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua o ID de endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com e o ARN us-east-1:123456789012:accesspoint/prod por
informações apropriadas.

// accesspoint client
final AmazonS3 s3accesspoint =
AmazonS3ClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration(
"https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com",
Regions.DEFAULT_REGION.getName()
)
).build();
ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-
east-1:123456789012:accesspoint/prod");

Exemplo: use um URL de endpoint para acessar a API de controle do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com por informações apropriadas.

// control client
final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration(
"https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
Regions.DEFAULT_REGION.getName()
)

Versão da API 2006-03-01


247
Amazon Simple Storage Service Guia do usuário
Atualizar uma configuração de DNS no local

).build();
final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());

SDK for Java 2.x

Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por informações apropriadas.

// bucket client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)

.endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com"))
.build()

Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por informações apropriadas.

// accesspoint client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)

.endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com"))
.build()

Exemplo: use um URL de endpoint para acessar a API de controle do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-


east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por informações apropriadas.

// control client
Region region = Region.US_EAST_1;
s3ControlClient = S3ControlClient.builder().region(region)

.endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-
east-1.vpce.amazonaws.com"))
.build()

Atualizar uma configuração de DNS no local


Ao usar nomes de DNS específicos do endpoint para acessar os endpoints de interface do Amazon S3,
você não precisa atualizar seu resolvedor de DNS no local. Você pode resolver o nome de DNS específico
do endpoint com o endereço IP privado do endpoint de interface do domínio DNS público do Amazon S3.

Usar endpoints de interface para acessar o Amazon S3 sem um


endpoint de gateway ou um gateway da Internet na VPC
Os endpoints de interface na VPC podem rotear aplicativos na VPC e locais para o Amazon S3 pela rede
da Amazon, conforme ilustrado no diagrama a seguir.

Versão da API 2006-03-01


248
Amazon Simple Storage Service Guia do usuário
Atualizar uma configuração de DNS no local

O diagrama ilustra o seguinte:

• Sua rede local usa o AWS Direct Connect ou o AWS VPN para se conectar à VPC A.
• Seus aplicativos no local e na VPC A usam nomes de DNS específicos do endpoint para acessar o
Amazon S3 por meio do endpoint de interface do S3.
• Os aplicativos locais enviam dados para o endpoint de interface na VPC por meio do AWS Direct
Connect (ou AWS VPN). O AWS PrivateLink move os dados do endpoint da interface para o Amazon S3
pela rede da AWS.
• Os aplicativos na VPC também enviam tráfego para o endpoint de interface. O AWS PrivateLink move os
dados do endpoint da interface para o Amazon S3 pela rede da AWS.

Usar endpoints de gateway e de interface juntos na mesma VPC


para acessar o Amazon S3
Você pode criar endpoints de interface e reter o endpoint de gateway existente na mesma VPC, como
mostra o diagrama a seguir. Ao fazer isso, você permite que as aplicações na VPC continuem acessando
o Amazon S3 por meio do endpoint de gateway, que não são cobrados. Em seguida, apenas seus
aplicativos locais usariam endpoints de interface para acessar o Amazon S3. Para acessar o S3 dessa
maneira, você deve atualizar seus aplicativos locais para usar nomes de DNS específicos do endpoint para
o Amazon S3.

O diagrama ilustra o seguinte:

Versão da API 2006-03-01


249
Amazon Simple Storage Service Guia do usuário
Criar uma política de VPC endpoint

• Os aplicativos locais usam nomes de DNS específicos do endpoint para enviar dados para o endpoint de
interface dentro da VPC por meio do AWS Direct Connect (ou AWS VPN). O AWS PrivateLink move os
dados do endpoint da interface para o Amazon S3 pela rede da AWS.
• Usando nomes regionais padrão do Amazon S3, as aplicações no VPC enviam dados ao endpoint de
gateway que se conecta ao Amazon S3 pela rede da AWS.

Para obter mais informações sobre endpoints de gateway, consulte Endpoints da VPC de gateway no Guia
do usuário da VPC.

Criar uma política de VPC endpoint para o Amazon S3


É possível anexar uma política de endpoint ao VPC endpoint que controla o acesso ao Amazon S3. Essa
política especifica as seguintes informações:

• O principal do AWS Identity and Access Management (IAM) que pode executar ações
• As ações que podem ser executadas
• Os recursos nos quais as ações podem ser executadas

Você também pode usar políticas de bucket do Amazon S3 para restringir o acesso a buckets específicos
de um VPC endpoint específico usando a condição aws:sourceVpce na política de bucket. Os exemplos
a seguir mostram políticas que restringem o acesso a um bucket ou a um endpoint.

Tópicos
• Exemplo: restringir o acesso a um bucket específico a partir de um endpoint da VPC (p. 250)
• Exemplo: restringir o acesso a buckets em uma conta específica a partir de um endpoint da
VPC (p. 251)
• Exemplo: restringir o acesso a um endpoint da VPC específico na política de bucket do S3 (p. 251)

Important

• Ao aplicar políticas de bucket do Amazon S3 para os VPC endpoints descritos nesta seção,
talvez você bloqueie o acesso ao bucket inadvertidamente. As permissões de bucket
destinadas especificamente a limitar o acesso do bucket às conexões originadas do seu
VPC endpoint podem bloquear todas as conexões ao bucket. Para obter informações sobre
como corrigir esse problema, consulte Minha política de bucket tem o ID da VPC ou do VPC
endpoint incorreto. Como corrigir a política para que eu possa acessar o bucket? no Centro de
conhecimento do AWS Support.
• Antes de usar a política de exemplo a seguir, substitua o ID do VPC endpoint por um valor
apropriado para o caso de uso. Caso contrário, não será possível acessar o bucket.
• Essa política desabilita o acesso do console ao bucket especificado, pois as solicitações do
console não se originam do VPC endpoint especificado.

Exemplo: restringir o acesso a um bucket específico a partir de


um endpoint da VPC
Você pode criar uma política de endpoint que restringe o acesso apenas a buckets específicos do Amazon
S3. Isso será útil se houver outros serviços da AWS na VPC que usam buckets. A política de bucket a
seguir restringe o acesso somente a DOC-EXAMPLE-BUCKET1. Substitua DOC-EXAMPLE-BUCKET1 pelo
nome de seu bucket.

{
"Version": "2012-10-17",

Versão da API 2006-03-01


250
Amazon Simple Storage Service Guia do usuário
Criar uma política de VPC endpoint

"Id": "Policy1415115909151",
"Statement": [
{ "Sid": "Access-to-specific-bucket-only",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET1",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"]
}
]
}

Exemplo: restringir o acesso a buckets em uma conta específica


a partir de um endpoint da VPC
Você pode criar uma política que restringe o acesso apenas aos buckets do S3 em uma conta específica
da AWS. Use isso para impedir que os clientes dentro de sua VPC acessem buckets que você não possui.
O exemplo a seguir cria uma política que restringe o acesso a recursos pertencentes a um único ID de
conta da AWS, 111122223333.

{
"Statement": [
{
"Sid": "Access-to-bucket-in-specific-account-only",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringNotEquals": {
"s3:ResourceAccount": "111122223333"
}
}
}
]
}

Exemplo: restringir o acesso a um endpoint da VPC específico na


política de bucket do S3
Exemplo: restringir o acesso a um endpoint da VPC específico na política de bucket do S3

A política de bucket do Amazon S3 a seguir permite o acesso a um bucket específico, DOC-EXAMPLE-


BUCKET2, apenas a partir do endpoint vpce-1a2b3c4d. Essa política negará todo acesso ao bucket se
o endpoint especificado não estiver sendo usado. A condição aws:sourceVpce é usada para especificar
o endpoint e não requer um nome de recurso da Amazon (ARN) para o recurso de VPC endpoint, apenas
o ID do endpoint. Substitua DOC-EXAMPLE-BUCKET2 e vpce-1a2b3c4d por um nome de bucket real e
endpoint.

{
"Version": "2012-10-17",
"Id": "Policy1415115909152",
"Statement": [

Versão da API 2006-03-01


251
Amazon Simple Storage Service Guia do usuário
Identity and Access Management

{ "Sid": "Access-to-specific-VPCE-only",
"Principal": "*",
"Action": "s3:*",
"Effect": "Deny",
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET2",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*"],
"Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"}}
}
]
}

Para obter mais exemplos de políticas, consulte Endpoints para o Amazon S3 no Guia do usuário da VPC.

Para obter mais informações sobre conectividade de VPC, consulte Opções de conectividade entre a rede
e a VPC no whitepaper da AWS: Opções de conectividade do Amazon Virtual Private Cloud.

Identity and Access Management no Amazon S3


Por padrão, todos os recursos do Amazon S3, como buckets, objetos e sub-recursos relacionados (por
exemplo, configuração de lifecycle e de website), são privados. Somente o proprietário do recurso,
a conta da AWS que o criou, pode acessar esse recurso. O proprietário do recurso pode conceder
permissões de acesso a outros, criando uma política de acesso.

O Amazon S3 oferece opções de política de acesso classificadas amplamente como políticas com base
em recursos e políticas de usuário. As políticas de acesso que você anexa aos recursos (buckets e
objetos) são chamadas de políticas com base em recursos. Por exemplo, as políticas de bucket e as
listas de controle de acesso (ACLs) são políticas com base em recursos. Você também pode anexar
políticas de acesso a usuários em sua conta. Elas são chamadas de políticas de usuário. Você pode
optar por usar políticas com base em recursos, políticas de usuário ou qualquer combinação delas para
gerenciar permissões para seus recursos do Amazon S3. As seções a seguir fornecem diretrizes gerais
para gerenciar permissões no Amazon S3.

Para obter mais informações sobre como gerenciar o acesso aos seus objetos e buckets do Amazon S3,
consulte os tópicos abaixo.

Tópicos
• Visão geral do gerenciamento de acesso (p. 252)
• Diretrizes para políticas de acesso (p. 258)
• Como o Amazon S3 autoriza uma solicitação (p. 261)
• Políticas de bucket e políticas de usuário (p. 268)
• Gerenciar o acesso com ACLs (p. 440)
• Usar o compartilhamento de recursos de origem cruzada (CORS) (p. 458)
• Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469)
• Gerenciamento de acesso a dados com pontos de acesso do Amazon S3 (p. 480)
• Revisar o acesso de bucket usando o Access Analyzer for S3 (p. 496)
• Controlar a propriedade de objetos carregados usando a propriedade de objetos do S3 (p. 500)
• Verificar a propriedade do bucket com a condição de proprietário do bucket (p. 502)

Visão geral do gerenciamento de acesso


Ao conceder permissões no Amazon S3, você decide quem as recebe, a quais recursos do Amazon S3
as permissões se referem e as ações específicas que deseja permitir nesses recursos. As seções a seguir
fornecem uma visão geral dos recursos do Amazon S3 e como determinar o melhor método para controlar
o acesso a eles.

Versão da API 2006-03-01


252
Amazon Simple Storage Service Guia do usuário
Visão geral

Tópicos
• Recursos do Amazon S3: buckets e objetos (p. 253)
• Propriedade de bucket e objeto do Amazon S3 (p. 253)
• Operações de recurso (p. 254)
• Gerenciar o acesso aos recursos (p. 255)
• Qual método de controle de acesso devo usar? (p. 258)

Recursos do Amazon S3: buckets e objetos


Na AWS, um recurso é uma entidade com a qual você pode trabalhar. No Amazon S3, os buckets e os
objetos são os recursos e ambos têm sub-recursos associados.

Os sub-recursos de bucket incluem o seguinte:

• lifecycle: armazena informações sobre a configuração do ciclo de vida. Para obter mais informações,
consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).
• website: armazena informações de configuração do site se você configurar o bucket para hospedagem
de sites. Para obter mais informações, consulte Hospedagem de um site estático usando o Amazon
S3 (p. 945).
• versioning: armazena a configuração de versionamento. Para obter mais informações, consulte
Versionamento do bucket PUT na Referência da API do Amazon Simple Storage Service.
• policy e acl (lista de controle de acesso) – Armazena informações de permissão de acesso do bucket.
• cors (compartilhamento de recursos de origem cruzada): oferece suporte a configuração do bucket para
permitir solicitações de origem cruzada. Para obter mais informações, consulte Usar o compartilhamento
de recursos de origem cruzada (CORS) (p. 458).
• object ownership: permite que o proprietário do bucket assuma a propriedade de novos objetos no
bucket, independentemente de quem faz upload deles. Para obter mais informações, consulte Controlar
a propriedade de objetos carregados usando a propriedade de objetos do S3 (p. 500).
• logging: permite solicitar ao Amazon S3 para salvar logs de acesso de bucket.

Os sub-recursos de objeto incluem o seguinte:

• acl – Armazena uma lista de permissões de acesso no objeto. Para obter mais informações, consulte
Visão geral da lista de controle de acesso (ACL) (p. 440).
• restore: oferece suporte para restaurar, temporariamente, um objeto arquivado. Para obter mais
informações, consulte Restauração do objeto POST na Referência de APIs do Amazon Simple Storage
Service.

Um objeto na classe de armazenamento do S3 Glacier é um objeto arquivado. Para acessar o objeto,


você deve, primeiro, iniciar uma solicitação de restauração, que restaura uma cópia do objeto arquivado.
Na solicitação, especifique o número de dias que você deseja que a cópia restaurada exista. Para
obter mais informações sobre arquivamento de objetos, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).

Propriedade de bucket e objeto do Amazon S3


Buckets e objetos são recursos do Amazon S3. Por padrão, apenas o proprietário dos recursos pode
acessá-los. O proprietário do recurso refere-se à conta da AWS que criou o recurso. Por exemplo:

• A conta da AWS que você usa para criar buckets e fazer upload de objetos é proprietária desses
recursos.

Versão da API 2006-03-01


253
Amazon Simple Storage Service Guia do usuário
Visão geral

• Se fizer upload de um objeto usando credenciais de função ou usuário do AWS Identity and Access
Management (IAM), a conta da AWS à qual o usuário ou a função pertencem é proprietária do objeto.
• Um proprietário do bucket pode conceder permissões entre contas à outra conta da AWS (ou aos
usuários em outra conta) para fazer upload de objetos. Nesse caso, a conta da AWS que faz upload
dos objetos detém esses objetos. O proprietário do bucket não tem permissões nos objetos que outras
contas possuem, com as seguintes exceções:
• O proprietário do bucket paga as faturas. O proprietário do bucket pode negar acesso a todos os
objetos ou excluir objetos no bucket, independentemente de quem o possui.
• O proprietário do bucket pode arquivar todos os objetos ou restaurar os objetos arquivados,
independentemente de quem os possui. Arquivo refere-se à classe de armazenamento usada para
armazenar os objetos. Para obter mais informações, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).

Autenticação de solicitação e propriedade


Todas as solicitações para um bucket são autenticadas ou não autenticadas. As solicitações autenticadas
devem incluir um valor de assinatura que autentica o remetente da solicitação. Para solicitações não
autenticadas, isso não é necessário. Para obter mais informações sobre autenticação da solicitação,
consulte Fazer solicitações (p. 990).

Um proprietário do bucket pode permitir solicitações não autenticadas. Por exemplo, solicitações PUT
Object não autenticadas são permitidas quando um bucket tem uma política pública de bucket, ou quando
uma ACL do bucket concede acesso WRITE ou FULL_CONTROL ao grupo All Users (Todos os usuários)
ou ao usuário anônimo especificamente. Para obter mais informações sobre políticas de bucket público e
listas de controle de acesso (ACLs) públicas, consulte O significado de "público" (p. 473).

Todas as solicitações não autenticadas são feitas pelo usuário anônimo. Esse usuário é representado
em ACLs pelo ID de usuário canônico específico 65a011a29cdf8ec533ec3d1ccaae921c. Se for feito
o upload de um objeto em um bucket por meio de uma solicitação não autenticada, o usuário anônimo
será proprietário o objeto. A ACL padrão do objeto concede FULL_CONTROL ao usuário anônimo como
o proprietário do objeto. Portanto, o Amazon S3 permite que solicitações não autenticadas recuperem o
objeto ou modifiquem a ACL dele.

Para evitar que os objetos sejam modificados pelo usuário anônimo, recomendamos que você não
implemente políticas de bucket que permitam gravações públicas anônimas em seu bucket ou use
ACLs que concedam ao usuário anônimo acesso de gravação ao bucket. Você pode aplicar esse
comportamento recomendado usando o Bloqueio de acesso público do Amazon S3.

Para obter mais informações sobre como bloquear o acesso público, consulte Bloquear o acesso público
ao armazenamento do Amazon S3 (p. 469). Para obter mais informações sobre ACLs, consulte Visão
geral da lista de controle de acesso (ACL) (p. 440).
Important

Recomendamos que você não use credenciais de usuário raiz da conta da AWS para fazer
solicitações autenticadas. Em vez disso, crie um usuário do IAM e conceda acesso total a ele.
Esses usuários são conhecidos como usuários administradores. As credenciais do usuário
administrador podem ser usadas, em vez das credenciais do usuário raiz da conta da AWS,
para interagir com a AWS e executar tarefas, como criar um bucket, criar usuários e conceder
permissões a eles. Para obter mais informações, consulte Credenciais de usuário raiz da conta
da AWS e credenciais de usuário do IAM nas práticas recomendadas de referência geral e
segurança da AWS no IAM no Guia do usuário do IAM.

Operações de recurso
O Amazon S3 fornece um conjunto de operações para trabalhar com recursos do Amazon S3. Para ver
uma lista das operações disponíveis, consulte Ações definidas pelo Amazon S3 (p. 289).

Versão da API 2006-03-01


254
Amazon Simple Storage Service Guia do usuário
Visão geral

Gerenciar o acesso aos recursos


Gerenciamento refere-se à concessão de permissões a outros (usuários e contas da AWS) para realizar
operações de recurso, criando uma política de acesso. Por exemplo, você pode conceder a permissão
PUT Object a um usuário em uma conta da AWS para que o usuário possa fazer upload de objetos em
seu bucket. Além da concessão de permissões para usuários e contas individuais, você pode conceder
permissões a todos (também chamado de acesso anônimo) ou a todos os usuários autenticados (usuários
com credenciais da AWS). Por exemplo, se você configurar seu bucket como um site, talvez queira tornar
os objetos públicos, concedendo a permissão GET Object a todos.

Opções de política de acesso


A política de acesso descreve quem tem acesso a quê. Você pode associar uma política de acesso a
um recurso (bucket e objeto) ou um usuário. Conforme necessário, você pode classificar as políticas de
acesso do Amazon S3 disponíveis da seguinte maneira:

• Políticas com base em recursos: as políticas de bucket e listas de controle de acesso (ACLs) são com
base em recurso porque você as anexa aos recursos do Amazon S3.

• ACL – Cada bucket e objeto tem uma ACL associada. Uma ACL é uma lista de concessões que
identifica o concessionário e a permissão concedida. Você usa ACLs para conceder permissões de
leitura/gravação básicas a outras contas da AWS. As ACLs usam um esquema XML específico do
Amazon S3.

Esta é uma ACL de bucket de exemplo. A concessão na ACL mostra um proprietário do bucket com
permissão de controle total.

<?xml version="1.0" encoding="UTF-8"?>


<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>*** Owner-Canonical-User-ID ***</ID>
<DisplayName>owner-display-name</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Canonical User">
<ID>*** Owner-Canonical-User-ID ***</ID>
<DisplayName>display-name</DisplayName>
</Grantee>

Versão da API 2006-03-01


255
Amazon Simple Storage Service Guia do usuário
Visão geral

<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>

As ACLs de bucket e objeto usam o mesmo esquema XML.


• Política de bucket: para seu bucket, você pode adicionar uma política de bucket para conceder a
outras contas da AWS ou usuários do IAM permissões ao bucket e aos objetos contidos nele. As
permissões de objeto aplicam-se somente aos objetos criados pela proprietário do bucket. As políticas
do bucket suplementam e, em muitos casos, substituem as políticas de acesso com base em ACL.

A seguir há um exemplo de política de bucket. Você expressa a política de bucket (e a política de


usuário) usando um arquivo JSON. A política concede permissão de leitura anônima a todos os
objetos em um bucket. A política de bucket tem uma instrução, que permite a ação s3:GetObject
(permissão de leitura) em objetos em um bucket chamado examplebucket.  Especificando
principal com um caractere curinga (*), a política concede acesso anônimo. Tenha cuidado ao
fazer isso. Por exemplo, a seguinte política de bucket tornaria os objetos publicamente acessíveis.

{
"Version":"2012-10-17",
"Statement": [
{
"Sid":"GrantAnonymousReadPermissions",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::awsexamplebucket1/*"]
}
]
}

• Políticas de usuário: você pode usar o IAM para gerenciar o acesso a recursos do Amazon S3. Você
pode criar usuários, grupos e funções do IAM em sua conta e anexar políticas de acesso que concedem
acesso a recursos da AWS, incluindo o Amazon S3.

Para obter mais informações sobre o IAM, consulte AWS Identity and Access Management (IAM).

Veja a seguir um exemplo de política de usuário. Você não pode conceder permissões anônimas em
uma política de usuário do IAM, pois a política é anexada a um usuário. A política de exemplo permite ao
usuário associado que está anexado executar seis ações diferentes do Amazon S3 em um bucket nos
objetos contidos nele. É possível anexar essa política a um usuário, grupo ou função específico do IAM.

Versão da API 2006-03-01


256
Amazon Simple Storage Service Guia do usuário
Visão geral

"Version": "2012-10-17",
"Statement": [
{
"Sid": "AssignUserActions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*",
"arn:aws:s3:::awsexamplebucket1"
]
},
{
"Sid": "ExampleStatement2",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}

Quando o Amazon S3 recebe uma solicitação, deve avaliar todas as políticas de acesso para determinar
se deve autorizar ou negar a solicitação. Para obter mais informações sobre como o Amazon S3 avalia
essas políticas, consulte Como o Amazon S3 autoriza uma solicitação (p. 261).

Analisador de acesso para S3


No console do Amazon S3, você pode usar o Analisador de acesso para S3 para revisar todos os buckets
com listas de controle de acesso (ACLs) de bucket, políticas de bucket ou políticas de ponto de acesso
que concedem acesso público ou compartilhado. O Analisador de acesso para S3 alerta sobre buckets
configurados para permitir o acesso a qualquer pessoa na Internet ou a outras contas da AWS, incluindo
contas da AWS fora da organização. Para cada bucket público ou compartilhado, você recebe descobertas
que relatam a origem e o nível de acesso público ou compartilhado.

No Analisador de acesso para S3, você pode bloquear todo o acesso público a um bucket com um único
clique. Recomendamos que você bloqueie todo o acesso aos buckets, a menos que exija acesso público
para dar suporte a um caso de uso específico. Antes de bloquear todo o acesso público, certifique-
se de que os aplicativos continuarão funcionando corretamente sem acesso público. Para obter mais
informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).

Você também pode detalhar as configurações de permissão no nível do bucket para definir níveis
granulares de acesso. Para casos de uso específicos e verificados que exigem acesso público ou
compartilhado, você pode confirmar e registrar sua intenção de que o bucket permaneça público ou
compartilhado arquivando as descobertas do bucket. Você pode acessar novamente e modificar essas
configurações de bucket a qualquer momento. Você também pode fazer download das descobertas como
um relatório CSV para fins de auditoria.

O Analisador de acesso para S3 está disponível sem custo adicional no console do Amazon S3. O
Analisador de acesso para S3 é desenvolvido pelo Analisador de acesso do AWS Identity and Access
Management (IAM). Para usar o Analisador de acesso para S3 no console do Amazon S3, você deve
visitar o console do IAM e criar um analisador no nível da conta no Analisador de acesso do IAM por
região.

Para obter mais informações sobre o Access Analyzer for S3, consulte Revisar o acesso de bucket usando
o Access Analyzer for S3 (p. 496).

Versão da API 2006-03-01


257
Amazon Simple Storage Service Guia do usuário
Diretrizes para políticas de acesso

Qual método de controle de acesso devo usar?


Com as opções disponíveis para gravar uma política de acesso, surgem as seguintes perguntas:

• Quando devo usar qual método de controle de acesso? Por exemplo, para conceder permissões de
bucket, devo usar uma política de bucket ou uma ACL de bucket?

Possuo um bucket e os objetos no bucket. Devo usar uma política de acesso baseada em recursos ou
uma política de usuário do IAM?

Se eu usar uma política de acesso baseada em recursos, devo usar uma política de bucket ou uma ACL
de objeto para gerenciar permissões de objeto?
• Possuo um bucket, mas não possuo todos os seus objetos. Como as permissões de acesso são
gerenciadas para objetos que alguém possui?
• Se eu conceder acesso usando uma combinação dessas opções de política de acesso, como o Amazon
S3 determinará se um usuário tem permissão para executar uma operação solicitada?

As seções a seguir explicam essas alternativas de controle de acesso, como o Amazon S3 avalia
mecanismos de controle de acesso e quando usar cada método de controle de acesso. Também fornecem
demonstrações com exemplos.

• Diretrizes para políticas de acesso (p. 258)


• Como o Amazon S3 autoriza uma solicitação (p. 261)
• Demonstrações de exemplo: gerenciar o acesso aos recursos do Amazon S3 (p. 410)
• Melhores práticas de controle de acesso (p. 20)

Diretrizes para políticas de acesso


O Amazon S3 oferece suporte para políticas com base em recursos e políticas de usuário para gerenciar
o acesso aos recursos do Amazon S3. Para obter mais informações, consulte Gerenciar o acesso aos
recursos (p. 255). As políticas com base em recursos incluem políticas de bucket, listas de controle de
acesso (ACLs) de bucket e ACLs de objeto. Esta seção descreve cenários específicos para usar políticas
de acesso com base em recursos para gerenciar o acesso aos recursos do Amazon S3.

Tópicos
• Quando usar uma política de acesso com base em ACL (ACLs de bucket e objeto) (p. 258)
• Quando usar uma política de bucket (p. 260)
• Quando usar uma política de usuário (p. 260)
• Tópicos relacionados (p. 261)

Quando usar uma política de acesso com base em ACL (ACLs


de bucket e objeto)
Os buckets e objetos têm ACLs associadas que você pode usar para conceder permissões. As seguintes
seções descrevem cenários para usar ACLs de objeto e ACLs de bucket.

Quando usar uma ACL de objeto


Além de uma ACL de objeto, o proprietário de objeto pode gerenciar permissões de objeto de outras
formas. Por exemplo:

Versão da API 2006-03-01


258
Amazon Simple Storage Service Guia do usuário
Diretrizes para políticas de acesso

• Se a conta da AWS que possui o objeto também possuir o bucket, poderá gravar uma política de bucket
para gerenciar permissões de objeto.
• Se a conta da AWS que possui o objeto desejar conceder permissão a um usuário em sua conta, poderá
usar uma política de usuário.

Então quando usar ACLs de objeto para gerenciar permissões de objeto? Veja a seguir os cenários em
que você faria isso.

Objetos não pertencentes ao proprietário do bucket

Uma ACL de objeto é a única maneira de gerenciar o acesso a objetos não pertencentes ao proprietário do
bucket. Uma conta da AWS que possui o bucket pode conceder permissão para outra conta da AWS fazer
upload de objetos. O proprietário do bucket não detém esses objetos. A conta da AWS que criou o objeto
deve conceder permissões usando ACLs de objeto.
Note

Um proprietário do bucket não pode conceder permissões em objetos que não possui. Por
exemplo, uma política de bucket que concede permissões de objeto aplica-se somente a objetos
do proprietário do bucket. Contudo, o proprietário do bucket, que paga as faturas, pode gravar
uma política de bucket para negar acesso a todos os objetos no bucket, independentemente de
quem o possui. O proprietário do bucket também pode excluir todos os objetos no bucket.

Você precisa gerenciar permissões no nível do objeto

Suponha que as permissões variem de acordo com o objeto e você precise gerenciar permissões no nível
do objeto. É possível gravar uma única instrução de política que conceda a uma conta da AWS permissão
de leitura e milhões de objetos com um prefixo específico de nome de chave. Por exemplo, você pode
permissão de leitura em objetos que começam com “logs” como prefixo de nome de chave. Contudo, se
as permissões de acesso variam por objeto, conceder permissões para objetos individuais usando uma
política de bucket talvez não seja prático. Além disso, as políticas de bucket são limitadas a 20 KB.

Nesse caso, você pode considerar o uso de ACLs de objeto como uma boa alternativa. No entanto, mesmo
uma ACL de objeto é limitada a, no máximo, 100 concessões. Para obter mais informações, consulte Visão
geral da lista de controle de acesso (ACL) (p. 440).

As ACLs de objeto controlam somente permissões no nível do objeto

Há uma política de bucket para o bucket todo, mas as ACLs de objeto são especificadas por objeto.

Uma conta da AWS que possui um bucket pode conceder outra permissão de conta da AWS para
gerenciar a política de acesso. Ela permite que a conta altere algo na política. Para gerenciar permissões
melhor, você pode optar por não conceder uma permissão tão ampla e conceder somente as permissões
READ-ACP e WRITE-ACP em um subconjunto de objetos. Isso limita a conta para gerenciar permissões
somente em objetos específicos atualizando ACLs de objeto individuais.

Quando usar uma ACL de bucket


O único caso de uso recomendado para a ACL de bucket é conceder a permissão de gravação para
o grupo de entrega de logs do Amazon S3 para gravar objetos de log de acesso no bucket. Para
obter mais informações, consulte Registrar em log as solicitações com registro em log de acesso ao
servidor (p. 833).

Se você quiser que o Amazon S3 forneça logs de acesso ao seu bucket, deve conceder permissão de
gravação no bucket ao grupo de entrega de log. A única maneira de conceder as permissões necessárias
para o grupo de entrega de log é usar uma ACL de bucket, conforme exibido no seguinte fragmento de
ACL de bucket.

<?xml version="1.0" encoding="UTF-8"?>

Versão da API 2006-03-01


259
Amazon Simple Storage Service Guia do usuário
Diretrizes para políticas de acesso

<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
...
</Owner>
<AccessControlList>
<Grant>
...
</Grant>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>
</Grantee>
<Permission>WRITE</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>

Quando usar uma política de bucket


Se uma conta da AWS que possui um bucket desejar conceder permissão aos usuários em sua conta,
poderá usar uma política de bucket ou de usuário. Mas, nos cenários a seguir, você deve usar uma política
de bucket.

Você deseja gerenciar permissões entre contas para todas as permissões do Amazon S3

Você pode usar ACLs para conceder permissões entre contas a outras contas. Mas as ACLs são
compatíveis apenas com um conjunto finito de permissões, e essas não incluem todas as permissões do
Amazon S3. Para obter mais informações, consulte Quais permissões posso conceder? (p. 443). Por
exemplo, você não pode conceder permissões em sub-recursos de bucket usando uma ACL. Para obter
mais informações, consulte Identity and Access Management no Amazon S3 (p. 252).

As políticas de bucket e de usuário são compatíveis com a concessão de permissão para todas as
operações do Amazon S3. (Para obter mais informações, consulte Ações do Amazon S3 (p. 273).) No
entanto, as políticas de usuário se destinam a gerenciar permissões para usuários em sua conta. Para
permissões entre contas para outras contas da AWS ou usuários em outra conta, você deve usar uma
política de bucket.

Quando usar uma política de usuário


Geralmente, você pode usar uma política de usuário ou uma política de bucket para gerenciar permissões.
Você pode optar por gerenciar permissões criando usuários e gerenciando permissões individualmente
com a associação de políticas a usuários (ou grupos de usuários). Também é possível que você considere
as políticas baseadas em recursos, como a política de bucket, funcionam melhor para o seu cenário.

Com o AWS Identity and Access Management (IAM), é possível criar vários usuários em sua conta da
AWS e gerenciar as permissões deles por meio de políticas de usuário. Um usuário do IAM deve ter
permissões na conta pai a qual pertence e na conta da AWS que tem o recurso que o usuário deseja
acessar. As permissões podem ser concedidas do seguinte modo:

• Permissão na conta pai: a conta pai pode conceder permissões para seu usuário anexando uma política
de usuário.
• Permissão do proprietário do recurso: o proprietário do recurso pode conceder permissão para o usuário
do IAM (usando uma política de bucket) ou para a conta pai (usando uma política de bucket, uma ACL
de bucket ou uma ACL de objeto).

É semelhante a uma criança que deseja brincar com um brinquedo que pertence a outra pessoa. Nesse
caso, a criança precisa obter permissão de um responsável para brincar com o brinquedo e permissão do
proprietário do brinquedo.

Versão da API 2006-03-01


260
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Políticas de bucket e políticas de usuário (p. 268)

Delegação de permissão
Se uma conta da AWS possuir um recurso, poderá conceder essas permissões para outra conta da AWS.
Essa conta pode então delegar essas permissões, ou um subconjunto delas, para usuários da conta. Isso
é chamado de delegação de permissão. Mas uma conta que recebe permissões de outra conta não pode
delegar permissão entre contas para outra conta da AWS.

Tópicos relacionados
Recomendamos que você analise, primeiramente, todos os tópicos introdutórios que explicam como
gerenciar o acesso aos recursos do Amazon S3 e as diretrizes relacionadas. Para obter mais informações,
consulte Identity and Access Management no Amazon S3 (p. 252). Você pode usar os seguintes tópicos
para obter mais informações sobre as opções específicas da política de acesso.


• Visão geral da lista de controle de acesso (ACL) (p. 440)
• Controlar a propriedade de objetos carregados usando a propriedade de objetos do S3 (p. 500)

Como o Amazon S3 autoriza uma solicitação


Quando o Amazon S3 recebe uma solicitação — por exemplo, uma operação de bucket ou de objeto — ele
primeiro verifica se o solicitante tem as permissões necessárias. O Amazon S3 avalia todas as políticas de
acesso relevantes, as políticas de usuário e as políticas baseadas em recursos (política de bucket, ACL de
bucket, ACL de objeto) para decidir se autoriza a solicitação.

Para determinar se o solicitante tem permissão para executar a operação específica, o Amazon S3 faz o
seguinte, na ordem, quando recebe uma solicitação:

1. Converte todas as políticas de acesso relevantes (política de usuário, política de bucket, ACLs) em
tempo de execução em um conjunto de políticas para avaliação.
2. Avalia o conjunto de políticas resultante nas seguintes etapas. Em cada etapa, o Amazon S3 avalia um
subconjunto de políticas em um contexto específico, com base na autoridade contextual.
a. Contexto de usuário: no contexto de usuário, a conta pai à qual o usuário pertence é a autoridade
contextual.

O Amazon S3 avalia um subconjunto de políticas de propriedade da conta pai. Esse subconjunto


inclui a política de usuário que o pai anexa ao usuário. Se o pai também possuir o recurso na
solicitação (bucket, objeto), o Amazon S3 também avaliará as políticas de recursos correspondentes
(política de bucket, ACL de bucket e ACL de objeto) ao mesmo tempo.

Um usuário deve ter permissão da conta pai para executar uma operação.

A etapa se aplicará apenas se a solicitação for feita por um usuário em uma conta da AWS. Se a
solicitação for feita usando credenciais raiz de uma conta da AWS, o Amazon S3 ignorará esta etapa.
b. Contexto de bucket: no contexto de bucket, o Amazon S3 avalia as políticas de propriedade da conta
da AWS que possui o bucket.

Se a solicitação for para uma operação de bucket, o solicitante deverá ter permissão do proprietário
do bucket. Se a solicitação for para um objeto, o Amazon S3 avaliará todas as políticas de
propriedade do proprietário do bucket para verificar se o proprietário do bucket não negou
explicitamente o acesso ao objeto. Se houver uma negação explícita definida, o Amazon S3 não
autorizará a solicitação.
c. Contexto de objeto: se a solicitação for para um objeto, o Amazon S3 avaliará o subconjunto de
políticas de propriedade do proprietário do objeto.

Versão da API 2006-03-01


261
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Veja a seguir alguns exemplos de cenários que ilustram como o Amazon S3 autoriza uma solicitação.

Example O solicitante é um principal do IAM


Se o solicitante for um principal do IAM, o Amazon S3 deverá determinar se a conta pai da AWS à qual
o principal pertence concedeu a permissão necessária para ele executar a operação. Além disso, se a
solicitação for para uma operação de bucket, como uma solicitação para listar o conteúdo do bucket, o
Amazon S3 deverá verificar se o proprietário do bucket concedeu permissão para o solicitante executar
a operação. Para executar uma operação específica em um recurso, um principal do IAM precisa de
permissão da conta pai da AWS à qual pertence e da conta da AWS que possui o recurso.

Example O solicitante é um principal do IAM: é uma solicitação para um objeto que não pertence
ao proprietário do bucket
Se a solicitação for para uma operação em um objeto que o proprietário do bucket não possui, além de
verificar se o solicitante tem permissões do proprietário do objeto, o Amazon S3 também deverá verificar
a política do bucket para garantir que o proprietário do bucket não definiu negação explícita no objeto.
Um proprietário de bucket (que paga a fatura) pode negar explicitamente o acesso aos objetos do bucket
independentemente de quem os possui. O proprietário do bucket também pode excluir qualquer objeto do
bucket

Para obter mais informações sobre como o Amazon S3 avalia as políticas de acesso para autorizar ou
negar solicitações para operações de bucket e operações de objeto, consulte os seguintes tópicos:

Tópicos
• Como o Amazon S3 autoriza uma solicitação para uma operação de bucket (p. 262)
• Como o Amazon S3 autoriza uma solicitação para uma operação de objeto (p. 265)

Como o Amazon S3 autoriza uma solicitação para uma operação


de bucket
Quando o Amazon S3 recebe uma solicitação para uma operação de bucket, ele converte todas as
permissões relevantes em um conjunto de políticas para avaliar em tempo de execução. As permissões
relevantes incluem permissões baseadas em recursos (por exemplo, políticas de bucket e listas de
controle de acesso de bucket) e políticas de usuário do IAM se a solicitação vier de um principal do IAM.
Em seguida, o Amazon S3 avalia o conjunto de políticas resultante em uma série de etapas, de acordo
com o contexto específico: contexto de usuário ou de bucket.

1. Contexto do usuário: se o solicitante for um principal do IAM, o principal deverá ter permissão da
conta pai da AWS à qual pertence. Nesta etapa, o Amazon S3 avalia um subconjunto de políticas
de propriedade da conta pai (também conhecida como a autoridade de contexto). Esse subconjunto
de políticas inclui a política de usuário que a conta pai anexa ao principal. Se o pai também possuir
o recurso na solicitação (neste caso, o bucket), o Amazon S3 também avaliará as políticas dos
recursos correspondentes (a política do bucket e a ACL do bucket) ao mesmo tempo. Sempre que uma
solicitação para uma operação de bucket é feita, os logs de acesso ao servidor registram o ID canônico
do solicitante. Para obter mais informações, consulte Registrar em log as solicitações com registro em
log de acesso ao servidor (p. 833).
2. Contexto de bucket: o solicitante deve ter permissões do proprietário do bucket para executar uma
operação específica de bucket. Nesta etapa, o Amazon S3 avalia um subconjunto de políticas de
propriedade da conta da AWS que possui o bucket.

O proprietário do bucket pode conceder permissão usando uma política do bucket ou a ACL do bucket.
Observe que, se a conta da AWS que possui o bucket também for a conta pai de um principal do IAM,
ela poderá configurar permissões de bucket em uma política de usuário.

O seguinte é uma ilustração gráfica da avaliação baseada em contexto para a operação de bucket.

Versão da API 2006-03-01


262
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Os exemplos a seguir ilustram a lógica da avaliação.

Exemplo 1: operação de bucket solicitada pelo proprietário do bucket


Neste exemplo, o proprietário do bucket envia uma solicitação para uma operação de bucket usando as
credenciais raiz da conta da AWS.

O Amazon S3 executa a avaliação de contexto da seguinte forma:

1. Como a solicitação é feita usando credenciais raiz de uma conta da AWS, o contexto de usuário não é
avaliado.
2. No contexto de bucket, o Amazon S3 analisa a política de bucket para determinar se o solicitante tem
permissão para executar a operação. O Amazon S3 autoriza a solicitação.

Versão da API 2006-03-01


263
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Exemplo 2: operação de bucket solicitada por uma conta da AWS que não é a
proprietária do bucket
Neste exemplo, uma solicitação é feita usando as credenciais raiz da conta da AWS 1111-1111-1111 para
uma operação de bucket de propriedade da conta da AWS 2222-2222-2222. Nenhum usuário do IAM está
envolvido nessa solicitação.

Neste caso, o Amazon S3 avalia o contexto da seguinte forma:

1. Como a solicitação é feita usando as credenciais raiz de uma conta da AWS, o contexto de usuário não
é avaliado.
2. No contexto de bucket, o Amazon S3 examina a política de bucket. Se o proprietário do bucket (conta
da AWS 2222-2222-2222) não autorizou a conta da AWS 1111-1111-1111 a executar a operação
solicitada, o Amazon S3 negará a solicitação. Caso contrário, o Amazon S3 concederá a solicitação e
executará a operação.

Exemplo 3: operação de bucket solicitada por um principal do IAM cuja conta pai
da AWS também é a proprietária do bucket
No exemplo, a solicitação é enviada por Jill, uma usuária do IAM na conta da AWS 1111-1111-1111, que
também possui o bucket.

O Amazon S3 executa a seguinte avaliação de contexto:

1. Como a solicitação é de um principal do IAM, no contexto da usuária, o Amazon S3 avalia todas as


políticas que pertencem à conta pai da AWS para determinar se Jill tem permissão para executar a
operação.

Versão da API 2006-03-01


264
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Neste exemplo, a conta pai da AWS 1111-1111-1111, à qual o principal pertence, também é a
proprietária do bucket. Como resultado, além da política do usuário, o Amazon S3 também avalia a
política do bucket e a ACL do bucket no mesmo contexto, porque pertencem à mesma conta.
2. Como o Amazon S3 avaliou a política do bucket e a ACL do bucket como parte do contexto de usuário,
ele não avalia o contexto de bucket.

Exemplo 4: operação de bucket solicitada por um principal do IAM cuja conta pai
da AWS não é a proprietária do bucket
Neste exemplo, a solicitação é enviada por Jill, uma usuária do IAM cuja conta pai da AWS é
1111-1111-1111, mas o bucket é de propriedade da outra conta da AWS, 2222-2222-2222.

Jill precisará de permissões da conta pai da AWS e do proprietário do bucket. O Amazon S3 avalia o
contexto da seguinte forma:

1. Como a solicitação é de um principal do IAM, o Amazon S3 avalia o contexto de usuário analisando as


políticas criadas pela conta para verificar se Jill tem as permissões necessárias. Se Jill tiver permissão,
o Amazon S3 avaliará o contexto de bucket. Caso contrário, ele negará a solicitação.
2. No contexto de bucket, o Amazon S3 verifica se o proprietário do bucket 2222-2222-2222 concedeu a
Jill (ou à conta pai da AWS) permissão para executar a operação solicitada. Se ela tiver permissão, o
Amazon S3 concederá a solicitação e executará a operação. Caso contrário, o Amazon S3 negará a
solicitação.

Como o Amazon S3 autoriza uma solicitação para uma operação


de objeto
Quando o Amazon S3 recebe uma solicitação para uma operação de objeto, ele converte todas as
permissões relevantes, permissões baseadas em recursos (lista de controle de acesso (ACL) de objeto,
política de bucket, ACL do bucket) e políticas de usuário do IAM se a solicitação for de um usuário, em
um conjunto de políticas a serem avaliadas no tempo de execução. Em seguida, ele avalia o conjunto de
políticas resultante em uma série de etapas. Em cada etapa, avalia um subconjunto de políticas em três
contextos específicos — contexto de usuário, contexto de bucket e contexto de objeto.

Versão da API 2006-03-01


265
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

1. Contexto do usuário: se o solicitante for um principal do IAM, o principal deverá ter permissão da
conta pai da AWS à qual pertence. Nesta etapa, o Amazon S3 avalia um subconjunto de políticas de
propriedade da conta pai (também conhecida como a autoridade de contexto). Esse subconjunto de
políticas inclui a política de usuário que a pai anexa ao principal. Se o pai também possuir o recurso na
solicitação (bucket, objeto), o Amazon S3 avaliará as políticas de recursos correspondentes (política de
bucket, ACL de bucket e ACL de objeto) ao mesmo tempo.
Note

Se a conta pai da AWS possuir o recurso (bucket ou objeto), ela poderá conceder permissões
de recursos ao principal do IAM usando a política de usuário ou a política de recurso.
2. Contexto de bucket: neste contexto, o Amazon S3 avalia as políticas de propriedade da conta da AWS
que possui o bucket.

Se a conta da AWS que possui o objeto na solicitação não for a mesma que a do proprietário do bucket,
no contexto do bucket, o Amazon S3 verificará as políticas se o proprietário do bucket tiver negado
explicitamente o acesso ao objeto. Se houver uma negação explícita definida no objeto, o Amazon S3
não autorizará a solicitação.
3. Contexto de objeto: o solicitante deve ter permissões do proprietário do objeto para executar uma
operação específica de objeto. Nesta etapa, o Amazon S3 avalia a ACL do objeto.
Note

Se os proprietários do bucket e do objeto forem os mesmos, o acesso ao objeto poderá ser


concedido na política de bucket, que é avaliada no contexto de bucket. Se os proprietários
forem diferentes, os proprietários do objeto deverão usar uma ACL do objeto para conceder
permissões. Se a conta da AWS que possui o objeto também for a conta pai à qual o principal
do IAM pertence, ela poderá configurar permissões de objeto nas política de usuário, que
será avaliada no contexto de usuário. Para obter mais informações sobre como usar essas
alternativas de política de acesso, consulte Diretrizes para políticas de acesso (p. 258).

O seguinte é uma ilustração gráfica da avaliação baseada em contexto para uma operação de objeto.

Versão da API 2006-03-01


266
Amazon Simple Storage Service Guia do usuário
Solicitar autorização

Exemplo 1: solicitação de operação de objeto


Neste exemplo, a usuária do IAM, Jill, cuja conta pai da AWS é 1111-1111-1111, envia uma solicitação
de operação de objeto (por exemplo, Get object) para um objeto de propriedade da conta da AWS
3333-3333-3333 em um bucket de propriedade da conta da AWS 2222-2222-2222.

Versão da API 2006-03-01


267
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Jill precisará de permissão da conta pai da AWS, do proprietário do bucket e do proprietário do objeto. O
Amazon S3 avalia o contexto da seguinte forma:

1. Como a solicitação é de um principal do IAM, o Amazon S3 avalia o contexto de usuário para verificar
se a conta pai da AWS 1111-1111-1111 forneceu a Jill permissão para executar a operação solicitada.
Se ela tiver essa permissão, o Amazon S3 avaliará o contexto de bucket. Caso contrário, o Amazon S3
negará a solicitação.
2. No contexto de bucket, o proprietário do bucket, conta da AWS 2222-2222-2222, é a autoridade de
contexto. O Amazon S3 avalia a política de bucket para determinar se o proprietário do bucket negou
explicitamente o acesso de Jill ao objeto.
3. No contexto de objeto, a autoridade de contexto é a conta da AWS 3333-3333-3333, a proprietária
do objeto. O Amazon S3 avalia a ACL do objeto para determinar se Jill tem permissão para acessar o
objeto. Se tiver, o Amazon S3 autorizará a solicitação.

Políticas de bucket e políticas de usuário


Políticas de bucket e políticas de usuário são duas opções de política de acesso disponíveis para conceder
permissão aos seus recursos do Amazon S3. As duas usam linguagem de política de acesso baseada em
JSON.

Os tópicos nesta seção descrevem os elementos da linguagem de política de chave, com ênfase
em detalhes específicos do Amazon S3, e oferecem exemplos de política de bucket e usuário.
Recomendamos analisar primeiro os tópicos introdutórios que explicam os conceitos básicos e as opções
disponíveis para gerenciar o acesso aos recursos do Amazon S3. Para obter mais informações, consulte
Identity and Access Management no Amazon S3 (p. 252).
Important

As políticas de bucket são limitadas a 20 KB.

Versão da API 2006-03-01


268
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Tópicos
• Políticas e permissões no Amazon S3 (p. 269)
• Uso de políticas de bucket (p. 376)
• Uso de políticas de usuário do IAM (p. 387)
• Demonstrações de exemplo: gerenciar o acesso aos recursos do Amazon S3 (p. 410)
• Usar funções vinculadas a serviços para o Amazon S3 Storage Lens (p. 437)

Políticas e permissões no Amazon S3


Esta página fornece uma visão geral de bucket e políticas de usuário no Amazon S3 e descreve os
elementos básicos de uma política. Cada elemento listado vincula mais detalhes sobre esse elemento e
exemplos de como usá-lo.

Para obter uma lista completa de ações, recursos e condições do Amazon S3, consulte Ações, recursos e
chaves de condição do Amazon S3 (p. 288).

No sentido mais básico, uma política contém os seguintes elementos:

• Recursos (p. 270): buckets, objetos, pontos de acesso e trabalhos são os recursos do Amazon S3
para os quais você pode permitir ou negar permissões. Em uma política, você usa o nome de recurso da
Amazon (ARN) para identificar o recurso. Para obter mais informações, consulte Recursos do Amazon
S3 (p. 270).
• Ações (p. 273): para cada recurso, o Amazon S3 oferece suporte a um conjunto de operações. Você
identifica as operações de recursos que permitirão (ou negarão) usando palavras-chave de ação.

Por exemplo, a permissão s3:ListBucket autoriza o usuário a empregar a operação GET Bucket (List
Objects) do Amazon S3. Para obter mais informações, consulte Ações do Amazon S3 (p. 273).
• Efeito: qual será o efeito quando o usuário solicitar a ação específica - pode ser permitir ou negar.

Se você não conceder (permitir) explicitamente acesso a um recurso, o acesso estará implicitamente
negado. Você também pode negar acesso explicitamente a um recurso. Você poderia fazer isso para
garantir que um usuário não possa acessar o recurso, mesmo se uma política diferente conceder
acesso. Para obter mais informações, consulte Elementos da política JSON do IAM: efeito.
• Principal (p. 271): a conta ou usuário que tem permissão de acesso a ações e recursos na instrução.
Em uma política de bucket, o principal é o usuário, a conta, o serviço ou outra entidade que receba essa
permissão. Para obter mais informações, consulte Principais (p. 271).
• Condição (p. 278): condições para quando uma política está em vigor. Você pode usar chaves de
toda a AWS e chaves específicas do Amazon S3 para especificar condições em uma política de acesso
do Amazon S3. Para obter mais informações, consulte Exemplos de chave de condição do Amazon
S3 (p. 278).

A política de bucket de exemplo a seguir mostra os elementos efeito, principal, ação e recurso. A
política permite que Dave, um usuário na conta ID de conta, tenha as permissões s3:GetObject,
s3:GetBucketLocation e s3:ListBucket do Amazon S3 no bucket awsexamplebucket1.

{
"Version": "2012-10-17",
"Id": "ExamplePolicy01",
"Statement": [
{
"Sid": "ExampleStatement01",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},

Versão da API 2006-03-01


269
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Action": [
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*",
"arn:aws:s3:::awsexamplebucket1"
]
}
]
}

Para obter mais informações, consulte os tópicos abaixo. Para obter informações completas sobre
linguagem de políticas, consulte Políticas e permissões e Referência de política de JSON do IAM no Guia
do usuário do IAM.

Tópicos
• Recursos do Amazon S3 (p. 270)
• Principais (p. 271)
• Ações do Amazon S3 (p. 273)
• Chaves de condição do Amazon S3 (p. 275)
• Ações, recursos e chaves de condição do Amazon S3 (p. 288)

Recursos do Amazon S3
O formato comum de nome de recurso da Amazon (ARN) a seguir identifica recursos na AWS:

arn:partition:service:region:namespace:relative-id

Para obter informações sobre ARNs, consulte Nomes de recurso da Amazon (ARNs) na Referência geral
da AWS.

Para obter informações sobre recursos, consulte Elementos de política de JSON do IAM: recurso no Guia
do usuário do IAM.

Um ARN do Amazon S3 exclui a região da AWS e o namespace, mas inclui o seguinte:

• Partição: aws é um nome de partição comum. Se os seus recursos estiverem na região China (Pequim),
aws-cn será o nome da partição.
• Serviço: s3.
• ID relativo: bucket-name ou um bucket-name/object-key. Você pode usar curingas.

O formato do ARN para recursos do Amazon S3 se reduz a:

arn:aws:s3:::bucket_name/key_name

Para obter uma lista completa dos recursos do Amazon S3, consulte Ações, recursos e chaves de
condição do Amazon S3 (p. 288).

Para encontrar o ARN de um bucket do S3, consulte as páginas de permissões Bucket Policy (Política
de bucket) ou CORS configuration (Configuração CORS) do console do Amazon S3. Para obter mais
informações, consulte os tópicos a seguir:

• Adicionar uma política de bucket usando o console do Amazon S3 (p. 377)


• Configuração de CORS (p. 459)

Versão da API 2006-03-01


270
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Exemplos de ARN do Amazon S3


Veja a seguir exemplos de ARNs de recurso do Amazon S3.

Nome do bucket e chave de objeto especificados

O ARN a seguir identifica o objeto /developers/design_info.doc no bucket examplebucket.

arn:aws:s3:::examplebucket/developers/design_info.doc

Curingas

Você pode usar curingas como parte do ARN do recurso. É possível usar caracteres curinga (* e ?) em
qualquer segmento de ARN (partes separadas por dois pontos). Um asterisco (*) representa qualquer
combinação de zero ou mais caracteres, e um ponto de interrogação (?) representa qualquer caractere
único. É possível usar vários caracteres * ou ? em cada segmento, mas um curinga não pode abranger
segmentos.

• O ARN a seguir usa o curinga * na parte do ARN relativa ao ID para identificar todos os objetos no
bucket examplebucket.

arn:aws:s3:::examplebucket/*

• O ARN a seguir usa * para indicar todos os recursos do Amazon S3 (todos os buckets e objetos do S3
em sua conta).

arn:aws:s3:::*

• O ARN a seguir usa curingas, * e ?, na parte de relative-ID. Ele identifica todos os objetos em
buckets, como example1bucket, example2bucket, example3bucket e assim por diante.

arn:aws:s3:::example?bucket/*

Variáveis de políticas

Você pode usar variáveis de política em ARNs do Amazon S3. No momento da avaliação da política, essas
variáveis predefinidas são substituídas pelos valores correspondentes. Vamos supor que você organize
seu bucket como um conjunto de pastas, sendo uma pasta para cada um dos seus usuários. O nome da
pasta é igual ao nome do usuário. Para conceder aos usuários permissão às pastas, você pode especificar
uma variável de política no ARN do recurso:

arn:aws:s3:::bucket_name/developers/${aws:username}/

No tempo de execução, quando a política é avaliada, a variável ${aws:username} no ARN do recurso é


substituída pelo nome do usuário que faz a solicitação.

Principais
O elemento Principal especifica o usuário, a conta, o serviço ou outra entidade que tem o acesso
permitido ou negado a um recurso. Veja a seguir exemplos de especificação de Principal. Para obter
mais informações, consulte Principal no Guia do usuário do IAM.

Conceder permissões a uma conta da AWS


Para conceder permissões para uma conta da AWS, identifique a conta usando o seguinte formato.

"AWS":"account-ARN"

Versão da API 2006-03-01


271
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Veja os exemplos a seguir.

"Principal":{"AWS":"arn:aws:iam::AccountNumber-WithoutHyphens:root"}

"Principal":{"AWS":["arn:aws:iam::AccountNumber1-
WithoutHyphens:root","arn:aws:iam::AccountNumber2-WithoutHyphens:root"]}

O Amazon S3 também oferece suporte a um ID de usuário canônico, que é uma forma complexa do ID de
conta da AWS. Você pode especificar esse ID usando o formato a seguir.

"CanonicalUser":"64-digit-alphanumeric-value"

Veja um exemplo a seguir.

"Principal":{"CanonicalUser":"64-digit-alphanumeric-value"}

Para obter informações sobre como encontrar o ID de usuário canônico da conta, consulte Encontrar o ID
de usuário canônico da conta.
Important

Quando você usa um ID de usuário canônico em uma política, o Amazon S3 pode alterar o ID
canônico para o ID da conta da AWS correspondente. Isso afeta a política, pois os dois IDs
identificam a mesma conta.

Conceder permissões a um usuário do IAM


Para conceder permissão para um usuário do IAM na sua conta, você deve fornecer um par de nome-valor
"AWS":"user-ARN".

"Principal":{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}

Para obter exemplos detalhados que fornecem instruções passo a passo, consulte Exemplo 1: Proprietário
do bucket que concede permissões do bucket aos usuários (p. 413) e Exemplo 3: O proprietário do
bucket concede permissões para objetos que não possui (p. 424).

Conceder permissões anônimas


Para conceder permissão a todos, também denominada acesso anônimo, defina o curinga ("*") como o
valor Principal. Por exemplo, se você configura seu bucket como um site, quer que todos os objetos no
bucket sejam publicamente acessíveis. Os denominados seguintes são equivalentes.

"Principal":"*"

"Principal":{"AWS":"*"}

Warning

Tenha cuidado ao conceder acesso anônimo ao bucket do S3. Quando você concede acesso
anônimo, qualquer pessoa no mundo pode acessar seu bucket. É altamente recomendável que
você nunca conceda nenhum tipo de acesso anônimo de gravação ao seu bucket do S3.

Exigir acesso por URLs do CloudFront


Você pode exigir que os usuários acessem seu conteúdo do Amazon S3 usando URLs do Amazon
CloudFront em vez de URLs do Amazon S3. Para fazer isso, crie uma identidade de acesso de origem

Versão da API 2006-03-01


272
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

(OAI) do CloudFront. Em seguida, altere as permissões no bucket ou nos objetos em seu bucket. O
formato para especificar a OAI em uma instrução Principal é o descrito a seguir.

"Principal":{"CanonicalUser":"Amazon S3 Canonical User ID assigned to origin access


identity"}

Para obter mais informações, consulte Como usar uma identidade de acesso de origem para restringir o
acesso ao conteúdo do Amazon S3 no Guia do desenvolvedor do Amazon CloudFront.

Ações do Amazon S3
O Amazon S3 define um conjunto de permissões que você pode especificar em uma política. Estas são
palavras-chave e cada uma mapeia para uma operação específica do Amazon S3. Para obter mais
informações sobre as operações do Amazon S3, consulte Ações na Referência da API do Amazon Simple
Storage Service.

Para ver como especificar permissões em uma política do Amazon S3, revise os exemplos de políticas
a seguir. Para obter uma lista de ações, recursos e chaves de condição do Amazon S3 para uso em
políticas, consulte Ações, recursos e chaves de condição do Amazon S3 (p. 288). Para obter uma lista
completa das ações do Amazon S3, consulte Ações.

Tópicos
• Exemplo: operações de objeto (p. 273)
• Exemplo: operações de bucket (p. 274)
• Exemplo: operações de sub-recursos de bucket (p. 274)
• Exemplo: operações de conta (p. 275)

Exemplo: operações de objeto

O seguinte exemplo de política de bucket concede as permissões s3:PutObject e s3:PutObjectAcl


a um usuário (Dave). Se você remover o elemento Principal, poderá anexar a política a um usuário.
Estas são operações de objetos. Assim, a parte de relative-id do ARN do Resource identifica objetos
(awsexamplebucket1/*). Para obter mais informações, consulte Recursos do Amazon S3 (p. 270).

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::12345678901:user/Dave"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::awsexamplebucket1/*"
}
]
}

Permissões para todas as ações do Amazon S3

Você pode usar um curinga para conceder permissão para todas as ações do Amazon S3.

"Action": "*"

Versão da API 2006-03-01


273
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Exemplo: operações de bucket


O exemplo a seguir de política de usuário concede as permissões s3:CreateBucket,
s3:ListAllMyBuckets e s3:GetBucketLocation a um usuário. Para todas essas permissões, defina
a parte de Resource ARN de relative-id como “*”. Para todas as outras ações de bucket, você deve
especificar um nome de bucket. Para obter mais informações, consulte Recursos do Amazon S3 (p. 270).

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"statement1",
"Effect":"Allow",
"Action":[
"s3:CreateBucket",
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource":[
"arn:aws:s3:::*"
]
}
]
}

Política de acesso ao console

Se um usuário quiser usar o Console de Gerenciamento da AWS para visualizar buckets e o conteúdo
de qualquer um desses buckets, o usuário deverá ter as permissões s3:ListAllMyBuckets e
s3:GetBucketLocation. Para obter um exemplo, consulte Política de acesso ao console no post de
blog Escrever políticas do IAM: como conceder acesso a um bucket do S3.

Exemplo: operações de sub-recursos de bucket


O seguinte exemplo de política de usuário concede a permissão s3:GetBucketAcl no bucket DOC-
EXAMPLE-BUCKET1 ao usuário Dave.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": [
"s3:GetObjectVersion",
"s3:GetBucketAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"
]
}
]
}

Permissões de DELETE Object

Você pode excluir objetos chamando explicitamente a API DELETE objeto ou configurando seu ciclo de
vida (consulte Gerenciando seu ciclo de vida de armazenamento (p. 569)) de modo que o Amazon S3

Versão da API 2006-03-01


274
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

possa remover os objetos quando seu ciclo de vida expirar. Para bloquear explicitamente usuários ou
contas para exclusão de objetos, você deve negar explicitamente as permissões s3:DeleteObject,
s3:DeleteObjectVersion e s3:PutLifecycleConfiguration.

Negação explícita

Por padrão, os usuários não têm nenhuma permissão. Mas, à medida que você cria usuários, adiciona
usuários a grupos e concede permissões a eles, eles podem obter certas permissões que você não
pretendia conceder. É aí que você pode usar a negação explícita, que se sobrepõe a todas as outras
permissões que um usuário pode ter e nega ao usuário permissões para ações específicas.

Exemplo: operações de conta

O exemplo a seguir de política de usuário concede a permissão s3:GetAccountPublicAccessBlock


a um usuário. Para todas essas permissões, defina o valor Resource como "*". Para obter mais
informações, consulte Recursos do Amazon S3 (p. 270).

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"statement1",
"Effect":"Allow",
"Action":[
"s3:GetAccountPublicAccessBlock"
],
"Resource":[
"*"
]
}
]
}

Chaves de condição do Amazon S3


A linguagem de políticas de acesso permite que especificar condições ao conceder permissões. Para
especificar condições para quando uma política está em vigor, você pode usar o elemento opcional
Condition ou o bloco Condition, para especificar condições para quando uma política está em vigor.
Você pode usar chaves predefinidas de toda a AWS e chaves específicas do Amazon S3 para especificar
condições em uma política de acesso do Amazon S3.

No elemento Condition, que é opcional, você cria expressões em que usa operadores boolianos (equal,
less than, etc.) para fazer a correspondência da sua condição com os valores na solicitação. Por exemplo,
ao conceder a um usuário permissão para fazer upload de um objeto, o proprietário do bucket pode exigir
que o objeto seja publicamente legível adicionando a condição StringEquals conforme mostrado aqui:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "public-read"
}
}

Versão da API 2006-03-01


275
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

}
]
}

No exemplo, o bloco Condition especifica a condição StringEquals que é aplicada ao par de chave-
valor especificado, "s3:x-amz-acl":["public-read"]. Existe um conjunto de chaves predefinidas
que pode ser usado para expressar uma condição. O exemplo usa a chave de condição s3:x-amz-acl.
Essa condição exige que o usuário inclua o cabeçalho x-amz-acl com o valor public-read em cada
solicitação de objeto PUT.

Tópicos
• Chaves de condição de toda a AWS (p. 276)
• Chaves de condição específicas do Amazon S3 (p. 277)
• Exemplos de chave de condição do Amazon S3 (p. 278)

Chaves de condição de toda a AWS

A AWS fornece um conjunto de chaves comuns que recebe o suporte de todos serviços da AWS que, por
sua vez, dão suporte às políticas. Essas chaves são chamadas chaves de toda a AWS e usam o prefixo
aws:. Para obter uma lista completa de chaves de condição em toda a AWS, consulte Chaves da AWS
disponíveis para condições no Guia do usuário do IAM.

Você pode usar chaves de condição de toda a AWS no Amazon S3. O exemplo de política de bucket a
seguir concede a usuários autenticados permissão para usar a ação s3:GetObject, se a solicitação for
proveniente de um intervalo específico de endereços IP (192.0.2.0.*), a menos que o endereço IP seja
192.0.2.188. No bloco de condição, IpAddress e NotIpAddress são condições, e cada condição recebe
um par chave-valor para avaliação. Neste exemplo, os dois pares de chave-valor usam a chave da AWS
aws:SourceIp.
Note

Os valores de chave IPAddress e NotIpAddress especificados na condição usam notação


CIDR conforme descrito na RFC 4632. Para obter mais informações,consulte http://www.rfc-
editor.org/rfc/rfc4632.txt.

{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": "*",
"Action":"s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition" : {
"IpAddress" : {
"aws:SourceIp": "192.0.2.0/24"
},
"NotIpAddress" : {
"aws:SourceIp": "192.0.2.188/32"
}
}
}
]
}

Você também pode usar outras chaves de condição de toda a AWS nas políticas do Amazon S3. Por
exemplo, você pode especificar o aws:SourceVpce e as chaves de condição aws:SourceVpc em

Versão da API 2006-03-01


276
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

políticas de bucket para VPC endpoints. Para ver exemplos, consulte Controlar o acesso a partir de VPC
endpoints com políticas de bucket (p. 377).

Chaves de condição específicas do Amazon S3

Você pode usar chaves de condição do Amazon S3 com ações específicas do Amazon S3. Cada chave
de condição mapeia para o mesmo cabeçalho de solicitação de nome permitido pela API na qual a
condição pode ser definida. As chaves de condição específicas do Amazon S3 ditam o comportamento
dos cabeçalhos de solicitação de mesmo nome. Para obter uma lista completa de chaves de condição
específicas do Amazon S3, consulte Ações, recursos e chaves de condição do Amazon S3 (p. 288).

Por exemplo, a chave de condição s3:x-amz-acl usada para conceder permissão de condição para a
permissão
s3:PutObject
define o comportamento do cabeçalho de solicitação x-amz-acl para o qual a API do objeto PUT oferece
suporte. A chave de condição s3:VersionId que você usa para conceder permissão condicional para a
permissão
s3:GetObjectVersion
define o comportamento do parâmetro de consulta versionId que você define em uma solicitação de
objeto GET.

A política de bucket a seguir concede a permissão s3:PutObject para duas contas da AWS se a
solicitação incluir o cabeçalho x-amz-acl, tornando o objeto publicamente legível. O bloco Condition
usa a condição StringEquals e recebe um par de chave/valor, "s3:x-amz-acl":["public-read",
para avaliação. No par de chave-valor, s3:x-amz-acl é uma chave específica do Amazon S3, conforme
indicado pelo prefixo s3:.

{
"Version":"2012-10-17",
"Statement": [
{
"Sid":"AddCannedAcl",
"Effect":"Allow",
"Principal": {
"AWS": [
"arn:aws:iam::Account1-ID:root",
"arn:aws:iam::Account2-ID:root"
]
},
"Action":"s3:PutObject",
"Resource": ["arn:aws:s3:::awsexamplebucket1/*"],
"Condition": {
"StringEquals": {
"s3:x-amz-acl":["public-read"]
}
}
}
]
}

Important

Nem todas as condições fazem sentido para todas as ações. Por exemplo, faz sentido
incluir uma condição s3:LocationConstraint em uma política que concede a permissão
s3:CreateBucket do Amazon S3. No entanto, não faz sentido incluir essa condição em
uma política que conceda a permissão s3:GetObject. O Amazon S3 pode testar erros de
semântica para esse tipo que envolve condições específicas do Amazon S3. Contudo, se você
estiver criando uma política para um usuário do IAM e incluir uma condição do Amazon S3
semanticamente inválida, nenhum erro será reportado porque o IAM não pode validar condições
do Amazon S3.

Versão da API 2006-03-01


277
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Exemplos de chave de condição do Amazon S3

Você pode usar a linguagem de políticas de acesso para especificar condições ao conceder permissões.
Você pode usar o elemento Condition opcional, ou o bloco Condition para especificar condições para
quando uma política está em vigor.

Para obter políticas que usam chaves de condição do Amazon S3 para operações de objeto e bucket,
consulte os exemplos a seguir. Para obter mais informações sobre essas chaves de condição, consulte
Chaves de condição do Amazon S3 (p. 275). Para obter uma lista completa de ações do Amazon S3,
chaves de condição e recursos que você pode especificar nas políticas, consulte Ações, recursos e chaves
de condição do Amazon S3 (p. 288).

Exemplos: chaves de condição do Amazon S3 para operações de objeto

Esta seção fornece exemplos que mostram como você pode usar chaves de condição específicas do
Amazon S3 para operações de objeto. Para obter uma lista completa de ações do Amazon S3, as chaves
de condição e os recursos que você pode especificar em políticas, consulte Ações, recursos e chaves de
condição do Amazon S3 (p. 288).

Várias das políticas de exemplo mostram como você pode usar chaves de condições com operações
de objeto PUT. As operações de objeto PUT permitem cabeçalhos específicos baseados em lista de
controle de acesso (ACL) usados para conceder permissões baseadas em ACL. Usando essas chaves,
o proprietário do bucket pode definir uma condição para exigir permissões de acesso específicas quando
o usuário faz upload de um objeto. Você também pode conceder permissões baseadas em ACL com a
operação PutoObjectAcl. Para obter mais informações, consulte PutObjectAcl na Referência da API do
Amazon S3 Amazon Simple Storage Service. Para obter mais informações sobre ACLs, consulte Visão
geral da lista de controle de acesso (ACL) (p. 440).

Tópicos
• Exemplo 1: Concessão da permissão s3:PutObject com uma condição que exige que o proprietário do
bucket obtenha controle total (p. 278)
• Exemplo 2: Concessão da permissão s3:PutObject que exige os objetos armazenados usando
criptografia no lado do servidor (p. 280)
• Exemplo 3: Concessão da permissão s3:PutObject para copiar objetos com uma restrição na origem
da cópia (p. 281)
• Exemplo 4: Concessão de acesso a uma versão específica de um objeto (p. 282)
• Exemplo 5: restrição de uploads de objetos com uma classe de armazenamento específica (p. 283)
• Exemplo 6: conceder permissões com base em tags de objetos (p. 283)
• Exemplo 7: restringir o acesso pelo ID da conta da AWS do proprietário do bucket (p. 283)
• Exemplo 8: exigir uma versão mínima de TLS (p. 283)

Exemplo 1: Concessão da permissão s3:PutObject com uma condição que exige que o
proprietário do bucket obtenha controle total

A operação PUT Object permite cabeçalhos específicos da lista de controle de acesso (ACL) que você usa
para conceder permissões baseadas em ACL. Usando essas chaves, o proprietário do bucket pode definir
uma condição para exigir permissões de acesso específicas quando o usuário faz upload de um objeto.

Suponha que a conta A seja proprietária de um bucket e que o administrador da conta queira conceder
a Dave, um usuário na conta B, permissões para fazer upload de objetos. Por padrão, os objetos que
Dave carrega são de propriedade da conta B, e a conta A não tem permissões nesses objetos. Como
o proprietário do bucket é quem paga a fatura, ele quer permissões completas nos objetos que Dave
carrega. O administrador da conta A pode fazer isso concedendo a Dave a permissão s3:PutObject,
com a condição de que a solicitação inclua cabeçalhos específicos da ACL, que concede permissão total
explícita ou usa uma ACL pré-configurada. Para obter mais informações, consulte Objeto PUT.

Versão da API 2006-03-01


278
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Exigir o cabeçalho x-amz-full-control

Você pode exigir o cabeçalho x-amz-full-control na solicitação com permissão de controle total do
proprietário do bucket. A política de bucket a seguir concede ao usuário Dave a permissão s3:PutObject
com uma condição de uso da chave de condição s3:x-amz-grant-full-control, que exige que a
solicitação inclua o cabeçalho x-amz-full-control.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:user/Dave"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringEquals": {
"s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
}
}
}
]
}

Note

Este exemplo trata da permissão entre contas. Contudo, se Dave, a quem é concedida a
permissão, pertencer à conta da AWS que é proprietária do bucket, essa permissão condicional
não será necessária. Isso acontece porque a conta pai à qual o Dave pertence é proprietária dos
objetos que o usuário carrega.

Adicionar negação explícita

A política de bucket anterior concede permissão condicional ao usuário Dave na conta B. Enquanto
essa política estiver em vigor, Dave poderá obter a mesma permissão sem nenhuma condição por meio
de alguma outra política. Por exemplo, Dave pode pertencer a um grupo e você concede ao grupo a
permissão s3:PutObject sem nenhuma condição. Para evitar essas brechas de permissão, você pode
elaborar uma política de acesso mais estrita adicionando uma negação explícita. Neste exemplo, você
nega explicitamente a permissão de upload ao usuário Dave se ele não incluir os cabeçalhos necessários
na solicitação, concedendo permissões totais ao proprietário do bucket. A negação explícita sempre se
sobrepõe a qualquer outra permissão concedida. Veja a seguir um exemplo de política de acesso revisada
com a negação explícita adicionada.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringEquals": {
"s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
}

Versão da API 2006-03-01


279
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

}
},
{
"Sid": "statement2",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
}
}
}
]
}

Testar a política com a CLI da AWS

Se você tiver duas contas da AWS, poderá testar a política usando a interface de linha de comando da
AWS (CLI da AWS). Anexe a política e use as credenciais de Dave para testar a permissão usando o
seguinte comando put-object da CLI da AWS. Você fornece as credenciais de Dave adicionando o
parâmetro --profile. Você concede permissão de controle total ao proprietário do bucket adicionando
o parâmetro --grant-full-control. Para obter mais informações sobre configuração e uso da AWS
CLI, consulte Desenvolvimento com o Amazon S3 usando a AWS CLI (p. 1033).

aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --


grant-full-control id="AccountA-CanonicalUserID" --profile AccountBUserProfile

Exigir o cabeçalho x-amz-acl

Você pode exigir o cabeçalho x-amz-acl com uma ACL padrão que concede permissão de controle total
ao proprietário do bucket. Para exigir o cabeçalho x-amz-acl na solicitação, você pode substituir o par de
chave-valor no bloco Condition e especificar a chave de condição s3:x-amz-acl, conforme o exemplo
abaixo.

"Condition": {
"StringNotEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}

Para testar a permissão usando a CLI do AWS, você especifica o parâmetro --acl. A CLI do AWS
adiciona o cabeçalho x-amz-acl quando ele envia a solicitação.

aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --


acl "bucket-owner-full-control" --profile AccountBadmin

Exemplo 2: Concessão da permissão s3:PutObject que exige os objetos armazenados usando


criptografia no lado do servidor

Vamos supor que a conta A é proprietária de um bucket. O administrador da conta deseja conceder a
Jane, uma usuária na conta A, a permissão para fazer upload de objetos com a condição de que Jane
sempre solicite criptografia no lado do servidor, de modo que o Amazon S3 salve objetos criptografados.
O administrador da conta A pode fazer isso usando a chave de condição s3:x-amz-server-side-
encryption, conforme exibido. O par de chave-valor no bloco Condition especifica a chave s3:x-
amz-server-side-encryption.

Versão da API 2006-03-01


280
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}

Ao testar a permissão usando a CLI da AWS, adicione o parâmetro obrigatório usando o parâmetro --
server-side-encryption.

aws s3api put-object --bucket example1bucket --key HappyFace.jpg --body c:\HappyFace.jpg --


server-side-encryption "AES256" --profile AccountBadmin

Exemplo 3: Concessão da permissão s3:PutObject para copiar objetos com uma restrição na
origem da cópia
Na solicitação PUT objeto, quando você especifica o objeto de origem, isso é uma operação de cópia
(consulte PUT objeto - Copiar). De acordo com isso, o proprietário do bucket pode conceder ao usuário
permissão para copiar objetos com restrições na origem; por exemplo:

• Permite a cópia de objetos somente do bucket sourcebucket.


• Permite copiar objetos do bucket de origem e somente os objetos cujo prefixo de nome de chave
começa com public/ f (por exemplo, sourcebucket/public/*).
• Permite copiar apenas um objeto específico do bucket de origem (por exemplo, sourcebucket/
example.jpg).

A política de bucket a seguir concede a permissão s3:PutObject ao usuário (Dave). Permite copiar
apenas objetos com uma condição de que a solicitação inclua o cabeçalho s3:x-amz-copy-source e o
valor do cabeçalho especifique o prefixo de nome de chave /awsexamplebucket1/public/*.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "cross-account permission to user in your own account",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*"
},
{
"Sid": "Deny your user permission to upload object if copy source is not /
bucket/folder",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringNotLike": {
"s3:x-amz-copy-source": "awsexamplebucket1/public/*"
}
}
}
]
}

Testar a política com a CLI da AWS

Versão da API 2006-03-01


281
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Você pode testar a permissão usando o comando da CLI da AWS copy-object. Você especifica a
origem adicionando o parâmetro --copy-source; o prefixo de nome de chave que deve coincidir
com o prefixo permitido na política. Você precisa inserir as credenciais do usuário de Dave usando o
parâmetro --profile. Para obter mais informações sobre a configuração da CLI da AWS, consulte
Desenvolvimento com o Amazon S3 usando a AWS CLI (p. 1033).

aws s3api copy-object --bucket awsexamplebucket1 --key HappyFace.jpg


--copy-source examplebucket/public/PublicHappyFace1.jpg --profile AccountADave

Conceder permissão para copiar somente um objeto específico

A política anterior usa a condição StringNotLike. Para conceder a permissão para copiar apenas um
objeto em específico, altere a condição de StringNotLike para StringNotEquals e, em seguida,
especifique a chave de objeto exata, conforme exibido.

"Condition": {
"StringNotEquals": {
"s3:x-amz-copy-source": "awsexamplebucket1/public/PublicHappyFace1.jpg"
}
}

Exemplo 4: Concessão de acesso a uma versão específica de um objeto


Vamos supor que a conta A seja proprietária de um bucket habilitado para versão. O bucket tem várias
versões do objeto HappyFace.jpg. O administrador da conta deseja conceder agora ao seu usuário
Dave permissão para obter apenas uma versão específica do objeto. O administrador da conta pode fazer
isso concedendo a Dave a permissão condicional s3:GetObjectVersion, conforme mostrado abaixo.
O par de chave-valor no bloco Condition especifica a chave de condição s3:VersionId. Neste caso,
Dave precisa saber o ID de versão do objeto exato para recuperar o objeto.

Para obter mais informações, consulte GetObject na Referência da API do Amazon Simple Storage
Service.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": "s3:GetObjectVersion",
"Resource": "arn:aws:s3:::examplebucketversionenabled/HappyFace.jpg"
},
{
"Sid": "statement2",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": "s3:GetObjectVersion",
"Resource": "arn:aws:s3:::examplebucketversionenabled/HappyFace.jpg",
"Condition": {
"StringNotEquals": {
"s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
}
}
}
]
}

Versão da API 2006-03-01


282
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Testar a política com a CLI da AWS

Você pode testar as permissões usando o comando get-object da CLI da AWS com o parâmetro --
version-id que identifica a versão específica do objeto. O comando recupera o objeto e o salva no
arquivo OutputFile.jpg.

aws s3api get-object --bucket examplebucketversionenabled --key HappyFace.jpg


OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave

Exemplo 5: restrição de uploads de objetos com uma classe de armazenamento específica


Suponha que a Conta A, representada pelo ID da conta 123456789012, possui um bucket. O administrador
da conta deseja restringir Dave, um usuário na conta A, a fazer upload somente de objetos no bucket que
serão armazenados com a classe de armazenamento STANDARD_IA. Para restringir uploads de objetos
a uma classe de armazenamento específica, o administrador da Conta A pode usar a chave de condição
s3:x-amz-storage-class, conforme mostrado no exemplo de política de bucket a seguir.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*",
"Condition": {
"StringEquals": {
"s3:x-amz-storage-class": [
"STANDARD_IA"
]
}
}
}
]
}

Exemplo 6: conceder permissões com base em tags de objetos


Para obter exemplos sobre como usar chaves de condição de tags de objetos com operações do Amazon
S3, consulte Marcação e políticas de controle de acesso (p. 686).

Exemplo 7: restringir o acesso pelo ID da conta da AWS do proprietário do bucket


Você pode usar a chave de condição s3:ResourceAccount para gravar políticas do IAM ou do Virtual
Private Cloud Endpoint (VPCE) que restringem o acesso de usuários ou aplicações aos buckets do
Amazon S3 pertencentes a um ID de conta da AWS específico. Você pode usar essa chave de condição
para restringir os clientes dentro de sua VPC de acessar buckets que você não possui.

Para obter informações e exemplos, consulte os seguintes recursos:

• Restringir o acesso a buckets em uma conta da AWS especificada no Guia do AWS PrivateLink
• Limitar o acesso a contas específicas da AWS no Blog de armazenamento da AWS

Exemplo 8: exigir uma versão mínima de TLS


Você pode usar a chave de condição s3:TlsVersion para gravar IAM, Virtual Private Cloud Endpoint
(VPCE) ou políticas de bucket que restringem o acesso do usuário ou aplicação aos buckets do Amazon

Versão da API 2006-03-01


283
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

S3 com base na versão TLS usada pelo cliente. Você pode usar essa chave de condição para gravar
políticas que exigem uma versão mínima de TLS.

Example

Este exemplo de política de bucket nega solicitações PutObject por clientes que tenham uma versão TLS
inferior a 1.2, por exemplo, 1.1 ou 1.0.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"
],
"Condition": {
"NumericLessThan": {
"s3:TlsVersion": 1.2
}
}
}
]
}

Example

Esta política de bucket de exemplo permite solicitações PutObject por clientes que têm uma versão TLS
maior que 1.1, por exemplo, 1.2, 1.3 ou superior.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"
],
"Condition": {
"NumericGreaterThan": {
"s3:TlsVersion": 1.1
}
}
}
]
}

Exemplos: chaves de condição do Amazon S3 para operações de bucket

Esta seção fornece exemplos de políticas que mostram como você pode usar chaves de condição
específicas do Amazon S3 para operações de bucket.

Versão da API 2006-03-01


284
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Tópicos
• Exemplo 1: conceder a um usuário permissão para criar um bucket somente em uma região
específica (p. 285)
• Exemplo 2: obter uma lista de objetos em um bucket com um prefixo específico (p. 286)
• Exemplo 3: definir o número máximo de chaves (p. 288)

Exemplo 1: conceder a um usuário permissão para criar um bucket somente em uma região
específica

Vamos supor que um administrador de uma conta da AWS queira conceder ao seu usuário (Dave)
a permissão para criar um bucket somente na região América do Sul (São Paulo). O administrador
da conta pode anexar a política de usuário a seguir que concede a permissão s3:CreateBucket
com uma condição, conforme exibido. O par de chave-valor no bloco Condition especifica a chave
s3:LocationConstraint e a região sa-east-1 como valor.
Note

Neste exemplo, o proprietário do bucket concede permissão para um de seus usuários, de modo
que tanto uma política de bucket quanto uma política de usuário podem ser usadas. Este exemplo
mostra uma política de usuário.

Para obter uma lista das regiões do Amazon S3, consulte Regiões e endpoints na Referência geral da
AWS.

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"statement1",
"Effect":"Allow",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringLike": {
"s3:LocationConstraint": "sa-east-1"
}
}
}
]
}

Adicionar negação explícita

A política acima impede que o usuário crie um bucket em qualquer outra Região, exceto sa-east-1.
No entanto, alguma outra política pode conceder a esse usuário permissão para criar buckets em outra
Região. Por exemplo, se ele pertencer a um grupo, o grupo pode ter uma política anexada que permita que
todos os seus usuários tenham permissão para criar buckets em outra Região. Para garantir que o usuário
não obtenha permissão para criar buckets em nenhuma outra Região, você pode adicionar uma instrução
de negação explícita nessa política.

A declaração Deny usa a condição StringNotLike. Isto é, uma solicitação de criação de bucket será
negada se a restrição de localização não for sa-east-1. A negação explícita não permite que o usuário
crie um bucket em nenhuma outra região, independentemente de outras permissões que o usuário receba.
A política abaixo inclui uma instrução de negação explícita.

{
"Version":"2012-10-17",
"Statement":[

Versão da API 2006-03-01


285
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

{
"Sid":"statement1",
"Effect":"Allow",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringLike": {
"s3:LocationConstraint": "sa-east-1"
}
}
},
{
"Sid":"statement2",
"Effect":"Deny",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringNotLike": {
"s3:LocationConstraint": "sa-east-1"
}
}
}
]
}

Testar a política com a CLI da AWS

Você pode testar a política usando o seguinte comando da CLI da AWS create-bucket. Este exemplo
usa o arquivo bucketconfig.txt para especificar a restrição de localização. Observe o caminho do
arquivo do Windows. Você precisa atualizar o nome e o caminho do bucket conforme apropriado. Você
deve fornecer as credenciais do usuário usando o parâmetro --profile. Para obter mais informações
sobre configuração e uso da AWS CLI, consulte Desenvolvimento com o Amazon S3 usando a AWS
CLI (p. 1033).

aws s3api create-bucket --bucket examplebucket --profile AccountADave --create-bucket-


configuration file://c:/Users/someUser/bucketconfig.txt

O arquivo bucketconfig.txt especifica a configuração da seguinte maneira.

{"LocationConstraint": "sa-east-1"}

Exemplo 2: obter uma lista de objetos em um bucket com um prefixo específico

Você pode usar a chave de condição s3:prefix para limitar a resposta da API GET Bucket (ListObjects)
a nomes de chave com um prefixo específico. Se você for o proprietário do bucket, poderá restringir
um usuário a listar o conteúdo de um prefixo específico no bucket. Essa chave de condição será útil se
os objetos no bucket forem organizados por prefixos de nome de chave. O console do Amazon S3 usa
prefixos de nomes de chaves para mostrar um conceito de pasta. Somente o console suporta o conceito
de pastas; a API do Amazon S3 suporta somente buckets e objetos. Para obter mais informações sobre
como usar prefixos e delimitadores para filtrar permissões de acesso, consulte Controlar o acesso a um
bucket com políticas de usuário (p. 387).

Por exemplo, se você tiver dois objetos com nomes de chave public/object1.jpg e public/
object2.jpg, o console mostrará os objetos na pasta public. Na API do Amazon S3, esses são
objetos com prefixos, não objetos em pastas. No entanto, na API do Amazon S3, se você organizar suas
chaves de objeto usando tais prefixos, poderá conceder a permissão s3:ListBucket com a condição
s3:prefix que permitirá que o usuário obtenha uma lista de nomes de chave com um prefixo específico.

Neste exemplo, o proprietário do bucket e a conta pai à qual o usuário pertence são os mesmos. Assim,
o proprietário do bucket pode usar uma política de bucket ou uma política de usuário. Para obter mais

Versão da API 2006-03-01


286
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

informações sobre outras chaves de condição que você pode usar com a API GET Bucket (ListObjects),
consulte ListObjects.

Política de usuário

A política de usuário a seguir concede a permissão s3:ListBucket (consulte GET bucket (listar objetos))
com uma condição que exige que o usuário especifique o prefix na solicitação com o valor projects.

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"statement1",
"Effect":"Allow",
"Action": "s3:ListBucket",
"Resource":"arn:aws:s3:::awsexamplebucket1",
"Condition" : {
"StringEquals" : {
"s3:prefix": "projects"
}
}
},
{
"Sid":"statement2",
"Effect":"Deny",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::awsexamplebucket1",
"Condition" : {
"StringNotEquals" : {
"s3:prefix": "projects"
}
}
}
]
}

A condição restringe o usuário a listar chaves de objeto com o prefixo projects. A negação
explícita adicionada nega a solicitação do usuário para listar chaves com qualquer outro prefixo,
independentemente de outras permissões que o usuário possa ter. Por exemplo, é possível que o usuário
receba a permissão para listar chaves de objetos sem nenhuma restrição, tanto por meio de atualizações
na política de usuário anterior quanto por meio de uma política de bucket. Como a negação explícita
sempre prevalece, a solicitação do usuário para listar outras chaves além do prefixo projects é negada.

Política de bucket

Se você adicionar o elemento Principal à política de usuário acima, identificando o usuário, agora terá
uma política de bucket conforme exibido.

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"statement1",
"Effect":"Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/bucket-owner"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::awsexamplebucket1",
"Condition" : {
"StringEquals" : {
"s3:prefix": "projects"

Versão da API 2006-03-01


287
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

}
}
},
{
"Sid":"statement2",
"Effect":"Deny",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/bucket-owner"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::awsexamplebucket1",
"Condition" : {
"StringNotEquals" : {
"s3:prefix": "projects"
}
}
}
]
}

Testar a política com a CLI da AWS

Você pode testar a política usando o seguinte comando da CLI da AWS list-object. No comando,
você fornece as credenciais do usuário usando o parâmetro --profile. Para obter mais informações
sobre configuração e uso da AWS CLI, consulte Desenvolvimento com o Amazon S3 usando a AWS
CLI (p. 1033).

aws s3api list-objects --bucket awsexamplebucket1 --prefix examplefolder --profile


AccountADave

Se o bucket tiver o versionamento habilitado, para listar os objetos no bucket, você deverá conceder a
permissão s3:ListBucketVersions na política anterior, em vez da permissão s3:ListBucket. Essa
permissão também oferece suporte à chave de condição s3:prefix.

Exemplo 3: definir o número máximo de chaves

Você pode usar a chave de condição s3:max-keyspara definir o número máximo de chaves que o
solicitante pode retornar em uma solicitação GET Bucket (ListObjects) ou ListObjectVersions. Por padrão,
a API retorna até 1.000 chaves. Para obter uma lista de operadores de condição numérica que você pode
usar com s3:max-keys e exemplos associados, consulte Operadores de condição numérica no Guia do
usuário do IAM.

Ações, recursos e chaves de condição do Amazon S3


O Amazon S3 (prefixo do serviço: s3) fornece os seguintes recursos, ações e chaves de contexto de
condição específicos ao serviço para uso em políticas de permissão do IAM.

Referências:

• Saiba como configurar este serviço.


• Visualize uma lista das operações de API disponíveis para este serviço.
• Saiba como proteger este serviço e seus recursos usando políticas de permissão do IAM.

Tópicos
• Ações definidas pelo Amazon S3 (p. 289)
• Tipos de recursos definidos pelo Amazon S3 (p. 373)

Versão da API 2006-03-01


288
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• Chaves de condição do Amazon S3 (p. 374)

Ações definidas pelo Amazon S3

Você pode especificar as seguintes ações no elemento Action de uma declaração de política do IAM.
Use políticas para conceder permissões para executar uma operação na AWS. Quando usa uma ação em
uma política, você geralmente permite ou nega acesso à operação da API ou ao comando da CLI com o
mesmo nome. No entanto, em alguns casos, uma única ação controla o acesso a mais de uma operação.
Como alternativa, algumas operações exigem várias ações diferentes.

A coluna Resource types (Tipos de recursos) indica se cada ação é compatível com permissões no
nível do recurso. Se não houver valor para essa coluna, você deverá especificar todos os recursos ("*")
no elemento Resource de sua declaração de política. Se a coluna incluir um tipo de recurso, você
poderá especificar um ARN desse tipo em uma declaração com essa ação. Os recursos necessários são
indicados na tabela com um asterisco (*). Se você especificar um ARN de permissão no nível do recurso
em uma instrução que esteja usando essa ação, ele deverá ser desse tipo. Algumas ações oferecem
suporte a vários tipos de recursos. Se o tipo de recurso for opcional (não indicado como obrigatório), você
poderá optar por usar um, mas não o outro.

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para anular Gravação object*    


AbortMultipartUpload
um multipart upload (p. 373)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gerenciamento


object*    
BypassGovernanceRetention
contornar as configurações de de (p. 373)
permissões

Versão da API 2006-03-01


289
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
retenção de objetos no modo de
governança

Versão da API 2006-03-01


290
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:RequestObjectTag/
<key>
(p. 375)

s3:RequestObjectTagKeys
(p. 375)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
copy-
source
(p. 376)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

Versão da API 2006-03-01


291
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
s3:x-amz-
grant-
read-acp
(p. 376)

s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

s3:x-amz-
metadata-
directive
(p. 376)

s3:x-amz-
server-
side-
encryption
(p. 376)

s3:x-amz-
server-
side-
encryption-
aws-kms-
key-id
(p. 376)

s3:x-amz-
storage-
class
(p. 376)

s3:x-amz-
website-
redirect-
location
(p. 376)

s3:object-
lock-mode
(p. 375)

s3:object-
lock-retain-
until-date
(p. 375)

s3:object-
lock-

Versão da API 2006-03-01


292
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
remaining-
retention-
days
(p. 375)

s3:object-
lock-
legal-hold
(p. 375)

Concede permissão para criar Gravação accesspoint*    


CreateAccessPoint
um novo ponto de acesso (p. 373)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:locationconstraint
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gravação objectlambdaaccesspoint*


   
CreateAccessPointForObjectLambda
um ponto de acesso habilitado (p. 374)
para lambda objeto

Versão da API 2006-03-01


293
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

CreateBucket Concede permissão para criar Gravação bucket*    


um novo bucket (p. 373)

Versão da API 2006-03-01


294
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:locationconstraint
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

s3:x-amz-
grant-
read-acp
(p. 376)

s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

Versão da API 2006-03-01


295
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

CreateJob Concede permissão para criar Gravação   s3:authType iam:PassRole


um novo trabalho de operações (p. 375)
em lote do Amazon S3
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:RequestJobPriority
(p. 375)

s3:RequestJobOperation
(p. 374)

aws:TagKeys
(p. 374)

aws:RequestTag/
${TagKey}
(p. 374)

Concede permissão para excluir Gravação accesspoint*    


DeleteAccessPointo ponto de acesso nomeado no (p. 373)
URI

Versão da API 2006-03-01


296
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para excluir Gravação objectlambdaaccesspoint*


   
DeleteAccessPointForObjectLambda
o ponto de acesso habilitado (p. 374)
para o objeto lambda nomeado
no URI

Versão da API 2006-03-01


297
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para excluir Gerenciamento


accesspoint*    
DeleteAccessPointPolicy
a política em um ponto de acesso de (p. 373)
especificado permissões

Versão da API 2006-03-01


298
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para excluir Gerenciamento


objectlambdaaccesspoint*
   
DeleteAccessPointPolicyForObjectLambda
a política em um ponto de acesso de (p. 374)
habilitado para o objeto lambda permissões
especificado

Versão da API 2006-03-01


299
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

DeleteBucket Concede permissão para excluir Gravação bucket*    


o bucket nomeado no URI (p. 373)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para excluir Gravação bucket*    


DeleteBucketOwnershipControls
controles de propriedade em um (p. 373)
bucket

Versão da API 2006-03-01


300
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gerenciamento


bucket*    
DeleteBucketPolicy
excluir a política em um bucket de (p. 373)
especificado permissões
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gravação bucket*    


DeleteBucketWebsite
remover a configuração do site (p. 373)
de um bucket

Versão da API 2006-03-01


301
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Atribuição job*    


DeleteJobTaggingremover tags de um trabalho de tags (p. 373)
existente de operações em lote (tagging)
do Amazon S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:ExistingJobPriority
(p. 374)

s3:ExistingJobOperation
(p. 374)

Versão da API 2006-03-01


302
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

DeleteObject Concede permissão para Gravação object*    


remover a versão nula de um (p. 373)
objeto e inserir um marcador de
exclusão, que se torna a versão   s3:DataAccessPointAccount
 
atual do objeto (p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para usar o Atribuição object*    


DeleteObjectTagging
sub-recurso de marcação para de tags (p. 373)
remover todo o conjunto de tags (tagging)
do objeto especificado

Versão da API 2006-03-01


303
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gravação object*    


DeleteObjectVersion
remover uma versão específica (p. 373)
de um objeto

Versão da API 2006-03-01


304
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Atribuição object*    


DeleteObjectVersionTagging
remover todo o conjunto de tags de tags (p. 373)
para uma versão específica do (tagging)
objeto

Versão da API 2006-03-01


305
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para excluir Gravação storagelensconfiguration*


   
DeleteStorageLensConfiguration
uma configuração existente do (p. 373)
Amazon S3 Storage Lens

Versão da API 2006-03-01


306
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Atribuição storagelensconfiguration*


   
DeleteStorageLensConfigurationTagging
remover tags de uma de tags (p. 373)
configuração existente do (tagging)
Amazon S3 Storage Lens   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

DescribeJob Concede permissão para Leia job*    


recuperar os parâmetros de (p. 373)
configuração e o status de um
trabalho de operações em lote

Versão da API 2006-03-01


307
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para usar o Leia bucket*    


GetAccelerateConfiguration
sub-recurso de aceleração para (p. 373)
retornar o estado de Transfer
Acceleration de um bucket, que é   s3:authType  
Habilitado ou Suspenso (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


308
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para retornar Leia   s3:DataAccessPointAccount


 
GetAccessPoint informações de configuração (p. 374)
sobre o ponto de acesso
especificado s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Leia objectlambdaaccesspoint*


   
GetAccessPointConfigurationForObjectLambda
recuperar a configuração do (p. 374)
ponto de acesso habilitado para
o objeto lambda

Versão da API 2006-03-01


309
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Leia objectlambdaaccesspoint*


   
GetAccessPointForObjectLambda
um ponto de acesso habilitado (p. 374)
para lambda objeto

Versão da API 2006-03-01


310
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia accesspoint*    


GetAccessPointPolicy
a política de ponto de acesso (p. 373)
associada ao ponto de acesso
especificado

Versão da API 2006-03-01


311
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


312
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para retornar Leia objectlambdaaccesspoint*


   
GetAccessPointPolicyForObjectLambda
a política de ponto de acesso (p. 374)
associada ao ponto de acesso
habilitado para o objeto lambda   s3:DataAccessPointAccount
 
especificado (p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia accesspoint*    


GetAccessPointPolicyStatus
o status da política para uma (p. 373)
política de ponto de acesso
específica

Versão da API 2006-03-01


313
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia objectlambdaaccesspoint*


   
GetAccessPointPolicyStatusForObjectLambda
o status da política para uma (p. 374)
política de ponto de acesso
específica de objeto lambda

Versão da API 2006-03-01


314
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Leia   s3:authType  


GetAccountPublicAccessBlock
recuperar a configuração (p. 375)
PublicAccessBlock para uma
conta da AWS s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


315
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para obter Leia bucket*    


GetAnalyticsConfiguration
uma configuração de análise (p. 373)
de um bucket do Amazon
S3, identificada pelo ID de   s3:authType  
configuração de análise (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

GetBucketAcl Concede permissão para usar o Leia bucket*    


sub-recurso acl para retornar a (p. 373)
lista de controle de acesso (ACL)
de um bucket do Amazon S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketCORS as informações de configuração (p. 373)
de CORS definidas para um
bucket do Amazon S3

Versão da API 2006-03-01


316
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketLocation
a região em que um bucket do (p. 373)
Amazon S3 reside

Concede permissão para retornar Leia bucket*    


GetBucketLoggingo status do registro em log de (p. 373)
um bucket do Amazon S3 e as
permissões que os usuários têm   s3:authType  
para visualizar ou modificar esse (p. 375)
status
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia bucket*    


GetBucketNotification
a configuração de notificação de (p. 373)
um bucket do Amazon S3

Versão da API 2006-03-01


317
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia bucket*    


GetBucketObjectLockConfiguration
a configuração de bloqueio de (p. 373)
objetos de um bucket do Amazon
S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:signatureversion
(p. 375)

Concede permissão para Leia bucket*    


GetBucketOwnershipControls
recuperar controles de (p. 373)
propriedade em um bucket

Versão da API 2006-03-01


318
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketPolicy a política do bucket especificado (p. 373)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


319
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para Leia bucket*    


GetBucketPolicyStatus
recuperar o status da política de (p. 373)
um bucket específico do Amazon
S3, o que indica se o bucket é   s3:authType  
público (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Leia bucket*    


GetBucketPublicAccessBlock
recuperar a configuração (p. 373)
PublicAccessBlock para um
bucket do Amazon S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketRequestPayment
a configuração de pagamento (p. 373)
da solicitação para um bucket do
Amazon S3

Versão da API 2006-03-01


320
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketTaggingo conjunto de tags associado a (p. 373)
um bucket do Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketVersioning
o estado de versionamento de (p. 373)
um bucket do Amazon S3

Versão da API 2006-03-01


321
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetBucketWebsitea configuração do site para um (p. 373)
bucket do Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetEncryptionConfiguration
a configuração de criptografia (p. 373)
padrão de um bucket do Amazon
S3

Versão da API 2006-03-01


322
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Leia bucket*    


GetIntelligentTieringConfiguration
obter uma ou listar todas a (p. 373)
configuração do Amazon S3
Intelligent Tiering em um bucket   s3:authType  
do S3 (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


323
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para retornar Leia bucket*    


GetInventoryConfiguration
uma configuração de inventário (p. 373)
de um bucket do Amazon
S3, identificado pelo ID de   s3:authType  
configuração de inventário (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia job*    


GetJobTagging o conjunto de tags de um (p. 373)
trabalho existente de operações
em lote do Amazon S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia bucket*    


GetLifecycleConfiguration
as informações de configuração (p. 373)
de ciclo de vida definidas em um
bucket do Amazon S3

Versão da API 2006-03-01


324
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia bucket*    


GetMetricsConfiguration
uma configuração de métricas de (p. 373)
um bucket do Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

GetObject Concede permissão para Leia object*    


recuperar objetos do Amazon S3 (p. 373)

Versão da API 2006-03-01


325
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

GetObjectAcl Concede permissão para retornar Leia object*    


a lista de controle de acesso (p. 373)
(ACL) de um objeto

Versão da API 2006-03-01


326
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter o Leia object*    


GetObjectLegalHold
status atual de retenção legal de (p. 373)
um objeto

Versão da API 2006-03-01


327
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Leia object*    


GetObjectRetention
recuperar as configurações de (p. 373)
retenção de um objeto

Versão da API 2006-03-01


328
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia object*    


GetObjectTaggingo conjunto de tags de um objeto (p. 373)

Versão da API 2006-03-01


329
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia object*    


GetObjectTorrent arquivos torrent de um bucket do (p. 373)
Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


330
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para Leia object*    


GetObjectVersion recuperar uma versão específica (p. 373)
de um objeto
  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia object*    


GetObjectVersionAcl
a lista de controle de acesso (p. 373)
(ACL) de uma versão específica
de objeto

Versão da API 2006-03-01


331
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para replicar Leia object*    


GetObjectVersionForReplication
objetos não criptografados e (p. 373)
objetos criptografados com SSE-
S3 ou SSE-KMS

Versão da API 2006-03-01


332
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para retornar Leia object*    


GetObjectVersionTagging
o conjunto de tags para uma (p. 373)
versão específica do objeto

Versão da API 2006-03-01


333
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia object*    


GetObjectVersionTorrent
arquivos Torrent sobre uma (p. 373)
versão diferente usando o sub-
recurso versionId

Versão da API 2006-03-01


334
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia bucket*    


GetReplicationConfiguration
as informações de configuração (p. 373)
de replicação definidas em um
bucket do Amazon S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia storagelensconfiguration*


   
GetStorageLensConfiguration
uma configuração do Amazon S3 (p. 373)
Storage Lens

Versão da API 2006-03-01


335
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia storagelensconfiguration*


   
GetStorageLensConfigurationTagging
o conjunto de tags de uma (p. 373)
configuração existente do
Amazon S3 Storage Lens   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para obter Leia storagelensconfiguration*


   
GetStorageLensDashboard
um painel do Amazon S3 Storage (p. 373)
Lens

Versão da API 2006-03-01


336
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para listar Leia   s3:authType  


ListAccessPoints pontos de acesso (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


337
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para listar Leia   s3:authType  


ListAccessPointsForObjectLambda
os pontos de acesso habilitados (p. 375)
para objeto lambda
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para listar Lista   s3:authType  


ListAllMyBuckets todos os buckets de propriedade (p. 375)
do remetente autenticado da
solicitação s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

ListBucket Concede permissão para listar Lista bucket*    


alguns ou todos os objetos em (p. 373)
um bucket do Amazon S3 (até
1.000)

Versão da API 2006-03-01


338
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:delimiter
(p. 375)

s3:max-
keys
(p. 375)

s3:prefix
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para listar Lista bucket*    


ListBucketMultipartUploads
multipart uploads em andamento (p. 373)

Versão da API 2006-03-01


339
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para listar Lista bucket*    


ListBucketVersions
metadados sobre todas as (p. 373)
versões de objetos em um bucket
do Amazon S3

Versão da API 2006-03-01


340
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:delimiter
(p. 375)

s3:max-
keys
(p. 375)

s3:prefix
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


341
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

ListJobs Concede permissão para listar Lista   s3:authType  


trabalhos atuais e trabalhos que (p. 375)
terminaram recentemente
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para listar Lista object*    


ListMultipartUploadParts
as partes que foram carregadas (p. 373)
para um multipart upload
específico   s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


342
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para listar Lista   s3:authType  


ListStorageLensConfigurations
configurações do Amazon S3 (p. 375)
Storage Lens
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para alterar Gerenciamento


object*    
ObjectOwnerOverrideToBucketOwner
a propriedade da réplica de (p. 373)
permissões
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


343
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para usar Gravação bucket*    


PutAccelerateConfiguration
o sub-recurso de aceleração (p. 373)
para definir o estado de Transfer
Acceleration de um bucket   s3:authType  
existente do S3 (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação objectlambdaaccesspoint*


   
PutAccessPointConfigurationForObjectLambda
a configuração do ponto de (p. 374)
acesso habilitado para objeto
lambda   s3:DataAccessPointArn
 
(p. 374)

s3:DataAccessPointAccount
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


344
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para Gerenciamento


accesspoint*    
PutAccessPointPolicy
associar uma política de de (p. 373)
acesso a um ponto de acesso permissões
especificado   s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


345
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para Gerenciamento


objectlambdaaccesspoint*
   
PutAccessPointPolicyForObjectLambda
associar uma política de de (p. 374)
acesso a um ponto de acesso permissões
especificado habilitado para   s3:DataAccessPointAccount
 
objeto lambda (p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gerenciamento


  s3:authType  
PutAccountPublicAccessBlock
ou modificar a configuração de (p. 375)
PublicAccessBlock para uma permissões
conta da AWS s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação bucket*    


PutAnalyticsConfiguration
uma configuração de análise (p. 373)
para o bucket, especificada pelo
ID de configuração de análise

Versão da API 2006-03-01


346
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

PutBucketAcl Concede permissão para definir Gerenciamento


bucket*    
as permissões em um bucket de (p. 373)
existente usando listas de permissões
controle de acesso (ACLs)

Versão da API 2006-03-01


347
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

s3:x-amz-
grant-
read-acp
(p. 376)

s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

Concede permissão para definir Gravação bucket*    


PutBucketCORS a configuração de CORS para (p. 373)
um bucket do Amazon S3

Versão da API 2006-03-01


348
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação bucket*    


PutBucketLoggingos parâmetros de registro em log (p. 373)
para um bucket do Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


349
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para Gravação bucket*    


PutBucketNotification
receber notificações quando (p. 373)
determinados eventos
acontecem em um bucket do   s3:authType  
Amazon S3 (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para colocar Gravação bucket*    


PutBucketObjectLockConfiguration
a configuração de bloqueio de (p. 373)
objetos em um bucket específico
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:TlsVersion
(p. 375)

s3:signatureversion
(p. 375)

Concede permissão para Gravação bucket*    


PutBucketOwnershipControls
adicionar ou substituir controles (p. 373)
de propriedade em um bucket

Versão da API 2006-03-01


350
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gerenciamento


bucket*    
PutBucketPolicy adicionar ou substituir uma de (p. 373)
política de bucket em um bucket permissões
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gerenciamento


bucket*    
PutBucketPublicAccessBlock
ou modificar a configuração de (p. 373)
PublicAccessBlock para um permissões
bucket específico do Amazon S3

Versão da API 2006-03-01


351
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação bucket*    


PutBucketRequestPayment
a configuração de pagamento de (p. 373)
solicitação de um bucket
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Atribuição bucket*    


PutBucketTaggingadicionar um conjunto de tags a de tags (p. 373)
um bucket existente do Amazon (tagging)
S3

Versão da API 2006-03-01


352
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação bucket*    


PutBucketVersioning
o estado de versionamento de (p. 373)
um bucket existente do Amazon
S3   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gravação bucket*    


PutBucketWebsitedefinir a configuração do site (p. 373)
especificado no sub-recurso do
site

Versão da API 2006-03-01


353
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para definir Gravação bucket*    


PutEncryptionConfiguration
a configuração de criptografia (p. 373)
para um bucket do Amazon S3
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gravação bucket*    


PutIntelligentTieringConfiguration
novas ou atualizar ou excluir (p. 373)
uma configuração do Amazon S3
Intelligent Tiering

Versão da API 2006-03-01


354
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gravação bucket*    


PutInventoryConfiguration
adicionar uma configuração de (p. 373)
inventário ao bucket, identificada
pelo ID de inventário   s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Atribuição job*    


PutJobTagging substituir tags em um trabalho de tags (p. 373)
existente de operações em lote (tagging)
do Amazon S3

Versão da API 2006-03-01


355
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:ExistingJobPriority
(p. 374)

s3:ExistingJobOperation
(p. 374)

aws:TagKeys
(p. 374)

aws:RequestTag/
${TagKey}
(p. 374)

Concede permissão para criar Gravação bucket*    


PutLifecycleConfiguration
uma configuração de ciclo de (p. 373)
vida para o bucket ou substituir
uma configuração de ciclo de   s3:authType  
vida existente (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


356
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para definir Gravação bucket*    


PutMetricsConfiguration
ou atualizar uma configuração (p. 373)
de métricas para as métricas de
solicitação do CloudWatch de um   s3:authType  
bucket do Amazon S3 (p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

PutObject Concede permissão para Gravação object*    


adicionar um objeto a um bucket (p. 373)

Versão da API 2006-03-01


357
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:RequestObjectTag/
<key>
(p. 375)

s3:RequestObjectTagKeys
(p. 375)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
copy-
source
(p. 376)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

Versão da API 2006-03-01


358
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
s3:x-amz-
grant-
read-acp
(p. 376)

s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

s3:x-amz-
metadata-
directive
(p. 376)

s3:x-amz-
server-
side-
encryption
(p. 376)

s3:x-amz-
server-
side-
encryption-
aws-kms-
key-id
(p. 376)

s3:x-amz-
storage-
class
(p. 376)

s3:x-amz-
website-
redirect-
location
(p. 376)

s3:object-
lock-mode
(p. 375)

s3:object-
lock-retain-
until-date
(p. 375)

s3:object-
lock-

Versão da API 2006-03-01


359
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
remaining-
retention-
days
(p. 375)

s3:object-
lock-
legal-hold
(p. 375)

Versão da API 2006-03-01


360
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

PutObjectAcl Concede permissão para definir Gerenciamento


object*    
as permissões de lista de de (p. 373)
controle de acesso (ACL) para permissões
objetos novos ou existentes em   s3:DataAccessPointAccount
 
um bucket do S3. (p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

s3:x-amz-
grant-
read-acp
(p. 376)

Versão da API 2006-03-01


361
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

s3:x-amz-
storage-
class
(p. 376)

Concede permissão para aplicar Gravação object*    


PutObjectLegalHold
uma configuração de retenção (p. 373)
legal ao objeto especificado
  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:object-
lock-
legal-hold
(p. 375)

Concede permissão para colocar Gravação object*    


PutObjectRetention
uma configuração de retenção de (p. 373)
objetos em um objeto

Versão da API 2006-03-01


362
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:object-
lock-mode
(p. 375)

s3:object-
lock-retain-
until-date
(p. 375)

s3:object-
lock-
remaining-
retention-
days
(p. 375)

Concede permissão para definir Atribuição object*    


PutObjectTaggingo conjunto de tags fornecido para de tags (p. 373)
um objeto que já existe em um (tagging)
bucket

Versão da API 2006-03-01


363
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:RequestObjectTag/
<key>
(p. 375)

s3:RequestObjectTagKeys
(p. 375)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Versão da API 2006-03-01


364
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

Concede permissão para usar o Gerenciamento


object*    
PutObjectVersionAcl
sub-recurso acl para definir as de (p. 373)
permissões de lista de controle permissões
de acesso (ACL) para um objeto   s3:DataAccessPointAccount
 
que já existe em um bucket (p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-
amz-acl
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
grant-full-
control
(p. 376)

s3:x-amz-
grant-read
(p. 376)

s3:x-amz-
grant-

Versão da API 2006-03-01


365
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)
read-acp
(p. 376)

s3:x-amz-
grant-write
(p. 376)

s3:x-amz-
grant-
write-acp
(p. 376)

s3:x-amz-
storage-
class
(p. 376)

Concede permissão para definir Atribuição object*    


PutObjectVersionTagging
o conjunto de tags fornecido para de tags (p. 373)
uma versão específica de um (tagging)
objeto

Versão da API 2006-03-01


366
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:ExistingObjectTag/
<key>
(p. 374)

s3:RequestObjectTag/
<key>
(p. 375)

s3:RequestObjectTagKeys
(p. 375)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:versionid
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gravação bucket*   iam:PassRole


PutReplicationConfiguration
uma configuração de replicação (p. 373)
ou substituir uma existente

Versão da API 2006-03-01


367
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para criar Gravação   s3:authType  


PutStorageLensConfiguration
ou atualizar uma configuração do (p. 375)
Amazon S3 Storage Lens
s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

aws:TagKeys
(p. 374)

aws:RequestTag/
${TagKey}
(p. 374)

Concede permissão para Atribuição storagelensconfiguration*


   
PutStorageLensConfigurationTagging
colocar ou substituir tags em de tags (p. 373)
uma configuração existente do (tagging)
Amazon S3 Storage Lens

Versão da API 2006-03-01


368
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

aws:TagKeys
(p. 374)

aws:RequestTag/
${TagKey}
(p. 374)

Concede permissão para replicar Gravação object*    


ReplicateDelete marcadores de exclusão no (p. 373)
bucket de destino
  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para replicar Gravação object*    


ReplicateObject objetos e tags de objetos no (p. 373)
bucket de destino

Versão da API 2006-03-01


369
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:x-amz-
server-
side-
encryption
(p. 376)

s3:x-amz-
server-
side-
encryption-
aws-kms-
key-id
(p. 376)

ReplicateTags Concede permissão para replicar Atribuição object*    


tags de objetos no bucket de de tags (p. 373)
destino (tagging)

Versão da API 2006-03-01


370
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

RestoreObject Concede permissão para Gravação object*    


restaurar uma cópia arquivada de (p. 373)
um objeto novamente no Amazon
S3   s3:DataAccessPointAccount
 
(p. 374)

s3:DataAccessPointArn
(p. 374)

s3:AccessPointNetworkOrigin
(p. 374)

s3:authType
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

Concede permissão para Gravação job*    


UpdateJobPriorityatualizar a prioridade de um (p. 373)
trabalho existente

Versão da API 2006-03-01


371
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:RequestJobPriority
(p. 375)

s3:ExistingJobPriority
(p. 374)

s3:ExistingJobOperation
(p. 374)

Concede permissão para Gravação job*    


UpdateJobStatus atualizar o status do trabalho (p. 373)
especificado

Versão da API 2006-03-01


372
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Ações Descrição Nível de Tipos de Chaves de Ações


acesso recursos condição dependentes
(*necessários)

  s3:authType  
(p. 375)

s3:ResourceAccount
(p. 375)

s3:signatureAge
(p. 375)

s3:signatureversion
(p. 375)

s3:TlsVersion
(p. 375)

s3:x-amz-
content-
sha256
(p. 375)

s3:ExistingJobPriority
(p. 374)

s3:ExistingJobOperation
(p. 374)

s3:JobSuspendedCause
(p. 374)

Tipos de recursos definidos pelo Amazon S3

Os seguintes tipos de recursos são definidos por este serviço e podem ser usados no elemento Resource
de declarações de políticas de permissão do IAM. Cada ação na tabela de ações (p. 289) identifica os
tipos de recursos que podem ser especificados com essa ação. Um tipo de recurso também pode definir
quais chaves de condição você pode incluir em uma política. Essas chaves são exibidas na última coluna
da tabela.

Tipos de ARN Chaves de condição


recursos

accesspoint arn:${Partition}:s3:${Region}:  
${Account}:accesspoint/${AccessPointName}

bucket arn:${Partition}:s3:::${BucketName}  

object arn:${Partition}:s3:::${BucketName}/  
${ObjectName}

job arn:${Partition}:s3:${Region}:  
${Account}:job/${JobId}

arn:${Partition}:s3:${Region}: aws:ResourceTag/
storagelensconfiguration
${Account}:storage-lens/${ConfigId} ${TagKey} (p. 374)

Versão da API 2006-03-01


373
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Tipos de ARN Chaves de condição


recursos

arn:${Partition}:s3-object-lambda:${Region}:  
objectlambdaaccesspoint
${Account}:accesspoint/${AccessPointName}

Chaves de condição do Amazon S3

O Amazon S3 define as seguintes chaves de condição que podem ser usadas no elemento Condition
de uma política do IAM. É possível usar essas chaves para refinar ainda mais as condições sob as quais a
declaração de política se aplica.

Para visualizar as chaves de condição globais disponíveis para todos os serviços, consulte Chaves de
condição globais disponíveis.

Chaves de Description (Descrição) Tipo


condição

aws:RequestTag/ Filtra ações com base nas tags transmitidas na solicitação String
${TagKey}

Filtra as ações com base nas tags associadas ao recurso String


aws:ResourceTag/
${TagKey}

aws:TagKeys Filtra ações com base nas chaves de tag transmitidas na String
solicitação

Filtra o acesso pela origem de rede (Internet ou VPC) String


s3:AccessPointNetworkOrigin

Filtra o acesso pelo ID da conta da AWS que possui o ponto String


s3:DataAccessPointAccount
de acesso

Filtra o acesso pelo nome de recurso da Amazon (ARN) de String


s3:DataAccessPointArn
um ponto de acesso

Filtra o acesso à atualização da prioridade de trabalho por String


s3:ExistingJobOperation
operação

Filtra o acesso ao cancelamento de trabalhos existentes por Numeric


s3:ExistingJobPriorityintervalo de prioridade

Filtra o acesso por chave e valor de tag de um objeto String


s3:ExistingObjectTag/existente
<key>

Filtra o acesso ao cancelamento de trabalhos suspensos por String


s3:JobSuspendedCause
uma causa específica do trabalho suspenso (por exemplo,
AWAITING_CONFIRMATION)

Filtra o acesso por uma região específica String


s3:LocationConstraint

Filtra o acesso à criação de trabalhos por operação String


s3:RequestJobOperation

Versão da API 2006-03-01


374
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Chaves de Description (Descrição) Tipo


condição

Filtra o acesso à criação de novos trabalhos por intervalo de Numeric


s3:RequestJobPriorityprioridade

Filtra o acesso pelas chaves e valores de tag a serem String


s3:RequestObjectTag/adicionados aos objetos
<key>

Filtra o acesso pelas chaves de tag a serem adicionadas aos String


s3:RequestObjectTagKeys
objetos

Filtra o acesso pela ID da conta do AWS do proprietário do String


s3:ResourceAccount recurso

s3:TlsVersion Filtra o acesso pela versão TLS usada pelo cliente Numeric

s3:VersionId Filtra o acesso por uma versão de objeto específica String

s3:authType Filtra o acesso por método de autenticação String

s3:delimiter Filtra o acesso por parâmetro delimitador String

Filtra o acesso por uma região específica String


s3:locationconstraint

s3:max-keys Filtra o acesso pelo número máximo de chaves retornadas Numeric


em uma solicitação ListBucket

s3:object-lock- Filtra o acesso pelo status de obtenção legal do objeto String


legal-hold

s3:object-lock- Filtra o acesso por modo de retenção do objeto String


mode (COMPLIANCE ou GOVERNANCE, conformidade ou
governança)

s3:object- Filtra o acesso pelos dias restantes da retenção do objeto String


lock-remaining-
retention-days

s3:object-lock- Filtra o acesso pela data de término de retenção do objeto String


retain-until-date

s3:prefix Filtra o acesso pelo prefixo do nome da chave String

s3:signatureAge Filtra o acesso pela idade em milissegundos da assinatura da Numeric


solicitação

Filtra o acesso pela versão do AWS Signature usada na String


s3:signatureversion solicitação

s3:versionid Filtra o acesso por uma versão de objeto específica String

s3:x-amz-acl Filtra o acesso pela ACL padrão no cabeçalho x-amz-acl da String


solicitação

s3:x-amz-content- Filtra o acesso ao conteúdo não assinado no bucket String


sha256

Versão da API 2006-03-01


375
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Chaves de Description (Descrição) Tipo


condição

s3:x-amz-copy- Filtra o acesso a solicitações com bucket, prefixo ou objeto String


source específico como a fonte de cópia

s3:x-amz-grant- Filtra o acesso a solicitações com o cabeçalho x-amz-grant- String


full-control full-control (controle total)

s3:x-amz-grant- Filtra o acesso a solicitações com o cabeçalho x-amz-grant- String


read read (acesso de leitura)

s3:x-amz-grant- Filtra o acesso a solicitações com o cabeçalho x-amz-grant- String


read-acp read-acp (permissões de leitura para a ACL)

s3:x-amz-grant- Filtra o acesso a solicitações com o cabeçalho x-amz-grant- String


write write (acesso de gravação)

s3:x-amz-grant- Filtra o acesso a solicitações com o cabeçalho x-amz-grant- String


write-acp write-acp (permissões de gravação para a ACL)

s3:x-amz- Filtra acesso pelo comportamento de metadados do objeto String


metadata-directive (COPY ou REPLACE, copiar ou substituir) quando objetos
são copiados

s3:x-amz-server- Filtra o acesso pela criptografia do lado do servidor String


side-encryption

s3:x-amz-server- Filtra o acesso pela CMK gerenciada pelo cliente do AWS String
side-encryption- KMS para criptografia do lado do servidor
aws-kms-key-id

s3:x-amz- Filtra o acesso por classe de armazenamento String


storage-class

s3:x-amz- Filtra o acesso por um local de redirecionamento de site String


website-redirect- específico para buckets configurados como sites estáticos
location

Uso de políticas de bucket


Você pode criar e configurar políticas de bucket para conceder permissão aos seus recursos do Amazon
S3. As políticas de bucket usam uma linguagem de política de acesso baseada em JSON.

Os tópicos nesta seção fornecem exemplos e mostram como adicionar uma política de bucket no console
do S3. Para obter informações sobre as políticas de usuário do IAM, consulte Uso de políticas de usuário
do IAM (p. 387). Para obter informações sobre a linguagem da política de bucket, consulte Políticas e
permissões no Amazon S3 (p. 269)
Important

As políticas de bucket são limitadas a 20 KB.

Tópicos
• Adicionar uma política de bucket usando o console do Amazon S3 (p. 377)
• Controlar o acesso a partir de VPC endpoints com políticas de bucket (p. 377)
• Exemplos de políticas de bucket (p. 379)

Versão da API 2006-03-01


376
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Adicionar uma política de bucket usando o console do Amazon S3


Esta seção explica como usar o console do Amazon Simple Storage Service (Amazon S3) para adicionar
uma nova política de bucket ou editar uma política de bucket existente. Uma política de bucket é uma
política do AWS Identity and Access Management (IAM) baseada em recursos. Você adiciona uma política
de bucket a um bucket para conceder permissões de acesso ao bucket e aos objetos contidos nele a
outras contas da AWS ou usuários do IAM. As permissões de objeto aplicam-se somente aos objetos
criados pela proprietário do bucket. Para obter mais informações sobre políticas de bucket, consulte Visão
geral do gerenciamento de acesso (p. 252).

Para obter exemplos de políticas de bucket do Amazon S3, consulte Exemplos de políticas de
bucket (p. 379).

Para criar ou editar uma política de bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja criar uma política de bucket ou
cuja política de bucket você deseja editar.
3. Escolha Permissions (Permissões).
4. Na caixa de texto Bucket policy editor (Editor de política de bucket), digite ou copie e cole uma nova
política de bucket ou edite uma política existente. A política de bucket é um arquivo JSON. O texto que
você digita no editor deve ser JSON válido.
5. (Opcional) Escolha Policy generator (Gerador de políticas) para abrir o AWS Policy Generator em uma
nova janela.

a. Na página gerador de políticas, selecione S3 Bucket Policy (Política de bucket do S3) no menu
Select Type of Policy (Selecionar tipo de política).
b. Adicione uma ou mais instruções preenchendo os campos apresentados e escolha Generate
Policy (Gerar política).
c. Copie o texto da política gerada e retorne à página Edit bucket policy (Editar política de bucket) no
console do Amazon S3.
6. Em Bucket policy (Política de bucket), escolha Edit (Editar).
7. No campo de texto Policy (Política) digite ou copie e cole uma nova política de bucket ou edite uma
política existente. A política de bucket é um arquivo JSON. O texto que você digita no editor deve ser
JSON válido.
Note

Por conveniência, o console exibe o nome de recurso da Amazon (ARN) do bucket atual
acima do campo de texto Policy (Política) . Você pode copiar este ARN para uso na política.
Para obter mais informações sobre ARNs, consulte Nomes de recurso da Amazon (ARNs) e
namespaces do serviço da AWS na Referência geral da Amazon Web Services.
8. (Opcional) Visualize como sua nova política afeta o acesso público e entre contas ao seu recurso.
Antes de salvar sua política, você pode verificar se ela introduz novas descobertas do IAM Access
Analyzer ou resolve as descobertas existentes. Se você não vir um analisador ativo, crie um
analisador de conta no IAM Access Analyzer. Para obter mais informações, consulte Visualizar acesso
no Guia do usuário do IAM.
9. Selecione Save changes.

Controlar o acesso a partir de VPC endpoints com políticas de bucket


Você pode usar políticas de bucket do Amazon S3 para controlar o acesso a buckets de VPC endpoints
específicos ou VPCs específicas. Esta seção contém políticas de bucket de exemplo que podem ser

Versão da API 2006-03-01


377
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

usadas para controlar o acesso ao bucket do Amazon S3 de VPC endpoints. Para saber como configurar
VPC endpoints, consulte VPC Endpoints no Guia do usuário da VPC.

A VPC permite executar os recursos da AWS em uma rede virtual definida por você. Um VPC endpoint
permite que você crie uma conexão privada entre sua VPC e outro serviço da AWS sem exigir acesso pela
Internet, por meio de uma conexão VPN, de uma Instância NAT ou do AWS Direct Connect.

Um VPC endpoint for Amazon S3 é uma entidade lógica em uma VPC que oferece conectividade apenas
ao Amazon S3. O VPC endpoint roteia as solicitações para o Amazon S3 e roteia as respostas de rotas
de volta para a VPC. Os VPC endpoints alteram somente a forma como as solicitações são roteadas. Os
endpoints públicos do Amazon S3 e os nomes de DNS continuarão funcionando com VPC endpoints. Para
obter informações importantes sobre o uso de VPC endpoints com o Amazon S3, consulte VPC Endpoints
de gateway e Endpoints para Amazon S3 no Guia do usuário da VPC.

Os VPC endpoints para Amazon S3 fornecem duas maneiras de controlar o acesso aos dados do Amazon
S3:

• É possível controlar as solicitações, os usuários ou os grupos permitidos por um VPC endpoint


específico. Para obter informações sobre esse tipo de controle de acesso, consulte Controlar o acesso
aos serviços com VPC Endpoints no Guia do usuário da VPC.
• É possível controlar quais VPCs ou VPC endpoints têm acesso aos seus buckets usando as políticas
de bucket do Amazon S3. Para obter exemplos desse tipo de controle de acesso de política de bucket,
consulte os seguintes tópicos sobre restrição de acesso.

Tópicos
• Restringir o acesso a um VPC endpoint específico (p. 378)
• Restringir o acesso a uma VPC específica (p. 379)

Important

Ao aplicar políticas de bucket do Amazon S3 para os VPC endpoints descritos nesta seção,
talvez você bloqueie o acesso ao bucket inadvertidamente. As permissões de bucket destinadas
especificamente a limitar o acesso do bucket às conexões originadas do seu VPC endpoint
podem bloquear todas as conexões ao bucket. Para obter informações sobre como corrigir esse
problema, consulte Minha política de bucket tem o ID da VPC ou do VPC endpoint incorreto.
Como corrigir a política para que eu possa acessar o bucket? no Centro de conhecimento do
AWS Support.

Restringir o acesso a um VPC endpoint específico


O seguinte é um exemplo de um política de bucket do Amazon S3 que restringe o acesso a um bucket
específico, awsexamplebucket1, somente no VPC endpoint com o ID vpce-1a2b3c4d. Essa
política negará todo acesso ao bucket se o endpoint especificado não estiver sendo usado. A condição
aws:SourceVpce é usada para especificar o endpoint. A condição aws:SourceVpce não requer um
nome de recurso da Amazon (ARN) para o recurso do VPC endpoint, somente o ID do VPC endpoint.
Para obter mais informações sobre o uso de condições em uma política, consulte Exemplos de chave de
condição do Amazon S3 (p. 278).
Important

• Antes de usar a política de exemplo a seguir, substitua o ID do VPC endpoint por um valor
apropriado para o caso de uso. Caso contrário, não será possível acessar o bucket.
• Essa política desabilita o acesso do console ao bucket especificado, pois as solicitações do
console não se originam do VPC endpoint especificado.

Versão da API 2006-03-01


378
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Version": "2012-10-17",
"Id": "Policy1415115909152",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Principal": "*",
"Action": "s3:*",
"Effect": "Deny",
"Resource": ["arn:aws:s3:::awsexamplebucket1",
"arn:aws:s3:::awsexamplebucket1/*"],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-1a2b3c4d"
}
}
}
]
}

Restringir o acesso a uma VPC específica


Você pode criar uma política de bucket que restringe o acesso a uma VPC específica usando a condição
aws:SourceVpc. Isso será útil se você tiver vários VPC endpoints configurados na mesma VPC e desejar
gerenciar o acesso aos buckets do Amazon S3 para todos os endpoints. A seguir encontra-se um exemplo
de política que permite que a VPC vpc-111bbb22 acesse awsexamplebucket1 e seus objetos. Essa
política negará todo acesso ao bucket se o endpoint a VPC especificada não estiver sendo usada. A chave
de condição vpc-111bbb22 não requer um ARN para o recurso da VPC, somente o ID da VPC.
Important
• Antes de usar a política de exemplo a seguir, substitua o ID da VPC por um valor apropriado
para o caso de uso. Caso contrário, não será possível acessar o bucket.
• Essa política desabilita o acesso do console ao bucket especificado, pois as solicitações do
console não se originam da VPC especificada.

{
"Version": "2012-10-17",
"Id": "Policy1415115909153",
"Statement": [
{
"Sid": "Access-to-specific-VPC-only",
"Principal": "*",
"Action": "s3:*",
"Effect": "Deny",
"Resource": ["arn:aws:s3:::awsexamplebucket1",
"arn:aws:s3:::awsexamplebucket1/*"],
"Condition": {
"StringNotEquals": {
"aws:SourceVpc": "vpc-111bbb22"
}
}
}
]
}

Exemplos de políticas de bucket


Esta seção apresenta alguns exemplos de casos de uso típicos de políticas de bucket. As políticas
usam as sequências bucket e examplebucket no valor do recurso. Para testar essas políticas, será
necessário substituir essas sequências pelo nome do bucket. Para obter informações sobre a linguagem
de políticas de acesso, consulte Visão geral da lista de controle de acesso (ACL) (p. 440).

Versão da API 2006-03-01


379
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Note

As políticas de bucket são limitadas a 20 KB.

Você pode usar o Gerador de politicas da AWS para criar uma política de bucket para o bucket do Amazon
S3. Depois, use o documento gerado para definir a política de bucket usando o console do Amazon S3, por
meio de várias ferramentas de terceiros ou pela sua aplicação.
Important

Ao testar as permissões usando o console do Amazon S3, você precisará conceder


permissões adicionais necessárias para o console — as permissões s3:ListAllMyBuckets,
s3:GetBucketLocation e s3:ListBucket. Para obter um exemplo de passo a passo que
concede permissões aos usuários e testa-as usando o console, consulte Controlar o acesso a um
bucket com políticas de usuário (p. 387).

Tópicos
• Conceder permissões a várias contas com condições adicionadas (p. 380)
• Conceder permissão somente leitura para um usuário anônimo (p. 380)
• Limitar o acesso a endereços IP específicos (p. 381)
• Restringir o acesso a um indicador HTTP específico (p. 382)
• Conceder permissão para uma OAI do Amazon CloudFront (p. 383)
• Adicionar uma política de bucket para exigir MFA (p. 384)
• Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do
bucket tenha controle total (p. 385)
• Conceder permissões para inventário e análise do Amazon S3 (p. 386)
• Conceder permissões para o Amazon S3 Storage Lens (p. 386)

Conceder permissões a várias contas com condições adicionadas

A política de exemplo a seguir concede as permissões s3:PutObject e s3:PutObjectAcl a várias


contas da AWS e exige que as solicitações para essas operações incluam a lista de controle de acesso
(ACL) public-read predefinida. Para obter mais informações, consulte Ações do Amazon S3 (p. 273) e
Exemplos de chave de condição do Amazon S3 (p. 278).

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddCannedAcl",
"Effect":"Allow",
"Principal": {"AWS":
["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]},
"Action":["s3:PutObject","s3:PutObjectAcl"],
"Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition":{"StringEquals":{"s3:x-amz-acl":["public-read"]}}
}
]
}

Conceder permissão somente leitura para um usuário anônimo

A política de exemplo a seguir concede a permissão s3:GetObject aos usuários anônimos públicos.
Para obter uma lista de permissões e as operações que elas permitem, consulte Ações do Amazon
S3 (p. 273) Essa permissão permite que qualquer pessoa leia os dados do objeto, o que é útil quando
você configura o bucket como um site e deseja que todos possam ler os objetos do bucket. Antes de usar

Versão da API 2006-03-01


380
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

uma política de bucket para conceder permissão somente leitura a um usuário anônimo, é necessário
desabilitar as configurações de bloqueio de acesso público ao seu bucket. Para obter mais informações,
consulte Definir permissões para acesso ao site (p. 956).
Warning

Tenha cautela ao conceder acesso anônimo ao seu bucket do Amazon S3 ou ao desabilitar as


configurações de bloqueio de acesso público. Quando você concede acesso anônimo, qualquer
pessoa no mundo pode acessar seu bucket. Recomendamos nunca conceder acesso anônimo
ao seu bucket do Amazon S3, a menos que seja especificamente necessário, como com a
hospedagem de site estático (p. 945).

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicRead",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"]
}
]
}

Limitar o acesso a endereços IP específicos

O exemplo a seguir nega permissões a qualquer usuário para executar quaisquer operações do Amazon
S3 em objetos no bucket do S3 especificado, a menos que a solicitação tenha origem no intervalo de
endereços IP especificados na condição.

A instrução identifica 54.240.143.0/24 como o intervalo de endereços IP permitidos do Protocolo de


Internet versão 4 (IPv4).

O bloco Condition usa a condição NotIpAddress e a chave de condição aws:SourceIp, que é


uma chave de condição que abrange toda a AWS. Para obter mais informações sobre essas chaves
de condição, consulte Exemplos de chave de condição do Amazon S3 (p. 278). Os valores IPv4
aws:SourceIp usam a notação CIDR padrão. Para obter mais informações, consulte Referência de
elementos de política JSON do IAM no Guia do usuário do IAM.
Important

Substitua o intervalo de endereços IP neste exemplo por um valor apropriado para o seu caso
de uso antes de usar esta política. Caso contrário, você perderá a capacidade de acessar seu
bucket.

{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}

Versão da API 2006-03-01


381
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

}
]
}

Permitir endereços IPv4 e IPv6

Ao começar a usar os endereços IPv6, recomendamos que você atualize todas as políticas da sua
organização com os intervalos de endereços IPv6 além dos intervalos de IPv4 existentes para garantir que
as políticas continuem a funcionar ao fazer a transição para o IPv6.

O exemplo da política de bucket a seguir mostra como misturar intervalos de endereços IPv4 e IPv6 para
cobrir todos os endereços IP válidos de sua organização. A política de exemplo permitirá acesso aos
endereços IP de exemplo 54.240.143.1 e 2001:DB8:1234:5678::1 e negará o acesso para os
endereços 54.240.143.129 e 2001:DB8:1234:5678:ABCD::1.

Os valores de IPv6 para aws:SourceIp devem estar em formato CIDR padrão. Para IPv6,
oferecemos suporte ao uso de :: para representar um intervalo de IPv6 (por exemplo
2032001:DB8:1234:5678::/64). Para obter mais informações, consulte Operadores de condição de
endereço IP no Guia do usuário do IAM.
Important

Substitua os intervalos de endereços IP neste exemplo por valores apropriados para o seu caso
de uso antes de usar esta política. Caso contrário, você pode perder a capacidade de acessar seu
bucket.

{
"Id":"PolicyId2",
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowIPmix",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:*",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"54.240.143.0/24",
"2001:DB8:1234:5678::/64"
]
},
"NotIpAddress": {
"aws:SourceIp": [
"54.240.143.128/30",
"2001:DB8:1234:5678:ABCD::/80"
]
}
}
}
]
}

Restringir o acesso a um indicador HTTP específico

Suponha que você tenha um site com nome de domínio (www.example.com ou example.com) com
links para fotos e vídeos armazenados em seu bucket do Amazon S3, DOC-EXAMPLE-BUCKET. Por
padrão, todos os recursos do Amazon S3 são privados, portanto, somente a conta da AWS que criou os

Versão da API 2006-03-01


382
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

recursos pode acessá-los. Para permitir acesso de leitura a esses objetos em seu site, você pode adicionar
uma política de bucket que conceda a permissão s3:GetObject com uma condição, usando a chave
aws:Referer, de que a solicitação get deve se originar de páginas específicas da web. A política a seguir
especifica a condição StringLike com a chave de condição aws:Referer.

{
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition":{
"StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
}
}
]
}

Certifique-se de que os navegadores que você usa incluam o cabeçalho HTTP referer na solicitação.

Conceder permissão para uma OAI do Amazon CloudFront

A seguinte política de bucket de exemplo concede uma permissão de identidade de acesso de origem (OAI
– Origin Access Identity) do CloudFront para obter (ler) todos os objetos em seu bucket do Amazon S3.
Você pode usar uma OAI do CloudFront para permitir que os usuários acessem objetos em seu bucket
por meio do CloudFront, mas não diretamente pelo Amazon S3. Para obter mais informações, consulte
Restringir acesso ao conteúdo do Amazon S3 usando uma identidade de acesso de origem no Guia do
desenvolvedor do Amazon CloudFront.

A política a seguir usa o ID da OAI como Principal da política. Para obter mais informações sobre o uso
de políticas de bucket do S3 para conceder acesso a uma OAI do CloudFront, consulte Usar políticas de
bucket do Amazon S3 no Guia do desenvolvedor do Amazon CloudFront.

Para usar este exemplo:

• Substitua EH1HDMB1FH2TC pelo ID da OAI. Para localizar o ID da OAI, consulte a página


Origin Access Identity (Identidade de acesso de origem) no console do CloudFront ou use
ListCloudFrontOriginAccessIdentities na API do CloudFront.
• Substitua DOC-EXAMPLE-BUCKET pelo nome do bucket do Amazon S3.

{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access
Identity EH1HDMB1FH2TC"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}

Versão da API 2006-03-01


383
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Adicionar uma política de bucket para exigir MFA

O Amazon S3 oferece suporte a acesso à API protegido por MFA, um recurso que pode impor a
autenticação multifator para acessar os recursos do Amazon S3. A autenticação multifator fornece um nível
extra de segurança que pode ser aplicado a seu ambiente da AWS. É um recurso de segurança que exige
que os usuários comprovem a posse física de um dispositivo MFA fornecendo um código válido de MFA.
Para obter mais informações, consulte AWS Multi-Factor Authentication. É possível exigir a autenticação
MFA para todas as solicitações de acesso a seus recursos do Amazon S3.

Você pode impor o requisito MFA usando a chave aws:MultiFactorAuthAge em uma política de
bucket. Os usuários do AWS Identity and Access Management (IAM) podem acessar os recursos do
Amazon S3 usando credenciais temporárias emitidas pelo AWS Security Token Service (AWS STS). Você
fornece o código da MFA no momento da solicitação do AWS STS.

Quando o Amazon S3 recebe uma solicitação com autenticação multifator, a chave


aws:MultiFactorAuthAge fornece um valor numérico que indica há quanto tempo (em segundos) a
credencial temporária foi criada. Se a credencial temporária fornecida na solicitação não foi criada usando
um dispositivo MFA, esse valor de chave será nulo (ausente). Em uma política de bucket, você pode
adicionar uma condição para verificar esse valor, conforme mostrado no exemplo de política de bucket a
seguir. A política negará qualquer operação do Amazon S3 na pasta /taxdocuments no bucket DOC-
EXAMPLE-BUCKET se a solicitação não for autenticada usando MFA. Para saber mais sobre MFA, consulte
Usar o Multi-Factor Authentication (MFA) na AWS no Guia do usuário do IAM.

{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*",
"Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
}
]
}

A condição Null no bloco Condition é avaliada como verdadeira se o valor da chave


aws:MultiFactorAuthAge for nulo indicando que as credenciais de segurança temporárias na
solicitação foram criadas sem a chave de MFA.

A política de bucket a seguir é uma extensão da política de bucket anterior. A política inclui duas
declarações de política. Uma instrução concede a permissão s3:GetObject em um bucket (DOC-
EXAMPLE-BUCKET) a todos. Outra instrução restringe ainda mais o acesso à pasta DOC-EXAMPLE-
BUCKET/taxdocuments no bucket ao exigir MFA.

{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*",
"Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
},
{

Versão da API 2006-03-01


384
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}

Opcionalmente, você pode usar uma condição numérica para limitar a duração na qual a chave
aws:MultiFactorAuthAge é válida, independentemente do ciclo de vida da credencial de segurança
temporária usada para autenticar a solicitação. Por exemplo, a seguinte política de bucket, além de exigir
autenticação MFA, também verifica há quanto tempo a sessão temporária foi criada. A política negará
qualquer operação se o valor da chave aws:MultiFactorAuthAge indicar que a sessão temporária foi
criada há mais de uma hora (3.600 segundos).

{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*",
"Condition": {"Null": {"aws:MultiFactorAuthAge": true }}
},
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*",
"Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }}
},
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}

Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do
bucket tenha controle total

O exemplo a seguir mostra como permitir que outra conta da AWS faça upload de objetos no bucket
enquanto assume o controle total dos objetos carregados. Essa política impõe que uma conta específica
da AWS (123456789012) receba a capacidade de fazer upload de objetos somente se essa conta incluir
a ACL padrão pelo proprietário do bucket no upload. A condição StringEquals na política especifica a
chave de condição s3:x-amz-acl para expressar o requisito (consulte Exemplos de chave de condição do
Amazon S3 (p. 278)).

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PolicyForAllowUploadWithACL",

Versão da API 2006-03-01


385
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Effect":"Allow",
"Principal":{"AWS":"123456789012"},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
}
}
]
}

Conceder permissões para inventário e análise do Amazon S3

O inventário do Amazon S3 cria listas dos objetos em um bucket do Amazon S3, e a exportação da análise
do Amazon S3 cria arquivos de saída dos dados usados na análise. O bucket para o qual o inventário
lista objetos é chamado de bucket de origem. O bucket onde o arquivo de inventário é gravado e o bucket
onde o arquivo de exportação da análise é gravado é chamado de bucket de destino. Você deve criar
uma política de bucket para o bucket de destino ao configurar o inventário de um bucket do Amazon S3
e ao configurar a exportação da análise. Para obter mais informações, consulte Inventário do Amazon
S3 (p. 605) e Análise do Amazon S3 – Análise de classe de armazenamento (p. 894).

O exemplo da política de bucket a seguir concede permissão ao Amazon S3 para gravar objetos (PUTs)
da conta do bucket de origem para o bucket de destino. Você usa uma política de bucket como essa no
bucket de destino ao configurar o inventário do Amazon S3 e a exportação da análise do Amazon S3.

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"InventoryAndAnalyticsExamplePolicy",
"Effect":"Allow",
"Principal": {"Service": "s3.amazonaws.com"},
"Action":"s3:PutObject",
"Resource":["arn:aws:s3:::destinationbucket/*"],
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::sourcebucket"
},
"StringEquals": {
"aws:SourceAccount": "123456789012",
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}

Conceder permissões para o Amazon S3 Storage Lens

O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser obtida por download no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e
tendências, sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento
e aplicar as práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do
Console de Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST.

O S3 Storage Lens pode agregar seu uso de armazenamento às exportações de métricas em um bucket
do Amazon S3 para análise posterior. O bucket em que o S3 Storage Lens coloca as exportações de
métricas dele é conhecido como bucket de destino. Você deve ter uma política de bucket para o bucket de
destino ao configurar a exportação de métricas do S3 Storage Lens. Para obter mais informações, consulte
Avaliação de sua atividade de armazenamento e uso com o Amazon S3 Storage Lens (p. 900).

Versão da API 2006-03-01


386
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

O exemplo de política de bucket a seguir concede ao Amazon S3 permissão para gravar objetos (PUTs)
em um bucket de destino. Você usa uma política de bucket como essa no bucket de destino ao configurar
uma exportação de métricas do S3 Storage Lens.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3StorageLensExamplePolicy",
"Effect": "Allow",
"Principal": {
"Service": [
"storage-lens.s3.amazonaws.com"
]
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::destination-bucket/destination-prefix/
StorageLens/111122223333/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
},
"StringEquals": {
"aws:SourceAccount": "111122223333"
},
"StringEquals": {
"aws:SourceArn": "arn:aws:s3:your-region:111122223333:storage-
lens/your-dashboard-configuration-id"
}
}
}
]
}

A modificação a seguir no recurso "Action": "s3:PutObject" de política de bucket anterior ao


configurar uma exportação de métricas no nível da organização do S3 Storage Lens.

{
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::destination-bucket/destination-prefix/
StorageLens/your-organization-id/*",

Uso de políticas de usuário do IAM


Você pode criar e configurar políticas de usuário do IAM para controlar o acesso do usuário ao Amazon
S3. As políticas de usuário usam linguagem de política de acesso baseada em JSON.

Esta seção mostra diversas políticas de usuário do IAM para controle de acesso de usuário ao Amazon S3.
Por exemplo, políticas de bucket, consulte Uso de políticas de bucket (p. 376). Para obter informações
sobre a linguagem de políticas de acesso, consulte Políticas e permissões no Amazon S3 (p. 269).

Tópicos
• Controlar o acesso a um bucket com políticas de usuário (p. 387)
• Exemplos de política de usuário (p. 405)

Controlar o acesso a um bucket com políticas de usuário


Esta demonstração explica como as permissões de usuário funcionam com o Amazon S3. Nesse exemplo,
você cria um bucket com pastas. Depois, você cria usuários do AWS Identity and Access Management

Versão da API 2006-03-01


387
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

(IAM) em sua conta da AWS e concede a esses usuários permissões incrementais no bucket do Amazon
S3 e nas pastas nele.

Tópicos
• Elementos básicos de buckets e pastas (p. 388)
• Resumo da demonstração (p. 390)
• Preparar para a demonstração (p. 390)
• Etapa 1: Criar um bucket (p. 391)
• Etapa 2: criar usuários do IAM e um grupo (p. 391)
• Etapa 3: verificar se os usuários do IAM não têm nenhuma permissão (p. 392)
• Etapa 4: Conceder permissões no nível do grupo (p. 392)
• Etapa 5: conceder permissões específicas do usuário do IAM Alice (p. 399)
• Etapa 6: conceder permissões específicas do usuário do IAM Bob (p. 403)
• Etapa 7: Proteger a pasta Private (p. 403)
• Etapa 8: Limpar (p. 405)
• Recursos relacionados (p. 405)

Elementos básicos de buckets e pastas

O modelo de dados do Amazon S3 é uma estrutura plana: você cria um bucket e o bucket armazena
objetos. Não há hierarquia de buckets ou de subpastas, mas você pode emular uma hierarquia de pastas.
Ferramentas como o console do Amazon S3 podem apresentar uma exibição dessas pastas e subpastas
lógicas em seu bucket, como mostrado na imagem abaixo:

O console mostra que o bucket nomeado companybucket tem três pastas, Private, Development e
Finance, e um objeto, s3-dg.pdf. O console usa os nomes de objeto (chaves) para criar uma hierarquia
lógica com pastas e subpastas. Considere os seguintes exemplos:

• Ao criar a pasta Development, o console cria um objeto com a chave Development/. Observe
delimitador (/) no final.
• Quando você faz upload de um objeto chamado Projects1.xls na pasta Development, o console
sobe o objeto e concede a ele a chave Development/Projects1.xls.

Versão da API 2006-03-01


388
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Na chave, Development é o prefixo e / é o delimitador. A API do Amazon S3 oferece suporte a


prefixos e delimitadores em suas operações. Por exemplo, você pode obter uma lista de todos os
objetos no bucket com um prefixo e um delimitador específicos. No console, quando você abre a pasta
Development, o console lista os objetos nela. No exemplo a seguir, a pasta Development contém um
objeto.

Quando o console lista a pasta Development no bucket companybucket, ele envia uma solicitação
para o Amazon S3 na qual especifica o prefixo Development e o delimitador / na solicitação. A
resposta do console parece uma lista de pastas no sistema de arquivos de seu computador. O
exemplo anterior mostra que o bucket companybucket tem um objeto com a chave Development/
Projects1.xls.

O console está usando chaves de objeto para inferir uma hierarquia lógica. O Amazon S3 não tem
hierarquia física; ele só tem buckets que contêm objetos em uma estrutura de arquivos simples. Ao criar
objetos usando a API do Amazon S3, você pode usar chaves de objeto que implicam uma hierarquia
lógica. Ao criar uma hierarquia lógica de objetos, você pode gerenciar o acesso a pastas individuais, como
este passo a passo ensina.

Antes de começar, você precisa conhecer o conceito de conteúdo no nível raiz do bucket. Suponha que
seu bucket companybucket contenha os seguintes objetos:

• Private/privDoc1.txt
• Private/privDoc2.zip
• Development/project1.xls
• Development/project2.xls
• Finance/Tax2011/document1.pdf
• Finance/Tax2011/document2.pdf
• s3-dg.pdf

Essas chaves de objeto criam uma hierarquia lógica com Private, Development e Finance como
pastas no nível raiz, e s3-dg.pdf como objeto no nível raiz. Quando você escolhe o nome do bucket no
console do Amazon S3, os itens no nível raiz são exibidos como mostrado na imagem abaixo. O console
exibe os prefixos no nível superior (Private/, Development/ e Finance/) como pastas no nível raiz. A
chave de s3-dg.pdf não tem um prefixo, então, ela aparece como um item no nível raiz.

Versão da API 2006-03-01


389
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Resumo da demonstração

Neste passo a passo, você cria um bucket com três pastas (Private, Development e Finance).

Você tem dois usuários, Alice e Bob. Você quer que a Alice tenha acesso somente à pasta Development,
e Bob tenha acesso à Finance. Você quer manter o conteúdo da pasta Private privado. No passo a
passo, você gerencia o acesso criando usuários do IAM (o exemplo usa os mesmos nomes de usuário,
Alice e Bob) e concede as permissões necessárias.

O IAM também permite criar grupos de usuários e conceder permissões no nível do grupo que se aplicam
a todos os usuários no grupo. Isso ajuda a gerenciar melhor as permissões. Neste exercício, Alice e Bob
precisam ter algumas permissões comuns. Então, você também cria um grupo chamado Consultants e
adiciona Alice e Bob a ele. Primeiro, você concede permissões anexando uma política de grupo ao grupo.
Depois, adiciona permissões específicas do usuário anexando políticas a usuários específicos.
Note

O passo a passo usa companybucket como o nome do bucket, Alice e Bob como os usuários do
Consultants, e IAM como o nome do grupo. Como o Amazon S3 exige que os nomes de bucket
sejam globalmente exclusivos, você precisará substituir o nome do bucket pelo nome que criar.

Preparar para a demonstração

Neste exemplo, use suas credenciais da conta da AWS para criar usuários do IAM. Inicialmente, esses
usuários não têm nenhuma permissão. Você concede gradualmente a esses usuários as permissões
para executar ações específicas do Amazon S3. Para testar essas permissões, você entra no console
com as credenciais de cada usuário. Conforme conceder gradualmente permissões como proprietário
da conta da AWS e testar permissões como um usuário do IAM, você precisará entrar e sair, sempre
usando credenciais diferentes. Você pode fazer o teste em apenas um navegador, mas o processo é
mais rápido se você usar dois navegadores diferentes. Use um navegador para se conectar ao Console
de Gerenciamento da AWS com as suas credenciais da conta da AWS e outro para se conectar com as
credenciais de usuário do IAM.

Para fazer login no Console de Gerenciamento da AWS com suas credenciais de conta da AWS, acesse
https://console.aws.amazon.com/. Um usuário do IAM não pode fazer login pelo mesmo link. Um usuário

Versão da API 2006-03-01


390
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

do IAM deve usar uma página de login habilitada para o IAM. Como proprietário da conta, você pode
fornecer este link para seus usuários.

Para obter mais informações sobre o IAM, consulte A página de login do Console de Gerenciamento da
AWS no Guia do usuário do IAM.

Para fornecer um link de login para usuários do IAM

1. Faça login no Console de Gerenciamento da AWS e abra o console do IAM em https://


console.aws.amazon.com/iam/.
2. No painel Navigation (Navegação), escolha IAM Dashboard (Painel do IAM).
3. Observe o URL em IAM users sign in link: (Link de login de usuários do IAM:). Você dará este link para
usuários do IAM entrarem no console com seu nome de usuário e senha do IAM.

Etapa 1: Criar um bucket

Nesta etapa, você fará login no console do Amazon S3 com suas credenciais da conta da AWS, criará um
bucket, adicionará pastas (Development, Finance e Private) ao bucket e fará upload de um ou dois
documentos de exemplo em cada pasta.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Crie um bucket.

Para obter instruções detalhadas, consulte Criação de um bucket (p. 31).


3. Faça upload de um documento no bucket.

Este exercício pressupõe que você tem o documento s3-dg.pdf no nível raiz desse bucket. Se você
carregar um documento diferente, substitua o nome de arquivo para s3-dg.pdf.
4. Adicione três pastas nomeadas Private, Finance e Development ao bucket.

Para obter instruções passo a passo para criar uma pasta, consulte Organizar objetos no console
do Amazon S3 usando pastas (p. 155)> no Guia do usuário do console do Amazon Simple Storage
Service.
5. Faça upload de um ou dois documentos em cada pasta.

Neste exercício, suponha que você tenha carregado alguns documentos em cada pasta, resultando
que o bucket tenha objetos com as seguintes chaves:

• Private/privDoc1.txt
• Private/privDoc2.zip
• Development/project1.xls
• Development/project2.xls
• Finance/Tax2011/document1.pdf
• Finance/Tax2011/document2.pdf
• s3-dg.pdf

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).

Etapa 2: criar usuários do IAM e um grupo

Agora use o console do IAM para adicionar dois usuários do IAM, Alice e Bob, à sua conta da AWS. Crie
também um grupo administrativo chamado Consultants e adicione os dois os usuários a ele.

Versão da API 2006-03-01


391
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Warning

Quando você adicionar usuários e um grupo, não anexe políticas que concedem permissões
a esses usuários. No início, esses usuários não terão permissões. Nas próximas seções, você
concederá permissões incrementalmente. Primeiro verifique se atribuiu senhas a esses usuários
do IAM. Você utilizará essas credenciais de usuário para testar as ações do Amazon S3 e verificar
se as permissões funcionam como esperado.

Para obter instruções passo a passo para criar um novo usuário do IAM, consulte Criar um usuário
do IAM em sua conta da AWS no Guia do usuário do IAM. Ao criar usuários seguindo este passo a
passo, selecione AWS Management Console access (Acesso ao Controle de Gerenciamento da AWS) e
desmarque Programmatic access (Acesso programático).

Para obter instruções passo a passo para criar um grupo administrativo, consulte Criar seu primeiro
usuário administrador e grupo do IAM no Guia do usuário do IAM.

Etapa 3: verificar se os usuários do IAM não têm nenhuma permissão

Se você estiver usando dois navegadores, agora poderá usar o segundo navegador para entrar no console
usando uma das credenciais de usuário do IAM.

1. Usando o link de login de usuário do IAM (consulte Para fornecer um link de login para usuários do
IAM (p. 391)), entre no Console de Gerenciamento da AWS usando qualquer uma das credenciais
de usuário do IAM.
2. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

Verifique a seguinte mensagem de console que diz que o acesso foi negado.

Agora, você pode começar a conceder permissões incrementais aos usuários. Antes, você anexará uma
política de grupo concedendo as permissões de que os dois usuários precisam.

Etapa 4: Conceder permissões no nível do grupo

Você quer que os usuários possam fazer o seguinte:

• Listar todos os buckets de propriedade da conta pai. Para fazer isso, Bob e Alice devem ter permissão
para a ação s3:ListAllMyBuckets.
• Listar itens, pastas e objetos no nível raiz no bucket companybucket. Para fazer isso, Bob e Alice
devem ter permissão para a ação s3:ListBucket no bucket companybucket.

Primeiro, você cria uma política que concede essas permissões e, depois, anexa-a ao grupo
Consultants.

Etapa 4.1: Conceder permissão para listar todos os buckets

Nesta etapa, você cria uma política gerenciada que concede aos usuários as permissões mínimas para
listar todos os buckets de propriedade da conta pai. Depois, anexa a política ao grupo Consultants. Ao
anexar a política gerenciada a um usuário ou um grupo, você concede ao usuário ou grupo a permissão
para obter uma lista de bucket na conta pai da AWS.

Versão da API 2006-03-01


392
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

1. Faça login no Console de Gerenciamento da AWS e abra o console do IAM em https://


console.aws.amazon.com/iam/.
Note

Como você está concedendo permissões de usuário, faça login com suas credenciais da
conta da AWS, e não como um usuário do IAM.
2. Crie a política gerenciada.

a. No painel de navegação à esquerda, escolha Policies (Políticas) e Create Policy (Criar política).
b. Selecione a guia JSON.
c. Copie a política de acesso a seguir e cole-a no campo de texto da política.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGroupToSeeBucketListInTheConsole",
"Action": ["s3:ListAllMyBuckets"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
}
]
}

Uma política é um documento JSON. No documento, uma Statement é uma matriz de objetos,
cada uma descrevendo uma permissão usando uma coleção de pares de valores de nome. A
política anterior descreve uma permissão específica. A Action especifica o tipo de acesso. Na
política, s3:ListAllMyBuckets é uma ação do Amazon S3 predefinida. Esta ação abrange a
operação GET serviço do Amazon S3, que retorna uma lista de todos os buckets no remetente
autenticado. O valor do elemento Effect determina se a permissão específica é permitida ou
negada.
d. Escolha Review Policy (Revisar política). Na próxima página, insira
AllowGroupToSeeBucketListInTheConsole no campo Name (Nome) e escolha em Create
policy (Criar política).
Note

A entrada Summary (Resumo) exibe uma mensagem afirmando que a política não
concede permissão nenhuma. Para esta apresentação, você pode, de maneira segura,
ignorar essa mensagem.
3. Anexe a política gerenciada AllowGroupToSeeBucketListInTheConsole que você criou para o
grupo Consultants.

Para obter instruções passo a passo para anexar uma política gerenciada, consulte Adicionar e
remover permissões de identidade do IAM no Guia do usuário do IAM.

Anexe documentos de política a usuários e grupos do IAM no console do IAM. Como você quer que os
dois usuários possam listar os buckets, você anexa a política ao grupo.
4. Teste a permissão.

a. Usando o link de login de usuário do IAM (consulte Para fornecer um link de login para usuários
do IAM (p. 391)), entre no console usando qualquer uma das credenciais de usuário do IAM.
b. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

O console agora deve listar todos os buckets, mas não os objetos dos buckets.
Versão da API 2006-03-01
393
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Etapa 4.2: Permitir que os usuários listem o conteúdo do nível raiz de um bucket

Agora, você permite que todos os usuários no grupo Consultants listem itens no nível raiz do bucket
companybucket. Quando um usuário escolhe o bucket da empresa no console do Amazon S3, ele pode
visualizar os itens no nível raiz do bucket.

Note

Esse exemplo usa companybucket como ilustração. Use o nome do bucket que você criou.

Para entender a solicitação que o console envia ao Amazon S3 quando você escolhe o nome de um
bucket, a resposta que o Amazon S3 retorna e como o console a interpreta, é necessário entendê-la um
pouco mais.

Quando você clica no nome de um bucket, o console envia a solicitação GET Bucket ao Amazon S3. Essa
solicitação inclui os parâmetros a seguir:

Versão da API 2006-03-01


394
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• O parâmetro prefix com uma string vazia como valor.


• O parâmetro delimiter com / como valor.

Veja a seguir uma solicitação de exemplo.

GET ?prefix=&delimiter=/ HTTP/1.1


Host: companybucket.s3.amazonaws.com
Date: Wed, 01 Aug 2012 12:00:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=

O Amazon S3 retorna uma resposta que inclui o seguinte elemento <ListBucketResult/>.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>companybucket</Name>
<Prefix></Prefix>
<Delimiter>/</Delimiter>
...
<Contents>
<Key>s3-dg.pdf</Key>
...
</Contents>
<CommonPrefixes>
<Prefix>Development/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>Finance/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>Private/</Prefix>
</CommonPrefixes>
</ListBucketResult>

O objeto s3-dg.pdf da chave não contém o delimitador /, e o Amazon S3 retorna a chave no elemento
<Contents>. Contudo, todas as outras chaves no bucket de exemplo contêm o delimitador /. O Amazon
S3 agrupa essas chaves e retorna um elemento Development/ para cada um dos valores distintos de
prefixo Finance/, Private/ e /, isto é, uma substring desde o início dessas chaves até a primeira
ocorrência do delimitador <CommonPrefixes> especificado.

O console interpreta este resultado e exibe os itens no nível raiz como três pastas e uma chave de objeto.

Versão da API 2006-03-01


395
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Se Bob ou Alice abrirem a pasta Development (Desenvolvimento), o console enviará a solicitação GET
Bucket (Listar objetos) ao Amazon S3 com os parâmetros prefix e delimiter definidos como os
seguintes valores:

• O parâmetro prefix com valor Development/.


• O parâmetro delimiter com valor "/".

Em resposta, o Amazon S3 retorna as chaves de objeto que começam com o prefixo especificado.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>companybucket</Name>
<Prefix>Development</Prefix>
<Delimiter>/</Delimiter>
...
<Contents>
<Key>Project1.xls</Key>
...
</Contents>
<Contents>
<Key>Project2.xls</Key>
...
</Contents>
</ListBucketResult>

O console mostra as chaves de objeto.

Versão da API 2006-03-01


396
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Agora, volte a conceder aos usuários a permissão para listar itens no nível raiz do bucket. Para listar
conteúdo de bucket, os usuários precisam de permissão para chamar a ação s3:ListBucket, conforme
exibido na seguinte declaração de política. Para garantir que eles vejam somente o conteúdo no nível raiz,
você adiciona uma condição de que os usuários devem especificar um prefix vazio na solicitação, isto é,
eles não podem clicar duas vezes em nenhuma das pastas no nível raiz. Finalmente, você adiciona uma
condição para solicitar o acesso de pasta exigindo que as solicitações de usuário incluam o parâmetro
delimiter com valor "/".

{
"Sid": "AllowRootLevelListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::companybucket"],
"Condition":{
"StringEquals":{
"s3:prefix":[""], "s3:delimiter":["/"]
}
}
}

Ao escolher o bucket no console do Amazon S3, o console primeiro envia a solicitação GET Bucket
location para encontrar a região da AWS em que o bucket está implantado. Depois, o console usa o
endpoint específico da região para o bucket enviar a solicitação GET Bucket (listar objetos). Como
resultado, se os usuários forem usar o console, você deverá conceder permissão para a ação
s3:GetBucketLocation conforme exibido na seguinte declaração de política.

{
"Sid": "RequiredByS3Console",
"Action": ["s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
}

Para permitir que os usuários listem o conteúdo do nível raiz do bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do IAM em https://


console.aws.amazon.com/iam/.

Versão da API 2006-03-01


397
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Use suas credenciais de conta da AWS, não as credenciais de um usuário do IAM, para entrar no
console.
2. Substitua a política gerenciada existente AllowGroupToSeeBucketListInTheConsole
que está anexada ao grupo Consultants pela política a seguir, que também permite a ação
s3:ListBucket. Lembre-se de substituir companybucket na política Resource pelo nome do
bucket.

Para obter instruções detalhadas, consulte Editar políticas do IAM no Guia do usuário do IAM. Ao
seguir as instruções detalhadas, siga as etapas para aplicar as alterações em todas as entidades
principais às quais a política está anexada.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid":
"AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
"Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::*" ]
},
{
"Sid": "AllowRootLevelListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::companybucket"],
"Condition":{
"StringEquals":{
"s3:prefix":[""], "s3:delimiter":["/"]
}
}
}
]
}

3. Teste as permissões atualizadas.

a. Usando o link de login do usuário do IAM (consulte Para fornecer um link de login para usuários
do IAM (p. 391)), faça login no Console de Gerenciamento da AWS.

Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


b. Escolha o bucket que você criou, e o console mostrará os itens no nível raiz do bucket. Se você
escolher alguma pasta no bucket, não verá o conteúdo dela, porque ainda não concedeu essas
permissões.

Versão da API 2006-03-01


398
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Esse teste é bem-sucedido quando os usuários usam o console do Amazon S3. Ao escolher um bucket
no console, a implementação do console envia uma solicitação que inclui o parâmetro prefix com uma
string vazia como seu valor e o parâmetro delimiter com "/" como valor.

Etapa 4.3: Resumo da política de grupo

O efeito final da política de grupo que você adicionou é conceder aos usuários do IAM Alice e Bob as
seguintes permissões mínimas:

• Listar todos os buckets de propriedade da conta pai.


• Ver itens no nível raiz no bucket companybucket.

Contudo, os usuários ainda não podem fazer muita coisa. Agora, conceda as permissões específicas do
usuário da seguinte maneira:

• Permite que a Alice obtenha e coloque objetos na pasta Development.


• Permite que o Bob obtenha e coloque objetos na pasta Finance.

Para permissões específicas do usuário, anexe uma política ao usuário específico, não ao grupo. Na
próxima seção, conceda permissão para a Alice trabalhar na pasta Development. Você pode repetir as
etapas para conceder a Bob permissão semelhante para trabalhar na pasta Finance.

Etapa 5: conceder permissões específicas do usuário do IAM Alice

Agora você concede permissões adicionais a Alice para que ela possa ver o conteúdo da pasta
Development e obter e colocar objetos nela.

Etapa 5.1: conceder permissão do usuário do IAM Alice para listar o conteúdo da pasta
Development

Para que a Alice possa listar o conteúdo da pasta Development, você deve aplicar uma política ao
usuário Alice concedendo permissão para a ação s3:ListBucket no bucket companybucket, contanto
que a solicitação inclua o prefixo Development/. Você quer que essa política seja aplicada somente ao

Versão da API 2006-03-01


399
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

usuário Alice, então, usa uma política em linha. Para obter mais informações sobre políticas em linha,
consulte Políticas gerenciadas e políticas em linha no Guia do usuário do IAM.

1. Faça login no Console de Gerenciamento da AWS e abra o console do IAM em https://


console.aws.amazon.com/iam/.

Use suas credenciais de conta da AWS, não as credenciais de um usuário do IAM, para entrar no
console.
2. Crie uma política em linha para conceder ao usuário Alice permissão para listar o conteúdo da pasta
Development.

a. No painel de navegação à esquerda, escolha Uses (Usuários).


b. Clique no nome de usuário Alice.
c. Na página de detalhes do usuário, selecione a guia Permissions (Permissões) e escolha Add
inline policy (Adicionar política em linha).
d. Selecione a guia JSON.
e. Copie a política a seguir e cole-a no campo de texto da política:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::companybucket"],
"Condition":{ "StringLike":{"s3:prefix":["Development/*"] }
}
}
]
}

f. Escolha Review Policy (Revisar política). Na próxima página, insira um nome no campo Name
(Nome) e escolha Create policy (Criar política).
3. Teste a alteração nas permissões de Alice:

a. Usando o link de login do usuário do IAM (consulte Para fornecer um link de login para usuários
do IAM (p. 391)), faça login no Console de Gerenciamento da AWS.
b. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.
c. No console do Amazon S3, verifique se Alice pode visualizar a lista de objetos na pasta
Development/ no bucket.

Quando o usuário escolhe a pasta /Development para visualizar a lista de objetos nela,
o console do Amazon S3 envia a solicitação ListObjects ao Amazon S3 com o prefixo /
Development. Como o usuário recebe permissão para visualizar a lista de objetos com o prefixo
Development e o delimitador /, o Amazon S3 retorna a lista de objetos com o prefixo de chave
Development/, e o console exibe a lista.

Versão da API 2006-03-01


400
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Etapa 5.2: conceder permissões do usuário do IAM Alice para obter e colocar objetos na pasta
Development

Para que a Alice possa obter e colocar objetos na pasta Development, ela precisa de permissão para
chamar as ações s3:GetObject e s3:PutObject. As declarações de política a seguir concedem essas
permissões, contanto que a solicitação inclua o parâmetro prefix com um valor de Development/.

{
"Sid":"AllowUserToReadWriteObjectData",
"Action":["s3:GetObject", "s3:PutObject"],
"Effect":"Allow",
"Resource":["arn:aws:s3:::companybucket/Development/*"]
}

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Use suas credenciais de conta da AWS, não as credenciais de um usuário do IAM, para entrar no
console.
2. Edite a política em linha que você criou na etapa anterior.

a. No painel de navegação à esquerda, escolha Uses (Usuários).


b. Escolha o nome de usuário Alice.
c. Na página de detalhes do usuário, selecione a guia Permissions (Permissões) e depois expanda
a seção Inline Policies (Políticas em linha).
d. Escolha Edit Policy (Editar política) ao lado do nome da política que você criou na etapa anterior.
e. Copie a política a seguir e cole no campo do texto de política para substituir a política existente:

{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
"Action":["s3:ListBucket"],
"Effect":"Allow",

Versão da API 2006-03-01


401
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Resource":["arn:aws:s3:::companybucket"],
"Condition":{
"StringLike":{"s3:prefix":["Development/*"]
}
}
},
{
"Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder",
"Action":["s3:GetObject", "s3:PutObject"],
"Effect":"Allow",
"Resource":["arn:aws:s3:::companybucket/Development/*"]
}
]
}

3. Teste a política atualizada:

a. Usando o link de login do usuário do IAM (consulte Para fornecer um link de login para usuários
do IAM (p. 391)), faça login no Console de Gerenciamento da AWS.
b. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.
c. No console do Amazon S3, verifique se Alice agora pode adicionar um objeto e fazer download de
um objeto na pasta Development.

Etapa 5.3: negar explicitamente permissões do usuário do IAM Alice a todas as outras pastas no
bucket

O usuário Alice agora pode listar o conteúdo do nível raiz no bucket companybucket. Ela também pode
obter e colocar objetos na pasta Development. Se você quiser realmente limitar as permissões de
acesso, poderá negar explicitamente o acesso de Alice a todas as outras pastas no bucket. Se houver
alguma outra política (política de bucket ou ACL) que concede a Alice acesso a outras pastas no bucket,
essa negação explícita cancelará essas permissões.

É possível adicionar a seguinte declaração à política de usuário Alice que exige que todas as solicitações
que Alice envia ao Amazon S3 incluam o parâmetro prefix, cujo valor pode ser Development/* ou uma
string vazia.

{
"Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
"Action": ["s3:ListBucket"],
"Effect": "Deny",
"Resource": ["arn:aws:s3:::companybucket"],
"Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] },
"Null" : {"s3:prefix":false }
}
}

Há duas expressões condicionais no bloco Condition. O resultado dessas expressões condicionais


é combinado usando o operador lógico AND. Se ambas as condições forem verdadeiras, o resultado da
condição combinada será verdadeiro. Como o Effect nessa política é Deny, quando Condition é
classificado como verdadeiro, os usuários não podem executar a Action especificada.

• A expressão condicional Null garante que as solicitações de Alice incluam o parâmetro prefix.

O parâmetro prefix requer acesso de pasta. Se você enviar uma solicitação sem o parâmetro prefix,
o Amazon S3 retornará todas as chaves de objeto.

Se a solicitação incluir o parâmetro prefix com um valor nulo, a expressão será classificada como
verdadeiro e, portanto, a Condition inteira será classificada como verdadeira. Você deve permitir uma

Versão da API 2006-03-01


402
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

string vazia como o valor do parâmetro prefix. Com a discussão anterior, lembre-se que a string nula
permite que Alice recupere itens de bucket no nível raiz como o console faz na discussão anterior. Para
obter mais informações, consulte Etapa 4.2: Permitir que os usuários listem o conteúdo do nível raiz de
um bucket (p. 394).
• A expressão condicional StringNotLike garante que, se o valor do parâmetro prefix for
especificado e não for Development/*, a solicitação falhará.

Siga as etapas na seção anterior e atualize novamente a política em linha que você criou para o usuário
Alice.

Copie a política a seguir e cole no campo do texto de política para substituir a política existente:

{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
"Action":["s3:ListBucket"],
"Effect":"Allow",
"Resource":["arn:aws:s3:::companybucket"],
"Condition":{
"StringLike":{"s3:prefix":["Development/*"]
}
}
},
{
"Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder",
"Action":["s3:GetObject", "s3:PutObject"],
"Effect":"Allow",
"Resource":["arn:aws:s3:::companybucket/Development/*"]
},
{
"Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
"Action": ["s3:ListBucket"],
"Effect": "Deny",
"Resource": ["arn:aws:s3:::companybucket"],
"Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] },
"Null" : {"s3:prefix":false }
}
}
]
}

Etapa 6: conceder permissões específicas do usuário do IAM Bob

Agora você quer conceder ao Bob permissão para a pasta Finance. Siga as etapas que você usou
anteriormente para conceder permissões a Alice, mas substitua a pasta Development pela pasta
Finance. Para obter instruções detalhadas, consulte Etapa 5: conceder permissões específicas do
usuário do IAM Alice (p. 399).

Etapa 7: Proteger a pasta Private

Neste exemplo, você tem apenas dois usuários. Você concedeu todas as permissões mínimas necessárias
no nível do grupo e concedeu permissões no nível do usuário somente quando realmente precisou de
permissões no nível do usuário individual. Essa abordagem ajuda a minimizar o esforço de gerenciamento
de permissões. Conforme o número de usuários aumenta, gerenciar permissões pode ser um problema.
Por exemplo, você não quer que nenhum dos usuários neste exemplo acesse o conteúdo da pasta
Private. Como garantir que você não vai conceder acidentalmente uma permissão ao usuário? Adicione
uma política que negue explicitamente acesso à pasta. Uma negação explícita substitui todas as outras
permissões.

Versão da API 2006-03-01


403
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Para garantir que a pasta Private permaneça privada, você pode adicionar as duas declarações de
negação a seguir à política de grupo:

• Adicione a seguinte declaração para negar explicitamente qualquer ação em recursos na pasta
Private (companybucket/Private/*).

{
"Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
"Action": ["s3:*"],
"Effect": "Deny",
"Resource":["arn:aws:s3:::companybucket/Private/*"]
}

• Você também nega permissão para a ação de listar objetos quando a solicitação especifica o prefixo
Private/. No console, se Bob ou Alice abrir a pasta Private, essa política fará o Amazon S3 retornar
uma resposta de erro.

{
"Sid": "DenyListBucketOnPrivateFolder",
"Action": ["s3:ListBucket"],
"Effect": "Deny",
"Resource": ["arn:aws:s3:::*"],
"Condition":{
"StringLike":{"s3:prefix":["Private/"]}
}
}

Substitua a política do grupo Consultants por uma política atualizada que inclua as declarações de
negação anteriores. Após a política atualizada ser aplicada, nenhum usuário no grupo poderá acessar a
pasta Private no seu bucket.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Use suas credenciais de conta da AWS, não as credenciais de um usuário do IAM, para entrar no
console.
2. Substitua a política gerenciada AllowGroupToSeeBucketListInTheConsole existente que está
anexada ao grupo Consultants pela política a seguir. Lembre-se de substituir companybucket na
política pelo nome do bucket.

Para obter instruções, consulte Editar políticas gerenciadas pelo cliente no Guia do usuário do IAM.
Ao seguir as instruções, não se esqueça de seguir as orientações para aplicar alterações em todas as
entidades principais às quais a política está anexada.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid":
"AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
},
{
"Sid": "AllowRootLevelListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::companybucket"],

Versão da API 2006-03-01


404
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Condition":{
"StringEquals":{"s3:prefix":[""]}
}
},
{
"Sid": "RequireFolderStyleList",
"Action": ["s3:ListBucket"],
"Effect": "Deny",
"Resource": ["arn:aws:s3:::*"],
"Condition":{
"StringNotEquals":{"s3:delimiter":"/"}
}
},
{
"Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
"Action": ["s3:*"],
"Effect": "Deny",
"Resource":["arn:aws:s3:::companybucket/Private/*"]
},
{
"Sid": "DenyListBucketOnPrivateFolder",
"Action": ["s3:ListBucket"],
"Effect": "Deny",
"Resource": ["arn:aws:s3:::*"],
"Condition":{
"StringLike":{"s3:prefix":["Private/"]}
}
}
]
}

Etapa 8: Limpar
Para limpar, abra o console do IAM e remova os usuários Alice e Bob. Para obter instruções passo a
passo, consulte Excluir um usuário do IAM no Guia do usuário do IAM.

Para garantir que você não seja mais cobrado pelo armazenamento, exclua também os objetos e o bucket
que criou neste exercício.

Recursos relacionados

• Gerenciar políticas do IAM no Guia do usuário do IAM.

Exemplos de política de usuário


Esta seção mostra diversas políticas de usuário do IAM para controle de acesso de usuário ao Amazon S3.
Por exemplo, políticas de bucket, consulte Uso de políticas de bucket (p. 376). Para obter informações
sobre a linguagem de políticas de acesso, consulte Políticas de bucket e políticas de usuário (p. 268).

Os exemplos de política a seguir funcionarão se você testá-los programaticamente. No entanto, para usá-
los com o console do Amazon S3, você precisará conceder permissões adicionais solicitadas pelo console.
Para obter informações sobre o uso de políticas como essas com o console do Amazon S3, consulte
Controlar o acesso a um bucket com políticas de usuário (p. 387).

Tópicos
• Permitir que um usuário do IAM acesse um dos seus buckets (p. 406)
• Permitir que cada usuário do IAM acesse uma pasta em um bucket (p. 406)
• Permitir que um grupo tenha uma pasta compartilhada no Amazon S3 (p. 409)
• Permitir que todos os seus usuários leiam objetos em uma parte do bucket corporativo (p. 409)

Versão da API 2006-03-01


405
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• Permitir que um parceiro solte arquivos em uma parte específica do bucket corporativo (p. 410)

Permitir que um usuário do IAM acesse um dos seus buckets


Neste exemplo, você pode conceder a um usuário do IAM na sua conta da AWS acesso a um dos seus
buckets, awsexamplebucket1, e permitir que o usuário adicione, atualize e exclua objetos.

Além de conceder as permissões s3:PutObject, s3:GetObject e s3:DeleteObject ao usuário,


a política também concede as permissões s3:ListAllMyBuckets, s3:GetBucketLocation e
s3:ListBucket. Estas são permissões adicionais, exigidas pelo console. As ações s3:PutObjectAcl
e s3:GetObjectAcl também são necessárias para copiar, recortar e colar objetos no console. Para
obter um exemplo de passo a passo que concede permissões aos usuários e testa-as usando o console,
consulte Controlar o acesso a um bucket com políticas de usuário (p. 387).

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action": "s3:ListAllMyBuckets",
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":["s3:ListBucket","s3:GetBucketLocation"],
"Resource":"arn:aws:s3:::awsexamplebucket1"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::awsexamplebucket1/*"
}
]
}

Permitir que cada usuário do IAM acesse uma pasta em um bucket


Neste exemplo, você quer que dois usuários do IAM, Alice e Bob, tenham acesso ao seu bucket,
examplebucket, para que possam adicionar, atualizar e excluir objetos. Contudo, você quer restringir
o acesso de cada usuário a uma única pasta no bucket. Você pode querer criar pastas com nomes que
conhecida com os nomes de usuário.

awsexamplebucket1
Alice/
Bob/

Para conceder a cada usuário acesso à sua pasta, você pode escrever uma política para cada usuário
e anexá-la individualmente. Por exemplo, você pode anexar a seguinte política ao usuário Alice para
conceder a ela permissões específicas do Amazon S3 na pasta awsexamplebucket1/Alice.

{
"Version":"2012-10-17",
"Statement":[
{

Versão da API 2006-03-01


406
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource":"arn:aws:s3:::awsexamplebucket1/Alice/*"
}
]
}

Você anexa uma política similar ao usuário Bob, identificando a pasta Bob no valor Resource.

Em vez de anexar políticas a usuários individuais, você pode escrever uma única política que usa
uma variável da política e anexá-la a um grupo. Primeiro, você precisará criar um grupo e adicionar
os usuários Alice e Bob a ele. O exemplo de política a seguir concede um conjunto de permissões do
Amazon S3 na pasta awsexamplebucket1/${aws:username}. Quando a política é avaliada, a variável
${aws:username} é substituída pelo nome do usuário do solicitante. Por exemplo, se Alice enviar uma
solicitação para colocar um objeto, a operação será permitida apenas se Alice estiver fazendo upload do
objeto na pasta examplebucket/Alice.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource":"arn:aws:s3:::awsexamplebucket1/${aws:username}/*"
}
]
}

Note

Ao usar variáveis de política, você deve especificar explicitamente a versão 2012-10-17 na


política. A versão padrão da linguagem da política de acesso, 2008-10-17, não oferece suporte a
variáveis de política.

Se você quiser testar a política anterior no console do Amazon S3, o console exigirá permissão para
permissões adicionais do Amazon S3, como exibido na política a seguir. Para obter informações sobre
como o console usa essas permissões, consulte Controlar o acesso a um bucket com políticas de
usuário (p. 387).

{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowGroupToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"

Versão da API 2006-03-01


407
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

},
{
"Sid": "AllowRootLevelListingOfTheBucket",
"Action": "s3:ListBucket",
"Effect": "Allow",
"Resource": "arn:aws:s3:::awsexamplebucket1",
"Condition":{
"StringEquals":{
"s3:prefix":[""], "s3:delimiter":["/"]
}
}
},
{
"Sid": "AllowListBucketOfASpecificUserPrefix",
"Action": "s3:ListBucket",
"Effect": "Allow",
"Resource": "arn:aws:s3:::awsexamplebucket1",
"Condition":{ "StringLike":{"s3:prefix":["${aws:username}/*"] }
}
},
{
"Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource":"arn:aws:s3:::awsexamplebucket1/${aws:username}/*"
}
]
}

Note

Na versão 2012-10-17 da política, as variáveis de política começam com $. Essa mudança na


sintaxe poderá criar um conflito se sua chave de objeto incluir um $. Por exemplo, para incluir
uma chave de objeto my$file em uma política, você especifica o caractere $ com ${$}, my
${$}file.

Embora os nomes de usuário do IAM sejam identificadores amigáveis e legíveis, eles não devem ser
globalmente exclusivos. Por exemplo, se o usuário Bob deixar a empresa e outro Bob entrar, o novo
Bob poderá acessar as informações do antigo Bob. Em vez de usar nomes de usuário, você pode criar
pastas baseadas nos IDs de usuário. Cada ID de usuário é único. Neste caso, você deve modificar a
política anterior para usar a variável de política ${aws:userid}. Para obter mais informações sobre
identificadores de usuário, consulte Identificadores do IAM no Guia do usuário do IAM.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource":"arn:aws:s3:::mycorporatebucket/home/${aws:userid}/*"
}

Versão da API 2006-03-01


408
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

]
}

Permitir que usuários que não são do IAM (usuários de aplicativos móveis) acessem pastas em
um bucket
Vamos supor que você queira desenvolver um aplicativo móvel, um jogo que armazena dados dos
usuários em um bucket do S3. Para cada usuário do aplicativo, você quer criar uma pasta em seu bucket.
Você também quer limitar o acesso de cada usuário à sua própria pasta.  Mas você não pode criar pastas
antes que alguém baixe seu aplicativo e comece a jogar, porque não tem um ID de usuário.

Neste caso, você pode exigir que os usuários criem uma conta em seu aplicativo usando provedores
públicos de identidade, como Login with Amazon, Facebook ou Google. Depois que os usuários criarem
uma conta em seu aplicativo por meio de um desses provedores, eles terão um ID de usuário que você
poderá usar para criar pastas específicas de usuário no tempo de execução.

Você pode usar a federação de identidades da Web no AWS Security Token Service para integrar
informações do provedor de identidade com seu aplicativo e para obter credenciais de segurança
temporárias para cada usuário. Você pode criar políticas do IAM que permitem que o aplicativo acesse seu
bucket e execute operações como criação de pastas específicas de usuário e upload de dados. Para obter
mais informações sobre federação de identidades da Web, consulte Sobre federação de identidades da
Web no Guia do usuário do IAM.

Permitir que um grupo tenha uma pasta compartilhada no Amazon S3


Anexar a política a seguir ao grupo concede a todos no grupo acesso à seguinte pasta no Amazon S3:
mycorporatebucket/share/marketing. Os membros do grupo têm permissão para acessar apenas
permissões específicas do Amazon S3 exibidas na política e apenas para objetos na pasta especificada.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource":"arn:aws:s3:::mycorporatebucket/share/marketing/*"
}
]
}

Permitir que todos os seus usuários leiam objetos em uma parte do bucket corporativo
Neste exemplo, você cria um grupo chamado AllUsers, que contém todos os usuários do IAM que
pertencem à conta da AWS. Em seguida, anexe uma política que concede ao grupo acesso a GetObject
e GetObjectVersion, mas somente para objetos na pasta mycorporatebucket/readonly.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetObject",
"s3:GetObjectVersion"
],

Versão da API 2006-03-01


409
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Resource":"arn:aws:s3:::MyCorporateBucket/readonly/*"
}
]
}

Permitir que um parceiro solte arquivos em uma parte específica do bucket corporativo

Neste exemplo, crie um grupo chamado WidgetCo que representa uma empresa parceira. Crie um
usuário do IAM para a pessoa ou aplicação específica na empresa parceira que precisa de acesso.
Depois, coloque o usuário no grupo.

Depois, anexe uma política que concede ao grupo acesso PutObject à seguinte pasta no bucket
corporativo: mycorporatebucket/uploads/widgetco.

Impeça que o grupo WidgetCo faça qualquer outra coisa no bucket adicionando uma declaração que nega
explicitamente outras permissões do Amazon S3, exceto PutObject, em qualquer recurso do Amazon S3
na conta da AWS. Esta etapa será necessária apenas se houver uma política abrangente em uso em outro
lugar na sua conta da AWS que dá aos usuários amplo acesso a recursos do Amazon S3.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::mycorporatebucket/uploads/widgetco/*"
},
{
"Effect":"Deny",
"NotAction":"s3:PutObject",
"Resource":"arn:aws:s3:::mycorporatebucket/uploads/widgetco/*"
},
{
"Effect":"Deny",
"Action":"s3:*",
"NotResource":"arn:aws:s3:::mycorporatebucket/uploads/widgetco/*"
}
]
}

Demonstrações de exemplo: gerenciar o acesso aos recursos do


Amazon S3
Este tópico fornece exemplos de demonstrações introdutórias para conceder acesso aos recursos do
Amazon S3. Esses exemplos usam o Console de Gerenciamento da AWS para criar recursos (buckets,
objetos, usuários) e conceder permissões a eles. Em seguida, os exemplos mostram como verificar as
permissões usando as ferramentas da linha de comando, para que nenhum código precise ser escrito.
Fornecemos comandos usando a Interface de linha de comando (CLI) da AWS e as ferramentas da AWS
para Windows PowerShell.

• Exemplo 1: Proprietário do bucket que concede permissões do bucket aos usuários (p. 413)

Por padrão, os usuários do IAM criados na conta não têm permissões. Neste exercício, você concederá
uma permissão de usuário para realizar operações no bucket e no objeto.
• Exemplo 2: Proprietário do bucket concedendo permissões de bucket entre contas (p. 418)

Neste exercício, um proprietário do bucket, conta A, concede permissões de conta cruzada para outra
conta da AWS, conta B. Em seguida, a conta B delega essas permissões para os usuários em sua
conta.

Versão da API 2006-03-01


410
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• Gerenciar permissões de objeto quando os proprietários do bucket e do objeto são diferentes

Nesse caso, os cenários do exemplo são um proprietário de bucket que concede permissões de objeto
para outros, mas nem todos os objetos do bucket pertencem ao proprietário do bucket. De quais
permissões o proprietário do bucket precisa e como ele pode delegar essas permissões?

A conta da AWS que cria um bucket é chamada de proprietário do bucket. O proprietário pode conceder
permissões a outras contas da AWS para carregar objetos, e os proprietários desses objetos são as
contas da AWS que os criaram. O proprietário do bucket não tem permissões sobre esses objetos
criados por outras contas da AWS. Se o proprietário do bucket escreve uma política de bucket
concedendo acesso aos objetos, a política não se aplica aos objetos pertencentes a outras contas.

Nesse caso, o proprietário do objeto deve, primeiro, conceder permissões ao proprietário do bucket
usando uma ACL do objeto. Em seguida, o proprietário do bucket pode autorizar essas permissões de
objeto para outros, para usuários em sua própria conta ou para outra conta da AWS, conforme ilustrado
pelos exemplos a seguir.
• Exemplo 3: O proprietário do bucket concede permissões para objetos que não possui (p. 424)

Neste exercício, primeiro o proprietário do bucket obtém permissões do proprietário do objeto. Em


seguida, o proprietário do bucket delega tais permissões para usuários em sua própria conta.
• Exemplo 4: Proprietário do bucket concede permissões entre contas a objetos que não
possui (p. 428)

Depois de receber as permissões do proprietário do objeto, o proprietário do bucket não pode delegar
permissões para outras contas da AWS já que não há suporte para a delegação de conta cruzada
(consulte Delegação de permissão (p. 261)). Em vez disso, o proprietário do bucket pode criar uma
função do IAM com permissões para realizar determinadas operações (como obter objeto) e permitir
que outra conta da AWS assuma essa função. Qualquer um que assumir a função pode, então,
acessar os objetos. Este exemplo mostra como um proprietário do bucket pode usar uma função do
IAM para habilitar essa delegação de conta cruzada.

Antes de tentar as demonstrações de exemplo


Esses exemplos usam o Console de Gerenciamento da AWS para criar recursos e conceder permissões.
Para testar permissões, os exemplos usam ferramentas da linha de comando, interface de linha de
comando (CLI) da AWS e ferramentas da AWS para Windows PowerShell, para que nenhum código
precise ser escrito. Para testar permissões você precisará configurar uma dessas ferramentas. Para obter
mais informações, consulte Configurar as ferramentas para as demonstrações de exemplo (p. 412).

Além disso, ao criar recursos esses exemplos não usam credenciais raiz de uma conta da AWS. Em vez
disso, crie um usuário administrador nessas contas para executar essas tarefas.

Sobre o uso de um usuário administrador para criar recursos e conceder permissões


O AWS Identity and Access Management (IAM) recomenda não usar as credenciais raiz da sua conta
da AWS para fazer solicitações. Em vez disso, crie um usuário do IAM, conceda acesso total a esse
usuário e, em seguida, use as credenciais desse usuário para interagir com a AWS. Esse usuário é
conhecido como usuário administrador. Para obter mais informações, consulte Credenciais de conta raiz
vs. credenciais do usuário do IAM na Referência geral da AWS e Melhores práticas do IAM no Guia do
usuário do IAM.

Todos as demonstrações com exemplos nesta seção usam as credenciais do usuário administrador. Caso
você não tenha criado um usuário administrador para sua conta da AWS, os tópicos mostram como fazê-
lo.

Observe que para fazer login no Console de Gerenciamento da AWS usando as credenciais de usuário,
você deverá usar o URL de login do usuário do IAM. O console do IAM fornece esse URL para a conta da
AWS. Os tópicos mostram como obter o URL.

Versão da API 2006-03-01


411
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Configurar as ferramentas para as demonstrações de exemplo


Os exemplos introdutórios (consulte Demonstrações de exemplo: gerenciar o acesso aos recursos do
Amazon S3 (p. 410)) usam o Console de Gerenciamento da AWS para criar recursos e conceder
permissões. Para testar permissões, os exemplos usam ferramentas da linha de comando, interface de
linha de comando (CLI) da AWS e ferramentas da AWS para Windows PowerShell, para que nenhum
código precise ser escrito. Para testar permissões, você deve configurar uma dessas ferramentas.

Para configurar a AWS CLI

1. Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia
do usuário da interface de linha de comando da AWS.

Configurar com a interface de linha de comando da AWS

Instalar a interface de linha de comando da AWS

Configurar a interface de linha de comando da AWS


2. Defina o perfil padrão.

Você armazenará as credenciais de usuário no arquivo de configuração da CLI da AWS. Crie um


perfil padrão no arquivo de configuração usando as credenciais da conta da AWS. Consulte Arquivos
de configuração e credenciais para obter instruções sobre como localizar e editar o arquivo de
configuração da CLI da AWS.

[default]
aws_access_key_id = access key ID
aws_secret_access_key = secret access key
region = us-west-2

3. Verifique a configuração inserindo o comando a seguir no prompt de comando. Ambos os comandos


não fornecem as credenciais explicitamente, de modo que as credenciais do perfil padrão são usadas.

• Experimente o comando de ajuda

aws help

• Use o aws s3 ls para obter uma lista dos buckets na conta configurada.

aws s3 ls

À medida que você avançar nas demonstrações, criará usuários e salvará credenciais de usuários nos
arquivos de configuração ao criar perfis, conforme mostra o exemplo a seguir. Observe que esses perfis
têm nomes (AccountAadmin e AccountBadmin):

[profile AccountAadmin]
aws_access_key_id = User AccountAadmin access key ID
aws_secret_access_key = User AccountAadmin secret access key
region = us-west-2

[profile AccountBadmin]
aws_access_key_id = Account B access key ID
aws_secret_access_key = Account B secret access key
region = us-east-1

Para executar um comando usando essas credenciais de usuário, adicione o parâmetro --profile
especificando o nome do perfil. O comando da CLI da AWS a seguir recupera uma lista de objetos em
examplebucket e especifica o perfil AccountBadmin.

Versão da API 2006-03-01


412
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

aws s3 ls s3://examplebucket --profile AccountBadmin

Como alternativa, configure um conjunto de credenciais de usuário como perfil padrão alterando a variável
de ambiente AWS_DEFAULT_PROFILE no prompt de comando. Depois que fizer isso, sempre que você
executar comandos da CLI da AWS sem o parâmetro --profile, a CLI da AWS usará o perfil definido na
variável de ambiente como perfil padrão.

$ export AWS_DEFAULT_PROFILE=AccountAadmin

Para configurar as ferramentas da AWS para Windows PowerShell

1. Faça o download e configure as ferramentas da AWS para Windows PowerShell. Para obter
instruções, acesse Baixar e instalar as ferramentas da AWS para Windows PowerShell no Guia do
usuário das ferramentas da AWS para Windows PowerShell.
Note
Para carregar as ferramentas da AWS para o módulo do Windows PowerShell, você
precisará habilitar a execução do script PowerShell. Para obter mais informações, acesse
Ativar execução de script no Guia do usuário das ferramentas da AWS para Windows
PowerShell.
2. Para esses exercícios, especifique credenciais da AWS por sessão usando o comando Set-
AWSCredentials. O comando salva as credenciais em um armazenamento persistente (-StoreAs
parâmetro).

Set-AWSCredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas string

3. Verifique a configuração.

• Execute Get-Command para recuperar uma lista de comandos disponíveis que podem ser usados
para operações do Amazon S3.

Get-Command -module awspowershell -noun s3* -StoredCredentials string

• Execute o comando Get-S3Object para recuperar uma lista de objetos em um bucket.

Get-S3Object -BucketName bucketname -StoredCredentials string

Para obter uma lista de comandos, acesse Cmdlets do Amazon Simple Storage Service.

Agora você está pronto testar os exercícios. Siga os links fornecidos no início da seção.

Exemplo 1: Proprietário do bucket que concede permissões do bucket aos


usuários
Tópicos
• Etapa 0: Preparar-se para a demonstração (p. 414)
• Etapa 1: Criar recursos (um bucket e um usuário do IAM) na Conta A e conceder permissões (p. 415)
• Etapa 2: Testar permissões (p. 417)

Neste exercício, uma conta da AWS tem um bucket e há um usuário do IAM na conta. Por padrão, o
usuário não tem nenhuma permissão. Para que o usuário realize execute qualquer tarefa, a conta pai deve
conceder permissão a ele. O proprietário do bucket e a conta pai são os mesmos. Portanto, para conceder
ao usuário permissões no bucket, a conta da AWS pode usar uma política de bucket, uma política de

Versão da API 2006-03-01


413
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

usuário ou ambas. O proprietário da conta concederá algumas permissões usando uma política de bucket
e outras permissões usando uma política de usuário.

Os passos a seguir resumem as etapas de demonstração:

1. O administrador da conta cria uma política do bucket concedendo um conjunto de permissões ao


usuário.
2. O administrador da conta anexa uma política de usuário ao usuário concedendo permissões adicionais.
3. O usuário então testa as permissões concedidas por política do bucket e por política de usuário.

Para este exemplo, você precisará de uma conta da AWS. Em vez de usar as credenciais raiz da conta,
você criará um usuário administrador (consulte Sobre o uso de um usuário administrador para criar
recursos e conceder permissões (p. 411)). Nós nos referimos à conta da AWS e ao usuário administrador
como se segue:

ID da conta Conta referida como Usuário administrador na conta

1111-1111-1111 Conta A AccountAadmin

Note

O usuário administrador neste exemplo é AccountaAdmin, que se refere à conta A, e não


AccountAdmin.

Todas as tarefas de criar usuários e conceder permissões são feitas no Console de Gerenciamento da
AWS. Para verificar permissões, a demonstração usa as ferramentas de linha de comando, a interface de
linha de comando (CLI) da AWS e as ferramentas da AWS para Windows PowerShell, portanto, você não
precisa gravar nenhum código para verificar as permissões.

Etapa 0: Preparar-se para a demonstração

1. Certifique-se de que você tem uma conta da AWS e de que ela tem um usuário com privilégios de
administrador.

a. Cadastre-se para obter uma conta, se necessário. Nós nos referimos a essa conta como conta A.

i. Acesse https://aws.amazon.com/s3 e clique em Sign Up (Cadastrar-se).


ii. Siga as instruções da tela.

Versão da API 2006-03-01


414
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

A AWS o notificará por e-mail quando sua conta estiver ativa e disponível para uso.
b. Na conta A, crie um usuário administrador AccountAadmin. Usando as credenciais da conta A,
faça login no console do IAM e faça o seguinte:

i. Crie um usuário AccountAadmin e anote as credenciais de segurança do usuário.

Para obter instruções, consulte Criação de um usuário do IAM em sua conta da AWS no Guia
do usuário do IAM.
ii. Conceda privilégios de administrador da AccountAadmin anexando uma política de usuário
com pleno acesso.

Para instruções, consulte Como trabalhar com políticas no Guia do usuário do IAM.
iii. Anote o IAM User Sign-In URL (URL de login de usuário do IAM) para AccountAadmin. Você
precisará usar esse URL ao fazer login no Console de Gerenciamento da AWS. Para obter
mais informações sobre onde encontrá-lo, consulte Como usuários fazem login na sua conta
no Guia do usuário do IAM. Anote o URL para cada uma das contas.
2. Configure a interface da linha de comando (CLI) da AWS ou as ferramentas da AWS para o Windows
PowerShell. Certifique-se de ter salvado as credenciais de usuário do administrador deste modo:

• Se estiver usando a CLI da AWS, crie um perfil, AccountAadmin, no arquivo config.


• Se estiver usando as ferramentas da AWS para o Windows PowerShell, certifique-se de armazenar
as credenciais para a sessão como AccountAadmin.

Para obter instruções, consulte Configurar as ferramentas para as demonstrações de


exemplo (p. 412).

Etapa 1: Criar recursos (um bucket e um usuário do IAM) na Conta A e conceder permissões
Com as credenciais do usuário AccountAadmin na Conta A e o URL especial de login do usuário do IAM,
faça login no Console de Gerenciamento da AWS e faça o seguinte:

1. Crie recursos (um bucket e um usuário do IAM)

a. No console do Amazon S3, crie um bucket. Anote a região da AWS; na qual você o criou. Para
obter instruções, consulte Criação de um bucket (p. 31).
b. No console do IAM, faça o seguinte:

i. Crie um usuário Dave.

Para obter instruções, consulte Criação de usuários do IAM (Console de Gerenciamento da


AWS) no Guia do usuário do IAM.
ii.
Anote as credenciais de UserDave.
iii.
Anote o Nome de recurso da Amazon (ARN) para o usuário Dave. No console do IAM,
selecione o usuário e a guia Summary (Resumo) fornecerá o ARN do usuário
2. Conceda permissões.

Como o proprietário do bucket e a conta pai a que o usuário pertence são um só, a conta da AWS
pode conceder permissões de usuário usando uma política do bucket, uma política de usuário, ou
ambas. Neste exemplo, você faz ambos. Se o objeto também for de propriedade da mesma conta, o
proprietário do bucket pode conceder permissões de objeto na política do bucket (ou em uma política
do IAM).

a. No console do Amazon S3, anexe a seguinte política do bucket a awsexamplebucket1.

A política tem duas instruções.

Versão da API 2006-03-01


415
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• A primeira instrução concede a Dave as permissões de operação dos buckets


s3:GetBucketLocation e s3:ListBucket.
• A segunda instrução concede a permissão s3:GetObject. Como a Conta A também possui o
objeto, o administrador da conta pode conceder a permissão s3:GetObject.

Na instrução Principal, Dave é identificado por seu ARN de usuário. Para obter mais
informações sobre elementos de política, consulte Políticas de bucket e políticas de
usuário (p. 268).

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA-ID:user/Dave"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1"
]
},
{
"Sid": "statement2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA-ID:user/Dave"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
]
}
]
}

b. Crie uma política inline para o usuário Dave usando as seguintes políticas. A política concede a
Dave a permissão s3:PutObject. Você precisa atualizar a política, fornecendo o nome de seu
bucket.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionForObjectOperations",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
]
}
]

Versão da API 2006-03-01


416
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Para instruções, consulte Como trabalhar com políticas em linha no Guia do usuário do IAM.
Observe que você precisa fazer login no console usando as credenciais da Conta A.

Etapa 2: Testar permissões

Com as credenciais de Dave, verifique se as permissões funcionam. Você pode usar um dos dois
procedimentos a seguir.

Testar usando a CLI da AWS

1. Atualizar o arquivo de configuração da CLI da AWS, adicionando o perfil de UserDaveAccountA a


seguir. Para obter mais informações, consulte Configurar as ferramentas para as demonstrações de
exemplo (p. 412).

[profile UserDaveAccountA]
aws_access_key_id = access-key
aws_secret_access_key = secret-access-key
region = us-east-1

2. Verifique se Dave pode executar as operações conforme concedido na política de usuário. Faça
upload de um objeto de exemplo usando o seguinte comando put-object da CLI da AWS.

O parâmetro --body no comando identifica o arquivo de origem para fazer upload. Por exemplo,
se o arquivo está na raiz da unidade C: de um computador Windows, você especifica c:
\HappyFace.jpg. O parâmetro --key fornece o nome de chave para o objeto.

aws s3api put-object --bucket awsexamplebucket1 --key HappyFace.jpg --


body HappyFace.jpg --profile UserDaveAccountA

Execute o seguinte comando da CLI da AWS para obter o objeto.

aws s3api get-object --bucket awsexamplebucket1 --key HappyFace.jpg OutputFile.jpg --


profile UserDaveAccountA

Testar usando AWS Tools for Windows PowerShell

1. Armazene as credenciais de Dave como AccountADave. Depois, você usa essas credenciais para
PUT e GET um objeto.

set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas


AccountADave

2. Fala upload de um objeto de exemplo usando as ferramentas da AWS para o comando Write-
S3Object do Windows PowerShell usando as credenciais armazenadas do usuário Dave.

Write-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file HappyFace.jpg -


StoredCredentials AccountADave

Faça download do objeto anteriormente carregado.

Read-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file Output.jpg -


StoredCredentials AccountADave

Versão da API 2006-03-01


417
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Exemplo 2: Proprietário do bucket concedendo permissões de bucket entre


contas
Tópicos
• Etapa 0: Preparar-se para a demonstração (p. 419)
• Etapa 1: Fazer as tarefas da Conta A (p. 420)
• Etapa 2: Fazer as tarefas da Conta B (p. 421)
• Etapa 3: (opcional) tentar negação explícita (p. 422)
• Etapa 4: Limpeza (p. 423)

Uma conta da AWS — por exemplo, a Conta A — pode conceder a outra conta da AWS, a Conta B,
permissão para acessar seus recursos, como buckets e objetos. A Conta B pode então delegar essas
permissões para usuários em sua conta. Neste cenário de exemplo, o proprietário do bucket concede a
permissão entre contas a outra conta para executar operações específicas no bucket.
Note

A Conta A também pode conceder diretamente a um usuário na Conta B permissões usando uma
política de bucket. Mas o usuário ainda precisará ter permissão da conta pai, a Conta B, à qual o
usuário pertence, mesmo que a Conta B não tenha permissões da Conta A. Desde que o usuário
tenha permissão do proprietário do recurso e da conta pai, o usuário poderá acessar o recurso.

A seguir é apresentado um resumo das etapas de demonstração:

1. O usuário administrador da Conta A anexa uma política de bucket concedendo permissões entre contas
à Conta B para executar operações específicas no bucket.

Observe que o usuário administrador da Conta B herdará automaticamente as permissões.


2. O usuário administrador da Conta B anexa uma política de usuário ao usuário delegando as permissões
que recebeu da Conta A.
3. Em seguida, o usuário na Conta B verifica as permissões acessando um objeto no bucket de
propriedade da Conta A.

Para este exemplo, você precisará de duas contas. A tabela a seguir mostra como nos referimos a essas
contas e aos usuários administradores nessas contas. Conforme as diretrizes do IAM (veja Sobre o uso
de um usuário administrador para criar recursos e conceder permissões (p. 411)), não usamos as
credenciais raiz de conta nesta apresentação. Em vez disso, você cria um usuário administrador em cada
conta e usa essas credenciais para criar recursos e conceder permissões a eles.

ID da conta da AWS Conta referida como Usuário administrador na conta

1111-1111-1111 Conta A AccountAadmin

Versão da API 2006-03-01


418
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

ID da conta da AWS Conta referida como Usuário administrador na conta

2222-2222-2222 Conta B AccountBadmin

Todas as tarefas de criar usuários e conceder permissões são feitas no Console de Gerenciamento da
AWS. Para verificar as permissões, o passo a passo usa as ferramentas da linha de comando, a interface
de linha de comando (CLI) da AWS e as ferramentas da AWS para Windows PowerShell, portanto, você
não precisa escrever nenhum código.

Etapa 0: Preparar-se para a demonstração

1. Verifique se você tem duas contas da AWS e se cada conta tem um usuário administrador, conforme
mostrado na tabela na seção anterior.

a. Cadastre-se em uma conta da AWS, se necessário.

i. Acesse https://aws.amazon.com/s3/ e clique em Create an AWS Account (Criar uma conta da


AWS).
ii. Siga as instruções da tela.

A AWS o notificará por e-mail quando sua conta estiver ativa e disponível para uso.
b. Usando as credenciais da Conta A, faça login no console do IAM para criar o usuário
administrador:

i. Crie um usuário AccountAadmin e anote as credenciais de segurança. Para obter instruções,


consulte Criação de um usuário do IAM em sua conta da AWS no Guia do usuário do IAM.
ii. Conceda privilégios de administrador da AccountAadmin anexando uma política de usuário
com pleno acesso. Para instruções, consulte Como trabalhar com políticas no Guia do
usuário do IAM.
c. Enquanto estiver no console do IAM, anote a IAM User Sign-In URL (URL de login de usuário do
IAM) no Dashboard (Painel). Todos os usuários nessa conta devem usar essa URL para fazer
login no Console de Gerenciamento da AWS.

Para obter mais informações, consulte Como os usuários fazem login em sua conta no Guia do
usuário do IAM.
d. Repita a etapa anterior usando as credenciais da Conta B e crie um usuário administrador
AccountBadmin.
2. Configure a interface da linha de comando (CLI) da AWS ou as ferramentas da AWS para o Windows
PowerShell. Certifique-se de ter salvado as credenciais de usuário do administrador deste modo:

• Se estiver usando a CLI da AWS, crie dois perfis, AccountAadmin e AccountBadmin, no arquivo de
configuração.
• Se estiver usando as ferramentas da AWS para o Windows PowerShell, certifique-se de armazenar
as credenciais para a sessão como AccountAadmin e AccountBadmin.

Para obter instruções, consulte Configurar as ferramentas para as demonstrações de


exemplo (p. 412).
3. Salve as credenciais do usuário administrador, também conhecidas como perfis. Você pode usar o
nome do perfil em vez de especificar as credenciais para cada comando digitado. Para obter mais
informações, consulte Configurar as ferramentas para as demonstrações de exemplo (p. 412).

a. Adicione perfis no arquivo de credenciais da AWS CLI para cada um dos usuários
administradores nas duas contas.

Versão da API 2006-03-01


419
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

[AccountAadmin]
aws_access_key_id = access-key-ID
aws_secret_access_key = secret-access-key
region = us-east-1

[AccountBadmin]
aws_access_key_id = access-key-ID
aws_secret_access_key = secret-access-key
region = us-east-1

b. Se estiver usando as ferramentas da AWS para Windows PowerShell

set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-


key –storeas AccountAadmin
set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-
key –storeas AccountBadmin

Etapa 1: Fazer as tarefas da Conta A

Etapa 1.1: Fazer login no Console de Gerenciamento da AWS.

Usando o URL de login de usuário do IAM para a Conta A, primeiro faça login no Console de
Gerenciamento da AWS como usuário AccountAadmin. Esse usuário criará um bucket e anexará uma
política a ele.

Etapa 1.2: Criar um bucket

1. No console do Amazon S3, crie um bucket. Este exercício supõe que o bucket é criado na região US
East (N. Virginia) e que o nome é DOC-EXAMPLE-BUCKET.

Para obter instruções, consulte Criação de um bucket (p. 31).


2. Faça upload de um objeto de exemplo no bucket.

Para obter instruções, vá para Etapa 2: fazer upload de um objeto para o seu bucket (p. 15).

Etapa 1.3: anexar uma política de bucket para conceder permissões entre contas para a conta B

A política de bucket concede as permissões s3:GetBucketLocation e s3:ListBucket para a


Conta B. Supõe-se que você ainda esteja conectado no console usando as credenciais do usuário
AccountAadmin.

1. Anexe a política de bucket a seguir ao DOC-EXAMPLE-BUCKET. A política concede à Conta B


permissão para as ações s3:GetBucketLocation e s3:ListBucket.

Para obter instruções, consulte Adicionar uma política de bucket usando o console do Amazon
S3 (p. 377).

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [

Versão da API 2006-03-01


420
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
}
]
}

2. Verifique se a Conta B (e, portanto, do usuário administrador) pode executar as operações.

• Usar a CLI da AWS

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin


aws s3api get-bucket-location --bucket DOC-EXAMPLE-BUCKET --profile AccountBadmin

• Usar as ferramentas da AWS para Windows PowerShell

get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin


get-s3bucketlocation -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin

Etapa 2: Fazer as tarefas da Conta B

Agora o administrador da Conta B cria um usuário, Dave, e delega as permissões recebidas da Conta A.

Etapa 2.1: Fazer login no Console de Gerenciamento da AWS

Usando o URL de login da Conta B do usuário do IAM, primeiro faça login no Console de Gerenciamento
da AWS como o usuário AccountBadmin.

Etapa 2.2: criar o usuário Dave na conta B

No console do IAM, crie um usuário, Dave.

Para obter instruções, consulte Criação de usuários do IAM (Console de Gerenciamento da AWS) no Guia
do usuário do IAM.

Etapa 2.3: Delegar permissões para o usuário Dave

Crie uma política inline para o usuário Dave usando as seguintes políticas. Você precisará atualizar a
política fornecendo o nome do bucket.

Supõe-se que você está conectado no console usando as credenciais do usuário AccountBadmin.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
}
]

Versão da API 2006-03-01


421
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Para instruções, consulte Como trabalhar com políticas em linha no Guia do usuário do IAM.

Etapa 2.4: Testar permissões

Agora Dave, na conta B, pode listar o conteúdo do DOC-EXAMPLE-BUCKET de propriedade da Conta A.


Você pode verificar as permissões usando um dos seguintes procedimentos.

Testar usando a CLI da AWS

1. Adicione o perfil UserDave ao arquivo de configuração da AWS CLI. Para obter mais informações
sobre o arquivo de configuração, consulte Configurar as ferramentas para as demonstrações de
exemplo (p. 412)

[profile UserDave]
aws_access_key_id = access-key
aws_secret_access_key = secret-access-key
region = us-east-1

2. No prompt de comando, digite o seguinte comando da AWS CLI para verificar se Dave agora pode
obter uma lista de objetos do DOC-EXAMPLE-BUCKET de propriedade da Conta A. Observe que o
comando especifica o perfil UserDave.

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile UserDave

Dave não tem nenhuma outra permissão. Portanto, se ele tentar qualquer outra operação - por
exemplo, o seguinte get bucket location — o Amazon S3 retornará permissão negada.

aws s3api get-bucket-location --bucket DOC-EXAMPLE-BUCKET --profile UserDave

Testar usando AWS Tools for Windows PowerShell

1. Armazene as credenciais de Dave como AccountBDave.

set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas


AccountBDave

2. Teste o comando List Bucket.

get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Dave não tem nenhuma outra permissão. Portanto, se ele tentar qualquer outra operação - por
exemplo, o seguinte get bucket location — o Amazon S3 retornará permissão negada.

get-s3bucketlocation -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Etapa 3: (opcional) tentar negação explícita

Você pode ter permissões concedidas por uma ACL, por uma política de bucket e por uma política de
usuário. Mas se houver uma negação explícita definida por uma política de bucket ou por uma política
de usuário, a negação explícita terá precedência sobre qualquer outra permissão. Para testar, vamos
atualizar a política de bucket e negar explicitamente a permissão s3:ListBucket para a conta B. A
Versão da API 2006-03-01
422
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

política também concede a permissão s3:ListBucket, mas a negação explícita tem precedência, e a
Conta B ou os usuários da Conta B não poderão listar objetos no DOC-EXAMPLE-BUCKET.

1. Usando as credenciais do usuário AccountAadmin na Conta A, substitua a política de bucket pela


seguinte.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
},
{
"Sid": "Deny permission",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
}
]
}

2. Agora, se você tentar obter uma lista de bucket usando as credenciais de AccountBadmin, você terá o
acesso negado.
• Usar a CLI da AWS:

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin

• Usar as ferramentas da AWS para Windows PowerShell:

get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Etapa 4: Limpeza

1. Depois de terminar os testes, você pode seguir uma das etapas a seguir para fazer a limpeza.

• Faça login no Console de Gerenciamento da AWS (Console de Gerenciamento da AWS) usando


as credenciais da Conta A e faça o seguinte:

• No console do Amazon S3, remova a política de bucket anexada a DOC-EXAMPLE-BUCKET.


Nas Propriedades do bucket, exclua a política na seção Permissions (Permissões).
• Se o bucket foi criado para este exercício, no console do Amazon S3, exclua os objetos e, em
seguida, exclua o bucket.

Versão da API 2006-03-01


423
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• No console do IAM, remova o usuário AccountAadmin.


2. Faça login no Console de Gerenciamento da AWS (Console de Gerenciamento da AWS) usando as
credenciais da Conta B. No console do IAM, exclua o usuário AccountBadmin.

Exemplo 3: O proprietário do bucket concede permissões para objetos que não


possui
Tópicos
• Etapa 0: Preparar-se para a demonstração (p. 425)
• Etapa 1: Fazer as tarefas da Conta A (p. 426)
• Etapa 2: Fazer as tarefas da Conta B (p. 427)
• Etapa 3: Testar permissões (p. 427)
• Etapa 4: Limpeza (p. 428)

O cenário deste exemplo é que o proprietário do bucket deseja conceder permissão para acessar objetos,
mas nem todos os objetos no bucket são de propriedade do proprietário do bucket. Como um proprietário
de bucket pode conceder permissão para objetos que não possui? Para este exemplo, o proprietário do
bucket está tentando conceder permissão aos usuários em sua própria conta.

Um proprietário de bucket pode habilitar outras contas da AWS para fazer upload de objetos. Esses
objetos são de propriedade das contas que os criou. O proprietário do bucket não possui objetos que
ele não criou. Portanto, para o proprietário do bucket conceder acesso a esses objetos, o proprietário do
objeto deve primeiro conceder permissão ao proprietário do bucket usando um objeto da ACL. Para obter
mais informações, consulte Propriedade de bucket e objeto do Amazon S3 (p. 253).

Neste exemplo, o proprietário do bucket delega permissão aos usuários em sua própria conta. A seguir é
apresentado um resumo das etapas de demonstração:

1. O usuário administrador da Conta A anexa uma política de bucket com duas declarações.
• Habilitar permissão entre contas para a Conta B fazer upload de objetos.
• Permitir que um usuário em sua própria conta acesse objetos no bucket.
2. O usuário administrador da Conta B faz upload de objetos no bucket de propriedade da Conta A.
3. O administrador da Conta B atualiza a ACL do objeto adicionando uma concessão que dá ao
proprietário do bucket permissão de controle total sobre o objeto.

Versão da API 2006-03-01


424
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

4. O usuário na Conta A verifica acessando objetos no bucket, independentemente de quem os possui.

Para este exemplo, você precisará de duas contas. A tabela a seguir mostra como nos referimos a essas
contas e aos usuários administradores nessas contas. Nesta demonstração, você não usa as credenciais
raiz da conta, de acordo com as diretrizes recomendadas do IAM. Para obter mais informações, consulte
Sobre o uso de um usuário administrador para criar recursos e conceder permissões (p. 411). Em vez
disso, você cria um administrador em cada conta e usa essas credenciais para criar recursos e conceder
permissões a eles.

ID da conta da AWS Conta referida como Administrador na conta

1111-1111-1111 Conta A AccountAadmin

2222-2222-2222 Conta B AccountBadmin

Todas as tarefas de criar usuários e conceder permissões são feitas no Console de Gerenciamento da
AWS. Para verificar as permissões, a demonstração usa as ferramentas da linha de comando, a Interface
de Linhas de Comando da AWS (AWS CLI) e as AWS Tools for Windows PowerShell, portanto, você não
precisa escrever nenhum código.

Etapa 0: Preparar-se para a demonstração

1. Verifique se você tem duas contas da AWS e se cada conta tem um administrador, conforme
mostrado na tabela na seção anterior.

a. Cadastre-se em uma conta da AWS, se necessário.

i. Abra a página do Amazon S3 e selecione Create an AWS Account (Criar uma conta da
AWS).
ii. Siga as instruções da tela. A AWS o notificará por e-mail quando sua conta estiver ativa e
disponível para uso.
b. Usando as credenciais da Conta A, faça login no console do IAM e faça o seguinte para criar um
usuário administrador:

• Crie o usuário AccountAadmin e anote as credenciais de segurança. Para obter mais


informações sobre como adicionar usuários, consulte Criação de um usuário do IAM na sua
conta do AWS no Guia do usuário do IAM.
• Conceda permissões de administrador AccountAadmin anexando uma política de usuário com
pleno acesso. Para obter instruções, consulte Gerenciar políticas do IAM no Guia do usuário do
IAM.
• No Dashboard (Painel) do console do IAM, anote a IAM User Sign-In URL (URL de login de
usuário do IAM). Os usuários nessa conta devem usar esse URL para fazer login no Console
de Gerenciamento da AWS. Para obter mais informações, consulte Como os usuários fazem
login em sua conta no Guia do usuário do IAM.
c. Repita a etapa anterior usando as credenciais da Conta B e crie um usuário administrador
AccountBadmin.
2. Configure a AWS CLI ou o Tools for Windows PowerShell. Salve as credenciais de administrador da
seguinte forma:

• Se estiver usando a AWS CLI, crie dois perfis AccountAadmin e AccountBadmin, no arquivo de
configuração.
• Se estiver usando o Tools for Windows PowerShell, armazene as credenciais da sessão como
AccountAadmin e AccountBadmin.

Versão da API 2006-03-01


425
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Para obter instruções, consulte Configurar as ferramentas para as demonstrações de


exemplo (p. 412).

Etapa 1: Fazer as tarefas da Conta A


Execute as seguintes etapas para a Conta A:

Etapa 1.1: Fazer login no console


Usando o URL de login de usuário do IAM para a Conta A, faça login no Console de Gerenciamento da
AWS como usuário AccountAadmin. Esse usuário criará um bucket e anexará uma política a ele.

Etapa 1.2: Criar um bucket e um usuário e adicionar uma política de bucket para conceder
permissões ao usuário

1. No console do Amazon S3, crie um bucket. Este exercício supõe que o bucket foi criado na região
Leste dos EUA (Norte da Virgínia) e que o nome é DOC-EXAMPLE-BUCKET1.

Para obter instruções, consulte Criação de um bucket (p. 31).


2. No console do IAM, crie um usuário Dave.

Para obter instruções, consulte Criação de usuários do IAM (console) no Guia do usuário do IAM.
3. Anote as credenciais de Dave.
4. No console do Amazon S3, anexe a seguinte política do bucket ao bucket DOC-EXAMPLE-BUCKET1.
Para obter instruções, consulte Adicionar uma política de bucket usando o console do Amazon
S3 (p. 377). Siga as etapas para adicionar uma política de bucket. Para obter informações sobre
como encontrar IDs de conta, consulte Como encontrar o ID da conta da AWS.

A política concede à Conta B as permissões s3:PutObject e s3:ListBucket. A política também


concede ao usuário Dave a permissão s3:GetObject.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET1"
]
},
{
"Sid": "Statement3",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA-ID:user/Dave"
},
"Action": [
"s3:GetObject"
],
"Resource": [

Versão da API 2006-03-01


426
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"
]
}
]
}

Etapa 2: Fazer as tarefas da Conta B

Agora que a Conta B tem permissões para executar operações no bucket da Conta A, o administrador da
Conta B fará o seguinte:

• Fazer upload de um objeto no bucket da Conta A.


• Adicionar uma concessão à ACL do objeto para permitir que a Conta A, a proprietária do bucket, tenha
controle total.

Usar a CLI da AWS

1. Usando o comando da CLI put-object, faça upload de um objeto. O parâmetro --body no comando
identifica o arquivo de origem para fazer upload. Por exemplo, se o arquivo estiver na unidade C: de
um computador Windows, você especificará c:\HappyFace.jpg. O parâmetro --key fornece o
nome de chave para o objeto.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg --body


HappyFace.jpg --profile AccountBadmin

2. Adicionar uma concessão à ACL do objeto para permitir controle total do objeto ao proprietário do
bucket. Para obter informações sobre como encontrar um ID de usuário canônico, consulte Como
encontrar o ID de usuário canônico da conta da AWS (p. 446).

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg --grant-full-


control id="AccountA-CanonicalUserID" --profile AccountBadmin

Usar o Tools for Windows PowerShell

1. Usando o comando Write-S3Object do Tools for Windows PowerShell, faça upload de um objeto.

Write-S3Object -BucketName DOC-EXAMPLE-BUCKET1 -key HappyFace.jpg -file HappyFace.jpg -


StoredCredentials AccountBadmin

2. Adicionar uma concessão à ACL do objeto para permitir controle total do objeto ao proprietário do
bucket.

Set-S3ACL -BucketName DOC-EXAMPLE-BUCKET1 -Key HappyFace.jpg -CannedACLName "bucket-


owner-full-control" -StoredCreden

Etapa 3: Testar permissões

Agora verifique se o usuário Dave na conta A pode acessar o objeto de propriedade da conta B.

Usar a CLI da AWS

1. Adicione as credenciais do usuário Dave ao arquivo config da AWS CLI e crie um novo perfil,
UserDaveAccountA. Para obter mais informações, consulte Configurar as ferramentas para as
demonstrações de exemplo (p. 412).

Versão da API 2006-03-01


427
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

[profile UserDaveAccountA]
aws_access_key_id = access-key
aws_secret_access_key = secret-access-key
region = us-east-1

2. Execute o comando get-object da CLI para fazer download do arquivo HappyFace.jpg e salve-o
localmente. Você fornece credenciais ao usuário Dave adicionando o parâmetro --profile.

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg Outputfile.jpg --


profile UserDaveAccountA

Usar o Tools for Windows PowerShell

1. Armazene as credenciais da AWS do usuário Dave, como UserDaveAccountA, para


armazenamento persistente.

Set-AWSCredentials -AccessKey UserDave-AccessKey -SecretKey UserDave-SecretAccessKey -


storeas UserDaveAccountA

2. Execute o comando Read-S3Object para fazer download do objeto HappyFace.jpg e


salve-o localmente. Você fornece credenciais ao usuário Dave adicionando o parâmetro -
StoredCredentials.

Read-S3Object -BucketName DOC-EXAMPLE-BUCKET1 -Key HappyFace.jpg -file HappyFace.jpg -


StoredCredentials UserDaveAccountA

Etapa 4: Limpeza

1. Depois de terminar os testes, você pode seguir uma das etapas a seguir para fazer a limpeza.

• Faça login no Console de Gerenciamento da AWS usando as credenciais da Conta A, e faça o


seguinte:

• No console do Amazon S3, remova a política de bucket anexada a DOC-EXAMPLE-BUCKET1.


Nas Propriedades do bucket, exclua a política na seção Permissions (Permissões).
• Se o bucket foi criado para este exercício, no console do Amazon S3, exclua os objetos e, em
seguida, exclua o bucket.
• No console do IAM, remova o usuário AccountAadmin.
2. Faça login no Console de Gerenciamento da AWS usando as credenciais da Conta B. No console do
IAM, exclua o usuário AccountBadmin.

Exemplo 4: Proprietário do bucket concede permissões entre contas a objetos


que não possui
Tópicos
• Histórico: Permissões entre contas e uso de funções do IAM (p. 429)
• Etapa 0: Preparar-se para a demonstração (p. 430)
• Etapa 1: Fazer as tarefas da Conta A (p. 432)
• Etapa 2: Fazer as tarefas da Conta B (p. 434)
• Etapa 3: Fazer as tarefas da Conta C (p. 435)
• Etapa 4: Limpeza (p. 436)

Versão da API 2006-03-01


428
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• Recursos relacionados (p. 437)

Neste cenário de exemplo, você possui um bucket e habilitou outras contas da AWS para fazer upload de
objetos. Ou seja, seu bucket pode ter objetos de propriedade de outras contas da AWS.

Agora, suponha que, como proprietário do bucket, você precise conceder permissão entre contas aos
objetos, independentemente de quem seja o proprietário, a um usuário em outra conta. Por exemplo,
esse usuário pode ser um aplicativo de faturamento que precise acessar metadados de objeto. Há dois
problemas principais:

• O proprietário do bucket não tem permissões sobre esses objetos criados por outras contas da AWS.
Então para que o proprietário do bucket possa conceder permissões sobre objetos que não possui,
o proprietário do objeto, a conta da AWS que criou os objetos, deve primeiro conceder permissão ao
proprietário do bucket. Depois, o proprietário do bucket pode delegar essas permissões.
• A conta do proprietário do bucket pode delegar permissões a usuários em sua própria conta (veja
Exemplo 3: O proprietário do bucket concede permissões para objetos que não possui (p. 424)), mas
não pode delegar permissões para outras contas da AWS, porque não há suporte para a delegação
entre contas.

Neste cenário, o proprietário do bucket pode criar uma função do AWS Identity and Access Management
(IAM) com permissão para acessar objetos e conceder permissão a outra conta da AWS para assumir a
função temporariamente, permitindo que ela acesse objetos no bucket.

Histórico: Permissões entre contas e uso de funções do IAM

As funções do IAM permitem vários cenários para delegar acesso a seus recursos, e o acesso entre
contas é um dos cenários principais. Neste exemplo, o proprietário do bucket, a Conta A, usa uma função
do IAM para delegar temporariamente acessos a objetos entre contas a usuários em outra conta da AWS,
Conta C. Cada função do IAM que você criar tem duas políticas anexadas a ela:

• Uma política de confiança que identifica outra conta da AWS que pode assumir a função.
• Uma política de acesso que define quais permissões - por exemplo, s3:GetObject - são permitidas
quando alguém assume a função. Para obter uma lista de permissões que você pode especificar em
uma política, consulte Ações do Amazon S3 (p. 273).

A conta da AWS identificada na política de confiança então concede sua permissão de usuário para
assumir a função. O usuário pode então fazer o seguinte para acessar os objetos:

• Assumir a função e, em resposta, obter credenciais de segurança temporárias.


• Usando as credenciais de segurança temporárias, acessar os objetos no bucket.

Para obter mais informações sobre as funções do IAM, acesse Funções do IAM no Guia do usuário do
IAM.

A seguir é apresentado um resumo das etapas de demonstração:

Versão da API 2006-03-01


429
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

1. O usuário administrador da Conta A anexa a política do bucket que concede à Conta B uma permissão
condicional para fazer upload de objetos.
2. O administrador da Conta A cria uma função do IAM, estabelecendo a confiança com a Conta C, e
assim os usuários dessa conta podem acessar a Conta. A. A política de acesso anexada à função limita
o que o usuário na Conta C pode fazer quando acessa a Conta A.
3. O administrador da Conta B faz upload de um objeto no bucket de propriedade da Conta A, concedendo
permissão de controle total ao proprietário do bucket.
4. O administrador da Conta C cria um usuário e anexa uma política de usuário que permite que o usuário
assuma a função.
5. O usuário na Conta C primeiro assume a função, que retorna as credenciais de segurança temporárias
ao usuário. Usando essas credenciais de segurança temporárias, o usuário então acessa os objetos no
bucket.

Para este exemplo, você precisará de três contas. A tabela a seguir mostra como nos referimos a essas
contas e aos usuários administradores nessas contas. Conforme as diretrizes do IAM (veja Sobre o uso
de um usuário administrador para criar recursos e conceder permissões (p. 411)), não usamos as
credenciais raiz de conta nesta apresentação. Em vez disso, você cria um usuário administrador em cada
conta e usa essas credenciais para criar recursos e conceder permissões a eles.

ID da conta da AWS Conta referida como Usuário administrador na conta

1111-1111-1111 Conta A AccountAadmin

2222-2222-2222 Conta B AccountBadmin

3333-3333-3333 Conta C AccountCadmin

Etapa 0: Preparar-se para a demonstração


Note

É aconselhável abrir um editor de texto e escrever algumas informações enquanto você passa
pelas etapas. Especificamente, você vai precisar dos IDs de conta, IDs de usuários canônicos,

Versão da API 2006-03-01


430
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

URLs de login de usuário do IAM de cada conta para se conectar ao console, e Nomes de recurso
da Amazon (ARN) dos usuários do IAM e funções.

1. Certifique-se de ter três contas da AWS e de que cada conta tenha um usuário administrador
conforme exibido na tabela na seção anterior.

a. Cadastre-se para contas da AWS, se necessário. Nós nos referimos a essas contas como Conta
A, Conta B e Conta C.

i. Acesse https://aws.amazon.com/s3/ e clique em Create an AWS Account (Criar uma conta da


AWS).
ii. Siga as instruções da tela.

A AWS o notificará por e-mail quando sua conta estiver ativa e disponível para uso.
b. Usando as credenciais da Conta A, faça login no console do IAM e faça o seguinte para criar um
usuário administrador:

• Crie um usuário AccountAadmin e anote as credenciais de segurança. Para obter mais


informações sobre como adicionar usuários, consulte Criação de um usuário do IAM na sua
conta da AWS no Guia do usuário do IAM.
• Conceda privilégios de administrador da AccountAadmin anexando uma política de usuário com
pleno acesso. Para instruções, consulte Como trabalhar com políticas no Guia do usuário do
IAM.
• No Dashboard (Painel) do console do IAM, anote o IAM User Sign-In URL (URL de login de
usuário do IAM). Os usuários nessa conta devem usar esse URL para fazer login no Console
de Gerenciamento da AWS. Para obter mais informações, acesse Como os usuários fazem
login em sua conta no Guia do usuário do IAM.
c. Repita a etapa anterior para criar usuários administradores na Conta B e na Conta C.
2. Para a Conta C, anote o ID de usuário canônico.

Quando criar uma função do IAM na Conta A, a política de confiança concederá à Conta C a
permissão para assumir a função especificando o ID da conta. Você pode localizar as informações da
conta da seguinte forma:

a. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM, e a senha para fazer login no
console do Amazon S3.
b. Selecione o nome de um bucket do Amazon S3 para visualizar os detalhes sobre esse bucket.
c. Selecione a guia Permissions (Permissões) e selecione Access Control List (Lista de controle de
acesso).
d. Na seção Access for your AWS account (Acesso à sua conta da
AWS), na coluna Account (Conta) está um longo identificador, como
c1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6. Esse é
seu ID de usuário canônico.
3. Ao criar uma política do bucket, você precisará das seguintes informações. Anote esses valores:

• ID de usuário canônico da Conta A: quando o administrador da Conta A conceder permissão


condicional para fazer upload de objeto ao administrador da Conta B, a condição especifica o ID de
usuário canônico do usuário da Conta A que deverá ter pleno controle dos objetos.
Note

O ID de usuário canônico é o único conceito do Amazon S3. Ele é a versão oculta de 64


caracteres do ID da conta.
• Nome de recurso da Amazon (ARN) de usuário para o administrador da Conta B: você pode
encontrar o Nome de recurso da Amazon (ARN) do usuário no console do IAM. Você precisará
Versão da API 2006-03-01
431
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

selecionar o usuário e encontrar o Nome de recurso da Amazon (ARN) de usuário na guia Summary
(Resumo).

Na política do bucket, você concede ao AccountBadmin permissão para fazer upload de objetos e
especifica o usuário usando o Nome de recurso da Amazon (ARN). Aqui está um exemplo de valor
do Nome de recurso da Amazon (ARN):

arn:aws:iam::AccountB-ID:user/AccountBadmin

4. Configure a interface da linha de comando (CLI) da AWS ou as ferramentas da AWS para o Windows
PowerShell. Certifique-se de ter salvado as credenciais de usuário do administrador deste modo:

• Se estiver usando a CLI da AWS, crie perfis, AccountAadmin e AccountBadmin, no arquivo config.
• Se estiver usando as ferramentas da AWS para o Windows PowerShell, certifique-se de armazenar
as credenciais para a sessão como AccountAadmin e AccountBadmin.

Para obter instruções, consulte Configurar as ferramentas para as demonstrações de


exemplo (p. 412).

Etapa 1: Fazer as tarefas da Conta A

Neste exemplo, a Conta A é o proprietário do bucket. Então o usuário AccountAadmin na Conta A vai criar
um bucket, anexar uma política do bucket concedendo ao administrador da Conta B permissão para fazer
upload de objetos, criar uma função do IAM que concede permissão à Conta C para assumir a função de
maneira que ela possa acessar objetos no bucket.

Etapa 1.1: Fazer login no Console de Gerenciamento da AWS.

Usando o URL de login de usuário do IAM para a Conta A, primeiro faça login no Console de
Gerenciamento da AWS como usuário AccountAadmin. Esse usuário criará um bucket e anexará uma
política a ele.

Etapa 1.2: Criar um bucket e anexar uma política do bucket

No console do Amazon S3, faça o seguinte:

1. Crie um bucket. Este exercício supõe que o nome do bucket é examplebucket.

Para obter instruções, consulte Criação de um bucket (p. 31).


2. Anexe a seguinte política do bucket, concedendo ao administrador da Conta B uma permissão
condicional para fazer upload de objetos.

Você precisa atualizar a política fornecendo seus próprios valores para examplebucket, AccountB-
ID, e CanonicalUserId-of-AWSaccountA-BucketOwner.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "111",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*"
},
{

Versão da API 2006-03-01


432
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

"Sid": "112",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-
BucketOwner"
}
}
}
]
}

Etapa 1.3: Criar uma função do IAM para conceder à Conta C acesso entre contas à Conta A

No console do IAM, crie uma função do IAM (“examplerole”) que conceda à Conta C permissão para
assumir a função. Certifique-se que você ainda está conectado como administrador da Conta A porque a
função deve ser criada na Conta A.

1. Antes de criar a função, prepare as políticas gerenciadas que definem as permissões necessárias à
função. Em uma etapa posterior, você anexará essa política à função.

a. No painel de navegação à esquerda, clique em Policies (Políticas) e, em seguida, clique em


Create Policy (Criar política).
b. Ao lado de Create Your Own Policy (Criar sua própria política), clique em Select (Selecionar).
c. Insira access-accountA-bucket no campo Policy Name (Nome da política).
d. Copie a política de acesso a seguir e cole-a no campo Policy Document (Documento de políticas).
A política de acesso concede permissão da função s3:GetObject, e assim, quando o usuário
da Conta C assumir a função, ele só poderá executar a operação s3:GetObject.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*"
}
]
}

e. Clique em Create Policy (Criar política).

As novas políticas aparecem na lista de políticas gerenciadas.


2. No painel de navegação à esquerda, clique em Roles (Funções) e, em seguida, clique em Create New
Role (Criar nova função).
3. Em Select Role Type (Selecionar tipo de função), selecione Role for Cross-Account Access (Função
para acesso entre contas) e, em seguida, clique no botão Select (Selecionar) ao lado de Provide
access between AWS accounts you own (Fornecer acesso entre suas contas da AWS).
4. Insira o ID de conta da Conta C.

Para esta demonstração, não é necessário exigir que os usuários tenham autenticação multifator
(MFA) para assumirem a função, portanto, deixe essa opção desmarcada.
5. Clique em Next Step (Próxima etapa) para definir as permissões que serão associadas à função.

Versão da API 2006-03-01


433
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

6.
Selecione a caixa ao lado da política access-accountA-bucket que você criou e, em seguida,
clique em Next Step (Próxima etapa).

A página Revisar será exibida para que você possa confirmar as configurações para a função antes
de criá-la. Um item muito importante a observar nesta página é o link que você pode enviar aos
usuários que precisem usar essa função. Os usuários que clicarem no link irão diretamente para a
página Mudança de função com os campos ID da conta e Nome da função já preenchidos. Você
também pode ver esse link mais tarde na página Resumo da função de qualquer função entre contas.
7. Insira examplerole para o nome da função e, em seguida, clique em Next Step (Próxima etapa).
8. Depois de revisar a função, clique em Create Role (Criar função).

A função examplerole é exibida na lista de funções.


9. Clique no nome da função examplerole.
10. Selecione a guia Trust Relationships (Relacionamentos de confiança).
11. Clique em Show policy document (Mostrar documento de política) e verifique se a política de confiança
mostrada corresponde à política a seguir.

A política de confiança a seguir estabelece a confiança com a Conta C, permitindo-lhe a ação


sts:AssumeRole. Para obter informações, consulte AssumeRole na Referência de APIs do AWS
Security Token Service.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountC-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}

12. Anote o Nome de recurso da Amazon (ARN) da função examplerole que você criou.

Depois, nas etapas a seguir, você anexará um política de usuário para permitir que um usuário do IAM
assuma essa função e identificará a função com o valor de Nome de recurso da Amazon (ARN).

Etapa 2: Fazer as tarefas da Conta B

O examplebucket de propriedade da Conta A precisa de objetos de propriedade de outras contas. Nessa


etapa, o administrador da Conta B faz upload de um objeto usando as ferramentas da linha de comando.

• Usando o comando de CLI da AWS put-object, faça upload de um objeto para examplebucket.

aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body HappyFace.jpg --


grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin

Observe o seguinte:

• O parâmetro --Profile especifica o perfil AccountBadmin, e assim o objeto é de propriedade da


Conta B.
• O parâmetro grant-full-control concede ao proprietário do bucket permissão de pleno
controle sobre o objeto conforme exigido pela política do bucket.
Versão da API 2006-03-01
434
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• O parâmetro --body identifica o arquivo de origem para fazer upload. Por exemplo, se o arquivo
está na unidade C: de um computador Windows, você especifica c:\HappyFace.jpg.

Etapa 3: Fazer as tarefas da Conta C


Nas etapas anteriores, a Conta A já criou uma função, examplerole, estabelecendo a confiança com a
Conta C. Isso permite que os usuários na Conta C acessem a Conta A. Nessa etapa, o administrador da
Conta C cria um usuário (Dave) e lhe delega a permissão sts:AssumeRole recebida da Conta. A. Isso
permitirá que Dave assuma a examplerole e tenha acesso temporário à Conta A. A política de acesso
que a Conta A anexou à função vai limitar o que Dave pode fazer ao acessar a Conta A – especificamente,
obter objetos em examplebucket.

Etapa 3.1: Criar um usuário na Conta C e delegar a permissão para assumir examplerole

1. Usando o URL de login de usuário do IAM para a Conta C, primeiro faça login no Console de
Gerenciamento da AWS como usuário AccountCadmin.

2. No console do IAM, crie um usuário Dave.

Para obter instruções, consulte Criação de usuários do IAM (Console de Gerenciamento da AWS) no
Guia do usuário do IAM.
3. Anote as credenciais de Dave. Dave precisará dessas credenciais para assumir a função
examplerole.
4. Crie uma política inline para o usuário Dave do IAM para delegar a Dave a permissão
sts:AssumeRole na função examplerole da conta A.

a. No painel de navegação à esquerda, clique em Users (Usuários).


b. Clique no nome de usuário Dave.
c. Na página detalhes do usuário, selecione a guia Permissions (Permissões) e, em seguida,
expanda a seção Inline Policies (Políticas em linha).
d. Escolha clique aqui (ou Create User Policy [Criar política de usuário]).
e. Clique em Custom Policy (Política personalizada) e, em seguida, clique em Select (Selecionar).
f. Insira um nome para a política no campo Policy Name (Nome da política).
g. Cole a seguinte política no campo Policy Document (Documento da política).

Você terá de atualizar a políticas fornecendo o ID da Conta A.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["sts:AssumeRole"],
"Resource": "arn:aws:iam::AccountA-ID:role/examplerole"
}
]
}

h. Clique em Apply Policy (Aplicar política)


5. Salve as credenciais de Dave no arquivo de config da CLI da AWS, adicionando outro perfil,
AccountCDave.

[profile AccountCDave]
aws_access_key_id = UserDaveAccessKeyID
aws_secret_access_key = UserDaveSecretAccessKey
region = us-west-2

Versão da API 2006-03-01


435
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Etapa 3.2: Assumir a função (examplerole) e acessar objetos

Agora Dave pode acessar objetos no bucket de propriedade da Conta A, desta forma:

• Dave primeiro assume a examplerole usando suas próprias credenciais. Isso retornará credenciais
temporárias.
• Usando as credenciais temporárias, Dave então acessará os objetos no bucket da Conta A.

1. No prompt de comando, execute o seguinte comando assume-role da CLI da AWS, usando o perfil
AccountCDave.

Você terá de atualizar o valor de Nome de recurso da Amazon (ARN) no comando, fornecendo o ID da
Conta A onde examplerole foi definido.

aws sts assume-role --role-arn arn:aws:iam::accountA-ID:role/examplerole --profile


AccountCDave --role-session-name test

Em resposta, o AWS Security Token Service (STS) retorna credenciais de segurança temporárias (ID
da chave de acesso, chave de acesso secreta e um token de sessão).
2. Salve as credenciais de segurança temporárias no arquivo config da CLI da AWS no perfil TempCred.

[profile TempCred]
aws_access_key_id = temp-access-key-ID
aws_secret_access_key = temp-secret-access-key
aws_session_token = session-token
region = us-west-2

3. No prompt de comando, execute o comando a seguir da CLI da AWS para acessar objetos usando as
credenciais temporárias. Por exemplo, o comando especifica a API do objeto head para recuperar os
metadados do objeto para o objeto HappyFace.jpg.

aws s3api get-object --bucket examplebucket --key HappyFace.jpg SaveFileAs.jpg --


profile TempCred

Como a política de acesso anexada a examplerole permite as ações, o Amazon S3 processa a


solicitação. Você pode tentar qualquer outra ação em qualquer outro objeto no bucket.

Se tentar qualquer outra ação – por exemplo, get-object-acl –, você terá a permissão negada
porque a função não tem permissão para essa ação.

aws s3api get-object-acl --bucket examplebucket --key HappyFace.jpg --profile TempCred

Usamos o usuário Dave para assumir a função e acessar o objeto usando credenciais temporárias.
Também poderia ser um aplicativo na Conta C que acessa objetos em examplebucket. O aplicativo
pode obter credenciais de segurança temporárias, e a Conta C pode delegar permissão de aplicativo
para assumir examplerole.

Etapa 4: Limpeza

1. Depois de terminar os testes, você pode seguir uma das etapas a seguir para fazer a limpeza.

• Faça login no Console de Gerenciamento da AWS (Console de Gerenciamento da AWS) usando


as credenciais da Conta A e faça o seguinte:

Versão da API 2006-03-01


436
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

• No console do Amazon S3, remova a política do bucket anexada a examplebucket. Nas


Propriedades do bucket, exclua a política na seção Permissions (Permissões).
• Se o bucket foi criado para este exercício, no console do Amazon S3, exclua os objetos e, em
seguida, exclua o bucket.
• No console do IAM, remova o examplerole que você criou na Conta A.
• No console do IAM, remova o usuário AccountAadmin.
2. Faça login no Console de Gerenciamento da AWS (Console de Gerenciamento da AWS) usando as
credenciais da Conta B. No console do IAM, exclua o usuário AccountBadmin.
3. Faça login no Console de Gerenciamento da AWS (Console de Gerenciamento da AWS) usando as
credenciais da Conta C. No console do IAM, exclua o usuário AccountCadmin e o usuário Dave.

Recursos relacionados

• Criação de uma função para delegar permissões a um usuário do IAM no Guia do usuário do IAM.
• Tutorial: Delegar acesso em contas da AWS usando funções do IAM no Guia do usuário do IAM.
• Como trabalhar com políticas no Guia do usuário do IAM.

Usar funções vinculadas a serviços para o Amazon S3 Storage


Lens
Para usar o Amazon S3 Storage Lens para coletar e agregar métricas em todas as suas contas no AWS
Organizations, primeiro você deve garantir que o S3 Storage Lens tenha acesso confiável habilitado pela
conta de gerenciamento em sua organização. O S3 Storage Lens cria uma função vinculada a serviços
para permitir que ele obtenha a lista de contas da AWS pertencentes à sua organização. Essa lista de
contas é usada pelo S3 Storage Lens para coletar métricas de recursos do S3 em todas as contas membro
quando o painel ou as configurações do S3 Storage Lens são criadas ou atualizadas.

O Amazon S3 Storage Lens usa funções vinculadas a serviços do AWS Identity and Access Management
(IAM). Uma função vinculada a serviços é um tipo exclusivo de função do IAM vinculada diretamente ao S3
Storage Lens. As funções vinculadas a serviços são predefinidas pelo S3 Storage Lens e incluem todas as
permissões que o serviço requer para chamar outros serviços da AWS em seu nome.

Uma função vinculada a serviços facilita a configuração do S3 Storage Lens porque você não precisa
adicionar as permissões necessárias manualmente. O S3 Storage Lens define as permissões da função
vinculada a serviços e, salvo outra definição, somente o S3 Storage Lens pode assumir suas funções. As
permissões definidas incluem a política de confiança e a política de permissões, e essa política não pode
ser anexada a nenhuma outra entidade do IAM.

Você pode excluir essa função vinculada a serviços somente após a exclusão dos recursos relacionados.
Isso protege seus recursos do S3 Storage Lens, porque você não consegue remover por engano a
permissão para acessar os recursos.

Para obter informações sobre outros serviços que oferecem suporte às funções vinculadas ao serviço,
consulte Serviços da AWS que funcionam com o IAM e procure os serviços com Sim na coluna Função
vinculada ao serviço. Escolha um Sim com um link para exibir a documentação da função vinculada a
serviço desse serviço.

Permissões de funções vinculadas a serviços para o Amazon S3 Storage Lens


O S3 Storage Lens usa a função vinculada a serviços chamada AWSServiceRoleFors3StorageLens.
Ela permite o acesso a serviços e recursos da AWS usados ou gerenciados pelo S3 Storage Lens. Isso
permite que o S3 Storage Lens acesse recursos do AWS Organizations em seu nome.

Versão da API 2006-03-01


437
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

A função vinculada a serviços do S3 Storage Lens confia no seguinte serviço no armazenamento da sua
organização:

• storage-lens.s3.amazonaws.com

A política de permissões da função permite que o S3 Storage Lens execute as seguintes ações:

• organizations:DescribeOrganization

organizations:ListAccounts

organizations:ListAWSServiceAccessForOrganization

organizations:ListDelegatedAdministrators

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo ou
função) crie, edite ou exclua uma função vinculada ao serviço. Para obter mais informações, consulte
Permissões de função vinculada ao serviço no Guia do usuário do IAM.

Criar uma função vinculada a serviços para o S3 Storage Lens


Você não precisa criar manualmente uma função vinculada a serviço. Quando você conclui uma
das seguintes tarefas enquanto faz login no gerenciamento do AWS Organizations ou nas contas de
administrador delegado, o S3 Storage Lens cria a função vinculada a serviços para você:

• Crie uma configuração de painel do S3 Storage Lens para sua organização no console do Amazon S3.
• PUT uma configuração do S3 Storage Lens para sua organização usando a API REST, CLI da AWS e
SDKs.

Note

O S3 Storage Lens suportará no máximo cinco administradores delegados por organização.

Se você excluir essa função vinculada a serviços, as ações anteriores a recriarão conforme necessário.

Exemplo de política para função vinculada a serviços do S3 Storage Lens

Example Política de permissões para a função vinculada a serviços do S3 Storage Lens

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AwsOrgsAccess",
"Effect": "Allow",
"Action": [
"organizations:DescribeOrganization",
"organizations:ListAccounts",
"organizations:ListAWSServiceAccessForOrganization",
"organizations:ListDelegatedAdministrators"
],
"Resource": [
"*"
]
}
]
}

Versão da API 2006-03-01


438
Amazon Simple Storage Service Guia do usuário
Políticas de bucket e políticas de usuário

Editar uma função vinculada a serviços para o Amazon S3 Storage Lens


O S3 Storage Lens não permite que você edite a função vinculada a serviços
AWSServiceRoleFors3StorageLens. Depois que criar uma função vinculada ao serviço, você não poderá
alterar o nome da função, pois várias entidades podem fazer referência a ela. No entanto, você poderá
editar a descrição da função usando o IAM. Para obter mais informações, consulte Editar uma função
vinculada ao serviço no Guia do usuário do IAM.

Excluir uma função vinculada a serviços para o Amazon S3 Storage Lens


Se você não precisa mais usar a função vinculada a serviços, recomendamos que a exclua. Dessa forma,
você não tem uma entidade não utilizada que não seja monitorada ativamente ou mantida. No entanto,
você deve limpar os recursos de sua função vinculada ao serviço antes de exclui-la manualmente.
Note

Se o serviço Amazon S3 Storage Lens estiver usando a função quando você tentar excluir os
recursos, a exclusão poderá falhar. Se isso acontecer, espere alguns minutos e tente a operação
novamente.

Para excluir AWSServiceRoleFors3StorageLens, você deve excluir todas as configurações do S3 Storage


Lens de nível da organização presentes em todas as regiões usando o AWS Organizations Management
ou as contas de administrador delegadas.

Os recursos são configurações do S3 Storage Lens no nível da organização. Use o S3 Storage Lens para
limpar os recursos e, em seguida, use o console do IAM, a CLI, a API REST ou o AWS SDK para excluir a
função.

Na API REST, na CLI da AWS e nos SDKs, as configurações do S3 Storage Lens podem ser descobertas
usando ListStorageLensConfigurations em todas as regiões onde sua organização criou
configurações do S3 Storage Lens. Use a ação DeleteStorageLensConfiguration a fim de excluir
essas configurações para que você possa excluir a função.
Note

Para excluir a função vinculada a serviços, você deve excluir todas as configurações do S3
Storage Lens no nível da organização em todas as regiões em que elas existem.

Para excluir recursos do Amazon S3 Storage Lens usados por


AWSServiceRoleFors3StorageLens

1. Você deve usar ListStorageLensConfigurations em todas as regiões em que você tem


configurações do S3 Storage Lens para obter uma lista de configurações de nível de organização.
Essa lista também pode ser obtida no console do Amazon S3.
2. Essas configurações devem ser excluídas dos endpoints regionais apropriados invocando a chamada
de API DeleteStorageLensConfiguration ou pelo console do Amazon S3.

Como excluir manualmente a função vinculada ao serviço usando o IAM

Depois que as configurações forem excluídas, o AWSServiceRoleFors3StorageLens poderá ser excluído


pelo console do IAM ou invocando a API DeleteServiceLinkedRole do IAM, a CLI da AWS AWS ou
o AWS SDK. Para obter mais informações, consulte Excluir uma função vinculada ao serviço no Guia do
usuário do IAM.

Regiões com suporte para funções vinculadas a serviços do S3 Storage Lens


O S3 Storage Lens oferece suporte a funções vinculadas a serviços em todas as regiões da AWS em que
o serviço está disponível. Para obter mais informações, consulte Regiões e endpoints do Amazon S3.

Versão da API 2006-03-01


439
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Gerenciar o acesso com ACLs


As listas de controle de acesso (ACLs) são uma das opções da política de acesso baseada em recurso
(consulte Visão geral do gerenciamento de acesso (p. 252)) que pode ser usada para gerenciar o acesso
aos buckets e objetos. Use as ACLs para conceder permissões básicas de leitura/gravação a outras
contas da AWS. Existem limites para gerenciar permissões usando ACLs.

Por exemplo, é possível conceder permissões apenas para outras contas da AWS; você não pode
conceder permissões para usuários da sua conta. Não é possível conceder permissões condicionais, nem
negar permissões explicitamente. As ACLs são adequadas para cenários específicos. Por exemplo, se um
proprietário do bucket permite que outras contas da AWS carreguem objetos, as permissões para esses
objetos só podem ser gerenciadas com a ACL do objeto pela conta da AWS que detém o objeto.

Para obter mais informações sobre as opções de política de acesso, consulte Diretrizes para políticas de
acesso (p. 258). Para obter mais informações sobre ACLs, consulte os tópicos a seguir.

Tópicos
• Visão geral da lista de controle de acesso (ACL) (p. 440)
• Como encontrar o ID de usuário canônico da conta da AWS (p. 446)
• Configurar ACLs (p. 448)

Visão geral da lista de controle de acesso (ACL)


As listas de controle de acesso (ACLs) do Amazon S3 permitem o gerenciamento do acesso aos buckets
e objetos. Cada bucket e objeto tem uma ACL anexada como um sub-recurso. Ela define a quais contas
ou grupos da AWS é concedido acesso e o tipo de acesso. Quando um recurso é solicitado, o Amazon S3
consulta a ACL correspondente para verificar se o solicitante tem as permissões de acesso necessárias.

Quando você cria um bucket ou um objeto, o Amazon S3 cria uma ACL padrão que concede ao
proprietário do recurso controle total sobre o recurso. Isso é exibido no seguinte exemplo de ACL de
bucket (a ACL de objeto padrão tem a mesma estrutura):

Example

<?xml version="1.0" encoding="UTF-8"?>


<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>*** Owner-Canonical-User-ID ***</ID>
<DisplayName>owner-display-name</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Canonical User">
<ID>*** Owner-Canonical-User-ID ***</ID>
<DisplayName>display-name</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>

A ACL de exemplo inclui um elemento Owner que identifica o proprietário pelo ID de usuário canônico da
conta da AWS. Para obter instruções sobre como localizar seu ID canônico do usuário, consulte Encontrar
um ID de usuário canônico da conta da AWS (p. 442). O elemento Grant identifica o favorecido (uma
conta da AWS ou um grupo predefinido) e a permissão concedida. Esta ACL padrão tem um elemento

Versão da API 2006-03-01


440
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Grant para o proprietário. Conceda permissões adicionando elementos Grant, com cada concessão
identificando o favorecido e a permissão.
Note

Uma ACL pode ter até 100 concessões.

Tópicos
• Quem é o favorecido? (p. 441)
• Quais permissões posso conceder? (p. 443)
• Amostra de ACL (p. 445)
• ACL pré-configurada (p. 446)

Quem é o favorecido?
O favorecido pode ser uma conta da AWS ou um dos grupos predefinidos do Amazon S3. Você concede
permissão a uma conta da AWS usando o endereço de e-mail ou o ID de usuário canônico. No entanto,
se você fornecer um endereço de e-mail na solicitação de concessão, o Amazon S3 encontrará o ID de
usuário canônico para essa conta e o adicionará à ACL. As ACLs resultantes sempre conterão o ID de
usuário canônico para a conta da AWS, e não o endereço de e-mail da conta.

Ao conceder direitos de acesso, você especifica cada favorecido como um par de tipo=valor, em que o tipo
é um dos seguintes:

• id — se o valor especificado é o ID de usuário canônico de uma conta da AWS


• uri — se as permissões estiverem sendo concedidas a um grupo predefinido
• emailAddress — se o valor especificado é o endereço de e-mail de uma conta da AWS

Important

O uso de endereços de e-mail para especificar um favorecido tem suporte somente nas seguintes
regiões da AWS:

• Leste dos EUA (Norte da Virgínia)


• Oeste dos EUA (Norte da Califórnia)
• Oeste dos EUA (Oregon)
• Ásia-Pacífico (Cingapura)
• Ásia-Pacífico (Sydney)
• Ásia-Pacífico (Tóquio)
• Europa (Irlanda)
• América do Sul (São Paulo)

Para obter uma lista de todas as regiões e endpoints em que o Amazon S3 tem suporte, consulte
Regiões e endpoints na Referência geral da AWS.

Example Exemplo: endereço de e-mail

Por exemplo, o cabeçalho x-amz-grant-read a seguir concede às contas da AWS identificadas por
endereços de e-mail permissões para ler dados de objetos e seus metadados:

x-amz-grant-read: emailAddress="[email protected]", emailAddress="[email protected]"

Versão da API 2006-03-01


441
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Warning

Ao conceder acesso aos recursos para outras contas da AWS, esteja ciente de que as contas
da AWS podem delegar as permissões para usuários das suas contas. Isso é conhecido como
acesso entre contas. Para obter informações sobre como usar o acesso entre contas, consulte
Criar uma função para delegar permissões a um usuário do IAM no Guia do usuário do IAM.

Encontrar um ID de usuário canônico da conta da AWS

O ID de usuário canônico está associado à conta da AWS. Este ID é uma longa string de caracteres,
como 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be. Para obter
informações sobre como encontrar o ID de usuário canônico da sua conta, consulte Como encontrar o ID
de usuário canônico da conta da AWS (p. 446).

Você também pode pesquisar o ID de usuário canônico de uma conta da AWS lendo a ACL de um bucket
ou objeto para o qual a conta da AWS tem permissões de acesso. Quando uma conta individual da AWS
recebe permissões por meio de uma solicitação de concessão, um registro de concessão é adicionado à
ACL com o ID de usuário canônico da conta.
Note

Se você tornar seu bucket público (não recomendado) qualquer usuário não autenticado pode
carregar objetos para o bucket. Esses usuários anônimos não têm uma conta AWS. Quando
um usuário anônimo carrega um objeto em seu bucket, Amazon S3 adiciona um ID de usuário
canônico especial (65a011a29cdf8ec533ec3d1ccaae921c) como o dono do objeto no ACL.
Para obter mais informações, consulte Propriedade de bucket e objeto do Amazon S3 (p. 253).

Grupos predefinidos do Amazon S3

O Amazon S3 tem um conjunto de grupos predefinidos. Ao conceder acesso de conta a um grupo,


especifique um dos URIs em vez do ID de usuário canônico. Fornecemos os seguintes grupos
predefinidos:

• Grupo Usuários autenticados: representado por http://acs.amazonaws.com/groups/global/


AuthenticatedUsers.

Este grupo representa todas as contas da AWS. A permissão de acesso a esse grupo permite que
qualquer conta da AWS acesse o recurso. No entanto, todas as solicitações devem estar assinadas
(autenticadas).
Warning

Quando você concede acesso ao grupo Authenticated Users, qualquer usuário autenticado da
AWS em todo o mundo pode acessar seu recurso.
• Grupo Todos os usuários: representado por http://acs.amazonaws.com/groups/global/
AllUsers.

A permissão de acesso a esse grupo permite que qualquer um acesse o recurso. As solicitações podem
estar assinadas (autenticadas) ou não (anônimas). As solicitações não assinadas omitem o cabeçalho
Autenticação na solicitação.
Warning

Recomendamos fortemente que você nunca conceda ao grupo All Users permissões WRITE,
WRITE_ACP ou FULL_CONTROL. Por exemplo, embora as permissões WRITE não permitam
que não proprietários substituam ou excluam objetos existentes, as permissões WRITE ainda
permitem que qualquer pessoa armazene objetos em seu bucket, pelo qual você é cobrado.
Para obter mais informações sobre essas permissões, consulte a seguinte seção Quais
permissões posso conceder? (p. 443).
• Grupo Entrega de logs: representado por http://acs.amazonaws.com/groups/s3/LogDelivery.

Versão da API 2006-03-01


442
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

A permissão WRITE em um bucket permite que esse grupo grave logs de acesso ao servidor (consulte
Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833)) no bucket.

Note

Ao usar ACLs, um favorecido pode ser uma conta da AWS ou um dos grupos predefinidos
do Amazon S3. No entanto, o favorecido não pode ser um usuário do IAM. Para obter mais
informações sobre os usuários e as permissões da AWS no IAM, acesse Usar o AWS Identity and
Access Management.

Quais permissões posso conceder?


A tabela a seguir lista o conjunto de permissões para as quais o Amazon S3 oferece suporte em uma ACL.
O conjunto de permissões da ACL é o mesmo para a ACL de objetos e para a ACL de bucket. No entanto,
dependendo do contexto (ACL de buckets ou ACL de objetos), essas permissões da ACL concedem
permissão para operações de bucket ou objeto específicas. A tabela lista as permissões e descreve seus
significados no contexto de objetos e buckets.

Para obter mais informações sobre permissões da ACL no console do Amazon S3, consulte Configurar
ACLs (p. 448).

Permissões de ACL

Permissão Quando concedida em um bucket Quando concedida em um objeto

READ Permite ao favorecido listar os objetos no Permite ao favorecido ler os dados do


bucket. objeto e seus metadados

WRITE Permite que o favorecido crie novos objetos Não aplicável


no bucket. Para os proprietários de bucket
e objeto de objetos existentes, também
permite exclusões e substituições desses
objetos.

READ_ACP Permite ao favorecido ler a ACL do bucket Permite ao favorecido ler a ACL do objeto

WRITE_ACP Permite ao favorecido gravar a ACL para o Permite ao favorecido gravar a ACL para o
bucket aplicável objeto aplicável

Concede ao favorecido as permissões


FULL_CONTROL Concede ao favorecido as permissões
READ, WRITE, READ_ACP e WRITE_ACP READ, READ_ACP e WRITE_ACP no
no bucket objeto

Warning

Tenha cuidado ao conceder permissões de acesso a buckets e objetos do S3. Por exemplo,
conceder acesso de WRITE a um bucket permite que o favorecido crie objetos no bucket. É
altamente recomendável que você leia esta seção Visão geral da lista de controle de acesso
(ACL) (p. 440) inteira antes da concessão de permissões.

Mapeamento das permissões da ACL e das permissões da política de acesso

Conforme mostrado na tabela anterior, uma ACL concede apenas um conjunto finito de permissões, em
comparação com o número de permissões que pode ser definido em uma política de acesso (consulte
Ações do Amazon S3 (p. 273)). Cada uma dessas permissões permite uma ou mais operações do
Amazon S3.

Versão da API 2006-03-01


443
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

A tabela a seguir mostra como cada uma das permissões da ACL se correlaciona com as permissões de
política de acesso correspondentes. Como você pode ver, a política de acesso permite mais permissões
que uma ACL. Use ACLs principalmente para conceder permissões básicas de leitura/gravação, similares
às permissões de sistema de arquivos. Para obter mais informações sobre quando usar uma ACL,
consulte Diretrizes para políticas de acesso (p. 258).

Para obter mais informações sobre permissões da ACL no console do Amazon S3, consulte Configurar
ACLs (p. 448).

Permissão da Permissões correspondentes da política Permissões correspondentes da política


ACL de acesso quando permissões da ACL de acesso quando permissões da ACL
são concedidas em um bucket são concedidas em um objeto

READ s3:ListBucket, s3:GetObject,


s3:ListBucketVersions, e s3:GetObjectVersion, e
s3:ListBucketMultipartUploads s3:GetObjectTorrent

WRITE s3:PutObject Não aplicável

O proprietário do bucket pode criar,


substituir e excluir qualquer objeto no
bucket, e o proprietário do objeto tem
FULL_CONTROL sobre seu objeto.

Além disso, quando o favorecido é


o proprietário do bucket, conceder
a permissão WRITE em uma ACL
do bucket permite que a ação
s3:DeleteObjectVersion seja
executada em qualquer versão naquele
bucket.

READ_ACP s3:GetBucketAcl s3:GetObjectAcl e


s3:GetObjectVersionAcl

WRITE_ACP s3:PutBucketAcl s3:PutObjectAcl e


s3:PutObjectVersionAcl

FULL_CONTROL Equivalente a conceder as permissões Equivalente a conceder as permissões


READ, WRITE, READ_ACP e WRITE_ACP READ, READ_ACP e WRITE_ACP da
da ACL. Assim, essa permissão da ACL ACL. Assim, essa permissão da ACL
equivale à combinação das permissões equivale à combinação das permissões
correspondentes da política de acesso. correspondentes da política de acesso.

Chaves de condição

Ao conceder permissões de política de acesso, você pode usar chaves de condição para restringir o
valor da ACL em um objeto usando uma política de bucket. As chaves de contexto abaixo correspondem
a ACLs. Você pode usar essas chaves de contexto para obrigar a usar uma ACL específica em uma
solicitação:

• s3:x-amz-grant-read: exigir acesso de leitura.


• s3:x-amz-grant-write: exigir acesso de gravação.
• s3:x-amz-grant-read-acp: exigir acesso de leitura à ACL do bucket.
• s3:x-amz-grant-write-acp: exigir acesso de gravação à ACL do bucket.
• s3:x-amz-grant-full-control: exigir controle total.

Versão da API 2006-03-01


444
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

• s3:x-amz-acl: exigir um ACL pré-configurada (p. 446).

Para obter exemplos de políticas que envolvem cabeçalhos específicos de ACL, consulte Exemplo 1:
Concessão da permissão s3:PutObject com uma condição que exige que o proprietário do bucket obtenha
controle total (p. 278). Para obter uma lista completa de chaves de condição específicas do Amazon S3,
consulte Ações, recursos e chaves de condição do Amazon S3 (p. 288).

Amostra de ACL
A seguir, a amostra de ACL em um bucket identifica o proprietário do recurso e um conjunto de
concessões. O formato é a representação XML de uma ACL na API REST do Amazon S3. O proprietário
do bucket tem FULL_CONTROL sobre o recurso. Além disso, a ACL mostra como as permissões são
concedidas em um recurso para duas contas da AWS, identificadas pelo ID de usuário canônico, e para
dois grupos predefinidos do Amazon S3 discutidos na seção anterior.

Example

<?xml version="1.0" encoding="UTF-8"?>


<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>Owner-canonical-user-ID</ID>
<DisplayName>display-name</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser">
<ID>Owner-canonical-user-ID</ID>
<DisplayName>display-name</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>

<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser">
<ID>user1-canonical-user-ID</ID>
<DisplayName>display-name</DisplayName>
</Grantee>
<Permission>WRITE</Permission>
</Grant>

<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser">
<ID>user2-canonical-user-ID</ID>
<DisplayName>display-name</DisplayName>
</Grantee>
<Permission>READ</Permission>
</Grant>

<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>
</Grantee>
<Permission>WRITE</Permission>

Versão da API 2006-03-01


445
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

</Grant>

</AccessControlList>
</AccessControlPolicy>

ACL pré-configurada
O Amazon S3 oferece suporte a um conjunto de concessões predefinidas, conhecidas como ACLs pré-
configuradas. Cada ACL pré-configurada tem um conjunto predefinido de concessões e permissões. A
tabela a seguir lista o conjunto de ACLs pré-configuradas e as concessões predefinidas associadas.

ACL pré-configurada Aplica-se a Permissões adicionadas à ACL

private Bucket e O proprietário obtém FULL_CONTROL. Ninguém mais tem


objeto direitos de acesso (padrão).

public-read Bucket e O proprietário obtém FULL_CONTROL. O grupo AllUsers


objeto (consulte Quem é o favorecido? (p. 441)) obtém acesso
READ.

public-read-write Bucket e O proprietário obtém FULL_CONTROL. O grupo AllUsers


objeto obtém os acessos READ e WRITE. Essa concessão não
costuma ser recomendada em um bucket.

aws-exec-read Bucket e O proprietário obtém FULL_CONTROL. O Amazon EC2


objeto obtém acesso READ a GET um pacote de imagem de
máquina da Amazon (AMI) do Amazon S3.

authenticated-read Bucket e O proprietário obtém FULL_CONTROL. O grupo


objeto AuthenticatedUsers obtém acesso READ.

bucket-owner-read Objeto O proprietário do objeto obtém FULL_CONTROL. O


proprietário do bucket obtém acesso READ. Se você
especificar essa ACL pré-configurada ao criar um bucket, o
Amazon S3 a ignorará.

bucket-owner-full- Objeto Os proprietários do objeto e do bucket obtêm


control FULL_CONTROL sobre o objeto. Se você especificar essa
ACL pré-configurada ao criar um bucket, o Amazon S3 a
ignorará.

log-delivery-write Bucket O grupo LogDelivery obtém as permissões WRITE e


READ_ACP no bucket. Para obter mais informações sobre
logs, consulte (Registrar em log as solicitações com registro
em log de acesso ao servidor (p. 833)).

Note
Você pode especificar apenas uma dessas ACLs pré-configuradas na solicitação.

Especifique uma ACL pré-configurada na solicitação usando o cabeçalho de solicitação x-amz-acl.


Quando o Amazon S3 recebe uma solicitação com uma ACL pré-configurada, ele adiciona as concessões
predefinidas à ACL do recurso.

Como encontrar o ID de usuário canônico da conta da AWS


O ID de usuário canônico é um identificador alfanumérico, como
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be, que é uma forma

Versão da API 2006-03-01


446
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

oculta do ID da conta da AWS. Você pode usar esse ID para identificar uma conta da AWS ao conceder
acesso entre contas a buckets e objetos usando o Amazon S3. Você pode recuperar o ID de usuário
canônico da sua conta da AWS como o usuário raiz ou um usuário do IAM.

Você pode encontrar o ID de usuário canônico da sua conta da AWS usando o Console de Gerenciamento
da AWS ou a AWS CLI. O ID de usuário canônico de uma conta da AWS é específico dessa conta. Você
pode recuperar o ID de usuário canônico da sua conta como o usuário raiz, um usuário federado ou um
usuário do IAM.

Pré-requisitos

Se você for um usuário federado ou estiver acessando as informações programaticamente, como por meio
da AWS CLI, você deve ter permissão para listar e exibir um bucket do Amazon S3.

Usar o console do S3 (usuário raiz ou um usuário do IAM)

Siga estas etapas para encontrar o ID de usuário canônico da sua conta da AWS quando você estiver
conectado ao console como usuário raiz ou um usuário do IAM. Para obter mais informações sobre
o usuário raiz e os usuários do IAM, consulte Visão geral do gerenciamento de identidades da AWS:
usuários no Guia do usuário do IAM.

1. Faça login no console como usuário raiz ou um usuário do IAM.

Para obter mais informações, consulte Fazer login no Console de Gerenciamento da AWS no Guia do
usuário do IAM.
2. Na barra de navegação no canto superior direito, escolha o nome ou número da sua conta e escolha
My Security Credentials (Minhas credenciais de segurança).
3. Encontre o ID canônico da conta:
• Se você for o usuário raiz, expanda Account identifiers (Identificadores de conta) e encontre
Canonical User ID (ID de usuário canônico).
• Se você for um usuário do IAM, em Account details (Detalhes da conta), encontre Account
canonical user ID (ID de usuário canônico da conta).

Usar o console do S3 (usuário federado)

Siga estas etapas para encontrar o ID de usuário canônico da sua conta quando estiver conectado ao
Console de Gerenciamento da AWS como usuário federado. Para obter mais informações sobre usuários
federados, consulte Federação de usuários existentes no Guia do usuário do IAM.

1. Faça login no console; como usuário federado.

Para obter mais informações, consulte Fazer login no Console de Gerenciamento da AWS no Guia do
usuário do IAM.
2. No console do Amazon S3, escolha um nome de bucket para exibir os detalhes do bucket.
3. Selecione Permissions (Permissões) e selecione Access Control List (Lista de controle de acesso).

Na parte superior da página, em Access for bucket owner (Acesso para o proprietário do bucket), é
exibido o ID de usuário canônico da conta da AWS.

Usar a CLI da AWS

Use o comando list-buckets da seguinte forma para encontrar o ID de usuário canônico usando a AWS
CLI.

aws s3api list-buckets --query Owner.ID --output text

Versão da API 2006-03-01


447
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Configurar ACLs
Esta seção explica como gerenciar permissões de acesso para buckets do S3 e objetos usando listas de
controle de acesso (ACLs). Você pode adicionar concessões ao seu recurso AC usando o Console de
Gerenciamento da AWS, a CLI da AWS, a API REST ou os SDKs da AWS.

As permissões do bucket e de objeto são independentes uma da outra. Um objeto não herda as
permissões de seu bucket. Por exemplo, se criar um bucket e conceder acesso de gravação a outro
usuário, você não poderá acessar os objetos desse usuário, a menos que ele conceda o acesso
explicitamente.

Você pode conceder permissões para outros usuários da conta da AWS ou para grupos predefinidos. O
usuário ou o grupo para o qual você concede permissões é chamado de usuário favorecido. Por padrão, o
proprietário, que é a conta da AWS que o criou bucket, tem permissões totais.

Cada permissão concedida a um usuário ou a um grupo adiciona uma entrada na ACL associada ao
bucket. A ACL lista concessões, o que identifica o usuário favorecido e a permissão concedida.
Warning

Recomendamos que você evite conceder acesso de gravação aos grupos Todos (acesso
público) ou Usuários autenticados (todos os usuários autenticados da AWS). Para obter mais
informações sobre os efeitos da concessão de acesso de gravação a esses grupos, consulte
Grupos predefinidos do Amazon S3 (p. 442).

Usar o console do S3 para definir permissões de ACL para um bucket

A tabela a seguir mostra as permissões da ACL que você pode configurar para buckets no console do
Amazon S3.

Permissões da ACL do console do Amazon S3 para buckets

Permissão do Permissão da Acesso


console ACL

Objetos - listar READ Permite ao favorecido listar os objetos no bucket.

Objetos - WRITE Permite que o favorecido crie novos objetos no bucket. Para os
gravar proprietários de bucket e objeto de objetos existentes, também
permite exclusões e substituições desses objetos.

ACL do bucket READ_ACP Permite ao favorecido ler a ACL do bucket


- ler

ACL do bucket WRITE_ACP Permite ao favorecido gravar a ACL para o bucket aplicável
- gravar

Todos (acesso READ Concede acesso público de leitura para os objetos no bucket.
público): Quando você concede acesso à lista a Todos (acesso público),
Objetos - listar qualquer pessoa no mundo pode acessar os objetos no bucket.

Todos (acesso READ_ACP Concede acesso de leitura pública para a ACL do bucket. Quando
público): ACL você concede acesso de leitura a Todos (acesso público), qualquer
do bucket - ler pessoa no mundo pode acessar a ACL do bucket.

Para obter mais informações sobre permissões da ACL, consulte Visão geral da lista de controle de acesso
(ACL) (p. 440).

Versão da API 2006-03-01


448
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Para definir permissões de ACL para um bucket, siga estas etapas.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja definir permissões.
3. Escolha Permissions (Permissões).
4. Em Access control list (Lista de controle de acesso), escolha Edit (Editar).

Você pode editar as seguintes permissões de ACL para o bucket:

Objetos

• List (Listar): permite ao favorecido listar os objetos no bucket.


• Gravação: permite que o favorecido crie novos objetos no bucket. Para os proprietários de bucket e
objeto de objetos existentes, também permite exclusões e substituições desses objetos.

No console do S3, você só pode conceder acesso de gravação ao grupo de entrega de log do S3 e
ao proprietário do bucket (sua conta da AWS). É recomendável não conceder acesso de gravação a
outros favorecidos. No entanto, se você precisar conceder acesso de gravação,,poderá usar a AWS
CLI, AWS SDKs ou a API REST.

Bucket ACL

• Read (Ler): permite ao beneficiário ler a ACL do bucket.


• Write (Gravar): permite ao beneficiário gravar a ACL para o bucket aplicável.
5. Para alterar as permissões do proprietário do bucket, ao lado de Bucket owner (your AWS account)
(Proprietário do bucket (sua conta da AWS)), limpe ou selecione uma das seguintes permissões de
ACL:

• Objetos: listar ou gravar


• ACL de bucket: ler ou gravar

O proprietário se refere ao usuário raiz da conta da AWS, não a um usuário do AWS Identity and
Access Management (IAM). Para obter mais informações sobre o usuário raiz, consulte O usuário raiz
da conta da AWS no Guia do usuário do IAM.
6. Para conceder ou desfazer permissões para o público em geral (todos na Internet), ao lado de
Everyone (public access) (Todos (acesso público)), limpe ou selecione uma das seguintes permissões
da ACL:

• Objetos: listar
• ACL de bucket: ler

Warning

Tenha cuidado ao conceder ao grupo Everyone (Todos) acesso público ao seu bucket do S3.
Quando você concede acesso a esse grupo, qualquer pessoa no mundo pode acessar seu
bucket. É altamente recomendável que você nunca conceda nenhum tipo de acesso público
de gravação ao seu bucket do S3.
7. Para conceder ou desfazer permissões para qualquer pessoa com uma conta da AWS, ao lado de
Authenticated Users group (anyone with an AWS account) (Grupo de usuários autenticados (qualquer
pessoa com uma conta da AWS)), limpe ou selecione uma das seguintes permissões de ACL:

• Objetos: listar
Versão da API 2006-03-01
449
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

• ACL de bucket: ler


8. Para conceder ou desfazer permissões para o Amazon S3 gravar logs de acesso ao servidor no
bucket, em S3 log delivery group (Grupo de entrega de log do S3), limpe ou selecione uma das
seguintes permissões ACL:

• Objetos: listar ou gravar


• ACL de bucket: ler ou gravar

Se um bucket for configurado como o bucket de destino para receber logs de acesso, as permissões
do bucket devem permitir ao grupo Log Delivery (Entrega de logs) acesso de gravação ao bucket.
Quando você ativa o registro em log do acesso ao servidor em um bucket, o console do Amazon S3
concede acesso de gravação ao grupo Log Delivery (Entrega de logs) para o bucket de destino do
qual você opta por receber os logs. Para obter mais informações sobre o registro em log de acesso
ao servidor, consulte Habilitar registro em log de acesso ao servidor do Amazon S3 (p. 835).
9. Para conceder acesso a outra conta da AWS, faça o seguinte:

a. Escolha Add grantee (Adicionar beneficiário).


b. Na caixa Grantee (Beneficiário), insira o ID canônico da outra conta da AWS.
c. Selecione uma das seguintes permissões de ACL:

• Objetos: listar ou gravar


• ACL de bucket: ler ou gravar

Warning

Ao conceder acesso aos recursos para outras contas da AWS, esteja ciente de que as contas
da AWS podem delegar as permissões para usuários das suas contas. Isso é conhecido
como acesso entre contas. Para obter informações sobre como usar o acesso entre contas,
consulte Criar uma função para delegar permissões a um usuário do IAM no Guia do usuário
do IAM.
10. Para remover o acesso a outra conta da AWS, em Access for other AWS accounts (Acesso a outras
contas da AWS), escolha Remove (Remover).
11. Para salvar suas alterações, escolha Save changes (Salvar alterações).

Usar o console do S3 para definir permissões de ACL para um objeto

A tabela a seguir mostra as permissões da ACL que você pode configurar para objetos no console do
Amazon S3.

Permissões da ACL do console do Amazon S3 para objetos

Permissão do Permissão da Acesso


console ACL

Objeto - ler READ Permite ao favorecido ler os dados do objeto e seus metadados.

ACL do objeto READ_ACP Permite ao favorecido ler a ACL do objeto


- ler

ACL do objeto - WRITE_ACP Permite ao favorecido gravar a ACL para o objeto aplicável
gravar

Para obter mais informações sobre permissões da ACL, consulte Visão geral da lista de controle de acesso
(ACL) (p. 440).

Versão da API 2006-03-01


450
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Para definir permissões de ACL para um objeto, siga estas etapas.

Para definir permissões para um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Name (Nome), escolha o nome do objeto para o qual você deseja definir permissões.
4. Escolha Permissions (Permissões).
5. Na lista do controle de acesso (ACL), escolha Edit (Editar).

Você pode editar as seguintes permissões de ACL para o objeto:

Objeto

• Read (Ler): permite ao favorecido ler os dados do objeto e seus metadados.

ACL do objeto 

• Read (Ler): permite ao favorecido ler a ACL do objeto.


• Write (Gravar): permite ao favorecido gravar a ACL para o objeto aplicável. No console do S3,
você só pode conceder acesso de gravação ao proprietário do bucket (sua conta da AWS). É
recomendável não conceder acesso de gravação a outros favorecidos. No entanto, se você precisar
conceder acesso de gravação,,poderá usar a AWS CLI, AWS SDKs ou a API REST.
6. É possível gerenciar as permissões de acesso do objeto ao seguinte:

a. Acesso para o proprietário do objeto

O proprietário se refere ao usuário raiz da conta da AWS e não a um usuário do AWS Identity and
Access Management (IAM). Para obter mais informações sobre o usuário raiz, consulte O usuário
raiz da conta da AWS no Guia do usuário do IAM.

Para alterar as permissões de acesso ao objeto do proprietário, em Access for object owner
(Acesso para o proprietário do objeto), escolha Your AWS Account (owner) (Sua conta da AWS
(proprietário)).

Marque as caixas de seleção das permissões que você deseja alterar e escolha Save (Salvar).
b. Acesso para outras contas da AWS

Para conceder permissões para um usuário da AWS de uma conta diferente da AWS, em Access
for other AWS accounts (Acesso para outras contas da AWS), escolha Add account (Adicionar
conta). No campo Enter an ID (Inserir um ID), digite o ID canônico do usuário da AWS ao qual
você deseja conceder permissões para o objeto. Para obter informações sobre como encontrar
um ID canônico, consulte Identificadores de conta da AWS na Referência geral da Amazon Web
Services. Você pode adicionar até 99 usuários.

Marque as caixas de seleção das permissões que você deseja conceder ao usuário e escolha
Save (Salvar). Para exibir informações sobre as permissões, escolha os ícones da Ajuda.
c. Acesso público

Para conceder acesso ao seu objeto para o público geral (todos no mundo), em Public access
(Acesso público), escolha Everyone (Todos). Conceder permissões de acesso público significa
que todos no mundo podem acessar o objeto.

Marque as caixas de seleção das permissões que você deseja conceder e escolha Save (Salvar).
Versão da API 2006-03-01
451
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

Warning

• Tenha cuidado ao conceder ao grupo Everyone (Todos) acesso anônimo aos seus
objetos do Amazon S3. Quando você concede acesso a esse grupo, qualquer pessoa
no mundo pode acessar seu objeto. Se você precisar conceder acesso a todos, é
altamente recomendável que só conceda permissões para Read objects (Ler objetos).
• Recomendamos fortemente que você não conceda ao grupo Everyone (Todos)
permissões de gravação no objeto. Isso permite que qualquer pessoa substitua as
permissões da ACL para o objeto.

Uso dos AWS SDKs

Esta seção fornece exemplos de como configurar concessões na lista de controle de acesso (ACL) em
buckets e objetos.

Java

Esta seção fornece exemplos de como configurar concessões na lista de controle de acesso (ACL)
em buckets e objetos. O primeiro exemplo cria um bucket com uma ACL padrão (consulte ACL pré-
configurada (p. 446)), cria uma lista de concessões de permissão personalizadas e, em seguida,
substitui a ACL padrão por uma ACL que contém concessões personalizadas. O segundo exemplo
mostra como modificar uma ACL usando o método AccessControlList.grantPermission().

Example Crie um bucket e especifique uma ACL pré-configurada que conceda permissão ao
grupo de entrega de logs do S3

Este exemplo cria um bucket. Na solicitação, o exemplo especifica uma ACL padrão que concede
permissão ao grupo de Entrega de logs para gravar logs no bucket.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.IOException;
import java.util.ArrayList;

public class CreateBucketWithACL {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String userEmailForReadPermission = "*** [email protected] ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.build();

// Create a bucket with a canned ACL. This ACL will be replaced by the
setBucketAcl()
// calls below. It is included here for demonstration purposes.
CreateBucketRequest createBucketRequest = new
CreateBucketRequest(bucketName, clientRegion.getName())
.withCannedAcl(CannedAccessControlList.LogDeliveryWrite);
s3Client.createBucket(createBucketRequest);

Versão da API 2006-03-01


452
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

// Create a collection of grants to add to the bucket.


ArrayList<Grant> grantCollection = new ArrayList<Grant>();

// Grant the account owner full control.


Grant grant1 = new Grant(new
CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl);
grantCollection.add(grant1);

// Grant the LogDelivery group permission to write to the bucket.


Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write);
grantCollection.add(grant2);

// Save grants by replacing all current ACL grants with the two we just
created.
AccessControlList bucketAcl = new AccessControlList();
bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0]));
s3Client.setBucketAcl(bucketName, bucketAcl);

// Retrieve the bucket's ACL, add another grant, and then save the new ACL.
AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName);
Grant grant3 = new Grant(new
EmailAddressGrantee(userEmailForReadPermission), Permission.Read);
newBucketAcl.grantAllPermissions(grant3);
s3Client.setBucketAcl(bucketName, newBucketAcl);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Example Atualizar ACL em um objeto existente


Este exemplo atualiza a ACL em um objeto. O exemplo realiza as seguintes tarefas:

• Recupera a ACL de um objeto


• Limpa a ACL removendo todas as permissões existentes
• Adiciona duas permissões: acesso total do proprietário, e WRITE_ACP (consulte Quais permissões
posso conceder? (p. 443)) para o usuário identificado por endereço de e-mail
• Salva a ACL no objeto

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.CanonicalGrantee;
import com.amazonaws.services.s3.model.EmailAddressGrantee;
import com.amazonaws.services.s3.model.Permission;

import java.io.IOException;

public class ModifyACLExistingObject {

Versão da API 2006-03-01


453
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Key name ***";
String emailGrantee = "*** [email protected] ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Get the existing object ACL that we want to modify.


AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName);

// Clear the existing list of grants.


acl.getGrantsAsList().clear();

// Grant a sample set of permissions, using the existing ACL owner for Full
Control permissions.
acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()),
Permission.FullControl);
acl.grantPermission(new EmailAddressGrantee(emailGrantee),
Permission.WriteAcp);

// Save the modified ACL back to the object.


s3Client.setObjectAcl(bucketName, keyName, acl);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Example Crie um bucket e especifique uma ACL pré-configurada que conceda permissão ao
grupo de entrega de logs do S3

Este exemplo do C# cria um bucket. Na solicitação, o código também especifica uma ACL padrão que
concede permissões ao grupo de Entrega de logs para gravar os logs no bucket.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Executar os exemplos de
código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class ManagingBucketACLTest
{
private const string newBucketName = "*** bucket name ***";

Versão da API 2006-03-01


454
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

// Specify your bucket region (an example region is shown).


private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
CreateBucketUseCannedACLAsync().Wait();
}

private static async Task CreateBucketUseCannedACLAsync()


{
try
{
// Add bucket (specify canned ACL).
PutBucketRequest putBucketRequest = new PutBucketRequest()
{
BucketName = newBucketName,
BucketRegion = S3Region.EUW1, // S3Region.US,
// Add canned ACL.
CannedACL = S3CannedACL.LogDeliveryWrite
};
PutBucketResponse putBucketResponse = await
client.PutBucketAsync(putBucketRequest);

// Retrieve bucket ACL.


GetACLResponse getACLResponse = await client.GetACLAsync(new
GetACLRequest
{
BucketName = newBucketName
});
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("S3 error occurred. Exception: " +
amazonS3Exception.ToString());
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
}
}
}
}

Example Atualizar ACL em um objeto existente

Este exemplo do C# atualiza a ACL em um objeto existente. O exemplo realiza as seguintes tarefas:

• Recupera a ACL de um objeto.


• Limpa a ACL removendo todas as permissões existentes.
• Adiciona duas permissões: acesso total do proprietário, e WRITE_ACP para o usuário identificado
por endereço de e-mail.
• Salva a ACL enviando uma solicitação PutAcl.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Executar os exemplos de
código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;

Versão da API 2006-03-01


455
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class ManagingObjectACLTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** object key name ***";
private const string emailAddress = "*** email address ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;
public static void Main()
{
client = new AmazonS3Client(bucketRegion);
TestObjectACLTestAsync().Wait();
}
private static async Task TestObjectACLTestAsync()
{
try
{
// Retrieve the ACL for the object.
GetACLResponse aclResponse = await client.GetACLAsync(new
GetACLRequest
{
BucketName = bucketName,
Key = keyName
});

S3AccessControlList acl = aclResponse.AccessControlList;

// Retrieve the owner (we use this to re-add permissions after we


clear the ACL).
Owner owner = acl.Owner;

// Clear existing grants.


acl.Grants.Clear();

// Add a grant to reset the owner's full permission (the previous


clear statement removed all permissions).
S3Grant fullControlGrant = new S3Grant
{
Grantee = new S3Grantee { CanonicalUser = owner.Id },
Permission = S3Permission.FULL_CONTROL

};

// Describe the grant for the permission using an email address.


S3Grant grantUsingEmail = new S3Grant
{
Grantee = new S3Grantee { EmailAddress = emailAddress },
Permission = S3Permission.WRITE_ACP
};
acl.Grants.AddRange(new List<S3Grant> { fullControlGrant,
grantUsingEmail });

// Set a new ACL.


PutACLResponse response = await client.PutACLAsync(new
PutACLRequest
{
BucketName = bucketName,
Key = keyName,
AccessControlList = acl
});

Versão da API 2006-03-01


456
Amazon Simple Storage Service Guia do usuário
Gerenciar o acesso com ACLs

}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("An AmazonS3Exception was thrown. Exception: " +
amazonS3Exception.ToString());
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
}
}
}
}

Uso dos REST API

As APIs do Amazon S3 permitem a definição de uma ACL quando você cria um bucket ou um objeto. O
Amazon S3 também fornece API para definir uma ACL em um bucket ou objeto existente. Estas APIs
oferecem os seguintes métodos para definir uma ACL:

• Definir ACL usando cabeçalhos de solicitação: ao enviar uma solicitação para criar um recurso (bucket
ou objeto), defina uma ACL usando os cabeçalhos de solicitação. Com esses cabeçalhos, você
pode especificar uma ACL pré-configurada ou especificar concessões explicitamente (identificando o
favorecido e as permissões de maneira explícita).
• Definir ACL usando o corpo da solicitação: ao enviar uma solicitação para definir uma ACL em um
recurso existente, defina a ACL no cabeçalho da solicitação ou no corpo.

Para obter informações sobre o suporte à API REST para gerenciar ACLs, consulte as seções a seguir na
Referência da API do Amazon Simple Storage Service:

• GET Bucket acl


• acl de PUT Bucket
• GET Object acl
• Put Object ACL (ACL de objeto PUT)
• Objeto PUT
• Bucket PUT
• Objeto PUT - Copiar
• Iniciar multipart upload

Lista de controle de acesso (ACL - Access Control List) - Cabeçalhos específicos de solicitação

Você pode usar cabeçalhos para conceder permissões baseadas em lista de controle de acesso (ACL).
Por padrão, todos os objetos são privados. Somente o proprietário tem controle total de acesso. Ao
adicionar um novo objeto, você pode conceder permissões a contas individuais da AWS ou a grupos
predefinidos definidos pelo Amazon S3. Depois essas permissões são adicionadas à lista de controle de
acesso (ACL) no objeto. Para obter mais informações, consulte Visão geral da lista de controle de acesso
(ACL) (p. 440).

Com esta operação, você pode conceder permissões de acesso usando um destes dois métodos:

• Canned ACL (x-amz-acl) (ACL pré-configurada) — O Amazon S3 oferece suporte a um conjunto


de ACLs predefinidas, conhecidas como ACLs pré-configuradas. Cada ACL pré-configurada tem um
conjunto predefinido de concessões e permissões. Para obter mais informações, consulte ACL pré-
configurada (p. 446).

Versão da API 2006-03-01


457
Amazon Simple Storage Service Guia do usuário
Usar o CORS

• Access Permissions (Permissões de acesso) — Para conceder explicitamente permissões de acesso


a contas ou grupos específicos da AWS, use os seguintes cabeçalhos. Cada cabeçalho mapeia para
permissões específicas compatíveis com o Amazon S3 em uma ACL. Para obter mais informações,
consulte Visão geral da lista de controle de acesso (ACL) (p. 440). No cabeçalho, você especifica uma
lista de favorecidos que obtêm a permissão específica.
• x-amz-grant-read
• x-amz-grant-write
• x-amz-grant-read-acp
• x-amz-grant-write-acp
• x-amz-grant-full-control

Usar a CLI da AWS

Para obter mais informações sobre como gerenciar ACLs usando a CLI da AWS, consulte put-bucket-acl
na Referência de comando da CLI da AWS.

Usar o compartilhamento de recursos de origem


cruzada (CORS)
O compartilhamento de recursos de origem cruzada (CORS) define uma maneira de os aplicativos web
clientes carregados em um domínio interagirem com recursos em outro domínio. Com o suporte do CORS,
você pode criar aplicações web no lado do cliente com o Amazon S3 e permitir seletivamente o acesso de
origem cruzada aos seus recursos do Amazon S3.

Esta seção fornece uma visão geral do CORS. Os subtópicos descrevem como você pode ativar o CORS
usando o console do Amazon S3 ou, programaticamente, usando a API REST do Amazon S3 e os AWS
SDKs.

Compartilhamento de recursos de origem cruzada: cenários de


caso de uso
Veja a seguir exemplos de cenário de uso do CORS:

Cenário 1

Suponha que você esteja hospedando um site em um bucket do Amazon S3 chamado website como
descrito em Hospedagem de um site estático usando o Amazon S3 (p. 945). Os usuários carregam o
endpoint de site.

http://website.s3-website.us-east-1.amazonaws.com

Agora você quer usar JavaScript nas páginas da web armazenadas nesse bucket para fazer solicitações
GET e PUT autenticadas no mesmo bucket usando o endpoint da API do Amazon S3 para o bucket
website.s3.us-east-1.amazonaws.com. Um navegador normalmente impediria que o JavaScript
permitisse essas solicitações. No entanto, com CORS, é possível configurar seu bucket para permitir
explicitamente solicitações de origem cruzada de website.s3-website.us-east-1.amazonaws.com.

Cenário 2

Suponha que você queira hospedar uma fonte web de seu bucket do S3. Mais uma vez, os navegadores
exigem uma verificação de CORS (também chamada de verificação de simulação) para carregar fontes
web. Assim, é preciso configurar o bucket que está hospedando a fonte web para permitir que qualquer
origem faça essas solicitações.

Versão da API 2006-03-01


458
Amazon Simple Storage Service Guia do usuário
Usar o CORS

Como o Amazon S3 avalia a configuração de CORS em um


bucket?
Quando o Amazon S3 recebe uma solicitação de simulação de um navegador, ele avalia a configuração
de CORS para o bucket e usa a primeira regra CORSRule que corresponde à solicitação de entrada do
navegador para permitir uma solicitação de origem cruzada. Para que uma regra seja correspondente, as
seguintes condições devem ser satisfeitas:

• O cabeçalho Origin da solicitação deve corresponder a um elemento AllowedOrigin.


• O método de solicitação (por exemplo, GET ou PUT) ou o cabeçalho Access-Control-
Request-Method no caso de uma solicitação de simulação OPTIONS deve ser um dos elementos
AllowedMethod.
• Cada cabeçalho listado no cabeçalho Access-Control-Request-Headers da solicitação de
simulação deve corresponder a um elemento AllowedHeader.

Note

As ACLs e políticas continuam sendo aplicadas quando você ativa o CORS no bucket.

Para obter mais informações sobre como usar o CORS, consulte os tópicos a seguir.

Tópicos
• Configuração de CORS (p. 459)
• Configurar o compartilhamento de recursos de origem cruzada (CORS) (p. 463)
• Solução de problemas do CORS (p. 469)

Configuração de CORS
Para configurar seu bucket para permitir solicitações de origem cruzada, crie uma configuração CORS.
Uma configuração CORS é um documento com regras que identificam as origens que você permitirá que
acessem seu bucket, as operações (métodos HTTP) compatíveis com cada origem e outras informações
específicas da operação. Você pode adicionar até 100 regras à configuração. Você pode adicionar a
configuração CORS como o sub-recurso cors ao bucket.

Se você estiver configurando o CORS no console do S3, use o JSON para criar uma configuração CORS.
O novo console do S3 oferece suporte somente a configurações JSON CORS.

Para obter mais informações sobre a configuração de CORS e os elementos nele, consulte os tópicos a
seguir. Para obter instruções sobre como adicionar uma configuração de CORS, consulte Configurar o
compartilhamento de recursos de origem cruzada (CORS) (p. 463).
Important

No novo console do S3, a configuração CORS deve ser JSON.

Tópicos
• Exemplo 1 (p. 460)
• Exemplo 2 (p. 461)
• Elemento AllowedMethod (p. 462)
• Elemento AllowedOrigin (p. 462)
• Elemento AllowedHeader (p. 462)

Versão da API 2006-03-01


459
Amazon Simple Storage Service Guia do usuário
Usar o CORS

• Elemento ExposeHeader (p. 463)


• Elemento MaxAgeSeconds (p. 463)

Exemplo 1
Em vez de acessar um site usando um endpoint do Amazon S3, você pode usar seu próprio domínio,
como example1.com para distribuir seu conteúdo. Para obter informações sobre como usar seu próprio
domínio, consulte Configurar um site estático usando um domínio personalizado registrado no Route
53 (p. 973).

A configuração de exemplo cors a seguir tem três regras especificadas como elementos CORSRule:

• A primeira regra permite solicitações PUT, POST e DELETE de origem cruzada da origem http://
www.example1.com. A regra também permite todos os cabeçalhos em uma solicitação OPTIONS de
simulação por meio do cabeçalho Access-Control-Request-Headers. Em resposta a solicitações
OPTIONS de simulação, o Amazon S3 retorna cabeçalhos solicitados.
• A segunda regra permite as mesmas solicitações de origem cruzada da primeira regra, mas a regra se
aplica a outra origem, http://www.example2.com.
• A terceira regra permite solicitações GET de origem cruzada de todas as origens. O caractere curinga *
refere-se a todas as origens.

JSON

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example1.com"
],
"ExposeHeaders": []
},
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example2.com"
],
"ExposeHeaders": []
},
{
"AllowedHeaders": [],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"

Versão da API 2006-03-01


460
Amazon Simple Storage Service Guia do usuário
Usar o CORS

],
"ExposeHeaders": []
}
]

XML

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example1.com</AllowedOrigin>

<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>

<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://www.example2.com</AllowedOrigin>

<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>

<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

Exemplo 2
A configuração de CORS também permite parâmetros de configuração opcionais, conforme exibido na
configuração de CORS a seguir. Neste exemplo, a configuração de CORS permite solicitações PUT, POST
e DELETE de origem cruzada da origem http://www.example.com.

JSON

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example.com"
],
"ExposeHeaders": [
"x-amz-server-side-encryption",
"x-amz-request-id",
"x-amz-id-2"
],
"MaxAgeSeconds": 3000
}
]

Versão da API 2006-03-01


461
Amazon Simple Storage Service Guia do usuário
Usar o CORS

XML

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-server-side-encryption</
ExposeHeader>
<ExposeHeader>x-amz-request-id</
ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
</CORSRule>
</CORSConfiguration>

O elemento CORSRule na configuração anterior inclui os seguintes elementos opcionais:

• MaxAgeSeconds: Especifica o tempo em segundos (neste exemplo, 3000) que o navegador armazena
em cache uma resposta do Amazon S3 a uma solicitação OPTIONS de simulação para o recurso
especificado. Armazenando a resposta em cache, o navegador não precisará enviar solicitações de
simulação ao Amazon S3, caso a solicitação original seja repetida.
• ExposeHeader — Identifica os cabeçalhos de resposta (neste exemplo, x-amz-server-side-
encryption, x-amz-request-id e x-amz-id-2) que os clientes podem acessar de seus aplicativos
(por exemplo, de um objeto JavaScript XMLHttpRequest).

Elemento AllowedMethod
Na configuração de CORS, você pode especificar os seguintes valores para o elemento AllowedMethod.

• GET
• PUT
• POST
• DELETE
• HEAD

Elemento AllowedOrigin
No elemento AllowedOrigin, você especifica as origens das quais deseja permitir solicitações de
domínio cruzado, por exemplo, http://www.example.com. A string de origem pode conter somente
um caractere curinga *, como http://*.example.com. É possível especificar * como a origem para
permitir que todas as origens enviem solicitações de origem cruzada. Você também pode especificar
https para permitir somente origens confiáveis.

Elemento AllowedHeader
O elemento AllowedHeader especifica quais cabeçalhos são permitidos em uma solicitação de
simulação por meio do cabeçalho Access-Control-Request-Headers. Cada nome no cabeçalho
Access-Control-Request-Headers deve coincidir com uma entrada correspondente na regra. O
Amazon S3 enviará somente os cabeçalhos permitidos que foram solicitados em uma resposta. Para obter
uma lista de exemplos de cabeçalhos que podem ser usados em solicitações para o Amazon S3, acesse
Cabeçalhos de solicitação comuns no guia de Referência da API do Amazon Simple Storage Service.

Versão da API 2006-03-01


462
Amazon Simple Storage Service Guia do usuário
Usar o CORS

Cada string de AllowedHeader na regra pode conter no máximo um caractere curinga *. Por exemplo,
<AllowedHeader>x-amz-*</AllowedHeader> permitirá todos os cabeçalhos específicos da Amazon.

Elemento ExposeHeader
Cada elemento ExposeHeader identifica um cabeçalho na resposta que você deseja que os clientes
acessem de seus aplicativos (por exemplo, de um objeto JavaScript XMLHttpRequest). Para obter uma
lista de cabeçalhos de resposta comuns do Amazon S3, acesse Cabeçalhos de resposta comuns no guia
de Referência da API do Amazon Simple Storage Service .

Elemento MaxAgeSeconds
O elemento MaxAgeSeconds especifica o tempo em segundos que seu navegador pode armazenar em
cache a resposta para uma solicitação de simulação conforme identificado pelo recurso, pelo método
HTTP e pela origem.

Configurar o compartilhamento de recursos de origem cruzada


(CORS)
O compartilhamento de recursos de origem cruzada (CORS) define uma maneira de os aplicativos web
clientes carregados em um domínio interagirem com recursos em outro domínio. Com o suporte do CORS,
você pode criar aplicações web no lado do cliente com o Amazon S3 e permitir seletivamente o acesso de
origem cruzada aos seus recursos do Amazon S3.

Esta seção mostra como habilitar o CORS usando o console do Amazon S3, a API REST do Amazon
S3 e os AWS SDKs. Para configurar seu bucket para permitir solicitações de origem cruzada, adicione
uma configuração de CORS ao bucket. Uma configuração CORS é um documento que define regras
que identificam as origens que você permitirá que acessem seu bucket, as operações (métodos HTTP)
compatíveis para cada origem e outras informações específicas da operação. No console do S3, a
configuração CORS deve ser um documento JSON.

Para obter exemplos de configurações de CORS em JSON e XML, consulte Configuração de


CORS (p. 459).

Usar o console do S3

Esta seção explica como usar o console do Amazon S3 para adicionar uma configuração de
compartilhamento de recursos de origem cruzada (CORS) para um bucket do S3.

Quando você permitir o CORS no bucket, as listas de controle de acesso (ACLs) e outras políticas de
permissão de acesso continuarão sendo aplicadas.
Important

No novo console do S3, a configuração CORS deve ser JSON. Para obter exemplos de
configurações de CORS em JSON e XML, consulte Configuração de CORS (p. 459).

Para adicionar uma configuração CORS a um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja criar uma política de bucket.
3. Escolha Permissions (Permissões).
4. Na seção Cross-origin resource sharing (CORS) (Compartilhamento de recursos de origem cruzada
(CORS)) escolha Edit (Editar).
5. Na caixa de texto CORS configuration editor (Editor de configuração CORS), digite ou copie e cole
uma nova configuração CORS, ou edite uma configuração existente.

Versão da API 2006-03-01


463
Amazon Simple Storage Service Guia do usuário
Usar o CORS

A configuração de CORS é um arquivo JSON. O texto que você digita no editor deve ser um JSON
válido. Para obter mais informações, consulte Configuração de CORS (p. 459).
6. Selecione Save changes.
Note

O Amazon S3 exibe o Nome de recurso da Amazon (ARN) para o bucket próximo ao título
CORS configuration editor (Editor de configuração CORS). Para obter mais informações
sobre ARNs, consulte Nomes de recurso da Amazon (ARNs) e namespaces do serviço da
AWS na Referência geral da Amazon Web Services.

Uso dos AWS SDKs


Você pode usar o AWS SDK para gerenciar o CORS para um bucket. Para obter mais informações sobre
CORS, consulte Usar o compartilhamento de recursos de origem cruzada (CORS) (p. 458).

Veja os seguintes exemplos:

• Cria uma configuração do CORS e define a configuração em um bucket


• Recupera a configuração e a altera adicionando uma regra
• Adiciona a configuração modificada ao bucket
• Exclui a configuração

Java

Example

Example
Para obter instruções sobre como criar e testar um exemplo funcional, consulte Testar exemplos de
código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.BucketCrossOriginConfiguration;
import com.amazonaws.services.s3.model.CORSRule;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CORS {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

// Create two CORS rules.


List<CORSRule.AllowedMethods> rule1AM = new
ArrayList<CORSRule.AllowedMethods>();
rule1AM.add(CORSRule.AllowedMethods.PUT);
rule1AM.add(CORSRule.AllowedMethods.POST);
rule1AM.add(CORSRule.AllowedMethods.DELETE);

Versão da API 2006-03-01


464
Amazon Simple Storage Service Guia do usuário
Usar o CORS

CORSRule rule1 = new CORSRule().withId("CORSRule1").withAllowedMethods(rule1AM)


.withAllowedOrigins(Arrays.asList("http://*.example.com"));

List<CORSRule.AllowedMethods> rule2AM = new


ArrayList<CORSRule.AllowedMethods>();
rule2AM.add(CORSRule.AllowedMethods.GET);
CORSRule rule2 = new CORSRule().withId("CORSRule2").withAllowedMethods(rule2AM)
.withAllowedOrigins(Arrays.asList("*")).withMaxAgeSeconds(3000)
.withExposedHeaders(Arrays.asList("x-amz-server-side-encryption"));

List<CORSRule> rules = new ArrayList<CORSRule>();


rules.add(rule1);
rules.add(rule2);

// Add the rules to a new CORS configuration.


BucketCrossOriginConfiguration configuration = new
BucketCrossOriginConfiguration();
configuration.setRules(rules);

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Add the configuration to the bucket.


s3Client.setBucketCrossOriginConfiguration(bucketName, configuration);

// Retrieve and display the configuration.


configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
printCORSConfiguration(configuration);

// Add another new rule.


List<CORSRule.AllowedMethods> rule3AM = new
ArrayList<CORSRule.AllowedMethods>();
rule3AM.add(CORSRule.AllowedMethods.HEAD);
CORSRule rule3 = new
CORSRule().withId("CORSRule3").withAllowedMethods(rule3AM)
.withAllowedOrigins(Arrays.asList("http://www.example.com"));

rules = configuration.getRules();
rules.add(rule3);
configuration.setRules(rules);
s3Client.setBucketCrossOriginConfiguration(bucketName, configuration);

// Verify that the new rule was added by checking the number of rules in
the configuration.
configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
System.out.println("Expected # of rules = 3, found " +
configuration.getRules().size());

// Delete the configuration.


s3Client.deleteBucketCrossOriginConfiguration(bucketName);
System.out.println("Removed CORS configuration.");

// Retrieve and display the configuration to verify that it was


// successfully deleted.
configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
printCORSConfiguration(configuration);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.

Versão da API 2006-03-01


465
Amazon Simple Storage Service Guia do usuário
Usar o CORS

e.printStackTrace();
}
}

private static void printCORSConfiguration(BucketCrossOriginConfiguration


configuration) {
if (configuration == null) {
System.out.println("Configuration is null.");
} else {
System.out.println("Configuration has " + configuration.getRules().size() +
" rules\n");

for (CORSRule rule : configuration.getRules()) {


System.out.println("Rule ID: " + rule.getId());
System.out.println("MaxAgeSeconds: " + rule.getMaxAgeSeconds());
System.out.println("AllowedMethod: " + rule.getAllowedMethods());
System.out.println("AllowedOrigins: " + rule.getAllowedOrigins());
System.out.println("AllowedHeaders: " + rule.getAllowedHeaders());
System.out.println("ExposeHeader: " + rule.getExposedHeaders());
System.out.println();
}
}
}
}

.NET

Example

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class CORSTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main()


{
s3Client = new AmazonS3Client(bucketRegion);
CORSConfigTestAsync().Wait();
}
private static async Task CORSConfigTestAsync()
{
try
{
// Create a new configuration request and add two rules
CORSConfiguration configuration = new CORSConfiguration
{
Rules = new System.Collections.Generic.List<CORSRule>
{
new CORSRule

Versão da API 2006-03-01


466
Amazon Simple Storage Service Guia do usuário
Usar o CORS

{
Id = "CORSRule1",
AllowedMethods = new List<string> {"PUT", "POST",
"DELETE"},
AllowedOrigins = new List<string> {"http://*.example.com"}
},
new CORSRule
{
Id = "CORSRule2",
AllowedMethods = new List<string> {"GET"},
AllowedOrigins = new List<string> {"*"},
MaxAgeSeconds = 3000,
ExposeHeaders = new List<string> {"x-amz-server-side-
encryption"}
}
}
};

// Add the configuration to the bucket.


await PutCORSConfigurationAsync(configuration);

// Retrieve an existing configuration.


configuration = await RetrieveCORSConfigurationAsync();

// Add a new rule.


configuration.Rules.Add(new CORSRule
{
Id = "CORSRule3",
AllowedMethods = new List<string> { "HEAD" },
AllowedOrigins = new List<string> { "http://www.example.com" }
});

// Add the configuration to the bucket.


await PutCORSConfigurationAsync(configuration);

// Verify that there are now three rules.


configuration = await RetrieveCORSConfigurationAsync();
Console.WriteLine();
Console.WriteLine("Expected # of rulest=3; found:{0}",
configuration.Rules.Count);
Console.WriteLine();
Console.WriteLine("Pause before configuration delete. To continue,
click Enter...");
Console.ReadKey();

// Delete the configuration.


await DeleteCORSConfigurationAsync();

// Retrieve a nonexistent configuration.


configuration = await RetrieveCORSConfigurationAsync();
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

static async Task PutCORSConfigurationAsync(CORSConfiguration configuration)


{

Versão da API 2006-03-01


467
Amazon Simple Storage Service Guia do usuário
Usar o CORS

PutCORSConfigurationRequest request = new PutCORSConfigurationRequest


{
BucketName = bucketName,
Configuration = configuration
};

var response = await s3Client.PutCORSConfigurationAsync(request);


}

static async Task<CORSConfiguration> RetrieveCORSConfigurationAsync()


{
GetCORSConfigurationRequest request = new GetCORSConfigurationRequest
{
BucketName = bucketName

};
var response = await s3Client.GetCORSConfigurationAsync(request);
var configuration = response.Configuration;
PrintCORSRules(configuration);
return configuration;
}

static async Task DeleteCORSConfigurationAsync()


{
DeleteCORSConfigurationRequest request = new DeleteCORSConfigurationRequest
{
BucketName = bucketName
};
await s3Client.DeleteCORSConfigurationAsync(request);
}

static void PrintCORSRules(CORSConfiguration configuration)


{
Console.WriteLine();

if (configuration == null)
{
Console.WriteLine("\nConfiguration is null");
return;
}

Console.WriteLine("Configuration has {0} rules:",


configuration.Rules.Count);
foreach (CORSRule rule in configuration.Rules)
{
Console.WriteLine("Rule ID: {0}", rule.Id);
Console.WriteLine("MaxAgeSeconds: {0}", rule.MaxAgeSeconds);
Console.WriteLine("AllowedMethod: {0}", string.Join(", ",
rule.AllowedMethods.ToArray()));
Console.WriteLine("AllowedOrigins: {0}", string.Join(", ",
rule.AllowedOrigins.ToArray()));
Console.WriteLine("AllowedHeaders: {0}", string.Join(", ",
rule.AllowedHeaders.ToArray()));
Console.WriteLine("ExposeHeader: {0}", string.Join(", ",
rule.ExposeHeaders.ToArray()));
}
}
}
}

Uso dos REST API


Para definir uma configuração CORS no bucket, use o Console de Gerenciamento da AWS. Se o seu
aplicativo exigir, você também pode enviar solicitações REST diretamente. As seções a seguir na

Versão da API 2006-03-01


468
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Referência da API do Amazon Simple Storage Service descrevem as ações da API REST relacionadas à
configuração CORS:

• PutBucketCors
• GetBucketCors
• DeleteBucketCors
• Objeto OPTIONS

Solução de problemas do CORS


Se você encontrar um comportamento inesperado ao acessar os buckets definidos com a configuração de
CORS, tente usar as etapas a seguir para resolver o problema:

1. Verifique se a configuração de CORS está definida no bucket.

Se a configuração CORS estiver definida, o console exibirá um link Edit CORS Configuration (Editar
configuração CORS) na seção Permissions (Permissões) do bucket Properties (Propriedades).
2. Capture a solicitação e a resposta completas usando uma ferramenta de sua escolha. Para cada
solicitação que o Amazon S3 recebe, deve existir uma regra CORS que corresponda aos dados na
solicitação, da seguinte maneira:
a. Verifique se a solicitação tem o cabeçalho de origem.

Se o cabeçalho estiver ausente, o Amazon S3 não tratará a solicitação como uma solicitação de
origem cruzada e não enviará cabeçalhos de resposta de CORS na resposta.
b. Verifique se o cabeçalho de origem na solicitação corresponde a pelo menos um dos elementos
AllowedOrigin na CORSRule especificada.

O esquema, o host e dos valores de porta no cabeçalho da solicitação de origem devem


corresponder a elementos AllowedOrigin na CORSRule. Por exemplo, se você tiver definido
a CORSRule para permitir a origem http://www.example.com, as origens https://
www.example.com e http://www.example.com:80 da solicitação não corresponderão à origem
permitida na configuração.
c. Verifique se o método na solicitação (ou, em uma solicitação de simulação, o método especificado
em Access-Control-Request-Method) é um dos elementos AllowedMethod na mesma
CORSRule.
d. Para uma solicitação de simulação, se a solicitação incluir um cabeçalho Access-Control-
Request-Headers, verifique se CORSRule inclui as entradas AllowedHeader para cada valor no
cabeçalho Access-Control-Request-Headers header.

Bloquear o acesso público ao armazenamento do


Amazon S3
O recurso Bloqueio de acesso público do Amazon S3 fornece configurações para pontos de acesso,
buckets e contas para ajudar você a gerenciar o acesso público aos recursos do Amazon S3. Por padrão,
novos buckets, pontos de acesso e objetos não permitem acesso público. No entanto, os usuários podem
modificar políticas de bucket, políticas de ponto de acesso ou permissões de objeto para permitir acesso
público. As configurações do Bloqueio de acesso público do S3 substituem essas políticas e permissões,
de maneira que seja possível limitar o acesso público a esses recursos.

Com o Bloqueio de acesso público do S3, os administradores de conta e os proprietários de bucket podem
configurar facilmente os controles centralizados impostos para limitar o acesso público aos recursos do
Amazon S3, independentemente de como os recursos são criados.
Versão da API 2006-03-01
469
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Ao receber uma solicitação para acessar um bucket ou um objeto, o Amazon S3 determina se o bucket
ou a conta do proprietário do bucket tem uma configuração do Bloqueio de acesso público aplicada. Se a
solicitação foi feita por meio de um ponto de acesso, o Amazon S3 também verificará se há configurações
do Bloqueio de acesso público para o ponto de acesso. Caso haja uma configuração do Bloqueio de
acesso público que proíba o acesso solicitado, o Amazon S3 rejeitará a solicitação.

O Bloqueio de acesso público do Amazon S3 fornece quatro configurações. Essas configurações são
independentes e podem ser usadas em qualquer combinação. Cada configuração pode ser aplicada a um
ponto de acesso, a um bucket ou a uma conta inteira da AWS. Se as configurações do Bloqueio de acesso
público para o ponto de acesso, o bucket ou a conta forem diferentes, o Amazon S3 aplicará a combinação
mais restritiva das configurações de ponto de acesso, bucket e conta.

Quando o Amazon S3 avalia se uma operação é proibida por uma configuração do Bloqueio de acesso
público, ela rejeita qualquer solicitação que viole uma configuração de ponto de acesso, bucket ou conta.
Warning

O acesso público aos buckets e objetos é concedido através de listas de controle de acesso
(ACLs), políticas de ponto de acesso, políticas de bucket ou todos. Para garantir que todos os
seus pontos de acesso, buckets e objetos do Amazon S3 tenham o acesso público bloqueado,
recomendamos ativar as quatro configurações de bloqueio de acesso público na sua conta.
Estas configurações bloqueiam o acesso público a todos os buckets e pontos de acesso atuais e
futuros.
Antes de aplicar estas configurações, verifique se seus aplicativos funcionarão corretamente
sem acesso público. Se você precisa de um certo nível de acesso público aos seus buckets ou
objetos, por exemplo, para hospedar um site estático como descrito em Hospedagem de um site
estático usando o Amazon S3 (p. 945), é possível personalizar as configurações individualmente
conforme cada caso de uso de armazenamento.
Note

• Você pode habilitar as configurações de bloqueio de acesso público somente para pontos de
acesso, buckets e contas da AWS. O Amazon S3 não oferece suporte a configurações de
bloqueio de acesso público por objeto.
• Quando você aplica configurações do Bloqueio de acesso público a uma conta, as
configurações se aplicam a todas as regiões da AWS globalmente. As configurações talvez
não entrem em vigor em todas as regiões imediata ou simultaneamente, mas acabam se
propagando para todas as regiões.

Tópicos
• Configurações do bloqueio de acesso público (p. 470)
• Executar operações de bloqueio de acesso público em um ponto de acesso (p. 472)
• O significado de "público" (p. 473)
• Usar o Analisador de acesso para S3 para revisar buckets públicos (p. 475)
• Permissões (p. 475)
• Configurar o bloqueio de acesso público (p. 476)
• Configurar o bloqueio de acesso público para sua conta (p. 476)
• Configurar o bloqueio de acesso público para seus buckets do S3 (p. 478)

Configurações do bloqueio de acesso público


O Bloqueio de acesso público do S3 fornece quatro configurações. É possível aplicar essas configurações
em qualquer combinação a pontos de acesso individuais, a buckets ou a contas da AWS inteiras. Caso
você aplique uma configuração a uma conta, ela se aplica a todos os buckets e pontos de acesso de

Versão da API 2006-03-01


470
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

propriedade dessa conta. Da mesma forma, se você aplicar uma configuração a um bucket, ela se aplicará
a todos os pontos de acesso associados a esse bucket.

A tabela a seguir contém as configurações disponíveis.

Nome Descrição

BlockPublicAcls A definição dessa opção como TRUE causa o seguinte comportamento:

• As chamadas PUT Bucket acl e PUT Object falharão se a Access Control List
(ACL – Lista de controle de acesso) especificada for pública.
• As chamadas PUT Object falharão se a solicitação incluir uma ACL pública.
• Se essa configuração for aplicada a uma conta, as chamadas PUT Bucket
falharão se a solicitação incluir uma ACL pública.

Quando essa configuração for definida como TRUE, as operações especificadas


falharão (sejam feitas por meio da API REST, da CLI da AWS ou dos SDKs da
AWS). Porém, as políticas e as ACLs existentes para buckets e objetos não são
modificadas. Essa configuração permite se proteger contra acesso público ao
mesmo tempo em que permite auditar, refinar ou alterar as políticas e as ACLs
existentes para os buckets e os objetos.
Note

Os pontos de acesso não têm ACLs associadas a eles. Se você


aplicar essa configuração a um ponto de acesso, ela atuará como uma
passagem para o bucket subjacente. Se um ponto de acesso tiver
essa configuração ativada, as solicitações feitas por meio do ponto
de acesso se comportam como se o bucket subjacente tivesse essa
configuração ativada, independentemente de o bucket realmente ter
essa configuração ativada.

IgnorePublicAcls A definição dessa opção como TRUE faz o Amazon S3 ignorar todas as ACLs
públicas em um bucket e todos os objetos contidos. Essa configuração permite
bloquear com segurança acesso público concedido por ACLs ao mesmo tempo
em que permite chamadas PUT Object que incluam uma ACL pública (ao
contrário de BlockPublicAcls, que rejeita chamadas PUT Object que incluam
uma ACL pública). A habilitação dessa configuração não afeta a persistência de
ACLs existentes nem evita a definição de novas ACLs públicas.
Note

Os pontos de acesso não têm ACLs associadas a eles. Se você


aplicar essa configuração a um ponto de acesso, ela atuará como uma
passagem para o bucket subjacente. Se um ponto de acesso tiver
essa configuração ativada, as solicitações feitas por meio do ponto
de acesso se comportam como se o bucket subjacente tivesse essa
configuração ativada, independentemente de o bucket realmente ter
essa configuração ativada.

BlockPublicPolicy Definir esta opção como TRUE para um bucket faz com que o Amazon S3 rejeite
chamadas para a política PUT de bucket, se a política de bucket especificada
permitir acesso público, e rejeite chamadas para a política PUT de ponto de
acesso para todos os pontos de acesso do bucket, se a política especificada
permitir acesso público. Definir esta opção como TRUE para um ponto de acesso
faz com que o Amazon S3 rejeite chamadas para a política PUT de ponto de
acesso e a política PUT de bucket que são feitas por meio do ponto de acesso,

Versão da API 2006-03-01


471
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Nome Descrição
se a política especificada (para o ponto de acesso ou para o bucket subjacente)
for pública.

Essa configuração permite que os usuários gerenciem políticas de ponto de


acesso e bucket sem permitir que compartilhem publicamente o bucket ou os
objetos contidos. Habilitar essa configuração não afeta as políticas de ponto de
acesso ou de bucket existentes.
Important

Para usar essa configuração de maneira efetiva, aplique-a no nível da


conta. Uma política de bucket pode permitir que os usuários alterem as
configurações do Bloqueio de acesso público de um bucket. Portanto, os
usuários com permissão para alterar a política de bucket podem inserir
uma política que os permita desabilitar as configurações do Bloqueio de
acesso público do bucket. Caso essa configuração esteja habilitada para
toda a conta, em vez de um bucket específico, o Amazon S3 bloqueia
as políticas públicas, mesmo que um usuário altere a política de bucket
para desabilitar essa configuração.

A definição dessa opção como TRUE restringe o acesso a um ponto de acesso


RestrictPublicBuckets
ou a um bucket com uma política pública apenas a principais de serviços da
AWS e a usuários autorizados dentro da conta do proprietário do bucket. Essa
definição bloqueia todo o acesso entre contas ao ponto de acesso ou ao bucket
(exceto por principais de serviços da AWS), ao mesmo tempo que continua
permitindo que usuários dentro da conta gerenciem o ponto de acesso ou o
bucket.

A ativação dessa configuração não afeta políticas de ponto de acesso ou bucket


existentes, exceto se o Amazon S3 bloquear os acessos público e entre contas
derivados de qualquer política pública de ponto de acesso ou bucket, inclusive
delegação não pública a contas específicas.

Important

• As chamadas para GET Bucket acl e GET Object acl sempre retornam as permissões efetivas
implantadas para o bucket ou o objeto especificado. Por exemplo, suponhamos que um bucket
tenha uma ACL que conceda acesso público, mas o bucket também tenha a configuração
IgnorePublicAcls habilitada. Nesse caso, GET Bucket acl retorna uma ACL refletindo as
permissões de acesso que o Amazon S3 está impondo, em vez da ACL real associada ao
bucket.
• As configurações do Bloqueio de acesso público não alteram as políticas ou ACLs existentes.
Portanto, a remoção de uma configuração do Bloqueio de acesso público disponibiliza
novamente um bucket ou um objeto com uma política pública ou uma ACL.

Executar operações de bloqueio de acesso público em um ponto


de acesso
Para realizar operações do Bloqueio de acesso público em um ponto de acesso, use o serviço s3control
da CLI da AWS. Observe que não é possível alterar as configurações do Bloqueio de acesso público de
um ponto de acesso após ele ser criado. Assim, a única maneira de especificar configurações do Bloqueio
de acesso público para um ponto de acesso é incluí-las ao criar o ponto de acesso.

Versão da API 2006-03-01


472
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

O significado de "público"
Buckets
ACLs
O Amazon S3 considerará uma ACL de bucket de objeto pública se ela conceder alguma permissão
a membros dos grupos AllUsers ou AuthenticatedUsers predefinidos. Para obter mais
informações sobre grupos predefinidos, consulte Grupos predefinidos do Amazon S3 (p. 442).
Políticas
Ao avaliar uma política de bucket, o Amazon S3 começa presumindo que a política é pública.
Em seguida, ele avalia a política para determinar se ela se qualifica como não pública. Para ser
considerada não pública, uma política de bucket só deve conceder acesso a valores fixos (valores que
não contenham um curinga) de um ou mais dos seguintes:
• Um conjunto de Classless Inter-Domain Routings (CIDRs – Roteamentos sem classe entre
domínios) que use aws:SourceIp. Para obter mais informações sobre o CIDR, consulte RFC 4632
no site RFC Editor.
• Um principal, um usuário, uma função ou um principal do serviço da AWS (por exemplo,
aws:PrincipalOrgID)
• aws:SourceArn
• aws:SourceVpc
• aws:SourceVpce
• aws:SourceOwner
• aws:SourceAccount
• s3:x-amz-server-side-encryption-aws-kms-key-id
• aws:userid, fora do padrão "AROLEID:*"
• s3:DataAccessPointArn
Note

Quando usado em uma política de bucket, esse valor pode conter um curinga
para o nome do ponto de acesso sem tornar a política pública, desde que o
ID da conta seja corrigido. Por exemplo, permitir acesso a arn:aws:s3:us-
west-2:123456789012:accesspoint/* permitiria o acesso a qualquer ponto de
acesso associado à conta 123456789012 na região us-west-2, sem tornar pública a
política de bucket. Observe que esse comportamento é diferente para políticas de ponto de
acesso. Para obter mais informações, consulte Pontos de acesso (p. 475).
• s3:DataAccessPointAccount
Nessas regras, as políticas de exemplo a seguir são consideradas públicas.

{
"Principal": { "Federated": "graph.facebook.com" },
"Resource": "*",
"Action": "s3:PutObject",
"Effect": "Allow"
}

{
"Principal": "*",
"Resource": "*",
"Action": "s3:PutObject",
"Effect": "Allow"
}
Versão da API 2006-03-01
473
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

{
"Principal": "*",
"Resource": "*",
"Action": "s3:PutObject",
"Effect": "Allow",
"Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}}
}

É possível tornar essas políticas não públicas com a inclusão de alguma das chaves de condição
listadas anteriormente usando-se um valor fixo. Por exemplo, a última política acima pode se tornar
não pública com a definição de aws:SourceVpc como um valor fixo como o seguinte.

{
"Principal": "*",
"Resource": "*",
"Action": "s3:PutObject",
"Effect": "Allow",
"Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}}
}

Para obter mais informações sobre políticas de bucket, consulte Políticas de bucket e políticas de
usuário (p. 268).

Exemplo

Este exemplo mostra como o Amazon S3 avalia uma política de bucket que contém concessões de acesso
público e não público.

Suponhamos que um bucket tenha uma política que conceda acesso a um conjunto de entidades
principais fixas. Segundo as regras descritas anteriormente, essa política não é pública. Por isso, se
você habilitar a configuração RestrictPublicBuckets, a política permanecerá em vigor como escrita,
porque RestrictPublicBuckets só se aplica a buckets que tenham políticas públicas. No entanto, se
você adicionar uma instrução pública à política, o RestrictPublicBuckets será ativado no bucket.
Isso permite que somente principais de serviço da AWS e usuários autorizados da conta do proprietário do
bucket acessem o bucket.

Como exemplo, suponhamos que um bucket de propriedade de "Account-1" tenha uma política que
contenha o seguinte:

1. Uma instrução que concede acesso ao AWS CloudTrail (que é uma entidade principal de serviço da
AWS)
2. Uma instrução que conceda acesso à conta "Account-2"
3. Uma instrução que conceda acesso ao público, por exemplo, especificando "Principal": "*" sem
limitação de Condition

Essa política é qualificada como pública por causa da terceira instrução. Com essa política implementada
e RestrictPublicBuckets ativado, o Amazon S3 permite o acesso somente pelo CloudTrail. Embora
a instrução 2 não seja pública, o Amazon S3 desabilita o acesso de "Account-2". Isso porque a instrução
3 renderiza toda a política pública. Assim, RestrictPublicBuckets se aplica. Dessa forma, o Amazon
S3 desabilita o acesso entre contas, mesmo que a política delegue acesso a uma conta específica,
"Account-2". Porém, se você remover a instrução 3 da política, esta não se qualificará como pública e
RestrictPublicBuckets deixará de se aplicar. Por isso, "Account-2" retoma o acesso ao bucket,
mesmo caso você deixe RestrictPublicBuckets habilitado.

Versão da API 2006-03-01


474
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Pontos de acesso
O Amazon S3 avalia as configurações do Bloqueio de acesso público de maneira um pouco diferente para
os pontos de acesso em comparação com os buckets. As regras que o Amazon S3 aplica para determinar
quando uma política de ponto de acesso é pública são geralmente as mesmas para pontos de acesso e
para buckets, exceto nas seguintes situações:

• Um ponto de acesso que tenha uma origem de rede da VPC é sempre considerado não público,
independentemente do conteúdo da política de ponto de acesso.
• Uma política de ponto de acesso que concede acesso a um conjunto de pontos de acesso
usando s3:DataAccessPointArn é considerada pública. Observe que esse comportamento
é diferente para políticas de bucket. Por exemplo, uma política de bucket que concede
acesso a valores de s3:DataAccessPointArn que correspondem a arn:aws:s3:us-
west-2:123456789012:accesspoint/* não é considerada pública. No entanto, a mesma instrução
em uma política de ponto de acesso tornaria o ponto de acesso público.

Usar o Analisador de acesso para S3 para revisar buckets


públicos
Você pode usar o Analisador de acesso para S3 para revisar buckets com ACLs de bucket, políticas de
bucket ou políticas de ponto de acesso que concedem acesso público. O Analisador de acesso para S3
alerta sobre buckets configurados para permitir o acesso a qualquer pessoa na Internet ou a outras contas
da AWS, incluindo contas da AWS fora da organização. Para cada bucket público ou compartilhado, você
recebe descobertas que relatam a origem e o nível de acesso público ou compartilhado.

Com o conhecimento apresentado nas descobertas, você pode tomar medidas corretivas imediatas e
precisas. No Analisador de acesso para S3, você pode bloquear todo o acesso público a um bucket com
um único clique. Você também pode detalhar as configurações de permissão no nível do bucket para
definir níveis granulares de acesso. Para casos de uso específicos e verificados que exigem acesso
público ou compartilhado, você pode confirmar e registrar sua intenção de que o bucket permaneça público
ou compartilhado arquivando as descobertas do bucket.

Em eventos raros, o Analisador de acesso para S3 pode relatar nenhuma descoberta para um bucket que
uma análise de bloqueio de acesso público do Amazon S3 relata como público. Isso acontece porque
o bloqueio de acesso público do Amazon S3 analisa as políticas de ações atuais e quaisquer ações
potenciais que possam ser adicionadas no futuro, fazendo com que um bucket se torne público. Por outro
lado, o Analisador de acesso para S3 analisa somente as ações atuais especificadas para o serviço do
Amazon S3 na avaliação do status do acesso.

Para obter mais informações sobre o Access Analyzer for S3, consulte Revisar o acesso de bucket usando
o Access Analyzer for S3 (p. 496).

Permissões
Para usar os recursos do Bloqueio de acesso público do Amazon S3, você deve ter as permissões a
seguir.

Operação Permissões obrigatórias

Status da política de bucket GET s3:GetBucketPolicyStatus

Configurações do Bloqueio de acesso público do s3:GetBucketPublicAccessBlock


bucket GET

Configurações do Bloqueio de acesso público do s3:PutBucketPublicAccessBlock


bucket PUT

Versão da API 2006-03-01


475
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Operação Permissões obrigatórias

Configurações do Bloqueio de acesso público do s3:PutBucketPublicAccessBlock


bucket DELETE

Configurações do Bloqueio de acesso público da s3:GetAccountPublicAccessBlock


conta GET

Configurações do Bloqueio de acesso público da s3:PutAccountPublicAccessBlock


conta PUT

Configurações do Bloqueio de acesso público da s3:PutAccountPublicAccessBlock


conta DELETE

Configurações do Bloqueio de acesso público do s3:PutAccessPointPublicAccessBlock


ponto de acesso PUT

Note

As operações DELETE exigem as mesmas permissões das operações PUT. Não há permissões
separadas para as operações DELETE.

Configurar o bloqueio de acesso público


Para obter mais informações sobre como configurar o bloqueio de acesso público para sua conta da AWS
e seus buckets do Amazon S3, consulte os tópicos a seguir.

• Configurar o bloqueio de acesso público para sua conta (p. 476)


• Configurar o bloqueio de acesso público para seus buckets do S3 (p. 478)

Configurar o bloqueio de acesso público para sua conta


O Bloqueio de acesso público do Amazon S3 fornece configurações para pontos de acesso, buckets e
contas para ajudar você a gerenciar o acesso público aos recursos do Amazon S3. Por padrão, novos
buckets, pontos de acesso e objetos não permitem acesso público.

Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469).

Você pode usar o console do S3, a CLI da AWS, os SDKs da AWS e a API REST para configurar o
bloqueio de acesso público para todos os buckets da sua conta. Para obter mais informações, consulte as
seções abaixo.

Para definir as configurações do bloqueio de acesso público para os buckets, consulte Configurar o
bloqueio de acesso público para seus buckets do S3 (p. 478). Para obter mais informações sobre pontos
de acesso, consulte Executar operações de bloqueio de acesso público em um ponto de acesso (p. 472).

Usar o console do S3

O bloqueio de acesso público do Amazon S3 evita a aplicação de todas as configurações que permitem
acesso público a dados dentro de buckets do S3. Esta seção descreve como editar configurações de
acesso público de bloqueio para todos os buckets do S3 na conta da AWS. Para obter mais informações
sobre como bloquear o acesso público, consulte Bloquear o acesso público ao armazenamento do
Amazon S3 (p. 469).

Versão da API 2006-03-01


476
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Para editar configurações de acesso público de bloqueio para todos os buckets do S3 em uma
conta da AWS

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Escolha Account settings for Block Public Access (Configurações da conta para o Bloqueio de acesso
público).
3. Escolha Edit (Editar) para alterar as configurações de acesso público de bloqueio para todos os
buckets na conta da AWS.
4. Escolha as configurações que deseja alterar e selecione Save (Salvar).
5. Quando a confirmação é solicitada, digite confirm. Em seguida, escolha Confirm (Confirmar) para
salvar as alterações.

Usar a CLI da AWS

Você pode usar o Bloqueio de acesso público do Amazon S3 por meio da CLI da AWS. Para obter
mais informações sobre como configurar e usar a CLI da AWS, consulte O que é a interface de linha de
comando da AWS?

Conta

Para realizar operações do Bloqueio de acesso público em uma conta, use o serviço s3control da CLI
da AWS. As operações no nível da conta que usam esse serviço são:
• PUT PublicAccessBlock (para uma conta)
• GET PublicAccessBlock (para uma conta)
• DELETE PublicAccessBlock (para uma conta)

Para obter informações e exemplos adicionais, consulte put-public-access-block na Referência da AWS


CLI.

Uso dos AWS SDKs

Java

Os exemplos a seguir mostram como usar o Amazon S3 Block Public Access com o AWS SDK para
Java para colocar uma configuração de bloqueio de acesso público em uma conta do Amazon S3.
Para obter instruções sobre como criar e testar um exemplo funcional, consulte Usar o AWS SDK para
Java (p. 1041).

AWSS3ControlClientBuilder controlClientBuilder = AWSS3ControlClientBuilder.standard();


controlClientBuilder.setRegion(<region>);
controlClientBuilder.setCredentials(<credentials>);

AWSS3Control client = controlClientBuilder.build();


client.putPublicAccessBlock(new PutPublicAccessBlockRequest()
.withAccountId(<account-id>)
.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
.withIgnorePublicAcls(<value>)
.withBlockPublicAcls(<value>)
.withBlockPublicPolicy(<value>)
.withRestrictPublicBuckets(<value>)));

Versão da API 2006-03-01


477
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Important

Este exemplo pertence apenas a operações no nível da conta, que usam a classe cliente
AWSS3Control. Para operações no nível do bucket, consulte o exemplo anterior.
Other SDKs

Para obter informações sobre como usar os outros AWS SDKs, consulte Desenvolvimento com o
Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

Uso dos REST API

Para obter informações sobre o uso do Bloqueio de acesso público do Amazon S3 por meio das APIs
REST, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage Service.

• Operações no nível da conta


• PUT PublicAccessBlock
• GET PublicAccessBlock
• DELETE PublicAccessBlock

Configurar o bloqueio de acesso público para seus buckets do S3


O Bloqueio de acesso público do Amazon S3 fornece configurações para pontos de acesso, buckets e
contas para ajudar você a gerenciar o acesso público aos recursos do Amazon S3. Por padrão, novos
buckets, pontos de acesso e objetos não permitem acesso público.

Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469).

Você pode usar o console do S3, a CLI da AWS, os SDKs da AWS e a API REST para definir as
configurações de bloqueio de acesso público para o bucket. Para obter mais informações, consulte as
seções abaixo.

Para definir as configurações de bloqueio de acesso público para todos os buckets da sua conta, consulte
Configurar o bloqueio de acesso público para sua conta (p. 476). Para obter informações sobre como
configurar o bloqueio de acesso público para pontos de acesso, consulte Executar operações de bloqueio
de acesso público em um ponto de acesso (p. 472).

Usar o console do S3

O bloqueio de acesso público do Amazon S3 evita a aplicação de todas as configurações que permitem
acesso público a dados dentro de buckets do S3. Esta seção descreve como editar configurações de
acesso público de bloqueio para um ou mais buckets do S3. Para obter informações sobre como bloquear
o acesso público usando a CLI da AWS CLI, os SDKs da AWS e as APIs REST do Amazon S3, consulte
Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).

Você pode ver se seu bucket está acessível publicamente na lista Buckets. Na coluna Access (Acessar), o
Amazon S3 rotula as permissões para um bucket da seguinte forma:

• Público – Todos têm acesso a um ou mais dos seguintes: listagem de objetos, gravação de objetos,
permissões de leitura e gravação.
• Objetos podem ser públicos – O bucket não é público, mas qualquer pessoa com as permissões
apropriadas pode conceder acesso público a objetos.
• Buckets e objetos não públicos – O bucket e os objetos não têm acesso público.
• Somente usuários autorizados desta conta: O acesso é isolado a usuários e funções do IAM nesta conta
e nas entidades principais do serviço da AWS porque há uma política que concede acesso público.

Versão da API 2006-03-01


478
Amazon Simple Storage Service Guia do usuário
Bloquear o acesso público

Também é possível filtrar pesquisas de bucket por tipo de acesso. Escolha um tipo de acesso na lista
suspensa próxima da barra Search for buckets (Procurar buckets).

Para editar as configurações de bloqueio de acesso público do Amazon S3 para um bucket do S3

Siga essas etapas caso você precise alterar as configurações de acesso público para um único bucket do
S3.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Bucket name (Nome do bucket), escolha o nome do bucket que você deseja.
3. Escolha Permissions (Permissões).
4. Escolha Edit (Editar) para alterar as configurações de acesso público do bucket. Para obter mais
informações sobre as quatro configurações do Bloqueio de acesso público do Amazon S3, consulte
Configurações do bloqueio de acesso público (p. 470).
5. Escolha as configurações que você deseja alterar e Save (Salvar).
6. Quando a confirmação é solicitada, digite confirm. Em seguida, escolha Confirm (Confirmar) para
salvar as alterações.

Como editar as configurações de bloqueio de acesso público do Amazon S3 para um bucket do


S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket desejado.
3. Escolha Permissions (Permissões).
4. Escolha Edit (Editar) para alterar as configurações de acesso público do bucket. Para obter mais
informações sobre as quatro configurações do Bloqueio de acesso público do Amazon S3, consulte
Configurações do bloqueio de acesso público (p. 470).
5. Escolha as configurações que você deseja alterar e selecione Save changes (Salvar alterações).
6. Quando a confirmação é solicitada, digite confirm. Em seguida, escolha Confirm (Confirmar) para
salvar as alterações.

É possível alterar as configurações de bloqueio de acesso público do Amazon S3 ao criar um bucket. Para
obter mais informações, consulte Criação de um bucket (p. 31).

Usar a CLI da AWS

Para realizar operações do Bloqueio de acesso público em um bucket, use o serviço s3api da CLI da
AWS. As operações no nível do bucket que usam esse serviço são:

• PUT PublicAccessBlock (para um bucket)


• GET PublicAccessBlock (para um bucket)
• DELETE PublicAccessBlock (para um bucket)
• GET BucketPolicyStatus

Para obter mais informações e exemplos, consulte put-public-access-block na Referência da AWS CLI.

Uso dos AWS SDKs

Java

Versão da API 2006-03-01


479
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

AmazonS3 client = AmazonS3ClientBuilder.standard()


.withCredentials(<credentials>)
.build();

client.setPublicAccessBlock(new SetPublicAccessBlockRequest()
.withBucketName(<bucket-name>)
.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
.withBlockPublicAcls(<value>)
.withIgnorePublicAcls(<value>)
.withBlockPublicPolicy(<value>)
.withRestrictPublicBuckets(<value>)));

Important

Este exemplo pertence apenas a operações no nível do bucket, que usam a classe cliente
AmazonS3. Para operações no nível da conta, consulte o exemplo a seguir.
Other SDKs

Para obter informações sobre como usar os outros AWS SDKs, consulte Desenvolvimento com o
Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

Uso dos REST API

Para obter informações sobre o uso do Bloqueio de acesso público do Amazon S3 por meio das APIs
REST, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage Service.

• Operações no nível do bucket


• PUT PublicAccessBlock
• GET PublicAccessBlock
• DELETE PublicAccessBlock
• GET BucketPolicyStatus

Gerenciamento de acesso a dados com pontos de


acesso do Amazon S3
Os pontos de acesso do Amazon S3 simplificam o gerenciamento do acesso a dados em escala para
conjuntos de dados compartilhados no S3. Os pontos de acesso são nomeados endpoints de rede
anexados a buckets que você pode usar para executar operações de objeto do S3, como GetObject e
PutObject. Cada ponto de acesso tem permissões distintas e controles de rede que o S3 aplica para
qualquer solicitação feita por meio desse ponto de acesso. Cada ponto de acesso impõe uma política de
ponto de acesso personalizada que funciona em conjunto com a política de bucket anexada ao bucket
subjacente. Você pode configurar qualquer ponto de acesso para aceitar solicitações somente de uma
Virtual Private Cloud (VPC) para restringir o acesso a dados do Amazon S3 a uma rede privada. Você
também pode configurar definições personalizadas do Bloqueio de acesso público para cada ponto de
acesso.
Note

• Você só pode usar pontos de acesso para executar operações em objetos. Não é possível usar
pontos de acesso para executar outras operações do Amazon S3, como modificar ou excluir
buckets. Para obter uma lista completa das operações do S3 que oferecem suporte a pontos
de acesso, consulte Compatibilidade de ponto de acesso com operações do S3 e serviços da
AWS (p. 493).

Versão da API 2006-03-01


480
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

• Os pontos de acesso funcionam com alguns serviços e recursos da AWS, mas não todos.
Por exemplo, você não pode configurar a replicação entre regiões para operar por meio de
um ponto de acesso. Para obter uma lista completa de serviços da AWS compatíveis com
pontos de acesso do S3, consulte Compatibilidade de ponto de acesso com operações do S3 e
serviços da AWS (p. 493).

Esta seção explica como trabalhar com pontos de acesso do Amazon S3. Para obter informações sobre
como trabalhar com buckets, consulte Visão geral dos buckets (p. 26). Para obter mais informações sobre
como trabalhar com objetos, consulte Visão geral de objetos Amazon S3 (p. 62).

Tópicos
• Configurar políticas do IAM para uso de pontos de acesso (p. 481)
• Criar pontos de acesso (p. 485)
• Usar pontos de acesso (p. 489)
• Restrições e limitações de pontos de acesso (p. 495)

Configurar políticas do IAM para uso de pontos de acesso


Os pontos de acesso do Amazon S3 oferecem suporte a políticas de recursos do AWS Identity and Access
Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou outras
condições. Para que um aplicativo ou usuário possa acessar objetos por meio de um ponto de acesso,
tanto o ponto de acesso quanto o bucket subjacente devem permitir a solicitação.
Important

Adicionar um ponto de acesso S3 a um bucket não altera o comportamento do bucket quando


acessado por meio do nome de bucket existente ou do ARN. Todas as operações existentes no
bucket continuarão a funcionar como antes. As restrições que você incluir em uma política de
ponto de acesso se aplicam somente a solicitações feitas por meio desse ponto de acesso.

Chaves de condição
Os pontos de acesso do S3 apresentam três novas chaves de condição que podem ser usadas em
políticas do IAM para controlar o acesso aos recursos:

s3:DataAccessPointArn

Esta é uma string que você pode usar para corresponder um ARN de ponto de acesso. O exemplo
a seguir corresponde a todos os pontos de acesso da conta da AWS 123456789012 na região us-
west-2:

"Condition" : {
"StringLike": {
"s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*"
}
}

s3:DataAccessPointAccount

Este é um operador de string que você pode utilizar para corresponder o ID da conta do proprietário
de um ponto de acesso. O exemplo a seguir corresponde a todos os pontos de acesso de propriedade
da conta da AWS 123456789012.

"Condition" : {
"StringEquals": {

Versão da API 2006-03-01


481
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

"s3:DataAccessPointAccount": "123456789012"
}
}

s3:AccessPointNetworkOrigin

Este é um operador de string que você pode utilizar para corresponder a origem da rede, Internet
ou VPC. O exemplo a seguir corresponde apenas a pontos de acesso com uma origem de VPC.

"Condition" : {
"StringEquals": {
"s3:AccessPointNetworkOrigin": "VPC"
}
}

Para obter mais informações sobre o uso de chaves de condição com o Amazon S3, consulte Ações,
recursos e chaves de condição do Amazon S3 (p. 288).

Delegar controle de acesso a pontos de acesso


Você pode delegar o controle de acesso de um bucket aos pontos de acesso do bucket. A política de
bucket de exemplo a seguir permite acesso total a todos os pontos de acesso pertencentes à conta do
proprietário do bucket. Assim, todo o acesso a esse bucket é controlado pelas políticas anexadas aos seus
pontos de acesso. Recomendamos configurar seus buckets dessa maneira para todos os casos de uso
que não exigem acesso direto ao bucket.

Example Política de bucket para delegar controle de acesso a pontos de acesso

{
"Version": "2012-10-17",
"Statement" : [
{
"Effect": "Allow",
"Principal" : { "AWS": "*" },
"Action" : "*",
"Resource" : [ "Bucket ARN", "Bucket ARN/*"],
"Condition": {
"StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" }
}
}]
}

Exemplos de política de ponto de acesso


Os exemplos a seguir demonstram como criar políticas do IAM para controlar solicitações feitas por meio
de um ponto de acesso.
Note

As permissões concedidas em uma política de ponto de acesso entram em vigor somente se o


bucket subjacente também permitir o mesmo acesso. É possível fazer isso de duas maneiras:

1. (Recomendado) Delegue o controle de acesso do bucket para o ponto de acesso conforme


descrito em Delegar controle de acesso a pontos de acesso (p. 482).
2. Adicione as mesmas permissões contidas na política de ponto de acesso à política do bucket
subjacente. O primeiro exemplo de política de ponto de acesso demonstra como modificar a
política de bucket subjacente para permitir o acesso necessário.

Versão da API 2006-03-01


482
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Example Concessão da política de ponto de acesso

A política de ponto de acesso a seguir concede ao usuário do IAM Alice na conta 123456789012
permissões para objetos GET e PUT com o prefixo Alice/ por meio do ponto de acesso my-access-
point em uma conta 123456789012.

{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Alice"
},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/
Alice/*"
}]
}

Note

Para que a política de ponto de acesso conceda efetivamente acesso ao usuário Alice, o bucket
subjacente também deve permitir o mesmo acesso a Alice. É possível delegar o controle de
acesso do bucket para o ponto de acesso conforme descrito em Delegar controle de acesso a
pontos de acesso (p. 482). Ou é possível adicionar a seguinte política ao bucket subjacente
para conceder as permissões necessárias à Alice. Observe que a entrada Resource é diferente
entre as políticas de ponto de acesso e bucket.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Alice"
},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::awsexamplebucket1/Alice/*"
}]
}

Example Política de ponto de acesso com condição de tag

A política de ponto de acesso a seguir concede ao usuário do IAM Bob na conta 123456789012
permissões para objetos GET por meio do ponto de acesso my-access-point na conta 123456789012
que possui a chave de tag data definida com um valor finance.

{
"Version":"2012-10-17",
"Statement": [
{
"Effect":"Allow",
"Principal" : {
"AWS": "arn:aws:iam::123456789012:user/Bob"
},
"Action":"s3:GetObject",
"Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/
*",
"Condition" : {

Versão da API 2006-03-01


483
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

"StringEquals": {
"s3:ExistingObjectTag/data": "finance"
}
}
}]
}

Example Política de ponto de acesso permitindo a listagem de bucket

A política de ponto de acesso a seguir permite que o usuário do IAM Charles na conta 123456789012
visualize os objetos contidos no ponto de acesso subjacente do bucket my-access-point na conta
123456789012.

{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Charles"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point"
}]
}

Example Política de controle de serviço

A política de controle de serviço a seguir requer que todos os novos pontos de acesso sejam criados com
uma origem de rede da VPC. Com essa política em vigor, os usuários da sua organização não podem criar
novos pontos de acesso acessíveis da Internet.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:CreateAccessPoint",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:AccessPointNetworkOrigin": "VPC"
}
}
}]
}

Example Política de bucket para limitar operações do S3 às origens de rede da VPC

A política de bucket a seguir limita o acesso a todas as operações de objeto do S3 para o bucket
examplebucket para pontos de acesso com uma origem de rede da VPC.
Important

Antes de usar uma instrução como este exemplo, certifique-se de que você não precisa usar
recursos que não são compatíveis com pontos de acesso, como replicação entre regiões.

Versão da API 2006-03-01


484
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:AbortMultipartUpload",
"s3:BypassGovernanceRetention",
"s3:DeleteObject",
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersion",
"s3:DeleteObjectVersionTagging",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectLegalHold",
"s3:GetObjectRetention",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectLegalHold",
"s3:PutObjectRetention",
"s3:PutObjectTagging",
"s3:PutObjectVersionAcl",
"s3:PutObjectVersionTagging",
"s3:RestoreObject"
],
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotEquals": {
"s3:AccessPointNetworkOrigin": "VPC"
}
}
}
]
}

Criar pontos de acesso


O Amazon S3 fornece funcionalidade para criar e gerenciar pontos de acesso. Você pode criar pontos de
acesso do S3 usando o Console de Gerenciamento da AWS, a Interface da linha de comando da AWS
(CLI da AWS), os AWS SDKs ou a API REST do Amazon S3.

Por padrão, você pode criar até 1.000 pontos de acesso por região para cada uma das suas contas da
AWS. Se você precisar de mais de 1.000 pontos de acesso para uma única conta em uma única região,
poderá solicitar um aumento de cota de serviço. Para obter mais informações sobre cotas de serviço e
solicitar um aumento, consulte AWS Service Quotas na Referência geral da AWS.
Note

Como talvez você queira divulgar o nome do ponto de acesso para permitir que os usuários usem
o ponto de acesso, recomendamos que evite incluir informações confidenciais no nome do ponto
de acesso.

Regras para nomear pontos de acesso do Amazon S3


Os nomes de pontos de acesso devem atender às seguintes condições:

• Devem ser exclusivos em uma única conta e região da AWS

Versão da API 2006-03-01


485
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

• Devem estar em conformidade com as restrições de nomenclatura de DNS


• Devem começar com um número ou uma letra minúscula
• Devem conter entre 3 e 50 caracteres
• Não é possível começar ou terminar com um traço
• Não é possível conter sublinhados, letras maiúsculas ou pontos

Para criar um ponto de acesso, consulte os tópicos a seguir.

Tópicos
• Criar um ponto de acesso (p. 486)
• Criar pontos de acesso restritos a uma nuvem privada virtual (p. 487)
• Gerenciar o acesso público a pontos de acesso (p. 489)

Criar um ponto de acesso


Um ponto de acesso está associado a exatamente um bucket do Amazon S3. Antes de começar,
certifique-se de que criou um bucket que pretende usar com esse ponto de acesso. Para obter mais
informações sobre a criação de buckets, consulte Criar, configurar e trabalhar com buckets do Amazon
S3 (p. 26). Os pontos de acesso do Amazon S3 oferecem suporte a políticas de recursos do AWS Identity
and Access Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou
outras condições. Para obter mais informações, consulte Configurar políticas do IAM para uso de pontos
de acesso (p. 481).

Por padrão, você pode criar até 1.000 pontos de acesso por região para cada uma das suas contas da
AWS. Se você precisar de mais de 1.000 pontos de acesso para uma única conta em uma única região,
poderá solicitar um aumento de cota de serviço. Para obter mais informações sobre cotas de serviço e
solicitar um aumento, consulte Cotas de serviço da AWS na Referência geral da AWS.

Os exemplos a seguir demonstram como criar um ponto de acesso com a CLI da AWS e o console do S3.
Para obter mais informações sobre como criar pontos de acesso usando a API REST, consulte Criar ponto
de acesso na Referência da API do Amazon Simple Storage Service.

Usar o console do S3

Como criar um ponto de acesso

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, no lado esquerdo do console, escolha Access points (Pontos de acesso).
3. Na página de pontos de acesso, escolha Create access point (Criar ponto de acesso).
4. No campo Access point name (Nome do ponto de acesso), digite o nome desejado para o ponto de
acesso. Para obter mais informações sobre nomenclatura de pontos de acesso, consulte Regras para
nomear pontos de acesso do Amazon S3 (p. 485).
5. No campo Bucket name (Nome do bucket) insira o nome de um bucket na sua conta à qual você
deseja anexar o ponto de acesso, por exemplo DOC-EXAMPLE-BUCKET1. Como alternativa, você
pode escolher Browse S3 (Procurar S3) para navegar e pesquisar buckets na sua conta. Se você
escolher Browse S3 (Procurar S3), selecione o bucket desejado e Choose path (Escolher caminho)
para preencher o campo Bucket name (Nome do bucket) com o nome desse bucket.
6. (Opcional) Escolha View (Exibir) para exibir o conteúdo do bucket especificado em uma nova janela do
navegador.
7. Selecione uma Network origin (Origem de rede). Se você escolher Virtual private cloud (VPC), insira o
VPC ID (ID da VPC) que você deseja usar com o ponto de acesso.

Versão da API 2006-03-01


486
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Para obter mais informações sobre origens de rede para pontos de acesso, consulte Criar pontos de
acesso restritos a uma nuvem privada virtual (p. 487).
8. Em Block Public Access settings for this Access Point (Configurações de bloqueio de acesso
público para este ponto de acesso), selecione as configurações de bloqueio de acesso público que
você deseja aplicar ao ponto de acesso. Todas as configurações de bloqueio de acesso público
são ativadas por padrão para novos pontos de acesso; recomendamos que você deixe todas as
configurações ativadas, a menos que você saiba que tem uma necessidade específica de desabilitar
qualquer uma delas. Atualmente, o Amazon S3 não oferece suporte à alteração das configurações do
bloqueio de acesso público após à criação de um ponto de acesso.

Para obter mais informações sobre como usar o Bloqueio de acesso público do Amazon S3 com
pontos de acesso, consulte Gerenciar o acesso público a pontos de acesso (p. 489).
9. (Opcional) Em Access point policy - optional (Política de ponto de acesso - opcional), especifique a
política de ponto de acesso. Para obter mais informações sobre como especificar uma política de
ponto de acesso, consulte Exemplos de política de ponto de acesso (p. 482).
10. Selecione Criar ponto de acesso.

Usar a CLI da AWS

O exemplo a seguir cria um ponto de acesso chamado example-ap para o bucket example-bucket
na conta 123456789012. Para criar o ponto de acesso, envie uma solicitação para o Amazon S3,
especificando o nome do ponto de acesso, o nome do bucket ao qual você deseja associar o ponto de
acesso e o ID da conta da AWS que possui o bucket. Para obter informações sobre regras de nomeação,
consulte the section called “Regras para nomear pontos de acesso do Amazon S3” (p. 485).

aws s3control create-access-point --name example-ap --account-id 123456789012 --bucket


example-bucket

Criar pontos de acesso restritos a uma nuvem privada virtual


Ao criar um ponto de acesso, você pode optar por tornar o ponto de acesso acessível da Internet ou
pode especificar que todas as solicitações feitas por meio desse ponto de acesso devem ser originadas
de uma Virtual Private Cloud (VPC) específica. Considera-se que um ponto de acesso acessível da
Internet tem uma origem de rede da Internet. Ele pode ser usado de qualquer lugar na Internet, sujeito
a quaisquer outras restrições de acesso em vigor para o ponto de acesso, o bucket subjacente e os
recursos relacionados, como os objetos solicitados. Um ponto de acesso acessível apenas de uma VPC
especificada tem uma origem de rede de VPC, e o Amazon S3 rejeita qualquer solicitação feita ao ponto de
acesso que não tenha origem nessa VPC.
Important

Você só pode especificar a origem da rede de um ponto de acesso ao criá-lo. Depois de criar o
ponto de acesso, não é possível alterar a origem da rede.

Para restringir um ponto de acesso ao acesso somente VPC, inclua o parâmetro VpcConfiguration
com a solicitação para criar o ponto de acesso. No parâmetro VpcConfiguration, você especifica o ID
da VPC que deseja usar o ponto de acesso. O Amazon S3, então, rejeita solicitações feitas por meio do
ponto de acesso, a menos que elas sejam originadas dessa VPC.

Você pode recuperar a origem da rede de um ponto de acesso usando a AWS CLI, os AWS SDKs ou as
APIs REST. Se um ponto de acesso tiver uma configuração de VPC especificada, sua origem de rede será
VPC. Caso contrário, a origem da rede do ponto de acesso será Internet.

Example

Exemplo: Criar um ponto de acesso restrito ao acesso da VPC

Versão da API 2006-03-01


487
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

O exemplo a seguir cria um ponto de acesso chamado example-vpc-ap para o bucket example-
bucket na conta 123456789012 que permite acesso somente da VPC vpc-1a2b3c. O exemplo verifica
se o novo ponto de acesso tem uma origem de rede da VPC.

AWS CLI

aws s3control create-access-point --name example-vpc-ap --account-id 123456789012 --


bucket example-bucket --vpc-configuration VpcId=vpc-1a2b3c

aws s3control get-access-point --name example-vpc-ap --account-id 123456789012

{
"Name": "example-vpc-ap",
"Bucket": "example-bucket",
"NetworkOrigin": "VPC",
"VpcConfiguration": {
"VpcId": "vpc-1a2b3c"
},
"PublicAccessBlockConfiguration": {
"BlockPublicAcls": true,
"IgnorePublicAcls": true,
"BlockPublicPolicy": true,
"RestrictPublicBuckets": true
},
"CreationDate": "2019-11-27T00:00:00Z"
}

Para usar um ponto de acesso com uma VPC, é necessário modificar a política de acesso do VPC
endpoint. Os VPC endpoints permitem que o tráfego flua da VPC para o Amazon S3. Eles têm políticas
de controle de acesso que controlam como os recursos dentro da VPC podem interagir com o S3. As
solicitações da VPC para o S3 somente serão bem-sucedidas por meio de um ponto de acesso se a
política do VPC endpoint conceder acesso ao ponto de acesso e ao bucket subjacente.

O exemplo de instrução de política a seguir configura um VPC endpoint para permitir chamadas ao
GetObject de um bucket denominado awsexamplebucket1 e um ponto de acesso chamado example-
vpc-ap.

{
"Version": "2012-10-17",
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*",
"arn:aws:s3:us-west-2:123456789012:accesspoint/example-vpc-ap/object/*"
]
}]
}

Note

A declaração "Resource" neste exemplo usa um nome de recurso da Amazon (ARN) para
especificar o ponto de acesso. Para obter mais informações sobre ARNs de ponto de acesso,
consulte Usar pontos de acesso (p. 489).

Versão da API 2006-03-01


488
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Para obter mais informações sobre políticas de VPC endpoint, consulte Usar políticas de endpoint para o
Amazon S3 no Guia do usuário da Virtual Private Cloud (VPC).

Gerenciar o acesso público a pontos de acesso


Os pontos de acesso do Amazon S3 oferecem suporte a configurações independentes do bloqueio
de acesso público para cada ponto de acesso. Ao criar um ponto de acesso, você pode especificar
configurações do Bloqueio de acesso público que se aplicam a esse ponto de acesso. Para qualquer
solicitação feita por meio de um ponto de acesso, o Amazon S3 avalia as configurações de bloqueio de
acesso público para esse ponto de acesso, o bucket subjacente e a conta do proprietário do bucket. Se
qualquer uma dessas configurações indicar que a solicitação deve ser bloqueada, o Amazon S3 rejeitará a
solicitação.

Para obter mais informações sobre o recurso de bloqueio de acesso público do S3, consulte Bloquear o
acesso público ao armazenamento do Amazon S3 (p. 469).
Important

• Todas as configurações do Bloqueio de acesso público são habilitadas por padrão para pontos
de acesso. Você deve desativar explicitamente todas as configurações que não deseja aplicar a
um ponto de acesso.
• Atualmente, o Amazon S3 não oferece suporte à alteração das configurações do bloqueio de
acesso público após à criação de um ponto de acesso.

Example

Exemplo: Criar um ponto de acesso com configurações personalizadas do bloqueio de acesso público

Este exemplo cria um ponto de acesso chamado example-ap para o bucket example-bucket na conta
123456789012 com configurações não padrão do Bloqueio de acesso público. O exemplo recupera a
configuração do novo ponto de acesso para verificar as configurações do Bloqueio de acesso público.

AWS CLI

aws s3control create-access-point --name example-ap --account-id


123456789012 --bucket example-bucket --public-access-block-configuration
BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=true,RestrictPublicBuckets=true

aws s3control get-access-point --name example-ap --account-id 123456789012

{
"Name": "example-ap",
"Bucket": "example-bucket",
"NetworkOrigin": "Internet",
"PublicAccessBlockConfiguration": {
"BlockPublicAcls": false,
"IgnorePublicAcls": false,
"BlockPublicPolicy": true,
"RestrictPublicBuckets": true
},
"CreationDate": "2019-11-27T00:00:00Z"
}

Usar pontos de acesso


Você pode acessar os objetos em um bucket do Amazon S3 com um ponto de acesso usando o Console
de Gerenciamento da AWS, a AWS CLI, os AWS SDKs ou as APIs REST do S3.

Versão da API 2006-03-01


489
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Os pontos de acesso têm nomes de recurso da Amazon (ARNS). Os ARNs do ponto de acesso são
semelhantes aos ARNs de bucket, mas são explicitamente digitados e codificam a região do ponto de
acesso e o ID da conta da AWS do proprietário do ponto de acesso. Para obter mais informações sobre
ARNs, consulte Nomes de recurso da Amazon (ARNs) na Referência geral da AWS.

Os ARNs de ponto de acesso usam o formato arn:aws:s3:region:account-


id:accesspoint/resource. Por exemplo:

• arn:aws:s3:us-west-2:123456789012:accesspoint/test representa o ponto de acesso nomeado test,


pertencente à conta 123456789012 na região us-west-2.
• arn:aws:s3:us-west-2:123456789012:accesspoint/* representa todos os pontos de acesso na conta
123456789012 na região us-west-2.

Os ARNs para objetos acessados por meio de um ponto de acesso usam o formato
arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource. Por
exemplo:

• arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01 representa o objeto unit-01,


acessado por meio do ponto de acesso nomeado test, pertencente à conta 123456789012 na região
us-west-2.
• arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/* representa todos os objetos para o ponto
de acesso test, na conta 123456789012 na região us-west-2.
• arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01/finance/* representa todos os
objetos no prefixo unit-01/finance/ para o ponto de acesso test, na conta 123456789012 na
região us-west-2.

Tópicos
• Monitorar e registrar de pontos de acesso (p. 490)
• Usar pontos de acesso do Amazon S3 com o console do Amazon S3 (p. 491)
• Usar pontos de acesso com operações compatíveis com o Amazon S3 (p. 493)

Monitorar e registrar de pontos de acesso


O Amazon S3 registra solicitações feitas por meio de pontos de acesso e solicitações feitas às APIs que
gerenciam pontos de acesso, como CreateAccessPoint e GetAccessPointPolicy.

• Um bucket nomeado DOC-EXAMPLE-BUCKET1 na região us-west-2 que contém o objeto my-


image.jpg
• Um ponto de acesso chamado my-bucket-ap que está associado a my-bucket
• O ID da sua conta da AWS é 123456789012

As entradas de log do CloudTrail para solicitações feitas por meio de pontos de acesso incluirão o ARN do
ponto de acesso na seção resources do log.

"resources": [
{
"type": "AWS::S3::Object",
"ARN": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/my-image.jpg"
},
{
"accountId": "123456789012",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1"
},

Versão da API 2006-03-01


490
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

{
"accountId": "DOC-EXAMPLE-BUCKET1",
"type": "AWS::S3::AccessPoint",
"ARN": "arn:aws:s3:us-west-2:DOC-EXAMPLE-BUCKET1:accesspoint/my-bucket-ap"
}
]

Para obter mais informações sobre logs de acesso do servidor do S3, consulte Registrar em log as
solicitações com registro em log de acesso ao servidor (p. 833). Para obter mais informações sobre o
AWS CloudTrail, consulte O que é o AWS CloudTrail? no Guia do usuário do AWS CloudTrail.
Note

Atualmente, os pontos de acesso do S3 não são compatíveis com as métricas do Amazon


CloudWatch.

Usar pontos de acesso do Amazon S3 com o console do Amazon S3


Esta seção explica como gerenciar e usar seus pontos de acesso do Amazon S3 usando o Console de
Gerenciamento da AWS. Antes de começar, navegue até a página de detalhes do ponto de acesso que
você deseja gerenciar ou usar, conforme descrito no procedimento a seguir.

Tópicos
• Listar pontos de acesso para sua conta (p. 491)
• Listar pontos de acesso para um bucket (p. 491)
• Visualizar detalhes de configuração de um ponto de acesso (p. 492)
• Usar um ponto de acesso (p. 492)
• Visualizar configurações de bloqueio de acesso público para um ponto de acesso (p. 492)
• Editar uma política de ponto de acesso (p. 492)
• Excluir um ponto de acesso (p. 492)

Listar pontos de acesso para sua conta

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, no lado esquerdo do console, escolha access points (pontos de acesso).
3. Na página access points (pontos de acesso) em access points (pontos de acesso), selecione a região
da AWS que contém os pontos de acesso que você deseja listar.
4. (Opcional) Pesquise pontos de acesso por nome inserindo um nome no campo de texto ao lado do
menu suspenso de Região.
5. Escolha o nome do ponto de acesso que você deseja gerenciar ou usar.

Listar pontos de acesso para um bucket

Para listar todos os pontos de acesso de um único bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, no lado esquerdo do console, selecione Buckets.
3. Na página Buckets, selecione o nome do bucket cujos pontos de acesso você deseja listar.
4. Na página de detalhes do bucket, escolha a guia access points (pontos de acesso).
5. Escolha o nome do ponto de acesso que você deseja gerenciar ou usar.

Versão da API 2006-03-01


491
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Visualizar detalhes de configuração de um ponto de acesso

1. Navegue até a página de detalhes do ponto de acesso cujos detalhes deseja ver, conforme descrito
em Listar pontos de acesso para sua conta (p. 491).
2. Em access point overview (visão geral do ponto de acesso), exiba os detalhes de configuração e as
propriedades para o ponto de acesso selecionado.

Usar um ponto de acesso

1. Navegue até a página de detalhes do ponto de acesso cujos detalhes deseja usar, conforme descrito
em Listar pontos de acesso para sua conta (p. 491).
2. Na guia Objects (Objetos) escolha o nome de um objeto ou objetos que deseja acessar por meio do
ponto de acesso. Nas páginas de operação do objeto, o console exibe um rótulo acima do nome do
bucket que mostra o ponto de acesso que você está usando no momento. Enquanto estiver usando
o ponto de acesso, você só pode executar as operações de objeto permitidas pelas permissões do
ponto de acesso.
Note

• A exibição do console sempre mostra todos os objetos no bucket. O uso de um ponto


de acesso conforme descrito neste procedimento restringe as operações que você pode
executar nesses objetos, mas não se você puder ver que eles existem no bucket.
• O Console de Gerenciamento do S3 não oferece suporte ao uso de pontos de acesso da
Virtual Private Cloud (VPC) para acessar recursos de bucket. Para acessar recursos de
bucket a partir de um ponto de acesso da VPC, use a AWS CLI, AWS SDKs ou APIs REST
do Amazon S3.

Visualizar configurações de bloqueio de acesso público para um ponto de acesso

1. Navegue até a página de detalhes do ponto de acesso para o ponto de acesso cujas configurações
deseja exibir, conforme descrito em Listar pontos de acesso para sua conta (p. 491).
2. Escolha Permissions (Permissões).
3. Em access point policy (política de ponto de acesso), revise as configurações de bloqueio de acesso
público do ponto de acesso.
Note

Você não pode alterar as configurações de bloqueio de acesso público para um ponto de
acesso após a criação do ponto de acesso.

Editar uma política de ponto de acesso

1. Navegue até a página de detalhes do ponto de acesso cujas políticas deseja editar, conforme descrito
em Listar pontos de acesso para sua conta (p. 491).
2. Escolha Permissions (Permissões).
3. Em access point policy (política do ponto de acesso), escolha Edit (Editar).
4. Insira a política do ponto de acesso no campo de texto. O console exibe automaticamente o nome de
recurso da Amazon (ARN) do ponto de acesso, que você pode usar na política.

Excluir um ponto de acesso

1. Navegue até a lista de pontos de acesso para sua conta ou para um bucket específico, conforme
descrito em Listar pontos de acesso para sua conta (p. 491).
2. Selecione o botão de opção ao lado do nome do ponto de acesso que você deseja excluir.

Versão da API 2006-03-01


492
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

3. Escolha Delete (Excluir).


4. Confirme se deseja excluir o ponto de acesso inserindo o nome no campo de texto exibido e escolha
Delete (Excluir).

Usar pontos de acesso com operações compatíveis com o Amazon S3


Os exemplos a seguir demonstram como usar pontos de acesso com operações compatíveis no Amazon
S3.

Tópicos
• Compatibilidade de ponto de acesso com operações do S3 e serviços da AWS (p. 493)
• Solicitar um objeto por meio de um ponto de acesso (p. 494)
• Fazer upload de um objeto por meio de um ponto de acesso (p. 494)
• Excluir um objeto por meio de um ponto de acesso (p. 494)
• Listar objetos por meio de um ponto de acesso (p. 494)
• Adicionar um conjunto de tags a um objeto por meio de um ponto de acesso (p. 495)
• Conceder permissões de acesso por meio de um ponto de acesso usando uma ACL (p. 495)

Compatibilidade de ponto de acesso com operações do S3 e serviços da AWS

Os pontos de acesso do Amazon S3 são compatíveis com um subconjunto de operações do S3 e outros


serviços da AWS. As seções a seguir listam os serviços compatíveis e as operações do S3.

Serviços da AWS

Você pode usar os pontos de acesso do S3 com o AWS CloudFormation.

Para obter mais informações sobre o AWS CloudFormation, consulte O que é o AWS CloudFormation? no
Guia do usuário do AWS CloudFormation.

Operações do S3

Você pode usar pontos de acesso para acessar um bucket usando o seguinte subconjunto de APIs do
Amazon S3:

• AbortMultipartUpload
• CompleteMultipartUpload
• CopyObject (somente cópias da mesma região)
• CreateMultipartUpload
• DeleteObject
• DeleteObjectTagging
• GetObject
• GetObjectAcl
• GetObjectLegalHold
• GetObjectRetention
• GetObjectTagging
• HeadObject
• ListMultipartUploads
• ListObjectsV2

Versão da API 2006-03-01


493
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

• ListParts
• PutObject
• PutObjectLegalHold
• PutObjectRetention
• PutObjectAcl
• PutObjectTagging
• RestoreObject
• UploadPart
• UploadPartCopy (somente cópias da mesma região)

Solicitar um objeto por meio de um ponto de acesso

O exemplo a seguir solicita o objeto my-image.jpg por meio do ponto de acesso prod pertencente
ao ID de conta 123456789012 na região us-west-2 e salva o arquivo obtido por download como
download.jpg.

AWS CLI

aws s3api get-object --key my-image.jpg --bucket arn:aws:s3:us-


west-2:123456789012:accesspoint/prod download.jpg

Fazer upload de um objeto por meio de um ponto de acesso

O exemplo a seguir faz upload do objeto my-image.jpg por meio do ponto de acesso prod pertencente
ao ID de conta 123456789012 na região us-west-2.

AWS CLI

aws s3api put-object --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --key


my-image.jpg --body my-image.jpg

Excluir um objeto por meio de um ponto de acesso

O exemplo a seguir exclui o objeto my-image.jpg por meio do ponto de acesso prod pertencente ao ID
de conta 123456789012 na região us-west-2.

AWS CLI

aws s3api delete-object --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --


key my-image.jpg

Listar objetos por meio de um ponto de acesso

O exemplo a seguir lista objetos por meio do ponto de acesso prod pertencente ao ID de conta
123456789012 na região us-west-2.

AWS CLI

aws s3api list-objects-v2 --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod

Versão da API 2006-03-01


494
Amazon Simple Storage Service Guia do usuário
Usar pontos de acesso

Adicionar um conjunto de tags a um objeto por meio de um ponto de acesso

O exemplo a seguir adiciona um conjunto de tags ao objeto existente my-image.jpg por meio do ponto
de acesso prod pertencente ao ID de conta 123456789012 na região us-west-2.

AWS CLI

aws s3api put-object-tagging --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/


prod --key my-image.jpg --tagging TagSet=[{Key="finance",Value="true"}]

Conceder permissões de acesso por meio de um ponto de acesso usando uma ACL

O exemplo a seguir aplica uma ACL a um objeto existente my-image.jpg por meio do ponto de acesso
prod pertencente ao ID de conta 123456789012 na região us-west-2.

AWS CLI

aws s3api put-object-acl --bucket arn:aws:s3:us-west-2:123456789012:accesspoint/prod --


key my-image.jpg --acl private

Restrições e limitações de pontos de acesso


Os pontos de acesso do Amazon S3 têm as seguintes restrições e limitações:

• Só é possível criar pontos de acesso para buckets que você possui.


• Cada ponto de acesso é associado a exatamente um bucket, que é necessário especificar ao criar o
ponto de acesso. Depois de criar um ponto de acesso, não é possível associá-lo a um bucket diferente.
No entanto, você pode excluir um ponto de acesso e criar outro com o mesmo nome associado a um
bucket diferente.
• Os nomes dos pontos de acesso devem atender a certas condições. Para obter mais informações
sobre como nomear pontos de acesso, consulte Regras para nomear pontos de acesso do Amazon
S3 (p. 485).
• Depois de criar um ponto de acesso, não é possível alterar sua configuração de nuvem privada virtual
(VPC).
• As políticas de ponto de acesso estão limitadas a 20 KB.
• Você pode criar um máximo de 1.000 pontos de acesso por conta da AWS por região. Se você precisar
de mais de 1.000 pontos de acesso para uma única conta em uma única região, poderá solicitar um
aumento de cota de serviço. Para obter mais informações sobre cotas de serviço e solicitar um aumento,
consulte Cotas de serviço da AWS na Referência geral da AWS.
• Não é possível usar um ponto de acesso como destino para a replicação entre regiões do S3. Para obter
mais informações sobre a replicação, consulte Replicação de objetos (p. 617).
• Só é possível endereçar pontos de acesso usando URLs em estilo de host virtual. Para obter
mais informações sobre o endereçamento no estilo de hospedagem virtual, consulte Acessar um
bucket (p. 36).
• As APIs que controlam a funcionalidade de ponto de acesso (por exemplo, PutAccessPoint e
GetAccessPointPolicy) não oferecem suporte a chamadas entre contas.
• É necessário usar o AWS Signature Version 4 ao fazer solicitações a um ponto de acesso usando
as APIs REST. Para obter mais informações sobre como autenticar solicitações, consulte Autenticar
solicitações (AWS Signature versão 4) na Referência da API do Amazon Simple Storage Service.
• Os pontos de acesso só oferecem suporte ao acesso por meio de HTTPS.
• Os pontos de acesso não oferecem suporte ao acesso anônimo.

Versão da API 2006-03-01


495
Amazon Simple Storage Service Guia do usuário
Revisar o acesso ao bucket

Revisar o acesso de bucket usando o Access Analyzer


for S3
O Analisador de acesso para S3 alerta sobre buckets do S3 configurados para permitir o acesso a
qualquer pessoa na Internet ou a outras contas da AWS, incluindo contas da AWS fora da organização.
Para cada bucket público ou compartilhado, você recebe descobertas sobre a origem e o nível de acesso
público ou compartilhado. Por exemplo, o Analisador de acesso para S3 pode mostrar que um bucket tem
acesso de leitura ou gravação fornecido por meio de uma lista de controle de acesso (ACL) de bucket, uma
política de bucket ou uma política de ponto de acesso. Com esse conhecimento, você pode tomar medidas
corretivas imediatas e precisas para restaurar o acesso ao bucket da forma desejada.

Ao revisar um bucket em risco no Analisador de acesso para S3, você pode bloquear todo o acesso
público ao bucket com um único clique. Recomendamos que você bloqueie todo o acesso aos buckets,
a menos que exija acesso público para dar suporte a um caso de uso específico. Antes de bloquear todo
o acesso público, certifique-se de que os aplicativos continuarão funcionando corretamente sem acesso
público. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469).

Você também pode detalhar as configurações de permissão no nível do bucket para definir níveis
granulares de acesso. Para casos de uso específicos e verificados que exigem acesso público, como
hospedagem estática de sites, downloads públicos ou compartilhamento entre contas, você pode
reconhecer e registrar sua intenção de que o bucket permaneça público ou compartilhado arquivando
as descobertas do bucket. Você pode acessar novamente e modificar essas configurações de bucket a
qualquer momento. Você também pode fazer download das descobertas como um relatório CSV para fins
de auditoria.

O Analisador de acesso para S3 está disponível sem custo adicional no console do Amazon S3. O
Analisador de acesso para S3 é desenvolvido pelo Analisador de acesso do AWS Identity and Access
Management (IAM). Para usar o Analisador de acesso para S3 no console do Amazon S3, visite o console
do IAM e habilite o IAM Analisador de acesso por região.

Para obter mais informações sobre o IAM Analisador de acesso, consulte O que é o Analisador de acesso?
no Guia do Usuário do IAM. Para obter mais informações sobre o Analisador de acesso para S3, consulte
as seções a seguir.
Important
• O Analisador de acesso para S3 requer um analisador de nível de conta. Para usar o
Analisador de acesso para S3, acesse Analisador de acesso do IAM e crie um analisador que
tenha uma conta como a zona de confiança. Para obter mais informações, consulte Habilitar o
Analisador de acesso no Guia do usuário do IAM.
• Quando uma política de bucket ou a ACL do bucket é adicionada ou modificada, o Analisador
de acesso gera e atualiza descobertas com base na alteração dentro de 30 minutos. As
descobertas relacionadas às configurações do Bloqueio de acesso público na conta podem não
ser geradas ou atualizadas por até 6 horas após a alteração das configurações.

Tópicos
• Quais informações o Analisador de acesso para S3 fornece? (p. 497)
• Habilitar o Analisador de acesso para S3 (p. 497)
• Bloquear todo o acesso público (p. 497)
• Revisar e alterar o acesso ao bucket (p. 498)
• Arquivar descobertas de bucket (p. 499)
• Ativar uma descoberta de bucket arquivada (p. 499)
• Visualizar detalhes de descobertas (p. 500)
• Fazer download de um relatório do Analisador de acesso para S3 (p. 500)

Versão da API 2006-03-01


496
Amazon Simple Storage Service Guia do usuário
Revisar o acesso ao bucket

Quais informações o Analisador de acesso para S3 fornece?


O Analisador de acesso para S3 fornece descobertas para buckets que podem ser acessados fora da sua
conta da AWS. Os buckets listados em Buckets with public access (Buckets com acesso público) podem
ser acessados por qualquer pessoa na internet. Se o Analisador de acesso para S3 identificar buckets
públicos, você também verá um aviso na parte superior da página que mostra o número de buckets
públicos na região. Os buckets listados em Buckets with access from other AWS accounts — including
third-party AWS accounts (Buckets com acesso de outras contas da AWS, inclusive contas da AWS de
terceiros) são compartilhados condicionalmente com outras contas da AWS, incluindo contas fora da sua
organização.

Para cada bucket, o Analisador de acesso para S3 fornece as seguintes informações:

• Bucket name
• Descoberto pelo Analisador de acesso – Quando o Analisador de acesso para S3 descobriu o acesso a
bucket público ou compartilhado.
• Compartilhado por — como o bucket é compartilhado — por meio de uma política de bucket, uma ACL
de bucket ou uma política de ponto de acesso. Um bucket pode ser compartilhado por meio de políticas
e ACLs. Se você quiser descobrir e analisar a origem do acesso ao bucket, poderá usar as informações
nesta coluna como um ponto de partida para tomar medidas corretivas imediatas e precisas.
• Status – O status da descoberta do bucket. O Analisador de acesso para S3 exibe descobertas para
todos os buckets públicos e compartilhados.
• Ativa – a descoberta não foi analisada.
• Arquivada – a descoberta foi analisada e confirmada conforme pretendido.
• Todas – todas as descobertas de buckets que são públicos ou compartilhados com outras contas da
AWS, incluindo contas da AWS fora da sua organização.
• Nível de acesso — permissões de acesso concedidas para o bucket:
• Lista – lista de recursos.
• Leitura – ler, mas não editar o conteúdo e os atributos do recurso.
• Gravação – criar, excluir ou modificar recursos.
• Permissões – conceder ou modificar permissões de recursos.
• Atribuição de tags – atualizar as tags associadas ao recurso.

Habilitar o Analisador de acesso para S3


Para usar o Analisador de acesso para S3, você deve concluir as seguintes etapas de pré-requisito.

1. Conceda as permissões necessárias aos usuários.

Para obter mais informações, consulte Permissões necessárias para usar o Analisador de acesso no
Guia do Usuário do IAM.
2. Acesse o IAM para criar um analisador de nível de conta para cada região onde você deseja usar o
Analisador de acesso.

O Analisador de acesso para S3 requer um analisador de nível de conta. Para usar o Analisador de
acesso para S3, você deve criar um analisador que tenha uma conta como a zona de confiança. Para
obter mais informações, consulte Habilitar o Analisador de acesso no Guia do usuário do IAM.

Bloquear todo o acesso público


Se você quiser bloquear todo o acesso a um bucket com um único clique, use o botão Block all public
access (Bloquear todos os acessos públicos) no Analisador de acesso para S3. Quando você bloquear

Versão da API 2006-03-01


497
Amazon Simple Storage Service Guia do usuário
Revisar o acesso ao bucket

todo o acesso público a um bucket, nenhum acesso público será concedido. Recomendamos que você
bloqueie todo o acesso público aos buckets, a menos que exija acesso público para dar suporte a um caso
de uso específico e verificado. Antes de bloquear todo o acesso público, certifique-se de que os aplicativos
continuarão funcionando corretamente sem acesso público.

Se não quiser bloquear todo o acesso público ao bucket, você pode editar as configurações de bloqueio de
acesso público no console do Amazon S3 para configurar níveis granulares de acesso aos buckets. Para
obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).

Em eventos raros, o Analisador de acesso para S3 pode relatar nenhuma descoberta para um bucket que
uma análise de bloqueio de acesso público do Amazon S3 relata como público. Isso acontece porque
o bloqueio de acesso público do Amazon S3 analisa as políticas de ações atuais e quaisquer ações
potenciais que possam ser adicionadas no futuro, fazendo com que um bucket se torne público. Por outro
lado, o Analisador de acesso para S3 analisa somente as ações atuais especificadas para o serviço do
Amazon S3 na avaliação do status do acesso.

Para bloquear todo o acesso público a um bucket usando o Analisador de acesso para S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação à esquerda, em Dashboards (Painéis), escolha Access Analyzer for S3.
3. No Analisador de acesso para S3, escolha um bucket.
4. Selecione Block all public access (Bloquear todo o acesso público).
5. Para confirmar sua intenção de bloquear todo o acesso público ao bucket, em Block all public access
(bucket settings) (Bloquear todo o acesso público [configurações de bucket]), digite confirm.

O Amazon S3 bloqueia todo o acesso público ao bucket. O status da descoberta do bucket é


atualizado para resolved (resolvido) e o bucket desaparece da listagem do Analisador de acesso para
S3. Se você quiser revisar os buckets resolvidos, abra o IAM Analisador de acesso no console do IAM.

Revisar e alterar o acesso ao bucket


Se você não pretendia conceder acesso às contas públicas ou outras contas da AWS, incluindo contas
fora da organização, poderá modificar a ACL do bucket, a política de bucket ou a política de ponto de
acesso para remover o acesso ao bucket. A coluna Shared through (Compartilhado por) mostra todas as
origens de acesso ao bucket: política de bucket, ACL de bucket e/ou política de ponto de acesso.

Como revisar e alterar uma política de bucket, uma ACL de bucket ou uma política de ponto de
acesso

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Access Analyzer for S3 (Analisador de acesso para S3).
3. Para ver se o acesso público ou o acesso compartilhado é concedido por meio de uma política de
bucket, uma ACL de bucket ou uma política de ponto de acesso, verifique a coluna Shared through
(Compartilhado por).
4. Em Buckets, escolha o nome do bucket com a política de bucket, a ACL de bucket ou a política de
ponto de acesso a ser alterada ou revisada.
5. Se você quiser alterar ou exibir uma ACL de bucket:

a. Escolha Permissions.
b. Escolha Access Control List.
c. Revise a ACL de bucket e faça as alterações conforme necessário.

Para obter mais informações, consulte Configurar ACLs (p. 448)

Versão da API 2006-03-01


498
Amazon Simple Storage Service Guia do usuário
Revisar o acesso ao bucket

6. Se você quiser alterar ou revisar uma política de bucket:

a. Escolha Permissions (Permissões).


b. Escolha Bucket Policy.
c. Revise ou altere a política de bucket conforme necessário.

Para obter mais informações, consulte Adicionar uma política de bucket usando o console do
Amazon S3 (p. 377)
7. Se você quiser revisar ou alterar uma política de ponto de acesso:

a. Escolha access points (pontos de acesso).


b. Escolha o nome do ponto de acesso.
c. Revise ou altere o acesso conforme necessário.

Para obter mais informações, consulte Usar pontos de acesso do Amazon S3 com o console do
Amazon S3 (p. 491).

Se você editar ou remover uma ACL de bucket, uma política de bucket ou uma política de ponto de
acesso para remover o acesso público ou compartilhado, o status das descobertas do bucket será
atualizado para resolved (resolvido). As descobertas de bucket resolvidas desaparecem da lista do
Analisador de acesso para S3, mas você pode visualizá-las no Analisador de acesso do IAM.

Arquivar descobertas de bucket


Se um bucket conceder acesso a contas públicas ou outras contas da AWS, inclusive contas fora da
organização, para dar suporte a um caso de uso específico (por exemplo, um site estático, downloads
públicos ou compartilhamento entre contas), você poderá arquivar a descoberta do bucket. Ao arquivar
descobertas de bucket, você reconhece e registra sua intenção de que o bucket permaneça público ou
compartilhado. As descobertas de bucket arquivadas permanecem na listagem do Analisador de acesso
para S3 para que você sempre saiba quais buckets são públicos ou compartilhados.

Como arquivar descobertas de bucket no Analisador de acesso para S3

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Access Analyzer for S3 (Analisador de acesso para S3).
3. No Analisador de acesso para S3, escolha um bucket ativo.
4. Para confirmar sua intenção de que esse bucket seja acessado pelas contas públicas ou outras
contas da AWS, inclusive contas fora da organização, escolha Archive (Arquivar).
5. Digite confirm e escolha Archive (Arquivar).

Ativar uma descoberta de bucket arquivada


Depois de arquivar descobertas, você sempre poderá revisitá-las e alterar o status novamente para ativo,
indicando que o bucket requer outra análise.

Como ativar uma descoberta de bucket arquivado no Analisador de acesso para S3

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Access Analyzer for S3 (Analisador de acesso para S3).
3. Escolha as descobertas do bucket arquivadas.
4. Escolha Mark as active (Marcar como ativo).
Versão da API 2006-03-01
499
Amazon Simple Storage Service Guia do usuário
Controlar a propriedade do objeto

Visualizar detalhes de descobertas


Se você precisar ver mais informações sobre um bucket, poderá abrir os detalhes de descobertas de
bucket no Analisador de acesso do IAM no console do IAM.

Para exibir detalhes de busca no Analisador de acesso para S3

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Access Analyzer for S3 (Analisador de acesso para S3).
3. No Analisador de acesso para S3, escolha um bucket.
4. Escolha View details (Exibir detalhes).

Os detalhes de descoberta são abertos no Analisador de acesso do IAM no console do IAM.

Fazer download de um relatório do Analisador de acesso para S3


Você pode fazer download das descobertas de bucket como um relatório CSV que pode ser usado para
fins de auditoria. O relatório inclui as mesmas informações que você vê no Analisador de acesso para S3
no console do Amazon S3.

Como fazer download de um relatório

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação à esquerda, escolha Access Analyzer for S3 (Analisador de acesso para S3).
3. No filtro Região, escolha a região.

Atualizações do Analisador de acesso para S3 mostram buckets para a região escolhida.


4. Escolha Download report (Fazer download do relatório).

Um relatório CSV é gerado e salvo no computador.

Controlar a propriedade de objetos carregados usando


a propriedade de objetos do S3
Propriedade de objetos do S3 é uma configuração de bucket do Amazon S3 que pode ser usada para
controlar a propriedade de novos objetos que são carregados nos buckets. Por padrão, quando outras
contas da AWS carregam objetos no bucket, os objetos permanecem de propriedade da conta que fez
upload. Com a Propriedade de objetos do S3, todos os novos objetos que são gravados por outras
contas com a lista de controle de acesso (ACL) padrão bucket-owner-full-control se tornam
automaticamente propriedade do proprietário do bucket, que terá controle total dos objetos.

Você pode criar armazenamentos de dados compartilhados nos quais vários usuários e equipes em
diferentes contas podem gravar e ler e padronizar a propriedade de novos objetos no bucket. Como
proprietário do bucket, você pode compartilhar e gerenciar o acesso a esses objetos por meio de políticas
baseadas em recursos, como uma política de bucket. A Propriedade de objetos do S3 não afeta os objetos
existentes.

Esse recurso tem duas configurações:

• Object writer (Gravador de objetos): a conta que fez upload será proprietária do objeto.
• Bucket owner preferred (Proprietário do bucket preferencial): o proprietário do bucket será proprietário
do objeto se o objeto for carregado com a ACL padrão bucket-owner-full-control. Sem essa
configuração e a ACL padrão, o objeto é carregado e permanece como propriedade da conta de que

Versão da API 2006-03-01


500
Amazon Simple Storage Service Guia do usuário
Controlar a propriedade do objeto

fez upload. Para obter informações sobre como aplicar a propriedade do objeto, consulte Como posso
garantir que assumo a propriedade de novos objetos? (p. 501).

Tópicos
• Como posso garantir que assumo a propriedade de novos objetos? (p. 501)
• Usar a Propriedade de objetos do S3 com Replicação do Amazon S3 (p. 502)
• Definir a Propriedade de objetos do S3 (p. 502)

Como posso garantir que assumo a propriedade de novos


objetos?
Após definir a Propriedade de objetos do S3 como a preferência do proprietário do bucket, você poderá
adicionar uma política de bucket para exigir que todas as operações PUT do Amazon S3 incluam a
bucket-owner-full-controlACL padrão. Essa ACL concede ao proprietário do bucket controle total
de novos objetos. Com a configuração Propriedade do objeto do S3, ele transfere a propriedade do objeto
para o proprietário do bucket. Se o a pessoa que fez upload não atender ao requisito de ACL no upload,
a solicitação falhará. Isso permite que os proprietários do bucket imponham a propriedade uniforme de
objetos em todos os objetos recém-carregados em seus buckets.

A política de bucket a seguir especifica que a conta 111122223333 pode fazer upload de objetos DOC-
EXAMPLE-BUCKET somente quando a ACL do objeto estiver definida como bucket-owner-full-
control. Substitua 111122223333 por uma conta real e DOC-EXAMPLE-BUCKET com o nome de um
bucket real.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Only allow writes to my bucket with bucket owner full control",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/ExampleUser"
]
},
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}

Veja a seguir um exemplo de operação de cópia que inclui a ACL padrão bucket-owner-full-
control usando a interface de linha de comando da AWS (CLI da AWS).

aws s3 cp file.txt s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

Se o cliente não incluir a ACL padrão bucket-owner-full-control, a operação falhará e a pessoa


que fez upload receberá o seguinte erro:

Versão da API 2006-03-01


501
Amazon Simple Storage Service Guia do usuário
Verificar a propriedade do bucket

An error occurred (AccessDenied) when calling the PutObject operation: Access Denied (Ocorreu um erro
(AccessDenied) ao chamar a operação PutObject: acesso negado).
Note

Se os clientes precisarem de acesso a objetos após o upload, será necessário conceder


permissões adicionais à conta de upload. Para obter informações sobre como conceder a contas
acesso aos seus recursos, consulte Demonstrações de exemplo: gerenciar o acesso aos recursos
do Amazon S3 (p. 410).

Usar a Propriedade de objetos do S3 com Replicação do Amazon


S3
A Propriedade de objetos do S3 não altera o comportamento da Replicação do Amazon S3. Na replicação,
por padrão o proprietário do objeto de origem também é proprietário da réplica. Quando os buckets de
origem e de destino são de propriedade de diferentes contas da AWS, você pode adicionar configurações
opcionais para alterar a propriedade da réplica.

Para transferir a propriedade de objetos replicados para o proprietário do bucket de destino, você pode
usar a opção de substituição do proprietário da Replicação do Amazon S3. Para obter mais informações
sobre como transferir a propriedade de réplicas, consulte Alterar o proprietário da réplica (p. 670).

Definir a Propriedade de objetos do S3


Esta seção fornece exemplos de como habilitar a Propriedade de objetos do S3. Use o Console de
Gerenciamento da AWS que fornece uma IU para gerenciar permissões sem escrever códigos.

Como configurar a propriedade do objeto do S3 como proprietário do bucket


preferencial no Console de Gerenciamento da AWS
A propriedade do objeto do S3 permite que você se aproprie de novos objetos que outras contas da AWS
carregam no bucket com a lista de controle de acesso (ACL) padrão bucket-owner-full-control.
Esta seção descreve como definir a propriedade do objeto usando o console.

Definir a propriedade do objeto como proprietário do bucket preferido em um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar a propriedade do objeto
do S3.
3. Escolha a guia Permissions.
4. Escolha Edit (Editar) em Object Ownership (Propriedade do objeto).
5. Escolha o Bucket owner preferred (Proprietário do bucket preferencial) e selecione Save (Salvar).

Com as etapas acima, a propriedade do objeto assumirá a propriedade de qualquer objeto novo escrito
por outras contas com a ACL padrão bucket-owner-full-control. Para obter informações sobre
como aplicar a Propriedade de objetos, consulte Como posso garantir que assumo a propriedade de novos
objetos? (p. 501).

Verificar a propriedade do bucket com a condição de


proprietário do bucket
A condição de proprietário do bucket do Amazon S3 garante que os buckets que você usa em suas
operações do S3 pertençam às contas da AWS que você espera.

Versão da API 2006-03-01


502
Amazon Simple Storage Service Guia do usuário
Verificar a propriedade do bucket

A maioria das operações do S3 lê ou grava em buckets específicos do S3. Essas operações incluem fazer
upload, cópia e download de objetos, recuperar ou modificar as configurações de bucket e recuperar ou
modificar as configurações de objeto. Ao executar essas operações, você especifica o bucket que deseja
usar, incluindo seu nome com a solicitação. Por exemplo, para recuperar um objeto do S3, você faz uma
solicitação que especifica o nome de um bucket e a chave de objeto a ser recuperada desse bucket.

Como o Amazon S3 identifica buckets com base em seus nomes, uma aplicação que usa um nome de
bucket incorreto em uma solicitação pode executar operações inadvertidamente em um bucket diferente do
esperado. Para ajudar a evitar interações não intencionais de bucket em situações como essa, você pode
usar a condição do proprietário do bucket. A condição de proprietário do bucket permite que você verifique
se o bucket de destino pertence à conta esperada da AWS, fornecendo uma camada adicional de garantia
de que suas operações do S3 estão tendo os efeitos que você pretende.

Tópicos
• Quando usar a condição do proprietário do bucket (p. 503)
• Verificar um proprietário do bucket (p. 503)
• Exemplos (p. 504)
• Restrições e limitações (p. 506)

Quando usar a condição do proprietário do bucket


Recomendamos usar a condição de proprietário do bucket sempre que você executar uma operação
compatível do S3 e conhecer o ID da conta do proprietário do bucket esperado. A condição do proprietário
do bucket está disponível para todas as operações de objeto do S3 e para a maioria das operações
de bucket do S3. Para obter uma lista de operações do S3 que não oferecem suporte à condição de
proprietário do bucket, consulte Restrições e limitações (p. 506).

Para ver o benefício de usar a condição de proprietário do bucket, considere o seguinte cenário
envolvendo a cliente da AWS, Bea:

1. Bea desenvolve uma aplicação que usa o Amazon S3. Durante o desenvolvimento, Bea usa sua
conta da AWS somente para testes para criar um bucket chamado bea-data-test e configura sua
aplicação para fazer solicitações bea-data-test.
2. Bea implanta sua aplicação, mas esquece de reconfigurar a aplicação para usar um bucket em sua
conta da AWS de produção.
3. Na produção, a aplicação de Bea faz solicitações para bea-data-test, que são bem-sucedidas. Isso
resulta na gravação de dados de produção no bucket na conta de teste da Bea.

Bea pode ajudar a evitar situações como esta usando a condição de proprietário do bucket. Com a
condição de proprietário do bucket, Bea pode incluir o ID da conta da AWS do proprietário do bucket
esperado em suas solicitações. O Amazon S3, então, verifica o ID da conta do proprietário do bucket antes
de processar cada solicitação. Se o proprietário real do bucket não corresponder ao proprietário do bucket
esperado, a solicitação falhará.

Se Bea usar a condição de proprietário do bucket, o cenário descrito anteriormente não resultará na
gravação inadvertida da aplicação de Bea em um bucket de teste. Em vez disso, as solicitações que sua
aplicação fizer na etapa 3 falharão e apresentarão uma mensagem de erro descritiva. Ao usar a condição
de proprietário do bucket, Bea ajuda a eliminar o risco de interagir acidentalmente com buckets na conta
errada da AWS.

Verificar um proprietário do bucket


Para usar a condição de proprietário do bucket, você inclui um parâmetro com sua solicitação que
especifica o proprietário do bucket esperado. A maioria das operações do S3 envolve apenas um único
bucket e requer apenas esse parâmetro único para usar a condição de proprietário do bucket. Para

Versão da API 2006-03-01


503
Amazon Simple Storage Service Guia do usuário
Verificar a propriedade do bucket

operações CopyObject, esse primeiro parâmetro especifica o proprietário esperado do bucket de destino
e você inclui um segundo parâmetro para especificar o proprietário esperado do bucket de origem.

Quando você faz uma solicitação que inclui um parâmetro de condição do proprietário do bucket, o S3
verifica o ID da conta do proprietário do bucket em relação ao parâmetro especificado antes de processar
a solicitação. Se o parâmetro corresponder ao ID da conta do proprietário do bucket, o S3 processará
a solicitação. Se o parâmetro não corresponder ao ID da conta do proprietário do bucket, a solicitação
falhará e apresentará uma mensagem de erro descritiva.

Você pode usar a condição de proprietário do bucket com a Interface da linha de comando da AWS (CLI
da AWS), AWS SDKs e APIs REST do Amazon S3. Ao usar a condição de proprietário do bucket com a
AWS CLI e as APIs REST do Amazon S3, use os seguintes nomes de parâmetros.

Método de acesso Parâmetro para Copiar parâmetro de Copiar parâmetro de


operações sem cópia origem da operação destino da operação

CLI da AWS --expected-bucket- --expected-source- --expected-bucket-


owner bucket-owner owner

APIs REST do Amazon Cabeçalho x-amz- Cabeçalho x-amz- Cabeçalho x-amz-


S3 expected-bucket- source-expected- expected-bucket-
owner bucket-owner owner

Os nomes de parâmetros necessários para usar a condição de proprietário do bucket com os AWS SDKs
variam dependendo do idioma. Para determinar os parâmetros necessários, consulte a documentação do
SDK para o idioma desejado. Você pode encontrar a documentação do SDK em Tools to Build on AWS.

Exemplos
Os exemplos a seguir mostram como você pode implementar a condição de proprietário do bucket no
Amazon S3 usando a AWS CLI ou o AWS SDK para Java 2.x.

Example
Exemplo: fazer upload de um objeto

O exemplo a seguir faz upload de um objeto para o bucket do S3 DOC-EXAMPLE-BUCKET1, usando a


condição de proprietário do bucket para garantir que DOC-EXAMPLE-BUCKET1 seja de propriedade da
conta da AWS 111122223333.

AWS CLI

aws s3api put-object \


--bucket DOC-EXAMPLE-BUCKET1 --key exampleobject --
body example_file.txt \
--expected-bucket-owner 111122223333

AWS SDK for Java 2.x

public void putObjectExample() {


S3Client s3Client = S3Client.create();;
PutObjectRequest request = PutObjectRequest.builder()
.bucket("DOC-EXAMPLE-BUCKET1")
.key("exampleobject")
.expectedBucketOwner("111122223333")
.build();
Path path = Paths.get("example_file.txt");
s3Client.putObject(request, path);

Versão da API 2006-03-01


504
Amazon Simple Storage Service Guia do usuário
Verificar a propriedade do bucket

Example
Exemplo: copiar um objeto

O exemplo a seguir copia o objeto object1 do bucket do S3 DOC-EXAMPLE-BUCKET1 para o bucket do


S3 DOC-EXAMPLE-BUCKET2. Ele usa a condição de proprietário do bucket para garantir que os buckets
sejam de propriedade das contas esperadas de acordo com a tabela a seguir.

Bucket Proprietário esperado

DOC-EXAMPLE-BUCKET1 111122223333

DOC-EXAMPLE-BUCKET2 444455556666

AWS CLI

aws s3api copy-object --copy-source DOC-EXAMPLE-BUCKET1/object1 \


--bucket DOC-EXAMPLE-BUCKET2 --key object1copy \
--expected-source-bucket-owner 111122223333 --expected-
bucket-owner 444455556666

AWS SDK for Java 2.x

public void copyObjectExample() {


S3Client s3Client = S3Client.create();
CopyObjectRequest request = CopyObjectRequest.builder()
.copySource("DOC-EXAMPLE-BUCKET1/object1")
.destinationBucket("DOC-EXAMPLE-BUCKET2")
.destinationKey("object1copy")
.expectedSourceBucketOwner("111122223333")
.expectedBucketOwner("444455556666")
.build();
s3Client.copyObject(request);
}

Example
Exemplo: recuperar uma política de bucket

O exemplo a seguir recupera a política de acesso para o bucket do S3 DOC-EXAMPLE-BUCKET1, usando


a condição de proprietário do bucket para garantir que DOC-EXAMPLE-BUCKET1 seja de propriedade da
conta da AWS 111122223333.

AWS CLI

aws s3api get-bucket-policy --bucket DOC-EXAMPLE-BUCKET1 --expected-bucket-


owner 111122223333

AWS SDK for Java 2.x

public void getBucketPolicyExample() {


S3Client s3Client = S3Client.create();
GetBucketPolicyRequest request = GetBucketPolicyRequest.builder()
.bucket("DOC-EXAMPLE-BUCKET1")

Versão da API 2006-03-01


505
Amazon Simple Storage Service Guia do usuário
Registro em log e monitoramento

.expectedBucketOwner("111122223333")
.build();
try {
GetBucketPolicyResponse response = s3Client.getBucketPolicy(request);
}
catch (S3Exception e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
}
}

Restrições e limitações
A condição de proprietário do bucket do Amazon S3 tem as seguintes restrições e limitações:

• O valor do parâmetro de condição do proprietário do bucket deve ser um ID de conta da AWS (string
alfanumérica de 12 dígitos). Não há compatibilidade com os principais de serviço.
• A condição do proprietário do bucket não está disponível para CreateBucket, ListBuckets, ou qualquer
uma das operações incluídas no AWS S3 Control. O Amazon S3 ignora todos os parâmetros de
condição do proprietário do bucket incluídos nas solicitações para essas operações.
• A condição do proprietário do bucket verifica apenas se a conta especificada no parâmetro de
verificação é proprietária do bucket. A condição do proprietário do bucket não verifica a configuração do
bucket. Também não garante que a configuração do bucket atenda a quaisquer condições específicas
ou corresponda a qualquer estado passado.

Registrar em log e monitorar no Amazon S3


O monitoramento é uma parte importante para manter a confiabilidade, a disponibilidade e a performance
do Amazon S3 e das soluções da AWS. Você deve coletar dados de monitoramento de todas as partes de
sua solução da AWS para ser mais fácil realizar a depuração de uma falha de vários pontos (caso ocorra).
A AWS fornece várias ferramentas para monitorar os recursos do Amazon S3 e responder a possíveis
incidentes.

Para obter mais informações, consulte Monitorar o Amazon S3 (p. 812).

Alarmes do Amazon CloudWatch

Ao usar alarmes do Amazon CloudWatch, você observa uma única métrica durante um período
especificado. Se a métrica exceder determinado limite, uma notificação será enviada para um tópico
do Amazon SNS ou para uma política do AWS Auto Scaling. Os alarmes do CloudWatch não invocam
ações só porque estão em um determinado estado. O estado deve ter sido alterado e mantido por
uma quantidade especificada de períodos. Para obter mais informações, consulte Monitoramento de
métricas com o Amazon CloudWatch (p. 855).
Logs do AWS CloudTrail

O CloudTrail fornece um registro de ações executadas por um usuário, uma função ou um serviço
da AWS no Amazon S3. Usando as informações coletadas pelo CloudTrail, é possível determinar
a solicitação feita para o Amazon S3, o endereço IP do qual a solicitação foi feita, quem fez a
solicitação, quando ela foi feita e detalhes adicionais. Para obter mais informações, consulte Registrar
em log chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815).
Logs de acesso do Amazon S3

Os logs de acesso ao servidor fornecem registros detalhados das solicitações feitas a um bucket. Os
logs de acesso ao servidor são úteis para muitos aplicativos. Por exemplo, as informações do log de

Versão da API 2006-03-01


506
Amazon Simple Storage Service Guia do usuário
Validação de conformidade

acesso podem ser úteis em auditorias de segurança e acesso. Para obter mais informações, consulte
Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833).
AWS Trusted Advisor

O Trusted Advisor baseia-se nas práticas recomendadas aprendidas ao atender centenas de milhares
de clientes da AWS. O Trusted Advisor inspeciona seu ambiente da AWS e faz recomendações
quando há oportunidades para economizar dinheiro, melhorar a performance do sistema ou ajuda a
corrigir falhas de segurança. Todos os clientes da AWS têm acesso a cinco verificações do Trusted
Advisor. Os clientes com um plano de suporte Business ou Enterprise podem ver todas as verificações
do Trusted Advisor.

O Trusted Advisor tem as seguintes verificações relacionadas ao Amazon S3:


• Configuração de registro em log de buckets do Amazon S3.
• Verificações de segurança para buckets do Amazon S3 que têm permissões de acesso livre.
• Verificações de tolerância a falhas para buckets do Amazon S3 que não têm versionamento
habilitado ou têm versionamento suspenso.

Para obter mais informações, consulte AWS Trusted Advisor no Guia do usuário do AWS Support.

As melhores práticas de segurança a seguir também abordam registros em logs e monitoramento:

• Identificar e auditar todos os buckets do Amazon S3


• Implementar o monitoramento usando ferramentas de monitoramento da AWS
• Ativar o AWS Config
• Ativar registro em log de acesso ao servidor do Amazon S3
• Usar o AWS CloudTrail
• Monitorar os aconselhamentos de segurança da AWS

Validação de conformidade para o Amazon S3


Auditores terceiros avaliam a segurança e a conformidade do Amazon S3 como parte de vários programas
de conformidade da AWS, incluindo o seguinte:

• Controles do Sistema e da Organização (CSO)


• Padrão de segurança de dados do setor de cartão de pagamento (Payment Card Industry Data Security
Standard, PCI DSS)
• Federal Risk and Authorization Management Program (FedRAMP)
• Lei de Portabilidade e Responsabilidade de Provedores de Saúde (HIPAA) dos EUA

A AWS fornece uma lista atualizada com frequência de serviços da AWS no escopo de programas de
conformidade específicos em Serviços da AWS no escopo do programa de conformidade.

Os relatórios de auditoria de terceiros estão disponíveis para download no AWS Artifact. Para obter mais
informações, consulte Download de relatórios no AWS Artifact.

Para obter mais informações sobre programas de conformidade da AWS, consulte Programas de
conformidade da AWS.

Sua responsabilidade de conformidade ao usar o Amazon S3 é determinada pela confidencialidade de


seus dados, pelas metas de conformidade da sua organização e pelas regulamentações e leis aplicáveis.
Caso o uso do Amazon S3 esteja sujeito à conformidade com padrões como HIPAA, PCI ou FedRAMP, a
AWS fornecerá os recursos para ajudar:

Versão da API 2006-03-01


507
Amazon Simple Storage Service Guia do usuário
Resiliência

• Guias de início rápido de segurança e conformidade que discutem as considerações de arquitetura


e fornecem etapas para a implantação de ambientes de linha de base focados em conformidade e
segurança na AWS.
• O whitepaper Arquitetar para segurança e conformidade com a HIPAA na Amazon Web Services
descreve como as empresas usam a AWS para ajudar a atender aos requisitos da HIPAA.
• Os Recursos de conformidade da AWS fornecem vários guias e manuais que podem se aplicar ao seu
setor e local.
• O AWS Config pode ser usado para avaliar até que ponto suas configurações de recursos atendem
adequadamente a práticas internas e a diretrizes e regulamentações do setor.
• O AWS Security Hub fornece uma visão abrangente do estado de sua segurança na AWS e ajuda você
a verificar a conformidade com os padrões e as melhores práticas do setor de segurança.
• O Usar o S3 Object Lock (p. 554) pode ajudar a atender os requisitos de reguladores de serviços
financeiros (como o SEC, FINRA e CFTC) que exigem armazenamento de dados WORM (Write Once,
Read Many) para determinados tipos de informações gravadas.
• O Inventário do Amazon S3 (p. 605) pode ajudar você a auditar e gerar relatórios sobre o status da
replicação e da criptografia de seus objetos para suas necessidades comerciais, de conformidade e
regulatórias.

Resiliência no Amazon S3
A infraestrutura global da AWS é criada com base em regiões e zonas de disponibilidade. As regiões da
AWS fornecem várias zonas de disponibilidade separadas e isoladas fisicamente, que são conectadas
com baixa latência, alta taxa de transferência e redes altamente redundantes. As zonas de disponibilidade
oferecem a você uma forma eficiente para criar e operar aplicativos e bancos de dados. Elas são mais
altamente disponíveis, tolerantes a falhas e escaláveis que infraestruturas com único data center ou
infraestruturas com vários datacenters tradicionais. Se for necessário replicar seus dados especificamente
em distâncias geográficas maiores, você poderá usar o Replicação de objetos (p. 617), que permite a
cópia automática e assíncrona de objetos entre buckets de diferentes regiões da AWS.

Cada região da AWS tem várias zonas de disponibilidade. Você pode implantar suas aplicações em
diversas zonas de disponibilidade na mesma região para tolerância de falha e baixa latência. As zonas
de disponibilidade são conectadas umas as outras com redes de fibra ótica rápidas e privadas, que
permitem o desenvolvimento de aplicações submetidas a failover automaticamente entre as zonas de
disponibilidade, sem interrupções.

Para obter mais informações sobre regiões da AWS e zonas de disponibilidade, consulte Infraestrutura
global da AWS.

Além da infraestrutura global da AWS, o Amazon S3 oferece vários recursos para oferecer suporte às suas
necessidades de resiliência e backup de dados.

Configuração do ciclo de vida

Uma configuração de ciclo de vida é um conjunto de regras que definem as ações aplicadas pelo
Amazon S3 a um grupo de objetos. Com regras de configuração de ciclo de vida, é possível solicitar
que o Amazon S3 faça a transição de objetos para classes de armazenamento menos caras,
arquive-os ou exclua-os. Para obter mais informações, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).
Versionamento

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 Amazon S3. Com o versionamento, você pode se recuperar, facilmente,
de ações não intencionais do usuário e de falhas de aplicativo. Para obter mais informações, consulte
Usando o controle de versão em buckets do S3 (p. 516).

Versão da API 2006-03-01


508
Amazon Simple Storage Service Guia do usuário
Criptografia de backup

Bloqueio de objetos do S3

Você pode usar o bloqueio de objetos do S3 para armazenar objetos usando um modelo gravar uma
vez, ler muitas (WORM, write once read many). Ao usar o bloqueio de objetos do S3, você pode evitar
que um objeto seja excluído ou substituído por um período fixo ou indefinidamente. O bloqueio de
objetos do S3 permite atender aos requisitos regulamentares que exigem armazenamento WORM,
ou simplesmente adicionar uma camada extra de proteção contra alterações e exclusões de objetos.
Para obter mais informações, consulte Usar o S3 Object Lock (p. 554).
Classes de armazenamento

O Amazon S3 oferece uma variedade de classes de armazenamento para os objetos que você
armazena. Duas dessas classes de armazenamento (STANDARD_IA e ONEZONE_IA) foram
desenvolvidas para dados duradouros e acessados com pouca frequência, como backups. Também é
possível usar a classe de armazenamento do S3 Glacier para arquivar objetos que você não precisa
acessar em tempo real. Para obter mais informações, consulte Uso de classes de armazenamento do
Amazon S3 (p. 563).

As melhores práticas de segurança a seguir também abordam resiliência:

• Habilitar o versionamento
• Considerar replicação entre regiões do Amazon S3
• Identificar e auditar todos os buckets do Amazon S3

Criptografia de backups do Amazon S3


Se estiver armazenando backups usando o Amazon S3, a criptografia dos backups dependerá da
configuração desses buckets. O Amazon S3 fornece uma forma de configurar o comportamento de
criptografia padrão para um bucket do S3. Você pode configurar a criptografia padrão em um bucket
para que todos os objetos sejam criptografados quando forem armazenados nele. A criptografia padrão é
compatível com as chaves armazenadas no AWS KMS (SSE-KMS). Para obter mais informações, consulte
Definir o comportamento padrão de criptografia do lado do servidor para buckets do Amazon S3 (p. 43).

Para obter mais informações sobre versionamento e bloqueio de objetos, consulte os seguintes tópicos:
Usando o controle de versão em buckets do S3 (p. 516) Usar o S3 Object Lock (p. 554)

Segurança da infraestrutura no Amazon S3


Como serviço gerenciado, o Amazon S3 é protegido pelos procedimentos de segurança da rede global da
AWS descritos em Amazon Web Services: visão geral dos processos de segurança.

O acesso ao Amazon S3 pela rede acontece por meio de APIs publicadas pela AWS. Os clientes devem
ter suporte ao Transport Layer Security (TLS) 1.0. Recomendamos TLS 1.2. Os clientes também devem
ter suporte a pacotes de criptografia com sigilo de encaminhamento perfeito (PFS) como Ephemeral Diffie-
Hellman (DHE) ou Elliptic Curve Diffie-Hellman Encaminhamento (ECDHE). Além disso, as solicitações
devem ser assinadas usando AWS Signature V4 ou AWS Signature V2, necessitando de credenciais
válidas para o fornecimento.

Essas APIs podem ser chamadas de qualquer local da rede. No entanto, o Amazon S3 não oferece
suporte a políticas de acesso com base em recursos, que podem incluir restrições com base no endereço
IP de origem. Você também pode usar políticas de bucket do Amazon S3 para controlar o acesso a
buckets de endpoints específicos da Virtual Private Cloud (VPC) ou VPCs específicas. Efetivamente, isso
isola o acesso à rede para um determinado bucket do Amazon S3 somente da VPC específica dentro da
rede da AWS. Para obter mais informações, consulte Controlar o acesso a partir de VPC endpoints com
políticas de bucket (p. 377).

Versão da API 2006-03-01


509
Amazon Simple Storage Service Guia do usuário
Análise de configuração e vulnerabilidade

As melhores práticas de segurança a seguir também abordam a segurança de infraestrutura no Amazon


S3:

• Considerar VPC endpoints para acesso do Amazon S3


• Identificar e auditar todos os buckets do Amazon S3

Análise de configuração e vulnerabilidade no


Amazon S3
A AWS se encarrega das tarefas básicas de segurança, como aplicação de patches a bancos de dados
e sistemas operacionais (SOs) convidados, configuração de firewalls e recuperação de desastres. Esses
procedimentos foram revisados e certificados por terceiros certificados. Para obter mais detalhes, consulte
os recursos a seguir:

• Validação de conformidade para o Amazon S3 (p. 507)


• Modelo de responsabilidade compartilhada
• Amazon Web Services: visão geral dos processos de segurança

As seguintes melhores práticas de segurança também abordam a análise de configuração e


vulnerabilidade no Amazon S3:

• Identificar e auditar todos os buckets do Amazon S3


• Ativar o AWS Config

Melhores práticas de segurança para o Amazon S3


O Amazon S3 fornece uma série de recursos de segurança a serem considerados no desenvolvimento e
na implementação das suas próprias políticas de segurança. As melhores práticas a seguir são diretrizes
gerais e não representam uma solução completa de segurança. Como essas práticas recomendadas
podem não ser adequadas ou suficientes no seu ambiente, trate-as como considerações úteis em vez de
requisitos.

Tópicos
• Melhores práticas de segurança preventivas do Amazon S3 (p. 510)
• Melhores práticas de auditoria e monitoramento do Amazon S3 (p. 513)

Melhores práticas de segurança preventivas do


Amazon S3
As seguintes práticas recomendadas do Amazon S3 podem ajudar a evitar incidentes de segurança.

Garantir que seus buckets do Amazon S3 utilizem as políticas corretas e não sejam acessados
publicamente

A não ser que seja absolutamente necessário que alguém na internet possa ler ou escrever no seu
bucket do S3, o bucket do S3 não deve ser público. Você pode seguir algumas das etapas abaixo:
• Use o bloqueio de acesso público do Amazon S3. Com o Bloqueio de acesso público do Amazon
S3, os administradores de conta e os proprietários de bucket podem configurar facilmente os

Versão da API 2006-03-01


510
Amazon Simple Storage Service Guia do usuário
Melhores práticas de segurança preventivas do Amazon S3

controles centralizados impostos para limitar o acesso público aos recursos do Amazon S3,
independentemente de como os recursos são criados. Para obter mais informações, consulte
Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).
• Identifique as políticas de bucket do Amazon S3 que permitem uma identidade curinga, como
entidade principal “*” (que efetivamente significa “qualquer pessoa”), ou que permitem uma ação
curinga “*” (que efetivamente permite que o usuário realize qualquer ação no bucket do Amazon
S3).
• Da mesma forma, observe as listas de controle de acesso (ACLs) do bucket do Amazon S3 que
fornecem acesso de leitura, gravação, ou total a “Todos” ou a “Qualquer usuário autenticado da
AWS”.
• Use a API ListBuckets para verificar todos os buckets do Amazon S3. Depois, use
GetBucketAcl, GetBucketWebsite e GetBucketPolicy para determinar se o bucket tem
controles de acesso e configuração dentro da conformidade.
• Use o AWS Trusted Advisor para inspecionar sua implementação do Amazon S3.
• Considere implementar os controles de detecção contínuos usando as regras s3-bucket-public-read-
prohibited e s3-bucket-public-write-prohibited gerenciadas pelo AWS Config.

Para obter mais informações, consulte Identity and Access Management no Amazon S3 (p. 252).
Implementar o privilégio de acesso mínimo

Ao conceder permissões, você decide quem receberá quais permissões para quais recursos do
Amazon S3. Você habilita ações específicas que quer permitir nesses recursos. Portanto, você
deve conceder somente as permissões necessárias para executar uma tarefa. A implementação do
privilégio de acesso mínimo é fundamental para reduzir o risco de segurança e o impacto que pode
resultar de erros ou usuários mal-intencionados.

As ferramentas a seguir estão disponíveis para implementar o privilégio de acesso mínimo:


• Ações do Amazon S3 (p. 273) e Limites de permissões para entidades do IAM
• Políticas de bucket e políticas de usuário (p. 268)
• Visão geral da lista de controle de acesso (ACL) (p. 440)
• Políticas de controle de serviço

Para obter orientação sobre o que considerar ao escolher um ou mais mecanismos precedentes,
consulte Diretrizes para políticas de acesso (p. 258).
Usar funções do IAM para aplicações e serviços da AWS que exigem acesso ao Amazon S3

Para que aplicações no Amazon EC2 ou outros serviços da AWS acessem recursos do Amazon S3,
eles devem incluir credenciais válidas da AWS em suas solicitações de API da AWS. Você não deve
armazenar credenciais da AWS diretamente na aplicação ou na instância do Amazon EC2. Essas
são credenciais de longo prazo que não são automaticamente alternadas e podem ter um impacto
comercial significativo se forem comprometidas.

Em vez disso, você deve usar uma função do IAM para gerenciar credenciais temporárias para
aplicações ou serviços que precisam de acesso ao Amazon S3. Quando você usa uma função, não é
necessário distribuir credenciais de longo prazo (como um nome de usuário e uma senha ou chaves
de acesso) para uma instância do Amazon EC2 ou serviço da AWS como o AWS Lambda. A função
fornece permissões temporárias que os aplicativos podem usar ao fazer chamadas para outros
recursos da AWS.

Para obter mais informações, consulte os seguintes tópicos no Guia do usuário do IAM:
• Funções do IAM
• Cenários comuns para funções: usuários, aplicativos e serviços

Versão da API 2006-03-01


511
Amazon Simple Storage Service Guia do usuário
Melhores práticas de segurança preventivas do Amazon S3

Habilitar exclusão da Multi-Factor Authentication (MFA)

A exclusão da MFA pode ajudar a evitar exclusões acidentais de buckets. Se a exclusão de MFA não
estiver habilitada, qualquer usuário com a senha de uma raiz com privilégio suficiente ou usuário do
IAM poderá excluir um objeto do Amazon S3.

A exclusão de MFA requer autenticação adicional para uma das seguintes operações:
• Alterar o estado de versionamento de seu bucket
• Excluir, permanentemente, uma versão de objeto

Para obter mais informações, consulte Configurando a exclusão de MFA (p. 524).
Considerar a criptografia de dados em repouso

Você tem as seguintes opções de proteção de dados em repouso no Amazon S3:


• Criptografia no lado do servidor: peça que o Amazon S3 criptografe o objeto antes de salvá-lo em
discos em seus datacenters e descriptografe-o ao fazer download dos objetos. A criptografia no lado
do servidor pode ajudar a reduzir o risco dos seus dados criptografando os dados com uma chave
armazenada em um mecanismo diferente do mecanismo que armazena os próprios dados.

O Amazon S3 fornece estas opções de criptografia no lado do servidor:


• Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).
• Criptografia no lado do servidor com chaves mestras do cliente armazenadas no AWS Key
Management Service (SSE-KMS).
• Criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C).

Para obter mais informações, consulte Proteção de dados usando criptografia no lado do
servidor (p. 195).
• Criptografia no lado do cliente: criptografe dados no lado do cliente e faça upload dos dados
criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves
de criptografia e as ferramentas relacionadas. Assim como na criptografia no lado do servidor, a
criptografia no lado do cliente pode ajudar a reduzir o risco criptografando os dados com uma chave
armazenada em um mecanismo diferente do mecanismo que armazena os próprios dados.

O Amazon S3 fornece muitas opções de criptografia no lado do cliente. Para obter mais
informações, consulte Proteger dados usando a criptografia no lado do cliente (p. 239).
Aplicar a criptografia de dados em trânsito

Você pode usar HTTPS (TLS) para ajudar a evitar que invasores espionem ou manipulem tráfego de
rede usando ataques person-in-the-middle (intermediários) ou similares. Você deve permitir apenas
conexões criptografadas por HTTPS (TLS) que usam a condição aws:SecureTransport em políticas de
bucket do Amazon S3.

Considere também implementar controles de detecção contínuos usando a regra gerenciada s3-
bucket-ssl-requests-only do AWS Config.
Considerar o bloqueio de objetos do S3

O Usar o S3 Object Lock (p. 554) permite que você armazene objetos usando um modelo “Write-
Once-Read-Man” (WORM gravação única e várias leituras)". O bloqueio de objetos do S3 pode ajudar
a evitar a exclusão acidental ou inadequada de dados. Por exemplo, você pode usar o bloqueio de
objetos do S3 para ajudar a proteger seus logs do AWS CloudTrail.
Habilitar o versionamento

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 Amazon S3. Com o versionamento, você pode se recuperar, facilmente, de
ações não intencionais do usuário e de falhas de aplicativo.

Versão da API 2006-03-01


512
Amazon Simple Storage Service Guia do usuário
Melhores práticas de auditoria e
monitoramento do Amazon S3

Considere também implementar controles de detecção em andamento usando a regra gerenciada s3-
bucket-versioning-enabled do AWS Config.

Para obter mais informações, consulte Usando o controle de versão em buckets do S3 (p. 516).
Considerar replicação entre regiões do Amazon S3

Embora o Amazon S3 armazene seus dados em diversas zonas de disponibilidade geograficamente


distantes por padrão, requisitos de conformidade podem ditar que você armazene os dados em
distâncias ainda maiores. A replicação entre regiões (CRR) permite que você replique dados entre
regiões distantes da AWS para ajudar a satisfazer esses requisitos. A CRR permite a cópia assíncrona
automática de objetos em buckets, em diferentes regiões da AWS. Para obter mais informações,
consulte Replicação de objetos (p. 617).
Note

A CRR requer que tanto o bucket de origem quanto o de destino tenham o versionamento
habilitado.

Considere também implementar controles de detecção em andamento usando a regra gerenciada s3-
bucket-replication-enabled do AWS Config.
Considerar VPC endpoints para acesso ao Amazon S3

Um VPC endpoint para o Amazon S3 é uma entidade lógica dentro de uma VPC que permite a
conectividade somente com o Amazon S3. Você pode usar políticas de bucket do Amazon S3 para
controlar o acesso a buckets de VPC endpoints específicos ou VPCs específicas. Um VPC endpoint
também pode ajudar a evitar que o tráfego potencialmente atravesse a internet aberta e esteja sujeito
ao ambiente da internet aberta.

Os VPC endpoints para Amazon S3 fornecem várias maneiras de controlar o acesso aos dados do
Amazon S3:
• É possível controlar as solicitações, os usuários ou os grupos permitidos por um VPC endpoint
específico.
• Você pode controlar quais VPCs ou VPC endpoints têm acesso a seus buckets do S3 usando as
políticas de bucket do S3.
• Você pode ajudar a evitar a exfiltração de dados usando uma VPC que não tenha um internet
gateway.

Para obter mais informações, consulte Controlar o acesso a partir de VPC endpoints com políticas de
bucket (p. 377).

Melhores práticas de auditoria e monitoramento do


Amazon S3
As práticas recomendadas a seguir para o Amazon S3 podem ajudar a detectar pontos fracos e incidentes
potenciais de segurança.

Identificar e auditar todos os buckets do Amazon S3

A identificação de seus ativos de TI é um aspecto essencial de governança e segurança. É necessário


ter visibilidade de seus recursos do Amazon S3 para avaliar sua postura de segurança e agir em
possíveis áreas de fraqueza.

Use o Tag Editor para identificar recursos sensíveis quanto a segurança ou auditoria, depois use
essas tags quando precisar procurar por esses recursos. Para obter mais informações, consulte
Pesquisa de recursos para marcar com tags.

Versão da API 2006-03-01


513
Amazon Simple Storage Service Guia do usuário
Melhores práticas de auditoria e
monitoramento do Amazon S3

Você pode usar o inventário do Amazon S3 para auditar e gerar relatórios sobre o status da replicação
e criptografia de seus objetos para os negócios, a conformidade e as necessidades normativas. Para
obter mais informações, consulte Inventário do Amazon S3 (p. 605).

Crie grupos de recursos para seus recursos do Amazon S3. Para obter mais informações, consulte O
que são grupos de recursos da AWS?
Implementar o monitoramento usando ferramentas de monitoramento da AWS

O monitoramento é uma parte importante para manter a confiabilidade, a segurança, a disponibilidade


e o desempenho do Amazon S3 e das soluções da AWS. A AWS fornece várias ferramentas e
serviços para ajudá-lo a monitorar o Amazon S3 e seus outros serviços da AWS. Por exemplo,
você pode monitorar métricas do CloudWatch para o Amazon S3, particularmente, PutRequests,
GetRequests, 4xxErrors e DeleteRequests. Para obter mais informações, consulte
Monitoramento de métricas com o Amazon CloudWatch (p. 855) e Monitorar o Amazon
S3 (p. 812).

Para obter um segundo exemplo, consulte, Exemplo: atividade do bucket do Amazon S3. Este
exemplo descreve como criar um alarme do Amazon CloudWatch que é ativado quando uma chamada
API do Amazon S3 é feita para a política PUT ou DELETE do bucket, ciclo de vida do bucket, ou
replicação do bucket ou para implementar um ACL do bucket.
Ativar registro em log de acesso ao servidor do Amazon S3

O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um
bucket. Os logs de acesso ao servidor podem ajudar na auditoria de segurança e acesso, a saber
mais sobre a base de clientes e entender sua fatura do Amazon S3. Para obter informações sobre
como habilitar o registro em log de acesso ao servidor, consulte Registrar em log as solicitações com
registro em log de acesso ao servidor (p. 833).

Considere também implementar controles de detecção em andamento usando a regra gerenciada s3-
bucket-logging-enabled do AWS Config.
Usar o AWS CloudTrail

O AWS CloudTrail fornece um registro de ações executadas por um usuário, uma função ou um
serviço da AWS no Amazon S3. Você pode usar as informações coletadas pelo CloudTrail para
determinar a solicitação feita para o Amazon S3, o endereço IP do qual a solicitação foi feita, quem
fez a solicitação, quando ela foi feita e detalhes adicionais. Por exemplo, você pode identificar
entradas do CloudTrail para ações Put que afetam o acesso a dados, em particular, PutBucketAcl,
PutObjectAcl, PutBucketPolicy e PutBucketWebsite. Quando você configura sua conta
da AWS, o CloudTrail é ativado por padrão. Você pode visualizar eventos recentes no console do
CloudTrail. Para criar um registro contínuo de atividades e eventos para os buckets do Amazon S3,
você pode criar uma trilha no console do CloudTrail. Para obter mais informações, consulte Registrar
em log eventos de dados para trilhas no Guia do usuário do AWS CloudTrail.

Ao criar uma trilha, você pode configurar o CloudTrail para registrar eventos de dados. Eventos
de dados são registros de operações de recurso executadas no recurso ou dentro de um recurso.
No Amazon S3, os eventos de dados registram a atividade da API no nível do objeto para buckets
individuais. O CloudTrail oferece suporte a um subconjunto de operações de API no nível do objeto
do Amazon S3 como GetObject, DeleteObject e PutObject. Para obter mais informações
sobre como o CloudTrail funciona com o Amazon S3, consulte Registrar em log chamadas de API
do Amazon S3 usando o AWS CloudTrail (p. 815). No console do Amazon S3, você também pode
configurar seus buckets do S3 para Habilitar o log de eventos do CloudTrail para buckets e objetos do
S3 (p. 825).

O AWS Config fornece uma regra gerenciada (cloudtrail-s3-dataevents-enabled) que você


pode usar para confirmar que pelo menos uma trilha do CloudTrail está registrando eventos de dados
para seus buckets do S3. Para obter mais informações, consulte cloudtrail-s3-dataevents-
enabled no Guia do desenvolvedor do AWS Config.

Versão da API 2006-03-01


514
Amazon Simple Storage Service Guia do usuário
Melhores práticas de auditoria e
monitoramento do Amazon S3

Ativar o AWS Config

Várias melhores práticas listadas neste tópico sugerem a criação de regras do AWS Config. O AWS
Config permite avaliar, auditar e verificar as configurações dos recursos da AWS. O AWS Config
monitora as configurações de recursos, permitindo que você avalie as configurações gravadas em
relação às configurações seguras desejadas. Com o AWS Config, você pode analisar alterações
feitas nas configurações e relacionamentos entre os recursos da AWS, examinar os detalhes do
histórico de configuração de recursos e determinar a conformidade geral em relação às configurações
especificadas em diretrizes internas. Isso pode ajudar a simplificar a auditoria de conformidade, a
análise de segurança, o gerenciamento de alterações e a solução de problemas operacionais. Para
obter mais informações, consulte Configurar o AWS Config com o console no Guia do desenvolvedor
do AWS Config. Ao especificar os tipos de recurso que devem ser registrados, inclua os recursos do
Amazon S3.

Para obter um exemplo de como usar o AWS Config para monitorar e responder a buckets do Amazon
S3 que permitem acesso público, consulte Como usar o AWS Config para monitorar e responder a
buckets do Amazon S3 que permitem acesso público no AWS Security Blog.
Considere usar o Amazon Macie com o Amazon S3

O Macie usa machine learning para descobrir, classificar e proteger automaticamente dados
confidenciais na AWS. O Macie reconhece dados confidenciais, como informações de identificação
pessoal (PII) ou propriedade intelectual. Ele fornece painéis e alertas que dão visibilidade ao acesso e
à movimentação desses dados. Para obter mais informações, consulte O que é o Amazon Macie?
Monitorar os aconselhamentos de segurança da AWS

Você deve verificar regularmente os avisos de segurança publicados no Trusted Advisor para sua
conta da AWS. Especificamente, observe avisos sobre buckets do Amazon S3 com “permissões de
acesso em aberto”. Você pode fazer isso programaticamente usando describe-trusted-advisor-checks.

Além disso, monitore ativamente o endereço de e-mail principal registrado em cada uma das suas
contas da AWS. A AWS entrará em contato com você, usando esse endereço de e-mail, sobre
problemas de segurança emergentes que podem afetar você.

Problemas operacionais da AWS com grande impacto são publicados no AWS Service Health
Dashboard. Problemas operacionais também são publicados em contas individuais por meio do
Personal Health Dashboard. Para obter mais informações, consulte a Documentação do AWS Health.

Versão da API 2006-03-01


515
Amazon Simple Storage Service Guia do usuário
Usando o controle de versão do S3

Gerenciando seu armazenamento do


Amazon S3
Depois de criar buckets e carregar objetos no Amazon S3, você pode gerenciar seu armazenamento
de objetos usando recursos como versionamento, classes de armazenamento, bloqueio de objetos,
operações em lote, replicação, tags e muito mais. As seções a seguir fornecem informações detalhadas
sobre os recursos e recursos de gerenciamento de armazenamento disponíveis no Amazon S3.

Tópicos
• Usando o controle de versão em buckets do S3 (p. 516)
• Usar o S3 Object Lock (p. 554)
• Uso de classes de armazenamento do Amazon S3 (p. 563)
• Gerenciando seu ciclo de vida de armazenamento (p. 569)
• Inventário do Amazon S3 (p. 605)
• Replicação de objetos (p. 617)
• Categorizando seu armazenamento usando tags (p. 683)
• Usar tags de alocação de custos para buckets do S3 (p. 693)
• Filtragem e recuperação de dados usando o Amazon S3 Select (p. 710)
• Executar operações em lote do S3 (p. 739)

Usando o controle de versão em buckets do S3


Versionamento no Amazon S3 é um meio de manter diversas variantes de um objeto no mesmo bucket.
Você pode usar o recurso S3 Versioning para preservar, recuperar e restaurar todas as versões de cada
objeto armazenado em seus buckets. Com o versionamento, você pode se recuperar mais facilmente de
ações não intencionais do usuário e de falhas da aplicação. Depois de habilitar o versionamento para um
bucket, se o Amazon S3 receber várias solicitações de gravação do mesmo objeto simultaneamente, ele
armazenará todos esses objetos.

Buckets com versionamento habilitado podem ajudar a recuperar objetos de uma exclusão ou substituição
acidental. Por exemplo, se você excluir um objeto, o Amazon S3 inserirá um marcador de exclusão em
vez de remover o objeto permanentemente. O marcador de exclusão se torna a versão atual do objeto. Se
você substituir um objeto, isso criará uma nova versão do objeto no bucket. Você sempre pode restaurar
a versão anterior. Para obter mais informações, consulte Excluir versões de objetos de um bucket com
versionamento habilitado (p. 534).

Por padrão, o Versionamento do S3 está desativado em buckets e você deve ativá-lo explicitamente. Para
obter mais informações, consulte Habilitar o controle de versão em buckets (p. 521).
Note
A API SOAP não é compatível com o versionamento do S3. O suporte de SOAP via HTTP
está obsoleto, mas continua disponível via HTTPS. Os novos recursos do Amazon S3 não são
compatíveis com SOAP.

Buckets não versionados, habilitados para versão e


suspensos de versão
Os buckets podem estar em um dos três estados:

Versão da API 2006-03-01


516
Amazon Simple Storage Service Guia do usuário
Usando o controle de versão do
S3 com o ciclo de vida do S3

• Não versionado (o padrão)


• Habilitado para versão
• Com versionamento suspenso

Você habilita e suspende o controle de versão no nível do bucket. Depois que um bucket é habilitado
para versionamento, ele nunca pode voltar a um estado sem versionamento. Mas você pode suspender o
versionamento nesse bucket.

O estado de versionamento aplica-se a todos (nunca alguns) os objetos nesse bucket. Quando você
habilita o versionamento em um bucket, todos os novos objetos são versionados e recebem um ID
de versão exclusivo. Os objetos que já existiam no bucket no momento em que o versionamento foi
ativado serão sempre versionados e receberão um ID de versão exclusivo quando forem modificados por
solicitações futuras. Observe o seguinte:

• Os objetos que são armazenados em seu bucket antes da habilitação do versionamento têm um ID
de versão null. Quando você habilita o versionamento, os objetos existentes em seu bucket não são
alterados. O que muda é como o Amazon S3 trata os objetos em solicitações futuras. Para obter mais
informações, consulte Trabalhar com objetos em um bucket com versionamento habilitado (p. 525).
• O proprietário do bucket (ou qualquer usuário com as devidas permissões) pode suspender o
versionamento para interromper o acúmulo de versões de objetos. Quando você suspende o
versionamento, os objetos existentes em seu bucket não são alterados. O que muda é como o Amazon
S3 trata os objetos em solicitações futuras. Para obter mais informações, consulte Trabalhar com objetos
em um bucket com versionamento suspenso (p. 541).

Usando o controle de versão do S3 com o ciclo de


vida do S3
Para personalizar sua abordagem de retenção de dados e controlar os custos de armazenamento, use o
versionamento de objetos com o S3 Lifecycle. Para obter mais informações, consulte Gerenciando seu
ciclo de vida de armazenamento (p. 569). Para obter informações sobre como criar políticas de ciclo de
vida do S3 usando o Console de Gerenciamento da AWS, a AWS CLI, os AWS SDKs ou a API REST,
consulte Definir a configuração do ciclo de vida em um bucket (p. 575).
Important

Se você tem uma política de ciclo de vida de expiração do objeto em seu bucket sem
versionamento e quer manter o mesmo comportamento de exclusão permanente quando ativar
o controle de versão, precisará adicionar uma política de expiração de versão desatualizada. A
política de expiração do ciclo de vida gerencia as exclusões de versões desatualizadas de objeto
no bucket habilitado para versionamento. (Um bucket habilitado para versionamento mantém uma
versão atual e zero ou mais versões desatualizadas de objetos.) Para obter mais informações,
consulte Definir a configuração do ciclo de vida em um bucket (p. 575).

Para obter informações sobre como trabalhar com o Versionamento do S3, consulte os tópicos a seguir.

Tópicos
• Como funciona o Versionamento do S3 (p. 518)
• Habilitar o controle de versão em buckets (p. 521)
• Configurando a exclusão de MFA (p. 524)
• Trabalhar com objetos em um bucket com versionamento habilitado (p. 525)
• Trabalhar com objetos em um bucket com versionamento suspenso (p. 541)
• Trabalhando com objetos arquivados (p. 544)

Versão da API 2006-03-01


517
Amazon Simple Storage Service Guia do usuário
Versionamento do S3

Como funciona o Versionamento do S3


Você pode usar o versionamento do S3 para manter várias versões de um objeto em um bucket e permitir
que você restaure objetos excluídos ou substituídos acidentalmente. Por exemplo, se você excluir um
objeto em vez de removê-lo permanentemente, o Amazon S3 inserirá um marcador de exclusão, o que se
torna a versão atual do objeto. Você pode então restaurar a versão anterior. Para obter mais informações,
consulte Excluir versões de objetos de um bucket com versionamento habilitado (p. 534). Se você
substituir um objeto, isso criará uma nova versão do objeto no bucket. Você sempre pode restaurar a
versão anterior.

Cada bucket do S3 que você cria tem um sub-recurso de versionamento associado a ele. (Para obter
mais informações, consulte Opções de configuração do bucket (p. 28).) Por padrão, seu bucket não está
habilitado para versionamento e o sub-recurso de versionamento armazena uma configuração vazia de
versionamento, como mostrado a seguir.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
</VersioningConfiguration>

Para habilitar o versionamento, você pode enviar uma solicitação ao Amazon S3 com uma configuração de
versionamento que inclui um status.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Status>Enabled</Status>
</VersioningConfiguration>

Para suspender o versionamento, você define o valor do status como Suspended.

O proprietário do bucket e todos os usuários autorizados do IAM podem habilitar o controle de versão. O
proprietário do bucket é a conta da AWS que criou o bucket (a conta raiz). Para obter mais informações
sobre permissões, consulte Identity and Access Management no Amazon S3 (p. 252).

Para obter mais informações sobre como ativar e desativar o controle de versão do S3 usando o Console
de Gerenciamento da AWS, a AWS Command Line Interface (AWS CLI) ou a API REST, consulte the
section called “Habilitar o controle de versão em buckets” (p. 521).

Tópicos
• IDs de versão (p. 518)
• Fluxos de trabalho de versionamento (p. 519)

IDs de versão
Se o versionamento estiver habilitado para um bucket, o Amazon S3 gerará um ID de versão exclusivo
automaticamente para o objeto que está sendo armazenado. Em um bucket, por exemplo, você pode ter
dois objetos com a mesma chave, mas diferentes IDs de versão, como photo.gif (versão 111111) e
photo.gif (versão 121212).

Independentemente de você ter habilitado o versionamento, cada objeto em seu bucket terá um ID de
versão. Se o S3 Versioning não for habilitado, o Amazon S3 definirá o valor do ID da versão como nulo. Se

Versão da API 2006-03-01


518
Amazon Simple Storage Service Guia do usuário
Versionamento do S3

o S3 Versioning for habilitado, o Amazon S3 atribuirá um valor de ID de versão para o objeto. Esse valor o
distingue de outras versões da mesma chave.

Quando você habilita o S3 Versioning em um bucket existente, os objetos que já estão armazenados no
bucket permanecem inalterados. Os IDs de versão (nulos), o conteúdo e as permissões continuarão os
mesmos. Depois que habilitar o versionamento do S3 para um bucket, cada objeto adicionado ao bucket
obterá um ID de versão, que o distinguirá de outras versões da mesma chave.

Somente o Amazon S3 gera IDs de versão, e eles não podem ser editados. Os IDs de versão são strings
opacas Unicode, com codificação UTF-8 e prontas para URL que não têm mais de 1.024 bytes de
comprimento. Veja um exemplo a seguir:

3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Note

Por simplicidade, os outros exemplos neste tópico usam IDs muito mais curtos.

Fluxos de trabalho de versionamento


Quando você PUT um objeto em um bucket com versionamento ativado, a versão desatualizada não é
substituída. A figura a seguir mostra que, quando uma nova versão de photo.gif é PUT em um bucket
que já contém um objeto com o mesmo nome, o objeto original (ID = 111111) permanece no bucket, o
Amazon S3 gera um ID da nova versão (121212) e adiciona a versão mais recente ao bucket.

Essa funcionalidade impede que você substitua ou exclua objetos acidentalmente e permite que você
recupere uma versão anterior de um objeto.

Quando você DELETE um objeto, todas as versões permanecem no bucket e o Amazon S3 insere um
marcador de exclusão, conforme exibido na figura a seguir.

O marcador de exclusão torna-se a versão atual de objeto. Por padrão, o GET requisita a recuperação da
versão armazenada mais recente. A execução de uma solicitação GET Object simples quando a versão
atual é um marcador de exclusão retorna um erro 404 Not Found, conforme exibido na figura a seguir.

Versão da API 2006-03-01


519
Amazon Simple Storage Service Guia do usuário
Versionamento do S3

Você pode, contudo, fazer uma solicitação GET de uma versão desatualizada de um objeto por especificar
seu ID de versão. Na figura a seguir, você faz uma solicitação GET de uma versão específica de objeto,
111111. O Amazon S3 retorna a versão desse objeto, apesar de não ser a versão atual.

Para obter mais informações, consulte Recuperando versões de objeto de um bucket habilitado para
versionamento (p. 531).

Você pode excluir permanentemente um objeto, especificando a versão que você deseja excluir. Somente
o proprietário de um bucket do Amazon S3 pode excluir uma versão permanentemente. A figura a seguir
mostra como DELETE versionId exclui, permanentemente, um objeto de um bucket e o Amazon S3 não
insere um marcador de exclusão.

Você pode obter segurança adicional configurando um bucket para habilitar a exclusão de MFA
(autenticação multifator). Quando você faz isso, o proprietário do bucket precisa incluir dois formulários de
autenticação em qualquer solicitação para excluir uma versão ou modificar o estado de versionamento do
bucket. Para obter mais informações, consulte Configurando a exclusão de MFA (p. 524).

Novas versões são criadas somente quando você PUT um novo objeto. Esteja ciente de que certas ações
como COPY funcionam implementando PUT. Tomar ações que modifiquem o objeto atual não criará uma
nova versão porque elas não PUT um novo objeto. Isso inclui ações como alterar as tags em um objeto.
Important

Se você perceber um aumento significativo do número de respostas HTTP 503 recebidas


com lentidão do Amazon S3 de solicitações PUT ou DELETE de objetos a um bucket que

Versão da API 2006-03-01


520
Amazon Simple Storage Service Guia do usuário
Habilitar o controle de versão em buckets

tenha o versionamento do S3 habilitado, talvez tenha um ou mais objetos no bucket para os


quais há milhões de versões. Para obter mais informações, consulte Aumentos significativos
em respostas HTTP 503 para solicitações do Amazon S3 para buckets com o versionamento
habilitado (p. 1137) na seção Solução de problemas.

Habilitar o controle de versão em buckets


Use o S3 Versioning para manter várias versões de um objeto em um bucket. Esta seção fornece
exemplos de como habilitar o controle de versão em um bucket usando o console, a API REST, os SDKs
da AWS e a AWS Command Line Interface (AWS CLI).

Para obter mais informações sobre o S3 Versioning, consulte Usando o controle de versão em buckets do
S3 (p. 516). Para obter informações sobre como trabalhar com objetos que estão em buckets habilitados
para versão, consulte Trabalhar com objetos em um bucket com versionamento habilitado (p. 525).

Cada bucket do S3 que você cria tem um sub-recurso de versionamento associado a ele. (Para obter
mais informações, consulte Opções de configuração do bucket (p. 28).) Por padrão, seu bucket não está
habilitado para versionamento e o sub-recurso de versionamento armazena uma configuração vazia de
versionamento, como mostrado a seguir.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
</VersioningConfiguration>

Para habilitar o versionamento, você pode enviar uma solicitação ao Amazon S3 com uma configuração de
versionamento que inclui um status.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Status>Enabled</Status>
</VersioningConfiguration>

Para suspender o versionamento, você define o valor do status como Suspended.

O proprietário do bucket e todos os usuários autorizados do IAM podem habilitar o controle de versão. O
proprietário do bucket é a conta da AWS que criou o bucket (a conta raiz). Para obter mais informações
sobre permissões, consulte Identity and Access Management no Amazon S3 (p. 252).

As seções a seguir fornecem mais detalhes sobre como ativar o controle de versão do S3 usando o
console, a AWS CLI e os SDKs da AWS.

Usar o console do S3
Siga estas etapas para usar o Console de Gerenciamento da AWS para habilitar o controle de versão em
um bucket do S3.

Para habilitar ou desabilitar o versionamento em um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar o versionamento.
3. Escolha Propriedades.
4. Em Bucket Versioning (Versionamento de bucket), escolha Edit (Editar).
5. Escolha Suspend (Suspender) ou Enable (Ativar), e selecione Save changes (Salvar alterações).

Note
Você pode usar a AWS Multi-Factor Authentication (MFA) com versionamento. Ao usar a MFA
com versionamento, você deve fornecer as chaves de acesso da sua conta da AWS e um código

Versão da API 2006-03-01


521
Amazon Simple Storage Service Guia do usuário
Habilitar o controle de versão em buckets

válido do dispositivo MFA da conta para excluir permanentemente uma versão de objeto ou
suspender ou reativar o versionamento.
Para usar a MFA com versionamento, você habilita MFA Delete. No entanto, você não
pode habilitar MFA Delete usando o Console de Gerenciamento da AWS. Você deve usar
a AWS Command Line Interface (AWS CLI) ou a API. Para obter mais informações, consulte
Configurando a exclusão de MFA (p. 524).

Usar a CLI da AWS


O exemplo a seguir permite o controle de versão em um bucket do S3.

aws s3api put-bucket-versioning --bucket DOC-EXAMPLE-BUCKET1 --versioning-configuration


Status=Enabled

O exemplo a seguir permite a exclusão de controle de versão e Multi-Factor Authentication (MFA) em um


bucket.

aws s3api put-bucket-versioning --bucket DOC-EXAMPLE-BUCKET1 --versioning-configuration


Status=Enabled,MFADelete=Enabled --mfa "SERIAL 123456"

Note

O uso da exclusão de MFA requer um dispositivo de autenticação física ou virtual aprovado. Para
obter mais informações sobre como usar exclusão de MFA no Amazon S3, consulte Configurando
a exclusão de MFA (p. 524).

Para obter mais informações sobre como ativar o controle de versão usando a AWS CLI, consulte put-
bucket-versioning na AWS CLI Command Reference.

Uso dos AWS SDKs


Os exemplos a seguir permitem o controle de versão em um bucket e, em seguida, recuperam o status do
controle de versão usando o AWS SDK para Java e o AWS SDK para .NET. Para obter informações sobre
o uso de outros AWS SDKs, consulte o Centro do desenvolvedor da AWS.

Java

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Testar exemplos de
código Java no Amazon S3 (p. 1042).

import java.io.IOException;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;

public class BucketVersioningConfigurationExample {


public static String bucketName = "*** bucket name ***";
public static AmazonS3Client s3Client;

public static void main(String[] args) throws IOException {

Versão da API 2006-03-01


522
Amazon Simple Storage Service Guia do usuário
Habilitar o controle de versão em buckets

s3Client = new AmazonS3Client(new ProfileCredentialsProvider());


s3Client.setRegion(Region.getRegion(Regions.US_EAST_1));
try {

// 1. Enable versioning on the bucket.


BucketVersioningConfiguration configuration =
new BucketVersioningConfiguration().withStatus("Enabled");

SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest =
new SetBucketVersioningConfigurationRequest(bucketName,configuration);

s3Client.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest);

// 2. Get bucket versioning configuration information.


BucketVersioningConfiguration conf =
s3Client.getBucketVersioningConfiguration(bucketName);
System.out.println("bucket versioning configuration status: " +
conf.getStatus());

} catch (AmazonS3Exception amazonS3Exception) {


System.out.format("An Amazon S3 error occurred. Exception: %s",
amazonS3Exception.toString());
} catch (Exception ex) {
System.out.format("Exception: %s", ex.toString());
}
}
}

.NET

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using System;
using Amazon.S3;
using Amazon.S3.Model;

namespace s3.amazon.com.docsamples
{
class BucketVersioningConfiguration
{
static string bucketName = "*** bucket name ***";

public static void Main(string[] args)


{
using (var client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1))
{
try
{
EnableVersioningOnBucket(client);
string bucketVersioningStatus =
RetrieveBucketVersioningConfiguration(client);
}
catch (AmazonS3Exception amazonS3Exception)
{
if (amazonS3Exception.ErrorCode != null &&
(amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId")
||
amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
{
Console.WriteLine("Check the provided AWS Credentials.");
Console.WriteLine(
"To sign up for service, go to http://aws.amazon.com/s3");
}
else

Versão da API 2006-03-01


523
Amazon Simple Storage Service Guia do usuário
Configurando a exclusão de MFA

{
Console.WriteLine(
"Error occurred. Message:'{0}' when listing objects",
amazonS3Exception.Message);
}
}
}

Console.WriteLine("Press any key to continue...");


Console.ReadKey();
}

static void EnableVersioningOnBucket(IAmazonS3 client)


{

PutBucketVersioningRequest request = new PutBucketVersioningRequest


{
BucketName = bucketName,
VersioningConfig = new S3BucketVersioningConfig
{
Status = VersionStatus.Enabled
}
};

PutBucketVersioningResponse response =
client.PutBucketVersioning(request);
}

static string RetrieveBucketVersioningConfiguration(IAmazonS3 client)


{
GetBucketVersioningRequest request = new GetBucketVersioningRequest
{
BucketName = bucketName
};

GetBucketVersioningResponse response =
client.GetBucketVersioning(request);
return response.VersioningConfig.Status;
}
}
}

Configurando a exclusão de MFA


Ao trabalhar com o Versionamento do S3 em buckets do Amazon S3, você pode, opcionalmente, adicionar
outra camada de segurança configurando um bucket para habilitar a exclusão de MFA (autenticação
multifator). Quando você faz isso, o proprietário do bucket precisa incluir dois formulários de autenticação
em qualquer solicitação para excluir uma versão ou modificar o estado de versionamento do bucket.

A exclusão de MFA requer autenticação adicional para uma das seguintes operações:

• Alterar o estado de versionamento de seu bucket


• Excluir, permanentemente, uma versão de objeto

A exclusão de MFA exige duas formas de autenticação:

• Suas credenciais de segurança


• A concatenação de um número serial válido, um espaço e o código de seis dígitos exibidos em um
dispositivo de autenticação aprovado

Versão da API 2006-03-01


524
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

A exclusão de MFA oferece segurança adicional se, por exemplo, suas credenciais de segurança forem
comprometidas. A exclusão de MFA pode ajudar a evitar exclusões acidentais de bucket exigindo que o
usuário que inicia a ação de exclusão para provar a posse física de um dispositivo MFA com um código
MFA e adicionando uma camada extra de atrito e segurança à ação de exclusão.

O proprietário do bucket, a conta da AWS que criou o bucket (conta raiz) e todos os usuários autorizados
do IAM podem habilitar o controle de versão. No entanto, somente o proprietário do bucket (conta raiz)
pode habilitar a exclusão de MFA. Para obter mais informações, consulte a publicação Securing Access to
AWS Using MFA no Blog de segurança da AWS.
Note

Para usar a exclusão de MFA com versionamento, habilite MFA Delete. No entanto, você não
pode habilitar MFA Delete usando o Console de Gerenciamento da AWS. Você deve usar a
AWS Command Line Interface (AWS CLI) ou a API.
Para obter exemplos de como usar a exclusão de MFA com versionamento, consulte a seção de
exemplos no tópico Habilitar o controle de versão em buckets (p. 521).

Para ativar ou desativar a exclusão de MFA, use a mesma API usada para configurar o versionamento
em um bucket. O Amazon S3 armazena a configuração de exclusão de MFA no mesmo sub-recurso de
versionamento que armazena o status de versionamento do bucket.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Status>VersioningState</Status>
<MfaDelete>MfaDeleteState</MfaDelete>
</VersioningConfiguration>

Para usar a exclusão de MFA, você pode usar um dispositivo de hardware ou MFA virtual para gerar um
código de autenticação. O exemplo a seguir mostra um código de autenticação gerado exibido em um
dispositivo de hardware.

A exclusão de MFA e o acesso à API protegido por MFA são recursos que visam fornecer proteção para
diferentes cenários. Você configura a exclusão de MFA em um bucket para ajudar a garantir que os dados
em seu bucket não sejam excluídos acidentalmente. O acesso à API protegido por MFA é usado para
impor outro fator de autenticação (código MFA) ao acessar recursos confidenciais do Amazon S3. Você
pode exigir que qualquer operação nesses recursos do Amazon S3 seja feita com credenciais temporárias
criadas usando a MFA. Para ver um exemplo, consulte Adicionar uma política de bucket para exigir
MFA (p. 384).

Para obter mais informações sobre como comprar e ativar um dispositivo de autenticação, consulte
Autenticação multifator.

Trabalhar com objetos em um bucket com


versionamento habilitado
Os objetos que são armazenados em um bucket do Amazon S3 antes da habilitação do versionamento
têm um ID de versão null. Quando você habilita o versionamento, os objetos existentes em seu bucket
não são alterados. O que muda é como o Amazon S3 trata os objetos em solicitações futuras.

Fazer a transição de versões de objeto

Você pode definir as regras de configuração de ciclo de vida de objetos que têm ciclo de vida bem definido
para fazer a transição de versões de objeto para a classe de armazenamento S3 Glacier em um

Versão da API 2006-03-01


525
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

momento específico no ciclo de vida do objeto. Para obter mais informações, consulte Gerenciando seu
ciclo de vida de armazenamento (p. 569).

Os tópicos nesta seção explicam várias operações de objeto em um bucket com versionamento ativado.
Para obter mais informações sobre controle de versão, consulte Usando o controle de versão em buckets
do S3 (p. 516).

Tópicos
• Adicionar objetos a buckets com versionamento habilitado (p. 526)
• Listar objetos em um bucket com versionamento habilitado (p. 527)
• Recuperando versões de objeto de um bucket habilitado para versionamento (p. 531)
• Excluir versões de objetos de um bucket com versionamento habilitado (p. 534)
• Configurando permissões de objeto com versão (p. 540)

Adicionar objetos a buckets com versionamento habilitado


Depois que você habilita o versionamento em um bucket, o Amazon S3 adiciona automaticamente um ID
de versão exclusivo a cada objeto armazenado (usando PUT, POST ou COPY) no bucket.

A figura a seguir mostra que o Amazon S3 adiciona um ID de versão exclusivo a um objeto quando ele é
adicionado a um bucket com versionamento habilitado.

Note

As taxas normais do Amazon S3 se aplicam a cada versão de um objeto armazenado e


transferido. Cada versão de um objeto é um objeto inteiro; não é apenas um diff da versão
anterior. Assim, se você tiver três versões de um objeto armazenado, será cobrado pelos três
objetos.
Os valores de ID de versão que o Amazon S3 atribui são seguros para URL (podem ser incluídos
como parte de um URI).

Você pode adicionar versões de objeto a um bucket habilitado para versão usando o console, os AWS
SDKs e a API REST.

Uso do console

Para obter instruções, consulte Fazer upload de objetos (p. 71).

Uso dos AWS SDKs

Para ver exemplos de upload de objetos usando os AWS SDKs para Java, .NET e PHP, consulte Fazer
upload de objetos (p. 71). Os exemplos de upload de objetos em buckets com e sem versionamento
habilitado são os mesmos, embora o Amazon S3 atribua um número de versão para buckets com
versionamento habilitado. Caso contrário, o número de versão é nulo.

Para obter informações sobre o uso de outros AWS SDKs, consulte o Centro do desenvolvedor da AWS.

Versão da API 2006-03-01


526
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Uso dos REST API

Para adicionar objetos a buckets com versionamento habilitado

1. Ative o versionamento de um bucket usando uma solicitação PUT Bucket versioning.

Para obter mais informações, consulte PutBucketVersioning na Referência da API do Amazon Simple
Storage Service.
2. Envie uma solicitação PUT, POST ou COPY para armazenar um objeto no bucket.

Quando você adiciona um objeto a um bucket habilitado para versionamento, o Amazon S3 retorna o ID da
versão do objeto no cabeçalho de resposta x-amz-version-id, como mostrado no exemplo a seguir.

x-amz-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY

Listar objetos em um bucket com versionamento habilitado


Esta seção fornece exemplos de como listar versões de objetos de um bucket com versionamento
habilitado. O Amazon S3 armazena as informações de versão do objeto no sub-recurso versões associado
ao bucket. Para obter mais informações, consulte Opções de configuração do bucket (p. 28).

Usar o console do S3

Siga estas etapas para usar o console do Amazon S3 para ver as diferentes versões de um objeto.

Para ver várias versões de um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Para ver uma lista das versões dos objetos no bucket, escolha a opção List versions (Listar versões) .

Para cada versão do objeto, o console exibe um ID de versão exclusivo, a data e a hora em que a
versão do objeto foi criada e outras propriedades. (Os objetos armazenados em seu bucket antes da
habilitação do versionamento têm um ID de versão null [nulo].)

Para listar os objetos sem as versões, escolha a opção List versions (Listar versões) .

Você também pode visualizar, fazer download e excluir versões do objeto no painel de visão geral do
objeto no console. Para obter mais informações, consulte Exibir uma visão geral do objeto no console do
Amazon S3 (p. 157).
Important

Você pode cancelar a exclusão de um objeto somente se ele foi excluído como a versão mais
recente (atual). Não é possível cancelar a exclusão de uma versão anterior de um objeto que
foi excluído. Para obter mais informações, consulte Usando o controle de versão em buckets do
S3 (p. 516).

Uso dos AWS SDKs

Os exemplos nesta seção mostram como recuperar uma listagem de objetos de um bucket com
versionamento ativado. Cada solicitação retorna até 1.000 versões, a menos que você especifique um
número menor. Se o bucket contiver mais versões que esse limite, envie uma série de solicitações para
recuperar a lista de todas as versões. Esse processo de retornar resultados em “páginas” é chamado
paginação.

Versão da API 2006-03-01


527
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Para mostrar como a paginação funciona, os exemplos limitam cada resposta a duas versões de objeto.
Depois de recuperar a primeira página de resultados, cada exemplo verifica se a lista de versões foi
truncada. Em caso afirmativo, o exemplo continua a recuperar páginas até que todas as versões tenham
sido recuperadas.
Note

Os exemplos a seguir também funcionam com bucket sem versionamento, ou para objetos sem
versões individuais. Nesses casos, o Amazon S3 retorna a listagem de objetos com um ID de
versão null.

Para obter informações sobre o uso de outros AWS SDKs, consulte o Centro do desenvolvedor da AWS.

Java

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListVersionsRequest;
import com.amazonaws.services.s3.model.S3VersionSummary;
import com.amazonaws.services.s3.model.VersionListing;

public class ListKeysVersioningEnabledBucket {

public static void main(String[] args) {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Retrieve the list of versions. If the bucket contains more versions


// than the specified maximum number of results, Amazon S3 returns
// one page of results per request.
ListVersionsRequest request = new ListVersionsRequest()
.withBucketName(bucketName)
.withMaxResults(2);
VersionListing versionListing = s3Client.listVersions(request);
int numVersions = 0, numPages = 0;
while (true) {
numPages++;
for (S3VersionSummary objectSummary :
versionListing.getVersionSummaries()) {
System.out.printf("Retrieved object %s, version %s\n",
objectSummary.getKey(),
objectSummary.getVersionId());
numVersions++;
}
// Check whether there are more pages of versions to retrieve. If
// there are, retrieve them. Otherwise, exit the loop.
if (versionListing.isTruncated()) {
versionListing = s3Client.listNextBatchOfVersions(versionListing);
} else {
break;

Versão da API 2006-03-01


528
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

}
}
System.out.println(numVersions + " object versions retrieved in " +
numPages + " pages");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Para obter informações sobre como criar e testar um exemplo funcional, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class ListObjectsVersioningEnabledBucketTest
{
static string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;

public static void Main(string[] args)


{
s3Client = new AmazonS3Client(bucketRegion);
GetObjectListWithAllVersionsAsync().Wait();
}

static async Task GetObjectListWithAllVersionsAsync()


{
try
{
ListVersionsRequest request = new ListVersionsRequest()
{
BucketName = bucketName,
// You can optionally specify key name prefix in the request
// if you want list of object versions of a specific object.

// For this example we limit response to return list of 2 versions.


MaxKeys = 2
};
do
{
ListVersionsResponse response = await
s3Client.ListVersionsAsync(request);
// Process response.
foreach (S3ObjectVersion entry in response.Versions)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);

Versão da API 2006-03-01


529
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

// If response is truncated, set the marker to get the next


// set of keys.
if (response.IsTruncated)
{
request.KeyMarker = response.NextKeyMarker;
request.VersionIdMarker = response.NextVersionIdMarker;
}
else
{
request = null;
}
} while (request != null);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
}
}

Uso dos REST API

Example — Listar todas as versões de objeto em um bucket

Para listar todas as versões de todos os objetos em um bucket, você usa o sub-recurso versions em
uma solicitação GET Bucket. O Amazon S3 pode recuperar no máximo 1.000 objetos, e cada versão
de objeto conta como um objeto completo. Portanto, se um bucket contiver duas chaves (por exemplo,
photo.gif e picture.jpg) e a primeira chave tiver 990 versões e a segunda chave tiver 400 versões,
uma solicitação única recuperará as 990 versões de photo.gif e apenas as 10 versões mais recentes de
picture.jpg.

O Amazon S3 retorna as versões de objetos na ordem em que foram armazenadas, com as armazenadas
mais recentemente sendo retornadas primeiro.

Em uma solicitação GET Bucket, inclua o sub-recurso versions.

GET /?versions HTTP/1.1


Host: bucketName.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 +0000
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Example — Recuperar todas as versões de uma chave

Para recuperar um subconjunto de versões de objeto, você usa os parâmetros de solicitação para GET
Bucket. Para obter mais informações, consulte GET Bucket.

1. Defina o parâmetro prefix como a chave do objeto que você deseja recuperar.
2. Envie uma solicitação GET Bucket usando o sub-recurso versions e prefix.

GET /?versions&prefix=objectName HTTP/1.1

Versão da API 2006-03-01


530
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Example — Recuperar objetos usando um prefixo


O exemplo a seguir recupera objetos cuja chave é ou começa com myObject.

GET /?versions&prefix=myObject HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Você pode usar os outros parâmetros de solicitação para recuperar um subconjunto de todas as versões
do objeto. Para obter mais informações, consulte GET Bucket na Referência da API do Amazon Simple
Storage Service.

Example — Recuperar uma listagem de objetos adicionais se a resposta estiver truncada


Se o número de objetos que podem ser retornados em uma solicitação GET exceder o valor de max-
keys, a resposta conterá <isTruncated>true</isTruncated> e incluirá a primeira chave (em
NextKeyMarker) e o primeiro ID de versão (em NextVersionIdMarker) que satisfazem a solicitação,
mas que não foram retornados. Você usa esses valores retornados como a posição de início em uma
solicitação subsequente para recuperar os objetos adicionais que satisfazem a solicitação GET.

Use o seguinte processo para recuperar os objetos adicionais que satisfazem a solicitação GET Bucket
versions original de um bucket. Para obter mais informações sobre key-marker, version-id-
marker, NextKeyMarker e NextVersionIdMarker, consulte GET Bucket na Referência da API do
Amazon Simple Storage Service.

A seguir estão as respostas adicionais que atendem à solicitação GET original:

• Defina o valor de key-marker como a chave retornada em NextKeyMarker na resposta anterior.


• Defina o valor de version-id-marker como o ID de versão retornado em NextVersionIdMarker
na resposta anterior.
• Envie uma solicitação GET Bucket versions usando key-marker e version-id-marker.

Example — Recuperar objetos que começam com a chave e o ID de versão especificados

GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Recuperando versões de objeto de um bucket habilitado para


versionamento
O controle de versão no Amazon S3 é uma maneira de manter várias variantes de um objeto no mesmo
bucket. Uma solicitação GET simples recupera a versão atual de um objeto. A figura a seguir mostra como
o GET retorna a versão atual do objeto, photo.gif.

Versão da API 2006-03-01


531
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Para recuperar uma versão específica, você tem que especificar seu ID de versão. A figura a seguir mostra
que a solicitação GET versionId recupera a versão especificada do objeto (não necessariamente a
versão atual).

Você pode recuperar versões de objeto no Amazon S3 usando o console, os AWS SDKs ou a API REST.

Usar o console do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Objetos , escolha o nome do objeto.
4. Escolha Versões.

O Amazon S3 mostra todas as versões do objeto.


5. Marque a caixa de seleção ao lado do ID da versão para as versões que deseja recuperar.
6. Escolha Ações, escolha Downloade salve o objeto.

Você também pode visualizar, fazer download e excluir versões do objeto no painel de visão geral do
objeto. Para obter mais informações, consulte Exibir uma visão geral do objeto no console do Amazon
S3 (p. 157).
Important

Você pode cancelar a exclusão de um objeto somente se ele foi excluído como a versão mais
recente (atual). Não é possível cancelar a exclusão de uma versão anterior de um objeto que
foi excluído. Para obter mais informações, consulte Usando o controle de versão em buckets do
S3 (p. 516).

Uso dos AWS SDKs

Os exemplos para carregar objetos em buckets não versionados e habilitados para versionamento são os
mesmos. No entanto, para buckets habilitados para versionamento, o Amazon S3 atribui um número de
versão. Caso contrário, o número de versão é nulo.

Para obter exemplos de download de objetos usando AWS SDKs para Java, .NET e PHP, consulte
Download de objetos.

Uso dos REST API

Para recuperar uma versão específica do objeto

1. Defina versionId como o ID da versão do objeto que você deseja recuperar.


2. Envie uma solicitação GET Object versionId.

Versão da API 2006-03-01


532
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Example — Recuperar um objeto versionado


A seguinte solicitação recupera a versão L4kqtJlcpXroDTDmpUMLUo do my-image.jpg.

GET /my-image.jpg?versionId=L4kqtJlcpXroDTDmpUMLUo HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Você pode recuperar apenas os metadados de um objeto (não o conteúdo). Para obter mais informações,
consulte the section called “Recuperação de metadados de versão” (p. 533).

Para obter informações sobre como restaurar uma versão de objeto anterior, consulte the section called
“Restaurar versões anteriores” (p. 533).

Recuperar metadados de uma versão de objeto


Se você quiser recuperar apenas os metadados (e não o conteúdo) de um objeto, use a operação HEAD.
Por padrão, você obtém os metadados da versão mais recente. Para recuperar os metadados de um
objeto específico, você especifica seu ID de versão.

Para recuperar os metadados de uma versão do objeto

1. Defina versionId como o ID da versão do objeto cujos metadados você deseja recuperar.
2. Envie uma solicitação HEAD Object versionId.

Example — Recuperar metadados de um objeto versionado


A solicitação a seguir recupera os metadados da versão 3HL4kqCxf3vjVBH40Nrjfkd de my-image.jpg.

HEAD /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

A seguir, um exemplo de resposta.

HTTP/1.1 200 OK
x-amz-id-2: ef8yU9AS1ed4OpIszj7UDNEHGran
x-amz-request-id: 318BC8BC143432E5
x-amz-version-id: 3HL4kqtJlcpXroDTDmjVBH40Nrjfkd
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain
Connection: close
Server: AmazonS3

Restaurar versões anteriores


Você pode usar o versionamento para recuperar versões anteriores de um objeto. Existem duas
abordagens para se fazer isso:

• Copie uma versão anterior do objeto para o mesmo bucket.

O objeto copiado torna-se a versão atual desse objeto e todas as versões são preservadas.
• Exclua permanentemente a versão atual do objeto.

Versão da API 2006-03-01


533
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Quando você exclui a versão atual do objeto, torna a versão anterior a versão atual desse objeto.

Como todas as versões do objeto são preservadas, você pode fazer de qualquer versão anterior a versão
atual copiando uma versão específica do objeto para o mesmo bucket. Na figura a seguir, o objeto de
origem (ID = 111111) é copiado para o mesmo bucket. O Amazon S3 fornece um novo ID (88778877) e
ele se torna a versão atual do objeto. Assim, o bucket tem tanto a versão original (111111) quanto a cópia
(88778877) do objeto. Para obter mais informações sobre como obter uma versão anterior e carregá-la
para torná-la a versão atual, consulte Recuperação de versões de objeto de um bucket habilitado para
versionamento e Upload de objetos.

Um subsequente GET recupera a versão 88778877.

A figura a seguir mostra como excluir a versão atual (121212) de um objeto deixa a versão anterior
(111111) como a atual do objeto. Para obter mais informações sobre como excluir um objeto, consulte
Excluir um único objeto.

Um subsequente GET recupera a versão 111111.

Excluir versões de objetos de um bucket com versionamento


habilitado
Você pode excluir versões de objeto de buckets do Amazon S3 sempre que desejar. Você também pode
definir regras de configuração de ciclo de vida de objetos que têm um ciclo de vida bem definido para
solicitar que o Amazon S3 expire as versões atuais dos objetos ou que remova permanentemente as
versões anteriores dos objetos. Quando seu bucket tem versionamento ativado ou suspenso, as ações da
configuração do ciclo de vida funcionam do seguinte modo:

• A Expiration ação se aplica à versão atual do objeto. Em vez de excluir a versão atual do objeto, o
Amazon S3 a retém como uma versão desatualizada adicionando um marcador de exclusão, que se
torna a versão atual.
• A ação NoncurrentVersionExpiration aplica-se a versões antigas do objeto, e o Amazon S3
remove permanentemente essas versões do objeto. Você não pode recuperar objetos removidos
permanentemente.

Versão da API 2006-03-01


534
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Para obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Excluir casos de uso de solicitação


Uma solicitação DELETE tem os seguintes casos de uso:

• Quando o versionamento está habilitado, um DELETE simples não pode excluir permanentemente um
objeto. Em vez disso, o Amazon S3 insere um marcador de exclusão no bucket, que se torna a versão
atual do objeto com um novo ID.

Quando você tenta um GET de um objeto cuja versão atual é um marcador de exclusão, o Amazon S3
se comporta como se o objeto tivesse sido excluído (mesmo que não tenha sido apagado) e retorna um
erro 404. Para obter mais informações, consulte Trabalhar com marcadores de exclusão (p. 536).

A figura a seguir mostra que uma simples solicitação DELETE não remove de fato o objeto especificado.
Em vez disso, o Amazon S3 insere um marcador de exclusão.

• Para excluir objetos com versões permanentemente, você deve usar DELETE Object versionId.

A figura a seguir mostra que excluir uma versão do objeto especificada remove permanentemente esse
objeto.

Para excluir versões de objeto


Você pode excluir versões de objeto no Amazon S3 usando o console, os AWS SDKs ou a API REST.

Usar o console do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém o objeto.
3. Na lista Objetos , escolha o nome do objeto.
4. Escolha Versões.

Versão da API 2006-03-01


535
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

O Amazon S3 mostra todas as versões do objeto.


5. Marque a caixa de seleção ao lado do ID da versão para as versões que deseja recuperar.
6. Escolha Delete (Excluir).
7. Em Excluir objetos permanentemente? , insira permanently delete.
Warning

Quando você exclui permanentemente uma versão de objeto, a ação não pode ser desfeita.
8. Escolha Delete objects (Excluir objetos).

O Amazon S3 exclui a versão do objeto.

Uso dos AWS SDKs

Para ver exemplos de exclusão de objetos usando os AWS SDKs para Java, o .NET e o PHP, consulte
Excluir objetos do Amazon S3 (p. 128). Os exemplos para excluir objetos em buckets não versionados e
habilitados para versionamento são os mesmos. No entanto, para buckets habilitados para versionamento,
o Amazon S3 atribui um número de versão. Caso contrário, o número de versão é nulo.

Para obter informações sobre o uso de outros AWS SDKs, consulte o Centro do desenvolvedor da AWS.

Uso dos REST API

Para excluir uma versão específica de um objeto

• Em DELETE, especifique o ID da versão.

Example — Excluir uma versão específica

O exemplo a seguir exclui a versão UIORUnfnd89493jJFJ do photo.gif.

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
Content-Type: text/plain
Content-Length: 0

Para obter mais informações sobre como excluir versões de objetos, consulte os seguintes tópicos:

• Trabalhar com marcadores de exclusão (p. 536)


• Remover marcadores de exclusão (p. 538)
• Excluir um objeto de um bucket com exclusão de MFA habilitada (p. 540)

Trabalhar com marcadores de exclusão


Um marcador de exclusão no Amazon S3 é um espaço reservado (ou marcador) para um objeto com
versões que foi nomeado em uma solicitação DELETE simples. Como o objeto está em um bucket com
versionamento habilitado, o objeto não é excluído. Mas o marcador de exclusão faz com que o Amazon S3
se comporte como se ele tivesse sido excluído.

Um marcador de exclusão tem um nome de chave (ou chave) e um ID de versão como qualquer outro
objeto. Contudo, um marcador de exclusão difere de outros objetos nas seguintes maneiras:

Versão da API 2006-03-01


536
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

• Ele não tem dados associados.


• Ele não é associado a um valor de lista de controle de acesso (ACL).
• Ele não recupera nada em uma solicitação GET porque não tem dados; você recebe um erro 404.
• A única operação que pode ser usada em um marcador de exclusão é uma chamada DELETE da API do
Amazon S3. Para fazer isso, você precisa fazer a solicitação DELETE usando um usuário ou função do
AWS Identity and Access Management (IAM) com as permissões adequadas.

Os marcadores de exclusão acumulam uma cobrança nominal para armazenamento no Amazon S3. O
tamanho de armazenamento de um marcador de exclusão é igual ao tamanho do nome da chave do
marcador de exclusão. Um nome de chave é uma sequência de caracteres Unicode. A codificação UTF-8
adiciona de 1 a 4 bytes de armazenamento ao seu bucket para cada caractere no nome.

Para obter mais informações sobre nomes de chave, consulte Criar nomes de chave de objeto (p. 64).
Para obter mais informações sobre exclusão de um marcador de exclusão, consulte Remover marcadores
de exclusão (p. 538).

Somente o Amazon S3 pode criar e excluir um marcador de exclusão, e ele faz isso sempre que você
envia uma solicitação DELETE Object em um objeto em um bucket com versionamento habilitado ou
suspenso. O objeto nomeado na solicitação DELETE não é de fato excluído. Em vez disso, o marcador de
exclusão torna-se a versão atual do objeto. O nome de chave (ou chave) do objeto torna-se a chave do
marcador de exclusão. Se você tentar obter um objeto e sua versão atual for um marcador de exclusão, o
Amazon S3 responderá com:

• Um erro 404 (objeto não encontrado)


• Um cabeçalho de resposta, x-amz-delete-marker: true

O cabeçalho de resposta mostra que o objeto acessado era um marcador de exclusão. Este cabeçalho
de resposta nunca retorna false. Se o valor for false, o Amazon S3 não incluirá esse cabeçalho de
resposta na resposta.

A figura a seguir mostra como um GET simples em um objeto, cuja versão atual é um marcador de
exclusão, retorna um erro 404 Nenhum objeto encontrado.

O único modo de listar marcadores de exclusão (e outras versões de um objeto) é usando o versions
sub-recurso em uma solicitação GET Bucket versions. Um GET simples não recupera objetos com
marcadores de exclusão. A figura a seguir mostra que uma solicitação GET Bucket não retorna objetos
cuja versão atual é um marcador de exclusão.

Versão da API 2006-03-01


537
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Remover marcadores de exclusão


Quando você exclui um objeto em um bucket ativado para versionamento, todas as versões permanecem
no bucket, e o Amazon S3 cria um marcador de exclusão para o objeto. Para cancelar a exclusão do
objeto, você deve excluir esse marcador de exclusão. Para obter mais informações sobre versionamento e
marcadores de exclusão, consulte Usando o controle de versão em buckets do S3 (p. 516).

Se você quiser excluir um marcador de exclusão, ele deve ter um ID de versão e você deve especificar
esse ID em uma solicitação DELETE Object versionId. Se você usar uma solicitação DELETE para
excluir um marcador de exclusão (sem especificar o ID da versão do marcador de exclusão), o Amazon S3
não excluirá o marcador de exclusão, mas, em vez disso, inserirá outro marcador de exclusão.

A figura a seguir mostra como um DELETE simples em um marcador de exclusão não remove nada, mas
adiciona um novo marcador de exclusão a um bucket.

Em um bucket com versionamento ativado, esse novo marcador de exclusão deve ter um ID de versão
único. Assim, é possível ter vários marcadores de exclusão do mesmo objeto em um bucket.

Se a versão atual do objeto for a única versão do objeto e também for um marcador de exclusão
(conhecido como marcador de exclusão de objeto expirado, onde todas as versões de objeto são
excluídas e apenas um marcador de exclusão permanece), o Amazon S3 removerá o marcador de
exclusão de objeto expirado quando a política de ciclo de vida for definida para excluir versões atuais, ou o
ExpiredObjectDeleteMarker for explicitamente definido. Você também pode usar a ação de expiração para
instruir o Amazon S3 a remover os marcadores de exclusão do objeto expirado. Para ver um exemplo,
consulte Exemplo 7: Remover marcadores de exclusão de objetos expirados (p. 602).

Para excluir permanentemente um marcador de exclusão, inclua seu respectivo ID de versão em uma
solicitação DELETE Object versionId. A figura a seguir mostra como uma solicitação DELETE

Versão da API 2006-03-01


538
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

Object versionId simples remove, permanentemente, um marcador de exclusão. Apenas o


proprietário de um bucket pode remover permanentemente um marcador de exclusão.

O efeito da remoção do marcador de exclusão é que uma simples solicitação GET não irá recuperar a
versão atual (121212) do objeto.

Usar o console do S3

Use as etapas a seguir para recuperar objetos excluídos que não são pastas do seu bucket do S3,
incluindo objetos que estão dentro dessas pastas.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket desejado.
3. Para ver uma lista das versões dos objetos no bucket, escolha a opção List versions (Listar versões).
Você conseguirá ver os marcadores de exclusão dos objetos excluídos.

4. Para cancelar a exclusão de um objeto, você deve excluir o marcador de exclusão. Marque a caixa de
seleção ao lado do delete marker (marcador de exclusão) do objeto a ser recuperado e escolha Delete
(excluir).
5. Confirme a exclusão na página Delete objects (Excluir objetos).

a. Para a opção Pemanently delete objects? (Excluir objetos permanentemente?) insira


permanently delete.
b. Escolha Delete objects (Excluir objetos).

Note

Você não pode usar o console do Amazon S3 para cancelar a exclusão de pastas. Você deve
usar a CLI da AWS ou o SDK. Para ver exemplos, consulte Como faço para recuperar um objeto
do Amazon S3 que foi excluído em um bucket habilitado para versionamento? no Centro de
conhecimento da AWS.

Uso dos REST API

Para remover permanentemente um marcador de exclusão

1. Defina versionId como o ID da versão do marcador de exclusão que você deseja remover.
2. Envie uma solicitação DELETE Object versionId.

Example — Remover um marcador de exclusão

O exemplo a seguir remove o marcador de exclusão de photo.gif com versão 4857693.

Versão da API 2006-03-01


539
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos habilitados para versão

DELETE /photo.gif?versionId=4857693 HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Quando você exclui um marcador de exclusão, o Amazon S3 inclui o seguinte na resposta:

204 NoContent
x-amz-version-id: versionID
x-amz-delete-marker: true

Excluir um objeto de um bucket com exclusão de MFA habilitada


Se a configuração de versionamento do bucket tiver a exclusão de MFA ativada, o proprietário do bucket
deverá incluir o cabeçalho de solicitação x-amz-mfa nas solicitações para excluir permanentemente uma
versão de objeto ou alterar o estado de versionamento do bucket. As solicitações que incluem x-amz-mfa
devem usar HTTPS.

O valor do cabeçalho é uma concatenação do número de série do seu dispositivo de autenticação, um


espaço e o código de autenticação exibido nele. Se você não incluir esse cabeçalho, a solicitação falhará.

Para obter mais informações sobre dispositivos de autenticação, consulte Autenticação multifator.

Example — Excluir um objeto de um bucket com exclusão de MFA habilitada


O exemplo a seguir exclui my-image.jpg (com a versão especificada), que está em um bucket
configurado com a exclusão de MFA habilitada.

Observe o espaço entre [SerialNumber] e [AuthenticationCode]. Para obter mais informações,


consulte DeleteObject na Referência da API do Amazon Simple Storage Service.

DELETE /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTPS/1.1


Host: bucketName.s3.amazonaws.com
x-amz-mfa: 20899872 301749
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Para obter mais informações sobre ativação de exclusão de MFA, consulte Configurando a exclusão de
MFA (p. 524).

Configurando permissões de objeto com versão


As permissões para objetos no Amazon S3 são definidas no nível de versão. Cada versão tem seu
próprio proprietário do objeto. A conta da AWS que cria a versão do objeto é o proprietário. Assim, você
pode definir diferentes permissões para diferentes versões do mesmo objeto. Para fazer isso, você
deve especificar o ID da versão do objeto cujas permissões você deseja definir em uma solicitação PUT
Object versionId acl. Para uma descrição detalhada e instruções de uso de ACLs, consulte Identity
and Access Management no Amazon S3 (p. 252).

Example — Definir permissões para uma versão de objeto


A solicitação a seguir define a permissão do beneficiário, [email protected], como
FULL_CONTROL na chave, my-image.jpg, ID de versão, 3HL4kqtJvjVBH40Nrjfkd.

PUT /my-image.jpg?acl&versionId=3HL4kqtJvjVBH40Nrjfkd HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Versão da API 2006-03-01


540
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos suspensos de versão

Content-Length: 124

<AccessControlPolicy>
<Owner>
<ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
<DisplayName>[email protected]</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser">
<ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID>
<DisplayName>[email protected]</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>

Da mesma forma, para obter permissões para uma versão específica do objeto, você deve especificar
seu ID de versão em uma solicitação GET Object versionId acl. Você precisa incluir o ID da versão
porque, por padrão, o GET Object acl retorna as permissões da versão atual do objeto.

Example — Recuperar permissões para uma versão especificada de objeto


No exemplo a seguir, o Amazon S3 retorna as permissões da chave, my-image.jpg, ID da versão,
DVBH40Nr8X8gUMLUo.

GET /my-image.jpg?versionId=DVBH40Nr8X8gUMLUo&acl HTTP/1.1


Host: bucket.s3.amazonaws.com
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU

Para obter mais informações, consulte GetObjectAcl na Referência da API do Amazon Simple Storage
Service.

Trabalhar com objetos em um bucket com


versionamento suspenso
No Amazon S3, você pode suspender o versionamento para parar de ter novas versões do mesmo objeto
em um bucket. Você pode fazer isso porque você quer apenas uma única versão de um objeto em um
bucket. Ou talvez você não queira acumular cobranças para várias versões.

Quando você suspende o versionamento, os objetos existentes em seu bucket não são alterados. O que
muda é como o Amazon S3 trata os objetos em solicitações futuras. Os tópicos nesta seção explicam
várias operações de objeto em um bucket suspenso de versão, incluindo adição, recuperação e exclusão
de objetos.

Tópicos
• Adicionar objetos a buckets com versionamento suspenso (p. 541)
• Recuperar objetos de buckets com versionamento suspenso (p. 542)
• Excluir objetos de buckets com versionamento suspenso (p. 543)

Adicionar objetos a buckets com versionamento suspenso


Você pode adicionar objetos a buckets com versionamento suspenso no Amazon S3 para criar o objeto
com um ID de versão nulo ou substituir qualquer versão de objeto por um ID de versão correspondente.

Versão da API 2006-03-01


541
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos suspensos de versão

Depois que você suspender o versionamento em um bucket, o Amazon S3 adicionará automaticamente


um ID de versão null a cada objeto subsequente armazenado depois disso (usando PUT, POST ou COPY)
nesse bucket.

A figura a seguir mostra como o Amazon S3 adiciona um ID de versão null a cada objeto quando ele é
adicionado a um bucket com versionamento suspenso.

Se um versão nula já existir no bucket e você adicionar outro objeto com a mesma chave, o objeto
adicionado substituirá a versão original nula.

Se existirem objetos com versões no bucket, a versão que você usa no PUT torna-se a versão atual do
objeto. A figura a seguir mostra como a adição de um objeto a um bucket que contém objetos com versões
não substitui o objeto já existente no bucket.

Neste caso, a versão 111111 já estava no bucket. O Amazon S3 anexa o ID de versão nula ao objeto que
está sendo adicionado e armazena o objeto no bucket. A versão 111111 não é substituída.

Se uma versão nula já existir em um bucket, a versão nula será substituída, como mostrado na figura a
seguir.

Embora a chave e o ID (null) da versão nula sejam iguais antes e após o PUT, o conteúdo da versão nula
originalmente armazenada no bucket é substituído pelo conteúdo do objeto PUT no bucket.

Recuperar objetos de buckets com versionamento suspenso


Uma solicitação GET Object retorna a versão atual de um objeto sempre independentemente de você ter
ou não ativado o versionamento de um bucket. A figura a seguir mostra como um GET simples retorna a
versão atual de um objeto.

Versão da API 2006-03-01


542
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos suspensos de versão

Excluir objetos de buckets com versionamento suspenso


Você pode excluir objetos de buckets com versionamento suspenso para remover um objeto com um ID de
versão nulo.

Se o controle de versão for suspenso para um bucket, uma DELETE solicitação:

• Pode remover apenas um objeto cujo ID de versão seja null.


• Não removerá nada se não existir uma versão nula do objeto no bucket.
• Insere um marcador de exclusão no bucket.

A figura a seguir mostra como um simples DELETE remove uma versão nula. O Amazon S3 insere um
marcador de exclusão em seu lugar com um ID de versão do null.

Lembre-se de que um marcador de exclusão não tem conteúdo, de modo que você perde o conteúdo da
versão nula quando um marcador de exclusão a substitui.

A figura a seguir mostra um bucket que não tem uma versão nula. Nesse caso, o DELETE não remove
nada; o Amazon S3 apenas insere o marcador de exclusão.

Versão da API 2006-03-01


543
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

Mesmo em um bucket com versionamento suspenso, o proprietário do bucket pode excluir


permanentemente uma versão especificada. A figura a seguir mostra que excluir uma versão do objeto
especificada remove permanentemente esse objeto. Apenas o proprietário do bucket pode excluir uma
versão de objeto especificada.

Trabalhando com objetos arquivados


Quando você arquiva objetos do Amazon S3 na classe de armazenamento S3 Glacier ou S3 Glacier Deep
Archive ou quando os objetos são arquivados nos níveis S3 Intelligent-Tiering Archive Access ou Deep
Archive Access, os objetos não ficam acessíveis em tempo real. Para restaurar os objetos, você deve fazer
o seguinte:

• Para objetos nos níveis Archive Access e Deep Archive Access, você deve iniciar a solicitação de
restauração e aguardar até que o objeto seja movido para o nível Frequent Access.
• Para objetos nas classes de armazenamento S3 Glacier e S3 Glacier Deep Archive, você deve iniciar a
solicitação de restauração e aguardar até que uma cópia temporária do objeto esteja disponível.

Para obter mais informações sobre como todas as classes de armazenamento do Amazon S3 se
comparam, consulte Uso de classes de armazenamento do Amazon S3 (p. 563).

Quando você está restaurando a partir da camada de Acesso ao Arquivamento Intelligent-Tiering do S3 ou


da camada de Acesso a Arquivamento Deep Archive S3 Intelligent-Tiering, o objeto volta para a camada
de Acesso Frequente por Camadas Inteligente do S3. Depois, se o objeto não for acessado após 30 dias
consecutivos, ele se move automaticamente para o nível de Acesso Infrequente. Ele passa para o nível S3
Intelligent-Tiering Archive Access após um mínimo de 90 dias consecutivos sem acesso, e passa para o
nível de Acesso a arquivamento profundo após um mínimo de 180 dias consecutivos sem acesso.
Note

Ao contrário das classes de armazenamento S3 Glacier e S3 Glacier Deep Archive, as


solicitações de restauração para objetos S3 Intelligent-Tiering não aceitam o days valor.

Quando você usa o S3 Glacier ou o S3 Glacier Deep Archive, o Amazon S3 restaura uma cópia temporária
do objeto somente durante a duração especificada. Depois disso, ele exclui a cópia restaurada do objeto.
Você pode modificar o período de expiração de uma cópia restaurada reeditando uma restauração. Nesse
caso, o Amazon S3 atualiza o período de expiração relativo à hora atual.
Note

Ao restaurar um arquivo do S3 Glacier ou S3 Glacier Deep Archive, , você paga tanto pelo arquivo
como pela cópia restaurada temporariamente (Reduced Redundancy Storage (RRS) ou Standard,
qual tiver o armazenamento de custo mais baixo na região). Para obter mais informações sobre
definição de preços, consulte Definição de preços do Amazon S3.

O Amazon S3 calcula o tempo de expiração da cópia do objeto restaurado adicionando o número de dias
especificado na solicitação de restauração à hora atual. Depois, ele arredonda a hora resultante para o

Versão da API 2006-03-01


544
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

próximo dia à meia-noite do Tempo Universal Coordenado (UTC). Por exemplo, suponha que um objeto
seja criado em 15 de outubro de 2012, às 10h30 UTC e o período de restauração tenha sido especificado
como três dias. Nesse caso, a cópia restaurada expira em 19 de outubro de 2012, à 00h00 UTC, hora em
que o Amazon S3 vai excluir a cópia do objeto.

Se uma cópia temporária do objeto restaurado for criada, a classe de armazenamento do objeto
permanecerá a mesma. (Uma solicitação de operações da API HEAD Object ou GetObject retornará S3
Glacier ou S3 Glacier Deep Archive como a classe de armazenamento.)

O tempo necessário para concluir um trabalho de restauração depende da classe de armazenamento


de arquivamento ou da camada de armazenamento que você usa e qual opção de recuperação
você especificar: Expedited (disponível apenas para o S3 Glacier e o S3 Intelligent-Tiering Archive
Access) Standard, ou Bulk. Para obter mais informações, consulte Opções de recuperação de
arquivamento (p. 545).

Você pode ser notificado quando sua restauração for concluída usando as notificações de eventos do
Amazon S3. Para obter mais informações, consulte Notificações de eventos do Amazon S3 (p. 869).

Quando necessário, é possível restaurar grandes segmentos dos dados armazenados para uma cópia
secundária. No entanto, lembre-se de que as classes de armazenamento S3 Glacier e S3 Glacier Deep
Archive e os níveis Archive Access e Deep Archive Access foram projetados para 35 solicitações de
restauração aleatórias por pebibyte (PiB) armazenadas por dia.

Uso de operações em lote com solicitações de restauração

Para restaurar mais de um objeto do Amazon S3 com uma única solicitação, é possível usar operações
em lote do S3. Você fornece às operações em lote do S3 uma lista de objetos nos quais operar. O S3
Batch Operations chama a respectiva API para executar a operação especificada. Um único trabalho de
operações em lote pode realizar a operação especificada em bilhões de objetos contendo exabytes de
dados.

O recurso S3 Batch Operations rastreia o progresso, envia notificações e armazena um relatório de


conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável
e sem servidor. Você pode usar as operações em lote do S3 por meio do Console de Gerenciamento da
AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para obter mais informações, consulte the section
called “Noções básicas do Batch Ops” (p. 739).

As seções a seguir fornecem mais informações sobre a restauração de objetos arquivados.

Tópicos
• Opções de recuperação de arquivamento (p. 545)
• Restaurar um objeto arquivado (p. 547)
• Consultar objetos arquivados (p. 551)

Opções de recuperação de arquivamento


Veja a seguir as opções de recuperação disponíveis ao restaurar um objeto arquivado no Amazon S3:

• Expedited - Acesse rapidamente seus dados armazenados na classe de armazenamento S3 Glacier


ou no nível S3 Intelligent-Tiering Archive Access quando forem necessárias solicitações urgentes
ocasionais para um subconjunto de arquivos. Para todos os objetos arquivados, exceto os maiores (mais
de 250 MB), os dados acessados por meio de recuperações expressas geralmente são disponibilizados
dentro de um a cinco minutos.

A capacidade provisionada ajuda a garantir que a capacidade de recuperação para recuperações


expressas esteja disponível quando você precisar dela. Para obter mais informações, consulte
Capacidade provisionada (p. 546).

Versão da API 2006-03-01


545
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

• Standard: permite acessar qualquer um dos objetos arquivados em algumas horas. Esta é a
opção padrão para solicitações de recuperação que não especificam a opção de recuperação. As
recuperações padrão geralmente terminam dentro de 3 a 5 horas para objetos armazenados na classe
de armazenamento S3 Glacier ou no nível S3 Intelligent-Tiering Archive Access. Normalmente, eles
terminam dentro de 12 horas para objetos armazenados na classe de armazenamento S3 Glacier Deep
Archive ou S3 Intelligent-Tiering Deep Archive Access. As recuperações padrão são gratuitas para
objetos armazenados no S3 Intelligent-Tiering.
• Bulk: as recuperações em massa são a opção de recuperação de menor custo do Amazon S3 Glacier,
permitindo recuperar grandes quantidades de dados, até mesmo petabytes, com um custo baixo. As
recuperações em massa geralmente terminam dentro de 5 a 12 horas para objetos armazenados na
classe de armazenamento S3 Glacier ou no nível S3 Intelligent-Tiering Archive Access. Normalmente,
eles terminam dentro de 48 horas para objetos armazenados na classe de armazenamento S3 Glacier
Deep Archive ou no nível S3 Intelligent-Tiering Deep Archive Access. As recuperações em massa são
gratuitas para objetos armazenados no S3 Intelligent-Tiering.

A tabela a seguir resume as opções de recuperação de arquivos. Para obter informações completas sobre
a definição de preço, consulte Definição de preço do Amazon S3.

Para fazer uma recuperação Expedited, Standard ou Bulk, defina o elemento de solicitação Tier na
solicitação da API REST Restauração do objeto POST para a opção que você deseja, ou o equivalente
na CLI da AWS ou nos AWS SDKs. Se você adquiriu a capacidade provisionada, todas as recuperações
expressas serão automaticamente fornecidas por meio de sua capacidade provisionada.

É possível restaurar um objeto arquivado de forma programática ou usando o console do Amazon S3. O
Amazon S3 só processa uma solicitação de restauração por vez por objeto. é possível usar o console e a
API do Amazon S3 para verificar o status de restauração e descobrir quando o Amazon S3 excluirá a cópia
restaurada.

Para obter mais informações, consulte Restaurar um objeto arquivado (p. 547).

Capacidade provisionada
A capacidade provisionada ajuda a garantir que sua capacidade de recuperação para recuperações
expressas esteja disponível quando você precisar dela. Cada unidade de capacidade garante que pelo
menos três recuperações expressas possam ser realizadas a cada cinco minutos e fornece até 150 MB/s
de taxa de transferência de recuperação.

Se sua carga de trabalho exigir acesso altamente confiável e previsível a um subconjunto de seus dados
em minutos, será necessário adquirir a capacidade de recuperação provisionada. Sem capacidade
provisionada, as recuperações expressas podem não ser aceitas durante períodos de alta demanda.
Se precisar de acesso a recuperações expressas em qualquer circunstâncias, recomendamos que você
compre a capacidade de recuperação provisionada.

É possível comprar a capacidade provisionada usando o console do Amazon S3, o console do Amazon
S3 Glacier, a API REST Comprar capacidade provisionada, os AWS SDKs ou a CLI da AWS. Para obter
informações sobre a definição de preços da capacidade provisionada, consulte Definição de preço do
Amazon S3.

Atualizar a velocidade de uma restauração em andamento


Usando a atualização rápida de restauração do Amazon S3, é possível alterar a velocidade de restauração
para uma mais rápida durante o processo. Uma atualização rápida de restauração substitui uma
restauração em andamento com um nível mais rápido. Não é possível reduzir uma restauração em
andamento.

Para atualizar a velocidade de uma restauração em andamento, faça outra solicitação de restauração para
o mesmo objeto definindo um novo elemento de solicitação Tier na API REST Restauração do objeto
POST ou o equivalente na CLI da AWS ou nos AWS SDKs. Ao emitir uma solicitação para atualizar o nível

Versão da API 2006-03-01


546
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

de restauração, você deve escolher um nível mais rápido do que o nível de restauração do andamento.
Você não deve alterar outros parâmetros, como o elemento de solicitação Days.
Note

As restaurações padrão e a granel para o S3 Intelligent-Tiering são gratuitas. No entanto, as


solicitações de restauração subsequentes chamadas em um objeto que já está sendo restaurado
são cobradas como uma solicitação GET.

Você pode ser notificado quando sua restauração for concluída usando as notificações de eventos do
Amazon S3. Para obter mais informações, consulte Notificações de eventos do Amazon S3 (p. 869).
As restaurações são cobradas pelo preço do nível atualizado. Para obter informações sobre preços de
restauração, consulte Preços do Amazon S3

Restaurar um objeto arquivado


Os objetos do Amazon S3 armazenados nas classes de armazenamento S3 Glacier ou S3 Glacier Deep
Archive não são acessíveis imediatamente. Para acessar um objeto nessas classes de armazenamento,
você deve restaurar uma cópia temporária dele no bucket do S3 por uma duração especificada
(número de dias). Para obter informações sobre como usar essas classes de armazenamento, consulte
Uso de classes de armazenamento do Amazon S3 (p. 563) e Gerenciando seu ciclo de vida de
armazenamento (p. 569).

Objetos restaurados do S3 Glacier ou S3 Glacier Deep Archive são armazenados apenas pelo número
de dias que você especificar. Para obter uma cópia permanente do objeto, crie uma cópia dele no bucket
do Amazon S3. A menos que você faça uma cópia, o objeto ainda será armazenado nas classes de
armazenamento do S3 Glacier ou S3 Glacier Deep Archive.

Para calcular a data de expiração, o Amazon S3 adiciona o número de dias que você especifica à hora
em que você solicita a restauração do objeto e, em seguida, arredonda para o dia seguinte à meia-noite
UTC. Este cálculo se aplica à restauração inicial do objeto e a qualquer extensão na disponibilidade que
você solicitar. Por exemplo, se um objeto foi restaurado em 15 de outubro de 2012 às 10h30 UTC e você
especificou o número de dias como 3, o objeto estará disponível até 19 de outubro de 2012 às 00h00
UTC. Se em 16 de outubro de 2012 às 11h UTC você alterar o número de dias que deseja que ele esteja
acessível para 1, o Amazon S3 manterá o objeto restaurado disponível até 18 de outubro de 2012 às
00h00 UTC.

Ao restaurar um objeto arquivado, você está pagando pelo arquivo e por uma cópia restaurada
temporariamente. Para obter mais informações sobre definição de preços, consulte Definição de preços do
Amazon S3.

Você pode restaurar um objeto arquivado usando o console do Amazon S3, a API REST, AWS SDKs e a
Interface de Linhas de Comando da AWS (AWS CLI).

Usar o console do S3

Use as etapas a seguir para restaurar um objeto que foi arquivado nas classes de armazenamento
S3 Glacier ou S3 Glacier Deep Archive, para verificar o status e fazer upgrade de uma restauração
em andamento. (O console usa os nomes Glacier e Glacier Deep Archive para essas classes de
armazenamento.)

Para restaurar um objeto arquivado

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém os objetos que você deseja restaurar.
3. Na lista Objects (Objetos), selecione o objeto ou os objetos que você deseja restaurar, selecione
Actions (Ações) e escolha Initiate restore (Iniciar restauração).

Versão da API 2006-03-01


547
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

4. Se você estiver restaurando a partir do S3 Glacier ou S3 Glacier Deep Archive, insira o número
de dias em que deseja que seus dados arquivados sejam acessíveis na caixa de diálogo Iniciar
restauração .
5. Em Opções de recuperação, siga um destes procedimentos:

• Escolha Bulk retrieval (Recuperação em massa) ou Standard retrieval (Recuperação padrão), em


seguida, e escolha Restore (Restaurar).
• Escolha Recuperação acelerada (disponível somente para o S3 Glacier ou S3 Intelligent-Tiering
Archive Access).
6. A capacidade provisionada só está disponível para objetos no S3 Glacier. Se você tiver a capacidade
provisionada, escolha Restore (Restaurar) para iniciar uma recuperação provisionada.

Se você tiver a capacidade provisionada, todas as recuperações expressas serão atendidas pela
capacidade provisionada. Para obter mais informações, consulte Capacidade provisionada (p. 546).

• Se você não tiver a capacidade provisionada e não desejar comprá-la, escolha Restore (Restaurar).
• Se você não tiver a capacidade provisionada, mas quiser comprá-la, escolha Add capacity unit
(Adicionar unidade de capacidade) e, em seguida, escolha Buy (Comprar). Quando receber a
mensagem Purchase succeeded (Compra bem-sucedida), escolha Restore (Restaurar) para iniciar
a recuperação provisionada.

Atualize a velocidade da restauração enquanto ela está em andamento.

Para atualizar uma restauração em andamento para um nível mais rápido

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Bucket name (Nome do bucket), escolha o nome do bucket que contém os objetos que você
deseja restaurar.
3. Na lista Objects (Objetos), selecione um ou mais dos objetos que você está restaurando, escolha
Actions (Ações) e Restore from Glacier (Restaurar do Glacier). Para obter informações sobre como
verificar o status de restauração de um objeto, consulte Verificar o status de restauração e a data de
expiração (p. 548).
4. Escolha o nível para o qual você deseja atualizar e Restore (Restaurar).

Para obter informações sobre como fazer upgrade para um nível de restauração mais rápido, consulte
Atualizar a velocidade de uma restauração em andamento (p. 546).
Note

As restaurações padrão e a granel para o S3 Intelligent-Tiering são gratuitas. No entanto,


as solicitações de restauração subsequentes chamadas em um objeto que já está sendo
restaurado são cobradas como uma solicitação GET.

Verificar o status de restauração e a data de expiração

Você pode verificar o andamento da restauração na página Object overview (Visão geral do objeto). Para
obter mais informações, consulte Exibir uma visão geral do objeto no console do Amazon S3 (p. 157). Esta
página mostrará que a restauração está In progress (Em andamento).

Se você estiver restaurando a partir do S3 Glacier ou S3 Glacier Deep Archive, a cópia temporária da visão
geral do Objeto mostra a data de expiração da Restauração. O Amazon S3 removerá a cópia restaurada
do arquivamento nessa data.

Objetos restaurados do S3 Glacier ou S3 Glacier Deep Archive são armazenados apenas pelo número de
dias que você especificar. Para obter uma cópia permanente do objeto, crie uma cópia dele no bucket do
Amazon S3.

Versão da API 2006-03-01


548
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

Depois de restaurar um objeto, você pode baixá-lo na página Overview (Visão geral). Para obter mais
informações, consulte Exibir uma visão geral do objeto no console do Amazon S3 (p. 157).

Uso dos AWS SDKs

Java

O exemplo a seguir restaura uma cópia de um objeto que foi arquivado usando o AWS SDK para
Java. O exemplo inicia uma solicitação de restauração para o objeto arquivado especificado e verifica
seu status de restauração.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.RestoreObjectRequest;

import java.io.IOException;

public class RestoreArchivedObject {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Create and submit a request to restore an object from Glacier for two
days.
RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName,
keyName, 2);
s3Client.restoreObjectV2(requestRestore);

// Check the restoration status of the object.


ObjectMetadata response = s3Client.getObjectMetadata(bucketName, keyName);
Boolean restoreFlag = response.getOngoingRestore();
System.out.format("Restoration status: %s.\n",
restoreFlag ? "in progress" : "not in progress (finished or
failed)");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Versão da API 2006-03-01


549
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

.NET

O exemplo de C# a seguir inicia uma solicitação para restaurar um objeto arquivado por 2 dias. O
Amazon S3 mantém o status de restauração nos metadados do objeto. Após iniciar a solicitação, o
exemplo recupera os metadados do objeto e verifica o valor da propriedade RestoreInProgress.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Executar os exemplos de
código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class RestoreArchivedObjectTest
{
private const string bucketName = "*** bucket name ***";
private const string objectKey = "** archived object key name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
RestoreObjectAsync(client, bucketName, objectKey).Wait();
}

static async Task RestoreObjectAsync(IAmazonS3 client, string bucketName,


string objectKey)
{
try
{
var restoreRequest = new RestoreObjectRequest
{
BucketName = bucketName,
Key = objectKey,
Days = 2
};
RestoreObjectResponse response = await
client.RestoreObjectAsync(restoreRequest);

// Check the status of the restoration.


await CheckRestorationStatusAsync(client, bucketName, objectKey);
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("An AmazonS3Exception was thrown. Exception: " +
amazonS3Exception.ToString());
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
}
}

static async Task CheckRestorationStatusAsync(IAmazonS3 client, string


bucketName, string objectKey)
{
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
{
BucketName = bucketName,

Versão da API 2006-03-01


550
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

Key = objectKey
};
GetObjectMetadataResponse response = await
client.GetObjectMetadataAsync(metadataRequest);
Console.WriteLine("restoration status: {0}", response.RestoreInProgress ?
"in-progress" : "finished or failed");
}
}
}

Uso dos REST API

O Amazon S3 fornece uma API para que você inicie uma restauração de arquivos. Para obter mais
informações, consulte RestoreObject na Referência da API do Amazon Simple Storage Service.

Usar a CLI da AWS

Use o comando restore-object para restaurar objetos do S3 Glacier.

O exemplo a seguir restaura o objeto dir1/example.obj em awsexamplebucket por 25 dias.

aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request


'{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

Se a sintaxe JSON usada no exemplo resultar em um erro em um cliente Windows, substitua a solicitação
de restauração pela seguinte sintaxe:

--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

Você pode usar o seguinte comando para monitorar o status de sua solicitação restore-object:

aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj

Para obter mais informações, consulte restore-object na Referência de comandos da CLI da AWS.

Consultar objetos arquivados


Com o tipo de seleção Restauração do objeto POST, execute as operações de filtro usando declarações
simples em linguagem de consulta estruturada (SQL) diretamente em seus dados que arquivados pelo
Amazon S3 no S3 Glacier. Ao inserir uma consulta SQL para um objeto arquivado, a seleção executa a
consulta em vigor e grava os resultados de saída em um bucket do S3. É possível executar consultas e
análises personalizadas dos dados armazenados no S3 Glacier. sem precisar restaurar o objeto todo para
o Amazon S3.

Ao executar consultas de seleção, o S3 Glacier oferece três níveis de acesso aos dados: expresso,
padrão e em massa. Todos esses níveis fornecem diferentes tempos de acesso a dados e custos, e
você pode escolher qualquer um deles dependendo da rapidez com que deseja que seus dados sejam
disponibilizados. Para obter mais informações, consulte Níveis de acesso aos dados (p. 554).

É possível usar o tipo selecionado de restauração com os AWS SDKs, a API REST do S3 Glacier e a
Interface de linha de comando da AWS (CLI da AWS).

Tópicos
• Requisitos e limites ao usar select (p. 552)
• Consulta de dados usando select (p. 552)

Versão da API 2006-03-01


551
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

• Tratamento de erros (p. 553)


• Níveis de acesso aos dados (p. 554)

Requisitos e limites ao usar select


Estes são os requisitos para uso da seleção:

• Os objetos de arquivo consultados pela seleção devem ser formatados como valores separados por
vírgulas (CSV) descompactados.
• Você precisa de um bucket do S3 para saída. A conta da AWS usada para iniciar um trabalho de
seleção do S3 Glacier deve ter permissões para gravação no bucket do S3. O bucket deve estar na
mesma região da AWS que o bucket que contém o objeto arquivado que está sendo consultado.
• A conta da AWS solicitante deve ter permissões para realizar as ações s3:RestoreObject e
s3:GetObject. Para obter mais informações sobre essas permissões, consulte Exemplo: operações
de sub-recursos de bucket (p. 274).
• O arquivo não deve usar criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C) ou
criptografia no lado do cliente.

Os seguintes limites são aplicáveis ao usar a seleção:

• Não há limite para o número de registros que a seleção pode processar. Um registro de entrada ou
de saída não deve exceder 1 MB. Caso contrário, a consulta reporta uma falha. Existe um limite de
1.048.576 colunas por registro.
• Não há limite para o tamanho do resultado final. No entanto, os resultados são divididos em várias
partes.
• Uma expressão SQL limita-se a 128 KB.

Consulta de dados usando select


Com a seleção, é possível usar comandos SQL para consultar objetos de arquivo do S3 Glacier que estão
criptografados em formato CSV descompactado. Com essa restrição, é possível executar operações de
consulta simples nos dados baseados em textos no S3 Glacier. Por exemplo, você pode procurar um ID ou
um nome específico em um conjunto de arquivos de texto.

Para consultar os dados do S3 Glacier, crie uma solicitação de seleção usando a operação Restauração
do objeto POST. Ao iniciar uma solicitação de seleção, insira a expressão SQL, o arquivo a ser consultado
e o local em que serão armazenados os resultados.

O exemplo de expressão a seguir retorna todos os registros do objeto arquivado especificado em


Restauração do objeto POST.

SELECT * FROM object

O S3 Glacier Select é compatível com um subconjunto da linguagem SQL ANSI. Ele é compatível com
os filtros comuns de cláusulas SQL, como SELECT, FROM e WHERE. Não oferece suporte a SUM, COUNT,
GROUP BY, JOINS, DISTINCT, UNION, ORDER BY e LIMIT. Para obter mais informações sobre suporte
para SQL, consulte Referência SQL para Amazon S3 Select e S3 Glacier Select. (p. 714).

Saída de seleção

Ao iniciar uma solicitação de seleção, defina um local de saída para os resultados de consulta da seleção.
Esse local deve ser um bucket do S3; na mesma região da AWS que o bucket que contém o objeto

Versão da API 2006-03-01


552
Amazon Simple Storage Service Guia do usuário
Trabalhando com objetos arquivados

arquivado que está sendo consultado. A conta da AWS que inicia o trabalho deve ter permissões para
gravação no bucket.

Você pode especificar a classe de armazenamento e a criptografia do Amazon S3 nos objetos de saída
armazenados nele. O Select é compatível com a criptografia do AWS Key Management Service (SSE-
KMS) e do Amazon S3 (SSE-S3). Ela não oferece suporte às criptografias SSE-C e no lado do cliente.
Para obter mais informações sobre classes de armazenamento e criptografias do Amazon S3, consulte
Uso de classes de armazenamento do Amazon S3 (p. 563) e Proteção de dados usando criptografia no
lado do servidor (p. 195).

Os resultados do S3 Glacier Select são armazenados no bucket do S3 usando o prefixo fornecido no local
de saída especificado em Restauração do objeto POST. A partir dessas informações, a seleção cria um
prefixo exclusivo em referência ao ID do trabalho. (Os prefixos são usados para agrupar os objetos do
Amazon S3 iniciando os nomes de objeto com uma string comum.) Nesse prefixo exclusivo, há dois novos
prefixos criados, results para resultados e errors para logs e erros. Quando o trabalho é concluído, um
manifesto de resultado é gravado que contém a localização de todos os resultados.

Há também um arquivo de espaço reservado chamado job.txt gravado no local de saída. Esse arquivo
é gravado, mas nunca é atualizado. O arquivo de espaço reservado é usado para:

• A validação da permissão para gravação e a maioria dos erros de sintaxe SQL de maneira síncrona.
• Fornecer uma saída estática sobre a solicitação de seleção que você pode facilmente referenciar
sempre que quiser.

Vamos supor, por exemplo, que você inicie uma solicitação de seleção com o local de saída dos resultados
especificado como s3://example-bucket/my-prefix e a resposta do trabalho retorne o ID do
trabalho como examplekne1209ualkdjh812elkassdu9012e. Após a conclusão do trabalho de
seleção, é possível visualizar os seguintes objetos do Amazon S3 no bucket:

s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/job.txt
s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/abc
s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/def
s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/ghi
s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/result_manifest.txt

Os resultados da consulta de seleção são divididos em várias partes. No exemplo, a seleção usa o prefixo
especificado ao definir o local de saída e acrescenta o ID do trabalho e o prefixo results. Em seguida,
ela grava os resultados em três partes, com abc, def e ghi no final dos nomes de objeto. O manifesto de
resultados contém os três arquivos para permitir a recuperação de maneira programática. Se o trabalho
reportar falha com qualquer tipo de erro, um arquivo ficará visível com o prefixo de erro e um arquivo
error_manifest.txt será gerado.

A presença de um arquivo result_manifest.txt juntamente com a ausência de


error_manifest.txt garante que a tarefa foi concluída com êxito. Não há nenhuma garantia quanto ao
modo de ordenação dos resultados.
Note

O tamanho de um nome de objeto do Amazon S3 também conhecido como chave, não pode
ter mais do que 1.024 bytes. O S3 Glacier Select reserva 128 bytes para prefixos. Além disso,
o tamanho do caminho do local do Amazon S3 não pode ser maior do que 512 bytes. Uma
solicitação superior a 512 bytes retornará uma exceção, e a solicitação não será aceita.

Tratamento de erros
A seleção envia notificações de dois tipos de erros. O primeiro conjunto de erros é enviado de maneira
síncrona quando você envia a consulta em Restauração do objeto POST. Esses erros são enviados

Versão da API 2006-03-01


553
Amazon Simple Storage Service Guia do usuário
Usar o Object Lock

como parte da resposta HTTP. Outro conjunto de erros pode ocorrer após a consulta ter sido aceita,
mas eles ocorrem durante a execução da consulta. Nesse caso, os erros são gravados no local de saída
especificado com o prefixo errors.

A Select interrompe a execução da consulta após a detecção de um erro. Para executar a consulta com
êxito, é necessário resolver todos os erros. Verifique os logs para identificar quais registros causaram a
falha.

Como as consultas são executadas paralelamente em vários nós de computação, os erros obtidos não
estão em ordem sequencial. Por exemplo, se a consulta falhar com um erro na linha 6.234, isso não
significa que todas as linhas anteriores a ela foram processadas com êxito. A próxima execução da
consulta pode mostrar um erro em outra linha.

Níveis de acesso aos dados


Você pode especificar um dos níveis de acesso aos dados a seguir ao consultar um objeto arquivado:

• Expedited permite que você acesse rapidamente os dados quando um subconjunto de arquivos for
solicitado com urgência. Exceto para os arquivos maiores (mais de 250 MB), os dados acessados
usando recuperações Expedited costumam ser disponibilizados dentro de 1 a 5 minutos. Existem dois
tipos de acesso de dados Expedited: sob demanda e provisionado. As solicitações sob demandas
são semelhantes às instâncias sob demanda do EC2 e estão disponíveis na maior parte do tempo. As
solicitações provisionadas estarão disponíveis garantidamente quando você precisar delas. Para obter
mais informações, consulte Capacidade provisionada (p. 554).
• Standard: permite acessar qualquer um dos objetos arquivados em algumas horas. As recuperações
Standard normalmente são concluídas dentro de 3 a 5 horas. Esse é o nível padrão.
• Bulk: a opção de acesso aos dados de menor custo do S3 Glacier, permitindo recuperar grandes
quantidades de dados, até mesmo petabytes, em um dia. O acesso Bulk em geral termina em 5 a 12
horas.

Para fazer uma solicitação Expedited, Standard ou Bulk, defina o elemento de solicitação Tier na
solicitação da API REST de Restauração do objeto POST para a opção que você deseja, ou o equivalente
na CLI da AWS ou nos AWS SDKs. Para acesso Expedited, não há necessidade de definir se a
recuperação expressa é sob demanda ou provisionada. Se você adquiriu a capacidade provisionada,
todas as recuperações Expedited serão automaticamente fornecidas por meio de sua capacidade
provisionada. Para obter informações sobre a definição de preço por nível, consulte Definição de preços do
S3 Glacier.

Capacidade provisionada

A capacidade provisionada ajuda a garantir que sua capacidade de recuperação para recuperações
expressas esteja disponível quando você precisar dela. Cada unidade de capacidade garante que pelo
menos três recuperações expressas possam ser realizadas a cada cinco minutos e fornece até 150 MB/
s de taxa de transferência de recuperação. Para obter mais informações, consulte the section called
“Capacidade provisionada” (p. 546).

Usar o S3 Object Lock


Com o bloqueio de objetos do S3, é possível armazenar objetos usando um modelo Gravar uma vez, ler
muitas (WORM, write-once-read-many). O bloqueio de objetos pode ajudar a evitar que os objetos sejam
excluídos ou substituídos por um período de tempo fixo ou indefinidamente. Você pode usar o bloqueio
de objetos para ajudar a atender aos requisitos regulamentares que exigem armazenamento WORM ou
simplesmente adicionar outra camada de proteção contra alterações e exclusão de objetos.

Versão da API 2006-03-01


554
Amazon Simple Storage Service Guia do usuário
Bloqueio de objetos do S3

O bloqueio de objetos do S3 foi avaliado pela Cohasset Associates para uso em ambientes sujeitos aos
regulamentos SEC 17a-4, CFTC e FINRA. Para obter mais informações sobre como o bloqueio de objetos
está relacionado a essas regulamentações, consulte o Cohasset Associates Compliance Assessment.

O bloqueio de objetos fornece duas maneiras de gerenciar a retenção de objetos: períodos de retenção e
retenções legais.

• Período de retenção: especifica um período fixo durante o qual um objeto permanece bloqueado.
Durante esse período, o objeto será protegido por WORM e não poderá ser substituído nem excluído.
Para obter mais informações, consulte Períodos de retenção (p. 557)
• Retenção legal: oferece a mesma proteção de um período de retenção, mas sem data de expiração. Em
vez disso, uma retenção legal permanecerá em vigor até você removê-la explicitamente. As retenções
legais independem dos períodos de retenção. Para obter mais informações, consulte Retenções
legais (p. 557).

Uma versão do objeto pode ter um período de retenção e uma retenção legal, um, mas não o outro
ou nenhum dos dois. Para obter mais informações, consulte Como o bloquei de objetos do S3
funciona (p. 555).

O bloqueio de objetos só funciona em buckets com versionamento, e os períodos de retenção e as


retenções legais se aplicam a versões de objetos individuais. Quando você bloqueia uma versão do objeto,
o Amazon S3 armazena as informações de bloqueio nos metadados dessa versão do objeto. A colocação
de um período de retenção ou uma retenção legal em um objeto só protege a versão especificada na
solicitação. Isso não impede a criação de novas versões do objeto.

Se você colocar um objeto em um bucket que tenha o mesmo nome da chave de um objeto existente
protegido, o Amazon S3 criará uma nova versão desse objeto, armazenará ela no bucket conforme
solicitado e relatará a solicitação como concluída com êxito. A versão protegida existente do objeto
permanece bloqueada de acordo com a configuração da retenção.

Para usar o bloqueio de objetos do S3, siga estas etapas básicas:

1. Crie um novo bucket com o bloqueio de objetos habilitado.


2. (Opcional) Configure um período de retenção padrão para objetos colocados no bucket.
3. Coloque os objetos que você deseja bloquear no bucket.
4. Aplique um período de retenção, uma retenção legal, ou ambos, aos objetos que você deseja
proteger.

Para obter informações sobre como configurar e gerenciar o bloqueio de objetos do S3, consulte as
seguintes seções:

Tópicos
• Como o bloquei de objetos do S3 funciona (p. 555)
• Configurar o bloqueio de objetos do S3 usando o console (p. 559)
• Gerenciar o bloqueio de objetos (p. 560)

Como o bloquei de objetos do S3 funciona


Você pode usar o bloqueio de objetos do S3 para armazenar objetos usando um modelo gravar uma vez,
ler muitas (WORM, write once read many). O bloqueio de objetos pode ajudar a evitar que os objetos
sejam excluídos ou substituídos por um período de tempo fixo ou indefinidamente. Você pode usar o
bloqueio de objetos do S3 para atender a requisitos regulamentares que exigem armazenamento WORM
ou adicionar uma camada extra de proteção contra alterações e exclusões de objetos.

Versão da API 2006-03-01


555
Amazon Simple Storage Service Guia do usuário
Bloqueio de objetos do S3

Para obter informações sobre como gerenciar o status de bloqueio de objetos do Amazon S3, consulte the
section called “Gerenciar o bloqueio de objetos ” (p. 560).
Note

Os buckets do S3 com bloqueio de objeto do S3 não podem ser usados como buckets de destino
para logs de acesso ao servidor. Para obter mais informações, consulte the section called
“Registrando acesso ao servidor” (p. 833).

As seções a seguir descrevem os principais recursos do bloqueio de objetos do S3.

Tópicos
• Modos de retenção (p. 556)
• Períodos de retenção (p. 557)
• Retenções legais (p. 557)
• Configuração do bucket (p. 558)
• Permissões obrigatórias (p. 559)

Modos de retenção
O bloqueio de objetos do S3 fornece dois modos de retenção:

• Modo de governança
• Modo de conformidade

Esses modos de retenção aplicam níveis diferentes de proteção aos objetos. Aplique um dos modos de
retenção a qualquer versão de objeto protegida pelo bloqueio de objetos.

No modo de governança, os usuários não podem substituir nem excluir uma versão do objeto ou alterar as
configurações de bloqueio, a menos que tenham permissões especiais. Com o modo de governança, você
protege objetos contra a exclusão da maioria dos usuários, mas ainda pode conceder a alguns usuários
permissão para alterar as configurações de retenção ou excluir o objeto, caso necessário. Também é
possível usar o modo de governança para testar as configurações do período de retenção antes de criar
um período de retenção do modo de conformidade.

Para substituir ou remover as configurações de retenção do modo de governança, um usuário deve ter a
permissão s3:BypassGovernanceRetention e incluir explicitamente x-amz-bypass-governance-
retention:true como um cabeçalho de solicitação com qualquer solicitação que exija a substituição do
modo de governança.
Note

Por padrão, o console do Amazon S3 inclui o cabeçalho x-amz-bypass-governance-


retention:true. Se você tentar excluir objetos protegidos pelo modo governança e tiver
permissões s3:BypassGovernanceRetention, a operação terá êxito.

No modo de conformidade, uma versão do objeto protegida não pode ser substituída nem excluída por
qualquer usuário, inclusive o usuário raiz na conta da AWS. Quando um objeto estiver bloqueado no modo
de conformidade, o modo de retenção não poderá ser alterado nem o período de retenção poderá ser
encurtado. O modo de conformidade ajuda a garantir que uma versão do objeto não possa ser substituída
nem excluída durante o período de retenção.
Note

A atualização dos metadados de uma versão do objeto, ocorrida quando você faz ou altera um
bloqueio de objeto, não substitui a versão do objeto nem redefine o timestamp Last-Modified.

Versão da API 2006-03-01


556
Amazon Simple Storage Service Guia do usuário
Bloqueio de objetos do S3

Períodos de retenção
Um período de retenção protege uma versão do objeto por um período fixo. Quando você coloca um
período de retenção em uma versão do objeto, o Amazon S3 armazena um timestamp nos metadados
da versão do objeto para indicar quando o período de retenção expira. Depois que o período de retenção
expirar, a versão do objeto não poderá ser substituída nem excluída, a menos que você tenha feito uma
retenção legal na versão do objeto.

É possível colocar um período de retenção em uma versão do objeto explicitamente ou por meio de uma
configuração padrão do bucket. Ao aplicar um período de retenção a uma versão de objeto explicitamente,
especifique a opção de Retain Until Date (Reter até uma determinada data) para a versão do objeto.
O Amazon S3 armazena a configuração Retain Until Date nos metadados da versão do objeto e
protege a versão do objeto até que o período de retenção expire.

Ao usar as configurações padrão do bucket, você não especifica uma Retain Until Date. Em vez
disso, especifique uma duração, em dias ou anos, pela qual a versão do objeto colocada no bucket deve
ser protegida. Quando você coloca um objeto no bucket, o Amazon S3 calcula uma Retain Until
Date para a versão do objeto adicionando a duração especificada ao timestamp da criação da versão do
objeto. Ele armazena a Retain Until Date nos metadados da versão do objeto. A versão do objeto
acaba sendo protegida exatamente, ainda que você tenha colocado explicitamente um bloqueio com esse
período de retenção na versão do objeto.
Note

Caso a solicitação para colocar uma versão do objeto em um bucket contenha um modo de
retenção explícito e um período, essas configurações substituem todas as padrão do bucket
dessa versão do objeto.

Assim como acontece com todas as outras configurações de bloqueio de objetos, os períodos de retenção
se aplicam a versões de objetos individuais. As versões diferentes de um único objeto podem ter modos e
períodos de retenção diferentes.

Por exemplo, suponha que você tenha um objeto de 15 dias em um período de retenção de 30 dias e você
PUT um objeto no Amazon S3 com o mesmo nome e um período de retenção de 60 dias. Nesse caso, o
PUT será bem-sucedido, e o Amazon S3 criará uma nova versão do objeto com um período de retenção de
60 dias. A versão anterior mantém o período de retenção original e se torna excluível em 15 dias.

Prolongue um período de retenção depois que você tiver aplicado uma configuração de retenção a uma
versão do objeto. Para fazer isso, envie uma nova solicitação de bloqueio para a versão do objeto com
uma Retain Until Date que seja posterior à configurada atualmente para a versão do objeto. O
Amazon S3 substitui o período de retenção existente pelo novo período mais longo. Qualquer usuário com
permissões para colocar um período de retenção do objeto pode prolongar um período de retenção para
uma versão do objeto bloqueada em qualquer modo.

Retenções legais
Com o bloqueio de objetos, você também pode colocar uma retenção legal em uma versão de objeto.
Assim como um período de retenção, uma retenção legal evita que uma versão do objeto seja substituída
ou excluída. Porém, uma retenção legal não tem um período de retenção associado e permanecerá em
vigor até ser removida. As retenções legais podem ser feitas e removidas livremente por qualquer usuário
com a permissão s3:PutObjectLegalHold. Para obter uma lista completa das permissões do Amazon
S3, consulte Ações, recursos e chaves de condição do Amazon S3 (p. 288).

As retenções legais independem dos períodos de retenção. Desde que o bucket que contém o objeto
tenha o bloqueio de objetos habilitado, é possível colocar e remover retenções legais, independentemente
da versão do objeto especificado ter ou não um período de retenção definido. Fazer uma retenção legal em
uma versão do objeto não afeta o modo de retenção ou o período de retenção dessa versão do objeto.

Versão da API 2006-03-01


557
Amazon Simple Storage Service Guia do usuário
Bloqueio de objetos do S3

Por exemplo, suponha que você coloque uma retenção legal em uma versão do objeto enquanto essa
versão também está protegida por um período de retenção. Se o período de retenção expirar, o objeto não
perderá a proteção WORM. Em vez disso, a retenção legal continuará protegendo o objeto até um usuário
autorizado removê-la explicitamente. Da mesma maneira, se você remover uma retenção legal enquanto
uma versão do objeto tiver um período de retenção em vigor, a versão do objeto continuará protegida até o
período de retenção expirar.

Para usar o bloqueio de objetos, habilite-o para um bucket. Também é possível configurar um modo e
um período de retenção padrão que se aplicam a novos objetos colocados no bucket. Para obter mais
informações, consulte Configurar o bloqueio de objetos do S3 usando o console (p. 559).

Configuração do bucket
Para usar o bloqueio de objetos, habilite-o para um bucket. Também é possível configurar um modo e um
período de retenção padrão que se aplicam a novos objetos colocados no bucket.

Habilitar o bloqueio de objetos do S3


Para bloquear todos os objetos, você precisa configurar um bucket para usar o bloqueio de objetos do
S3. Para fazer isso, especifique que deseja habilitar o bloqueio de objetos ao criar o bucket. Depois de
configurar um bucket para bloqueio de objetos, você poderá bloquear objetos nesse bucket com períodos
de retenção, retenções legais ou ambos.
Note

• Só é possível habilitar o bloqueio de objetos para novos buckets. Para habilitar o bloqueio de
objetos para um bucket existente, entre em contato com o AWS Support.
• Ao criar um bucket com o bloqueio de objetos habilitado, o Amazon S3 habilita
automaticamente o versionamento para o bucket.
• Se você criar um bucket com o bloqueio de objetos habilitado, não poderá desabilitá-lo nem
suspender o versionamento para o bucket.

Para obter informações sobre como ativar o Object Lock no console, consulte Configurar o bloqueio de
objetos do S3 usando o console (p. 559).

Configurações de retenção padrão


Ao ativar o bloqueio de objetos para um bucket, o bucket pode armazenar objetos protegidos. No entanto,
a configuração não protege automaticamente os objetos colocados no bucket. Se quiser proteger
automaticamente versões de objeto colocadas no bucket, você poderá configurar um período de retenção
padrão. As configurações padrão se aplicam a todos os novos objetos no bucket, a menos que você
especifique explicitamente um modo de retenção e um período diferente para um objeto ao criá-lo.
Tip

Para impor o modo de retenção padrão do bucket e o período para todas as novas versões de
objetos colocados em um bucket, defina os padrões do bucket e negue permissão aos usuários
para configurarem as configurações de retenção de objetos. O Amazon S3 aplica o modo e o
período de retenção padrão a novas versões de objeto colocados no bucket e rejeita qualquer
solicitação para colocar um objeto que inclua um modo de retenção e configuração.

As configurações padrão do bucket exigem um modo e um período. Um modo padrão do bucket é de


governança ou de conformidade. Para obter mais informações, consulte Modos de retenção (p. 556).

Um período de retenção padrão é descrito não como um time stamp, mas como um período em dias ou
em anos. Quando você coloca uma versão do objeto em um bucket com um período de retenção padrão,
o bloqueio de objetos calcula uma retenção até uma determinada data. Ele faz isso adicionando o período
de retenção padrão ao timestamp de criação da versão do objeto. O Amazon S3 armazena o timestamp

Versão da API 2006-03-01


558
Amazon Simple Storage Service Guia do usuário
Configurar o bloqueio de objetos no console

resultante como a opção de Retain Until Date, como se você mesmo tivesse calculado o timestamp
manualmente e colocado-o na versão do objeto.

As configurações padrão só se aplicam a novos objetos colocados no bucket. A colocação de uma


configuração de retenção padrão em um bucket não coloca configurações de retenção em objetos já
existentes no bucket.
Important

Os bloqueios de objeto se aplicam apenas a versões de objeto individuais. Caso você coloque um
objeto em um bucket que tenha um período de retenção padrão e não especifique explicitamente
um período de retenção para esse objeto, o Amazon S3 criará o objeto com um período de
retenção correspondente ao padrão do bucket. Depois que o objeto for criado, o período de
retenção será independente do período de retenção padrão do bucket. A alteração do período de
retenção padrão de um bucket não altera o período de retenção existente para nenhum objeto
nesse bucket.
Note

Se você configurar um período de retenção padrão em um bucket, as solicitações para fazer


upload de objetos nesse bucket devem incluir o cabeçalho Content-MD5. Para obter mais
informações, consulte PutObject na Referência da API do Amazon Simple Storage Service.

Permissões obrigatórias
As operações do bloqueio de objetos exigem permissões específicas. Para obter mais informações sobre
as permissões necessárias, consulte Exemplo: operações de objeto (p. 273). Para obter informações sobre
como usar condições com permissões, consulte Exemplos de chave de condição do Amazon S3 (p. 278).

Configurar o bloqueio de objetos do S3 usando o


console
Com o bloqueio de objetos do S3, é possível armazenar objetos no Amazon S3 usando um modelo write-
once-read-many (WORM). Você pode usar o bloqueio de objetos do S3 para evitar que um objeto seja
excluído ou substituído por um período fixo ou indefinidamente. Para obter mais informações sobre os
recursos do bloqueio de objetos do S3, consulte Como o bloquei de objetos do S3 funciona (p. 555).

Para usar o bloqueio de objetos do S3, siga estas etapas básicas:

1. Crie um novo bucket com o bloqueio de objetos habilitado.


2. (Opcional) Configure um período de retenção padrão para objetos colocados no bucket.
3. Coloque os objetos que você deseja bloquear no bucket.
4. Aplique um período de retenção, uma retenção legal, ou ambos, aos objetos que você deseja
proteger.

Antes de bloquear qualquer objeto, você precisa habilitar um bucket para usar o bloqueio de objetos do
S3. Você habilita o bloqueio de objetos ao criar um bucket. Depois de habilitar um bloqueio de objeto do
em um bucket, você poderá bloquear objetos nesse bucket. Assim que criar um bucket com bloqueio de
objetos habilitado, você não poderá desabilitá-lo nem suspender o versionamento para o bucket.

Para obter informações sobre como criar um bucket com o S3 Object Lock habilitado, consulte Criação de
um bucket (p. 31).

Para habilitar a retenção legal do Object Lock

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Versão da API 2006-03-01


559
Amazon Simple Storage Service Guia do usuário
Gerenciar o bloqueio de objetos

2. Na lista Buckets, escolha o nome do bucket desejado.


3. Na lista Objects (Objetos), escolha o nome do objeto para o qual você deseja ativar ou desativar a
retenção legal.

A Object overview (Visão geral do objeto) será exibida, mostrando as propriedades do objeto.
4. Em Object Lock legal hold (Retenção legal do Object Lock), escolha Edit (Editar).
5. Em Legal hold (Retenção legal), escolha Enable (Habilitar) ou Disable (Desabilitar).
6. Selecione Save changes.

Para editar as configurações de retenção do Object Lock

1. Na lista Objects (Objetos), escolha o nome do objeto para o qual você deseja editar as configurações
de retenção do Object Lock.

A Object overview (Visão geral do objeto) será exibida, mostrando as propriedades do objeto.
2. Em Object Lock retention (Retenção do Object Lock), escolha Edit (Editar).
3. Em Retention (Retenção), escolha Enable (Habilitar) ou Disable (Desabilitar).
4. Em Retention mode (Modo de retenção), escolha Governance mode (Modo de governança) ou
Compliance mode (Modo de conformidade).
5. Na caixa Retain until date (Reter até a data), insira a data em que o objeto não estará mais protegido
pelo modo de retenção escolhido.
6. Selecione Save changes.

Para obter mais informações sobre as configurações de retenção e retenção legal, consulte Como o
bloquei de objetos do S3 funciona (p. 555).

Para obter informações sobre como gerenciar o bloqueio de objetos usando a AWS CLI, os AWS SDKs e
as APIs REST do Amazon S3, consulte (p. 560).

Gerenciar o bloqueio de objetos


Você pode usar a AWS CLI, AWS SDKs e as APIs REST do Amazon S3 para configurar e visualizar
informações de bloqueio, definir limites de retenção, gerenciar exclusões e ciclos de vida e muito mais.

Tópicos
• Visualizar as informações de bloqueio de um objeto (p. 560)
• Ignorar modo de governança (p. 561)
• Configurar eventos e notificações (p. 561)
• Definir limites de retenção (p. 561)
• Gerenciar marcadores de exclusão e ciclos de vida de objetos (p. 562)
• Usar o bloqueio de objetos do S3 com replicação (p. 562)

Visualizar as informações de bloqueio de um objeto


É possível visualizar o status do bloqueio de objetos de uma versão de objeto do Amazon S3 usando o
comando GET Object ou HEAD Object. Ambos os comandos retornam o modo de retenção, Retain
Until Date, e o status de retenção legal para a versão do objeto especificada.

Para exibir o modo e o período de retenção de uma versão do objeto, você deve ter a permissão
s3:GetObjectRetention. Para exibir o status de retenção legal de uma versão do objeto, você deve
ter a permissão s3:GetObjectLegalHold. Se você GET ou HEAD uma versão do objeto, mas não tiver

Versão da API 2006-03-01


560
Amazon Simple Storage Service Guia do usuário
Gerenciar o bloqueio de objetos

as permissões necessárias para ver o status de bloqueio, a solicitação será bem-sucedida. No entanto, as
informações que você não tem permissão para ver não são retornadas.

Para visualizar a configuração de retenção padrão do bucket (caso exista), solicite a


configuração do bloqueio de objetos do bucket. Para fazer isso, você deve ter a permissão
s3:GetBucketObjectLockConfiguration. Caso você faça uma solicitação de uma configuração
de bloqueio de objetos em um bucket que não tenha o bloqueio de objetos do S3 habilitado, o Amazon
S3 retornará um erro. Para obter mais informações sobre permissões, consulte Exemplo: operações de
objeto (p. 273).

Você pode configurar os relatórios de inventário do Amazon S3 nos buckets para incluírem as opções
Retain Until Date, object lock Mode e Legal Hold Status para todos os objetos em um
bucket. Para obter mais informações, consulte Inventário do Amazon S3 (p. 605).

Ignorar modo de governança


Você pode realizar operações em versões de objeto bloqueadas em modo de governança como se
elas estivessem desprotegidas, caso tenha a permissão s3:BypassGovernanceRetention. Essas
operações incluem a exclusão de uma versão do objeto, a redução do período de retenção ou a remoção
do bloqueio de objeto com a colocação de um novo bloqueio com parâmetros vazios.

Para ignorar o modo de governança, você deve indicar explicitamente na solicitação que você deseja
ignorar esse modo. Para fazer isso, inclua o cabeçalho x-amz-bypass-governance-retention:true
com a sua solicitação ou use o parâmetro equivalente com solicitações feitas por meio da CLI da AWS
ou os AWS SDKs. O Console de Gerenciamento da AWS aplicará automaticamente esse cabeçalho às
solicitações feitas por meio do console, se você tiver a permissão necessária para ignorar o modo de
governança.
Note

Ignorar o modo de governança não afeta o status de retenção legal de uma versão do objeto.
Caso uma versão do objeto tenha uma retenção legal habilitada, esta permanece em vigência e
evita que solicitações substituam ou excluam a versão do objeto.

Configurar eventos e notificações


É possível configurar eventos do Amazon S3 para operações em nível de objeto em um bucket com
bloqueio de objetos do S3. Quando as chamadas PUT Object, HEAD Object e GET Object incluírem
metadados do Object Lock, os eventos dessas chamadas incluirão esses valores de metadados. Quando
os metadados de bloqueio de objetos forem adicionados a um objeto ou atualizados no objeto, essas
ações também acionarão eventos. Esses eventos ocorrem sempre que você usa PUT ou GET na retenção
do objeto ou informações de retenção legal.

Para obter mais informações sobre eventos do Amazon S3, consulte Notificações de eventos do Amazon
S3 (p. 869).

Use notificações de eventos do Amazon S3 para rastrear o acesso e as alterações feitas nas
configurações do bloqueio de objetos e nos dados que usam o AWS CloudTrail. Para obter informações
sobre o CloudTrail, consulte a Documentação do AWS CloudTrail.

Você também pode usar o Amazon CloudWatch para gerar alertas com base nesses dados. Para obter
mais informações sobre o CloudWatch, consulte a Documentação do Amazon CloudWatch.

Definir limites de retenção


Defina os períodos de retenção mínimo e máximo permitidos para um bucket usando uma política de
bucket. Faça isso usando a chave de condição s3:object-lock-remaining-retention-days. O
período máximo de retenção é de cem anos.

Versão da API 2006-03-01


561
Amazon Simple Storage Service Guia do usuário
Gerenciar o bloqueio de objetos

O exemplo a seguir mostra uma política de bucket que usa a chave de condição s3:object-lock-
remaining-retention-days para definir um período de retenção máximo de 10 dias.

{
"Version": "2012-10-17",
"Id": "<SetRetentionLimits",
"Statement": [
{
"Sid": "<SetRetentionPeriod",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutObjectRetention"
],
"Resource": "arn:aws:s3:::<awsexamplebucket1>/*",
"Condition": {
"NumericGreaterThan": {
"s3:object-lock-remaining-retention-days": "10"
}
}
}
]
}

Note

Se seu bucket for o bucket de destino de uma política de replicação e você quiser definir períodos
de retenção mínimos e máximos permitidos para as réplicas de objetos que foram criados usando
a replicação, você deverá incluir a ação s3:ReplicateObject em sua política de bucket.

Para obter mais informações, consulte os tópicos a seguir:

• Ações, recursos e chaves de condição do Amazon S3 (p. 288)


• Exemplo: operações de objeto (p. 273)
• Exemplos de chave de condição do Amazon S3 (p. 278)

Gerenciar marcadores de exclusão e ciclos de vida de objetos


Embora possa excluir uma versão do objeto protegida, você ainda pode criar um marcador de exclusão
para esse objeto. A colocação de um marcador de exclusão em um objeto não exclui nenhuma versão
do objeto. No entanto, isso faz com que o Amazon S3 se comporte na maioria das vezes como se o
objeto tivesse sido excluído. Para obter mais informações, consulte Trabalhar com marcadores de
exclusão (p. 536).
Note

Os marcadores de exclusão não são protegidos por WORM, independentemente de qualquer


período de retenção ou da retenção legal no objeto subjacente.

As configurações de gerenciamento de ciclo de vida do objeto continuam funcionando normalmente em


objetos protegidos, inclusive a colocação de marcadores de exclusão. No entanto, as versões de objeto
protegidas continuam seguras, evitando a exclusão ou a substituição por uma configuração do ciclo de
vida. Para obter mais informações sobre como gerenciar ciclos de vida de objetos, consulte Gerenciando
seu ciclo de vida de armazenamento (p. 569).

Usar o bloqueio de objetos do S3 com replicação


Você pode usar o bloqueio de objetos do S3 com replicação para habilitar a cópia automática e assíncrona
de objetos bloqueados e seus metadados de retenção em buckets do S3, em diferentes ou nas mesmas

Versão da API 2006-03-01


562
Amazon Simple Storage Service Guia do usuário
Gerenciamento de classes de armazenamento

regiões da AWS. Ao usar a replicação, os objetos em um bucket de origem são replicados para um bucket
de destino. Para obter mais informações, consulte Replicação de objetos (p. 617).

Para definir um bloqueio de objetos do S3 com replicação, escolha uma das opções a seguir.

Opção 1: habilitar o Object Lock primeiro

1. Habilite o bloqueio de objetos no bucket de destino ou nos buckets de origem e de destino.


2. Defina a replicação entre os buckets de origem e destino.

Opção 2: configurar a replicação primeiro

1. Defina a replicação entre os buckets de origem e destino.


2. Habilite o bloqueio de objetos apenas no bucket de destino ou nos buckets de origem e de destino.

Ao ativar o Object Lock nas opções anteriores, isso deve ser feito no momento da criação do bucket ou
você deve entrar em contato com o AWS Support se estiver usando um bucket existente. Isso é necessário
para assegurar que a replicação seja configurada corretamente.

Antes de entrar em contato com o AWS Support, revise os seguintes requisitos para configurar o bloqueio
de objetos com replicação:

• O bucket de destino do Amazon S3 deve ter o bloqueio de objetos habilitado.


• Conceda duas novas permissões no bucket do S3 de origem na função do AWS Identity and Access
Management (IAM) que você usa para configurar a replicação. As duas novas permissões são
s3:GetObjectRetention e s3:GetObjectLegalHold. Se a função tiver uma permissão s3:Get*,
ela satisfaz os requisitos. Para obter mais informações, consulte Configuração de permissões (p. 633).

Para obter mais informações sobre bloqueio de objetos do S3, consulte Como o bloquei de objetos do S3
funciona (p. 555).

Uso de classes de armazenamento do Amazon S3


Cada objeto no Amazon S3 tem uma classe de armazenamento associada a ele. Por exemplo, se você
lista os objetos em um bucket do S3, o console mostra a classe de armazenamento de todos os objetos
na lista. O Amazon S3 oferece uma variedade de classes de armazenamento para os objetos que você
armazena. Escolha uma classe de acordo com seu cenário de caso de uso e dos requisitos de acesso de
desempenho. Todas essas classes de armazenamento oferecem alta durabilidade.

As seções a seguir fornecem detalhes das várias classes de armazenamento e como definir a classe de
armazenamento para seus objetos.

Tópicos
• Classes de armazenamento de objetos acessados com frequência (p. 564)
• Classe de armazenamento para otimizar automaticamente dados com padrões de acesso alterados ou
desconhecidos (p. 564)
• Classes de armazenamento de objetos acessados com pouca frequência (p. 565)
• Classes de armazenamento para arquivamento de objetos (p. 566)
• Classe de armazenamento para o Amazon S3 no Outposts (p. 567)
• Comparar as classes de armazenamento do Amazon S3 (p. 567)

Versão da API 2006-03-01


563
Amazon Simple Storage Service Guia do usuário
Objetos acessados frequentemente

• Configurar a classe de armazenamento de um objeto (p. 568)

Classes de armazenamento de objetos acessados


com frequência
Para casos de uso nos quais a performance é importante (aqueles que exigem tempo de acesso de
milissegundos) e dados acessados com frequência, o Amazon S3 fornece as seguintes classes de
armazenamento:

• S3 Standard: a classe de armazenamento padrão. Se você não especificar a classe de armazenamento


ao fazer upload de um objeto, o Amazon S3 atribuirá a classe S3 Standard.
• Redundância reduzida:a classe Armazenamento de redundância reduzida (RRS) foi criada para dados
reproduzíveis não críticos que podem ser armazenados em níveis de redundância menores do que a
classe S3 Standard.
Important

Não recomendamos o uso dessa classe de armazenamento. A classe de armazenamento S3


Standard é mais econômica.

Para durabilidade, os objetos RRS têm uma perda anual média prevista de 0,01%. Se um objeto de RRS
for perdido, quando forem feitas solicitações a ele, o Amazon S3 retornará um erro 405.

Classe de armazenamento para otimizar


automaticamente dados com padrões de acesso
alterados ou desconhecidos
O S3 Intelligent-Tiering é uma classe de armazenamento do Amazon S3 projetada para otimizar os custos
de armazenamento ao mover automaticamente os dados para o nível de acesso mais econômico, sem
sobrecarga operacional. É o único armazenamento na nuvem que oferece economia de custo automática
ao mover dados em um nível granular de objeto entre níveis de acesso quando há alteração nos padrões
de acesso. O S3 Intelligent-Tiering é a classe de armazenamento perfeita quando você quer otimizar os
custos de armazenamento dos dados com padrões de acesso desconhecidos ou variáveis. Não há taxas
de recuperação para a S3 Intelligent-Tiering.

Por uma pequena taxa mensal de automação e monitoramento de objetos, a S3 Intelligent-Tiering


monitora os padrões de acesso e move automaticamente os objetos de um nível para outro. Ela funciona
armazenando objetos em quatro níveis de acesso: dois níveis de acesso de baixa latência otimizados para
acesso frequente e infrequente e dois níveis de acesso de arquivamento opcionais projetados para acesso
assíncrono, otimizados para acesso raro.

Os objetos que foram carregados ou transferidos para o S3 Intelligent-Tiering são automaticamente


armazenados no nível Acesso frequente. O S3 Intelligent-Tiering monitora os padrões de acesso e, em
seguida, move os objetos que não foram acessados durante 30 dias consecutivos para o nível Acesso
infrequente. Você também pode optar por ativar um ou ambos os níveis de acesso ao arquivamento
usando a API com PutBucketIntelligentTieringConfiguration, a CLI ou o console do Amazon S3. Depois que
você ativa um ou ambos os níveis de acesso de arquivamento, o S3 Intelligent-Tiering move os objetos
que não foram acessados durante 90 dias consecutivos para o nível de Acesso de arquivamento e depois
de 180 dias consecutivos sem acesso para o nível de Acesso de arquivamento profundo.

Para acessar objetos arquivados posteriormente, primeiro você precisa restaurá-los. Para obter mais
informações, consulte Trabalhando com objetos arquivados (p. 544).

Versão da API 2006-03-01


564
Amazon Simple Storage Service Guia do usuário
Objetos acessados com pouca frequência

Note

A classe de armazenamento S3 Intelligent-Tiering é indicada para objetos maiores que 128 KB


que você pretende armazenar por pelo menos 30 dias. Se o tamanho de um objeto for menor que
128 KB, ele não estará qualificado para o nivelamento automático. Os objetos menores podem ser
armazenados, mas são sempre cobrados com base nas taxas do nível de acesso frequente na
classe de armazenamento S3 Intelligent-Tiering.
Se excluir um objeto antes do fim do período mínimo de duração do armazenamento de 30 dias,
você será cobrado por 30 dias. Para obter informações sobre a definição de preços, consulte
Definição de preços do Amazon S3.

Classes de armazenamento de objetos acessados


com pouca frequência
As classes de armazenamento S3 Standard – IA e S3 One Zone – IA foram desenvolvidas para dados
duradouros e acessados com pouca frequência. (IA é a sigla em inglês para acesso pouco frequente.)
Os objetos S3 Standard-IA e S3 One Zone-IA estão disponíveis para acesso de milissegundos (o mesmo
que a classe de armazenamento S3 Standard). O Amazon S3 cobra uma taxa de recuperação para esses
objetos, portanto, eles são mais adequados para dados acessados com pouca frequência. Para obter
informações sobre a definição de preços, consulte Definição de preços do Amazon S3.

Por exemplo, é possível escolher as classes de armazenamento S3 Standard-IA e S3 One Zone-IA para
fazer o seguinte:

• Para armazenar backups.


• Para dados mais antigos acessados com pouca frequência, mas que ainda exigem acesso de
milissegundos. Por exemplo, ao fazer upload de dados, é possível escolher a classe de armazenamento
S3 Standard e usar a configuração de ciclo de vida para solicitar que o Amazon S3 transfira os objetos
para a classe S3 Standard – IA ou S3 One Zone – IA.

Para obter mais informações sobre gerenciamento de ciclo de vida, consulte Gerenciando seu ciclo de
vida de armazenamento (p. 569).

Note

As classes de armazenamento S3 Standard – IA e S3 One Zone – IA são adequadas para objetos


maiores que 128 KB que você planeja armazenar por pelo menos 30 dias. Se um objeto for menor
que 128 KB, o Amazon S3 cobrará por 128 KB. Se excluir um objeto antes do fim do período
mínimo de duração do armazenamento de 30 dias, você será cobrado por 30 dias. Para obter
informações sobre a definição de preços, consulte Definição de preços do Amazon S3.

As diferenças entre essas classes de armazenamento são:

• S3 Standard – IA: o Amazon S3 armazena dados de objeto de maneira redundante em várias zonas de
disponibilidade separadas geograficamente (de maneira semelhante à classe de armazenamento S3
Standard). Os objetos S3 Standard – IA são resistentes à perda de uma zona de disponibilidade. Essa
classe de armazenamento oferece maior disponibilidade e resiliência que a classe S3 One Zone – IA.
• S3 One Zone – IA: o Amazon S3 armazena dados de objeto em apenas uma zona de disponibilidade,
e isso a torna menos cara que a classe S3 Standard – IA. No entanto, os dados não são resilientes
à perda física da zona de disponibilidade resultante de desastres, como terremotos e inundações.
A classe de armazenamento S3 One Zone – IA é tão durável quanto a classe Standard – IA, mas é
menos disponível e resistente. Para uma comparação de durabilidade e disponibilidade das classes
de armazenamento, consulte Comparar as classes de armazenamento do Amazon S3 (p. 567) no
fim desta seção. Para obter informações sobre a definição de preços, consulte Definição de preços do
Amazon S3.

Versão da API 2006-03-01


565
Amazon Simple Storage Service Guia do usuário
Arquivamento de objetos

Recomendamos o seguinte:

• S3 Standard-IA: use para a cópia principal ou única de dados, que não pode ser recriada.
• S3 One Zone-IA: use se você puder recriar os dados em caso de falha da zona de disponibilidade, e
para réplicas de objeto ao configurar a replicação entre regiões (CRR) do S3.

Classes de armazenamento para arquivamento de


objetos
As classes de armazenamento S3 Glacier e S3 Glacier Deep Archive são projetadas para o arquivamento
de dados de baixo custo. Essas classes de armazenamento oferecem a mesma durabilidade e resiliência
que a classe de armazenamento S3 Standard. Para obter uma comparação entre a durabilidade e a
disponibilidade da classe de armazenamento, consulte Comparar as classes de armazenamento do
Amazon S3 (p. 567).

As diferenças entre essas classes de armazenamento são:

• S3 Glacier: use para arquivos nos quais partes dos dados podem precisar ser recuperadas em
minutos. Os dados armazenados na classe de armazenamento S3 Glacier têm um período mínimo de
duração do armazenamento de 90 dias e podem ser acessados em apenas 1 a 5 minutos usando a
recuperação expressa. Se você excluiu, substituiu ou fez a transição de um objeto para outra classe
de armazenamento antes do período mínimo de 90 dias, será cobrado pelos 90 dias. Para obter
informações sobre a definição de preços, consulte Definição de preços do Amazon S3.
• S3 Glacier Deep Archive: use para arquivar dados que raramente precisam ser acessados. Os dados
armazenados na classe de armazenamento S3 Glacier Deep Archive têm um período mínimo de
duração do armazenamento de 180 dias e um tempo de recuperação padrão de 12 horas. Se você
excluiu, substituiu ou fez a transição de um objeto para outra classe de armazenamento antes do
período mínimo de 180 dias, será cobrado pelos 180 dias. Para obter informações sobre a definição de
preços, consulte Definição de preços do Amazon S3.

S3 Glacier Deep Archive é a opção de armazenamento com o menor custo na AWS. Os custos de
armazenamento para o S3 Glacier Deep Archive são mais baratos que os da classe de armazenamento
S3 Glacier. É possível reduzir os custos de recuperação do S3 Glacier Deep Archive usando a
recuperação em lote, o que retorna dados em até 48 horas.

Recuperar objetos arquivados


É possível definir a classe de armazenamento de um objeto como S3 Glacier ou S3 Glacier Deep Archive
da mesma maneira que você faz para outras classes de armazenamento conforme descrito na seção
Configurar a classe de armazenamento de um objeto (p. 568). Porém, os objetos do S3 Glacier e do
S3 Glacier Deep Archive não estão disponíveis para acesso em tempo real. Primeiramente, é necessário
restaurar os objetos do S3 Glacier e do S3 Glacier Deep Archive antes de acessá-los. (Os objetos do S3
Standard, RRS, S3 Standard – IA, S3 One Zone – IA e S3 Intelligent-Tiering estão disponíveis para acesso
a qualquer momento.) Para obter mais informações sobre a recuperação de objetos em arquivamento,
consulte Restaurar um objeto arquivado (p. 547).
Important

Quando você seleciona a classe de armazenamento S3 Glacier ou S3 Glacier Deep Archive,


os objetos permanecem no Amazon S3. Não será possível acessá-los diretamente por meio do
serviço separado do Amazon S3 Glacier.

Para saber mais sobre o serviço Amazon S3 Glacier, consulte o Guia do desenvolvedor do Amazon S3
Glacier.

Versão da API 2006-03-01


566
Amazon Simple Storage Service Guia do usuário
Amazon S3 on Outposts

Classe de armazenamento para o Amazon S3 no


Outposts
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar e
recuperar facilmente objetos no local para aplicações que exigem acesso a dados locais, processamento
de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de armazenamento,
o S3 Outposts (OUTPOSTS). É possível usar as mesmas APIs e recursos no AWS Outposts da mesma
maneira que no Amazon S3, incluindo políticas de acesso, criptografia e atribuição de tags.

A classe de armazenamento do S3 Outposts só está disponível para objetos armazenados em buckets no


AWS Outposts. Se você tentar usar essa classe de armazenamento com um bucket do S3 em uma região
da AWS, isso resultará em um erro InvalidStorageClass. Além disso, se você tentar usar outras
classes de armazenamento do S3 com o S3 no Outposts, isso resultará nessa mesma resposta de erro.
É possível usar o S3 no Outposts por meio do Console de Gerenciamento da AWS, da CLI da AWS, dos
AWS SDKs ou da API REST.

Os objetos armazenados na classe de armazenamento S3 Outposts (OUTPOSTS) são sempre


criptografados usando criptografia no lado do servidor com chaves de criptografia gerenciadas do Amazon
S3 (SSE-S3). Para obter mais informações, consulte Proteção de dados usando criptografia no lado do
servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) (p. 213).

Você também pode optar explicitamente por criptografar objetos armazenados na classe de
armazenamento S3 Outposts usando criptografia no lado do servidor com chaves de criptografia
fornecidas pelo cliente (SSE-C). Para obter mais informações, consulte Proteger dados usando a
criptografia de servidor com chaves de criptografia fornecidas pelo cliente (SSE-C) (p. 225).

Para obter mais informações sobre o S3 no Outposts, consulte Usar o Amazon S3 no Outposts (p. 1093).

Comparar as classes de armazenamento do Amazon


S3
A tabela a seguir compara as classes de armazenamento, incluindo sua disponibilidade, durabilidade,
duração mínima de armazenamento e outras considerações.

Todas as classes de armazenamento, exceto a S3 One Zone – IA, são desenvolvidas para serem
resistentes à perda simultânea de dados completos em uma única zona de disponibilidade e à perda
parcial em outra zona de disponibilidade.

Versão da API 2006-03-01


567
Amazon Simple Storage Service Guia do usuário
Configurar a classe de armazenamento de um objeto

Considere os custos, além dos requisitos de desempenho do cenário da sua aplicação. Para obter
informações sobre os preços das classes de armazenamento, consulte Definição de preços do Amazon
S3.

Configurar a classe de armazenamento de um objeto


Para criar e atualizar classes de armazenamento de objetos, use o console do Amazon S3, os AWS SDKs
ou Interface de linhas de comando da AWS (AWS CLI). Cada uma usa as APIs do Amazon S3 para enviar
solicitações ao Amazon S3.

As APIs do Amazon S3 são compatíveis com a configuração (ou atualização) da classe de


armazenamento de objetos, da seguinte forma:

• Ao criar um objeto, é possível especificar a classe de armazenamento dele. Por exemplo, ao criar
objetos usando as APIs PUT Object, POST Object e Iniciar multipart upload, adicione o cabeçalho
de solicitação x-amz-storage-class para especificar uma classe de armazenamento. Se esse
cabeçalho não for adicionado, o Amazon S3 usará a classe de armazenamento padrão, Standard.
• Também é possível alterar a classe de armazenamento de um objeto que já está armazenado no
Amazon S3 para qualquer outra classe de armazenamento fazendo uma cópia desse objeto usando
a API PUT Object - Copy. No entanto, não é possível usar PUT Object - Copy para copiar objetos que
estão armazenados nas classes de armazenamento S3 Glacier ou S3 Glacier Deep Archive.

Copie o objeto no mesmo bucket usando o mesmo nome de chave e especifique os cabeçalhos de
solicitação da seguinte forma:
• Defina o cabeçalho x-amz-metadata-directive como COPY.
• Defina x-amz-storage-class como a classe de armazenamento desejada.

Em um bucket com versionamento habilitado, não é possível alterar a classe de armazenamento de uma
versão específica de um objeto. Quando você o copia, o Amazon S3 fornece um novo ID de versão.
• É possível direcionar o Amazon S3 para alterar a classe de armazenamento de objetos adicionando a
configuração do ciclo de vida do S3 em um bucket. Para obter mais informações, consulte Gerenciando
seu ciclo de vida de armazenamento (p. 569).
• Ao definir uma configuração de replicação, você poderá definir a classe de armazenamento para objetos
replicados como qualquer outra classe de armazenamento. No entanto, não é possível replicar objetos
que estão armazenados nas classes de armazenamento S3 Glacier ou S3 Glacier Deep Archive Para
obter mais informações, consulte Configuração de replicação (p. 622).

Restrição de permissões de política de acesso a uma classe de


armazenamento específica
Ao conceder permissões de política de acesso para operações do Amazon S3, é possível usar a chave
de condição s3:x-amz-storage-class para restringir qual classe de armazenamento a ser usada ao
armazenar objetos obtidos por upload. Por exemplo, ao conceder permissão de s3:PUTObject, você
pode restringir uploads de objetos a uma classe de armazenamento específica. Para ver um exemplo
de política, consulte Exemplo 5: restrição de uploads de objetos com uma classe de armazenamento
específica (p. 283).

Para obter mais informações sobre como usar condições em políticas e uma lista completa de chaves de
condição do Amazon S3, consulte o seguinte:

• Ações, recursos e chaves de condição do Amazon S3 (p. 288)


• Exemplos de chave de condição do Amazon S3 (p. 278)

Versão da API 2006-03-01


568
Amazon Simple Storage Service Guia do usuário
Gerenciando o ciclo de vida

Gerenciando seu ciclo de vida de armazenamento


Para gerenciar seus objetos de maneira que sejam armazenados de maneira econômica durante todo
o ciclo de vida, configure o ciclo de vida do Amazon S3. Uma configuração de ciclo de vida do S3 é um
conjunto de regras que define as ações aplicadas pelo Amazon S3 a um grupo de objetos. Existem dois
tipos de ações:

• Ações de transição: definem quando os objetos fazem a transição para outra Uso de classes de
armazenamento do Amazon S3 (p. 563). Por exemplo, você pode optar por fazer a transição de
objetos para a classe de armazenamento do S3 Standard – IA 30 dias após a criação deles ou arquivar
objetos para a classe de armazenamento do S3 Glacier um ano após a sua criação.

Há custos associados às solicitações de transição do ciclo de vida. Para obter informações sobre a
definição de preços, consulte Definição de preços do Amazon S3.
• Ações de expiração: definem quando os objetos expiram. O Amazon S3 exclui os objetos expirados em
seu nome.

Os custos de expiração do ciclo de vida dependem de quando você escolhe tornar objetos expirados.
Para obter mais informações, consulte Expirando objetos (p. 575).

Para obter mais informações sobre regras de ciclo de vida do S3, consulte Elementos de configuração do
ciclo de vida (p. 588).

Gerenciando o ciclo de vida do objeto


Defina regras de configuração de ciclo de vida do S3 para objetos com ciclo de vida bem definido. Por
exemplo:

• Se você fizer upload periódico de logs em um bucket, é possível que seu aplicativo precise deles por
uma semana ou um mês. Depois disso, você pode excluí-los.
• Alguns documentos são acessados frequentemente por um período limitado. Depois disso, eles serão
acessados com pouca frequência. Em algum ponto, você pode não precisar de acesso em tempo real a
esses objetos, mas sua organização ou as regulamentações podem exigir que você os arquive por um
período específico. Depois disso, é possível excluí-los.
• É possível fazer upload de alguns tipos de dados no Amazon S3 para fins de arquivamento. Por
exemplo, é possível arquivar mídias digitais, registros financeiros e de saúde, dados não processados de
sequência genômica, backups de banco de dados de longo prazo e dados que devem ser retidos para
conformidade regulamentar.

Com regras de configuração de ciclo de vida do S3, é possível solicitar que o Amazon S3 faça a transição
de objetos para classes de armazenamento menos caras, arquive-os ou exclua-os.

Criando uma configuração de ciclo de vida


Uma configuração do S3 Lifecycle é um arquivo XML que consiste em um conjunto de regras com ações
predefinidas que você deseja que o Amazon S3 execute em objetos durante sua vida útil.

Você também pode configurar o ciclo de vida usando o console do Amazon S3, a API REST, os SDKs da
AWS e a AWS CLI. Para obter mais informações, consulte Definir a configuração do ciclo de vida em um
bucket (p. 575).

O Amazon S3 fornece um conjunto de operações de API REST para o gerenciamento da configuração de


ciclo de vida em um bucket. O Amazon S3 armazena a configuração como um sub-recurso de ciclo de vida
que é anexado ao seu bucket. Para obter detalhes, consulte:

Versão da API 2006-03-01


569
Amazon Simple Storage Service Guia do usuário
Fazer a transição de objetos

Ciclo de vida de PUT Bucket

Ciclo de vida de GET Bucket

DELETE Bucket lifecycle

Para obter mais informações sobre como criar uma configuração de ciclo de vida, consulte os seguintes
tópicos:

Tópicos
• Transição de objetos usando o ciclo de vida do Amazon S3 (p. 570)
• Expirando objetos (p. 575)
• Definir a configuração do ciclo de vida em um bucket (p. 575)
• Ciclo de vida e outras configurações de bucket (p. 586)
• Elementos de configuração do ciclo de vida (p. 588)
• Exemplos de configuração de ciclo de vida (p. 594)

Transição de objetos usando o ciclo de vida do


Amazon S3
É possível adicionar regras a uma configuração de ciclo de vida do S3 para solicitar que o Amazon S3 faça
a transição de objetos para outra Uso de classes de armazenamento do Amazon S3 (p. 563) do Amazon
S3. Por exemplo:

• Quando você sabe que os objetos são acessados com pouca frequência, você pode fazer a transição
para a classe de armazenamento S3 Standard – IA.
• É possível arquivar objetos que não precisam de acesso em tempo real à classe de armazenamento S3
Glacier.

As seções a seguir descrevem transições com suporte, limitações relacionadas e a transição para a classe
de armazenamento S3 Glacier.

Transições com suporte e limitações relacionadas


Em uma configuração de ciclo de vida do S3, você pode definir regras para fazer a transição de objetos
de uma classe de armazenamento para outra a fim de economizar custos de armazenamento. Quando
desconhece os padrões de acesso dos objetos, ou os padrões de acesso mudam com o passar do
tempo, você faz a transição para os objetos para a classe de armazenamento S3 Intelligent-Tiering para
economia automática. Para obter informações sobre classes de armazenamento, consulte Uso de classes
de armazenamento do Amazon S3 (p. 563).

O Amazon S3 da suporte a um modelo de cachoeira para fazer a transição entre classes de


armazenamento, conforme mostrado no diagrama a seguir.

Versão da API 2006-03-01


570
Amazon Simple Storage Service Guia do usuário
Fazer a transição de objetos

Transições de ciclo de vida com suporte


O Amazon S3 oferece suporte às seguintes transições do ciclo de vida entre as classes de
armazenamento usando uma configuração do S3 Lifecycle.

Você pode fazer a transição do seguinte:

• A classe de armazenamento S3 Standard para qualquer outra classe de armazenamento.


• Qualquer classe de armazenamento para as classes de armazenamento S3 Glacier ou S3 Glacier Deep
Archive.
• A classe de armazenamento S3 Standard – IA para as classes de armazenamento S3 Intelligent-Tiering
ou S3 One Zone – IA.
• A classe de armazenamento S3 Intelligent-Tiering para a classe de armazenamento S3 One Zone – IA.
• A classe de armazenamento S3 Glacier para a classe de armazenamento S3 Glacier Deep Archive.

Transições de ciclo de vida sem suporte


O Amazon S3 não oferece suporte a nenhuma das seguintes transições do ciclo de vida.

Você não pode fazer a transição do seguinte:

• Nenhuma classe de armazenamento para a classe de armazenamento S3 Standard.


• Nenhuma classe de armazenamento para a classe de armazenamento Reduced Redundancy.
• A classe de armazenamento S3 Intelligent-Tiering para a classe de armazenamento S3 Standard – IA.
• A classe de armazenamento S3 One Zone – IA para as classes de armazenamento S3 Standard – IA ou
S3 Intelligent-Tiering.

Restrições
As transições da classe de armazenamento do ciclo de vida têm as seguintes restrições:

Versão da API 2006-03-01


571
Amazon Simple Storage Service Guia do usuário
Fazer a transição de objetos

Tamanho do objeto e transições de S3 Standard ou S3 Standard – IA para S3 Intelligent-Tiering, S3


Standard – IA ou S3 One Zone – IA

Quando você faz a transição de objetos das classes de armazenamento S3 Standard ou S3 Standard – IA
para S3 Intelligent-Tiering, S3 Standard – IA ou S3 One Zone – IA, as seguintes restrições de tamanho de
objeto se aplicam:

• Objetos maiores: para as transições a seguir, há um benefício de custo para a transição de objetos
maiores:
• Das classes de armazenamento S3 Standard ou S3 Standard – IA para S3 Intelligent-Tiering.
• Da classe de armazenamento S3 Standard para S3 Standard – IA ou S3 One Zone – IA.
• Objetos menores que 128 KB: para as transições a seguir, o Amazon S3 não faz transição de objetos
menores que 128 KB pois não tem uma boa relação custo-benefício:
• Das classes de armazenamento S3 Standard ou S3 Standard – IA para S3 Intelligent-Tiering.
• Da classe de armazenamento S3 Standard para S3 Standard – IA ou S3 One Zone – IA.

Dias mínimos para transição de S3 Standard ou S3 Standard – IA para S3 Standard – IA ou S3 One Zone –
IA

Antes de fazer a transição de objetos das classes de armazenamento S3 Standard ou S3 Standard –


IA para S3 Standard – IA ou S3 One Zone – IA, você deve armazená-los pelo menos 30 dias na classe
de armazenamento S3 Standard. Por exemplo, você não pode criar uma regra de ciclo de vida para
fazer a transição de objetos para a classe de armazenamento S3 Standard – IA um dia depois de criá-
los. O Amazon S3 não faz a transição de objetos nos primeiros 30 dias porque os objetos mais recentes
geralmente são acessados com mais frequência ou excluídos mais cedo do que o adequado para
armazenamento S3 Standard – IA ou S3 One Zone – IA.

Da mesma forma, se você estiver fazendo a transição de objetos não atuais (em buckets com versões),
poderá fazer a transição somente de objetos que não são atuais pelo menos 30 dias para armazenamento
S3 Standard – IA ou S3 One Zone – IA.

Cobrança mínima de armazenamento de 30 dias para S3 Intelligent-Tiering, S3 Standard – IA e S3 One


Zone – IA

As classes de armazenamento S3 Intelligent-Tiering, S3 Standard – IA e S3 One Zone – IA têm uma carga


mínima de armazenamento de 30 dias. Portanto, você não pode especificar uma única regra de ciclo de
vida para uma transição S3 Intelligent-Tiering, S3 Standard – IA ou S3 One Zone – IA e uma transição S3
Glacier ou S3 Glacier Deep Archive quando a transição S3 Glacier ou S3 Glacier Deep Archive ocorre
menos de 30 dias após a transição S3 Intelligent-Tiering, S3 Standard – IA, ou S3 One Zone – IA.

O mesmo mínimo de 30 dias se aplica quando você especifica uma transição do armazenamento S3
Standard – IA para o armazenamento S3 One Zone – IA ou S3 Intelligent-Tiering. É possível especificar
duas regras para realizar isso, mas é necessário pagar as cobranças mínimas de armazenamento. Para
obter mais informações sobre considerações de custo, consulte Definição de preço do Amazon S3.

Gerenciar o ciclo de vida completo de um objeto


Você pode combinar essas ações de ciclo de vida do S3 para gerenciar o ciclo de vida completo de um
objeto. Por exemplo, suponha que os objetos criados tenham um ciclo de vida bem definido. No início, os
objetos são acessados com frequência em um período de 30 dias. Depois disso, eles são acessados com
pouca frequência por 90 dias. Depois desse período, eles não são mais necessário. Portanto, é possível
optar por arquivá-los ou excluí-los.

Nesse cenário, você pode criar uma regra de ciclo de vida do S3 na qual especifica a ação de transição
inicial para armazenamento S3 Intelligent-Tiering, S3 Standard – IA ou S3 One Zone – IA, outra ação
de transição para o armazenamento S3 Glacier para arquivamento e uma ação de expiração. Ao mover

Versão da API 2006-03-01


572
Amazon Simple Storage Service Guia do usuário
Fazer a transição de objetos

objetos de uma classe de armazenamento para outra, você economiza no custo de armazenamento. Para
obter mais informações sobre considerações de custo, consulte Definição de preço do Amazon S3.

Transição para as classes de armazenamento S3 Glacier e S3


Glacier Deep Archive (arquivamento de objetos)
Usando a configuração do ciclo de vida do S3, você pode fazer a transição de objetos para as classes
de armazenamento S3 Glacier ou S3 Glacier Deep Archive para arquivamento. Quando você seleciona a
classe de armazenamento S3 Glacier ou S3 Glacier Deep Archive, os objetos permanecem no Amazon
S3. Não será possível acessá-los diretamente por meio do serviço separado do Amazon S3 Glacier. Para
obter mais informações gerais sobre o S3 Glacier, consulte O que é o Amazon S3 Glacier no Guia do
desenvolvedor do Amazon S3 Glacier.

Para que você arquive objetos, reveja as seguintes seções para considerações relevantes.

Considerações gerais
Veja a seguir as considerações gerais que você deve fazer antes de arquivar objetos:

• Os objetos criptografados permanecem criptografados durante todo o processo de transição da classe


de armazenamento.
• Os objetos armazenados nas classes de armazenamento S3 Glacier ou S3 Glacier Deep Archive não
estão disponíveis em tempo real.

Os objetos arquivados são objetos do Amazon S3, mas para acessar um objeto arquivado, primeiro você
deve restaurar uma cópia temporária dele. A cópia restaurada do objeto fica disponível somente pelo
tempo que você especifica na solicitação de restauração. Depois disso, o Amazon S3 exclui a cópia
temporária e o objeto permanece arquivado no Amazon S3 Glacier.

Você pode restaurar um objeto usando o console do Amazon S3 ou, programaticamente, usando
bibliotecas wrapper dos SDKs da AWS ou a API REST do Amazon S3 em seu código. Para obter mais
informações, consulte Restaurar um objeto arquivado (p. 547).
• Os objetos armazenados na classe de armazenamento S3 Glacier só podem ser transferidos para a
classe de armazenamento S3 Glacier Deep Archive.

Você pode usar uma regra de configuração do ciclo de vida do S3 para converter a classe de
armazenamento de um objeto do S3 Glacier para a classe de armazenamento S3 Glacier Deep
Archive somente. Se você quiser alterar a classe de armazenamento de um objeto armazenado no S3
Glacier para uma classe de armazenamento diferente do S3 Glacier Deep Archive, use a operação de
restauração para fazer uma cópia temporária do objeto primeiro. Depois, use a operação de cópia para
substituir o objeto especificando S3 Standard, S3 Intelligent-Tiering, S3 Standard – IA, S3 One Zone – IA
ou Reduced Redundancy como a classe de armazenamento.
• A transição de objetos para a classe de armazenamento S3 Glacier Deep Archive é apenas
unidirecional.

Não é possível usar uma regra de configuração do ciclo de vida do S3 para converter a classe
de armazenamento de um objeto do S3 Glacier Deep Archive para qualquer outra classe de
armazenamento. Se você quiser mudar a classe de armazenamento de um objeto arquivado em
outra classe de armazenamento, deverá usar a operação de restauração para fazer primeiro uma
cópia temporária do objeto. Depois, use a operação de cópia para substituir o objeto especificando
S3 Standard, S3 Intelligent-Tiering, S3 Standard – IA, S3 One Zone – IA, S3 Glacier ou Reduced
Redundancy como a classe de armazenamento.
• Os objetos armazenados nas classes de armazenamento S3 Glacier e S3 Glacier Deep Archive são
visíveis e disponíveis somente por meio do Amazon S3. Eles não estão disponíveis por meio do serviço
separado do Amazon S3 Glacier.
Versão da API 2006-03-01
573
Amazon Simple Storage Service Guia do usuário
Fazer a transição de objetos

Esses são objetos do Amazon S3 e você só pode acessá-los usando o console do Amazon S3 ou a
API do Amazon S3. Você não pode acessar os objetos arquivados por meio do console separado do
Amazon S3 Glacier ou da API do Amazon S3 Glacier.

Considerações sobre custos


Se você estiver planejando arquivar dados acessados com pouca frequência por um período de meses ou
anos, as classes de armazenamento S3 Glacier e S3 Glacier Deep Archive podem reduzir seus custos de
armazenamento. No entanto, para garantir que a classe de armazenamento S3 Glacier ou S3 Glacier Deep
Archive seja apropriada para você, considere o seguinte:

• Cobranças extras de armazenamento: quando você faz a transição de objetos para a classe de
armazenamento S3 Glacier ou S3 Glacier Deep Archive, uma quantidade fixa de armazenamento é
adicionada a cada objeto para acomodar metadados para gerenciar o objeto.
• Para cada objeto arquivado no S3 Glacier ou S3 Glacier Deep Archive, o Amazon S3 usa 8 KB
de armazenamento para o nome do objeto e outros metadados. O Amazon S3 armazena esses
metadados de modo que você possa obter uma lista em tempo real de seus objetos arquivados
usando a API do Amazon S3. Para obter mais informações, consulte GET bucket (listar objetos). Você
é cobrado pelas taxas de Amazon S3 Standard nesse armazenamento adicional.
• Para cada objeto arquivado no S3 Glacier ou no S3 Glacier Deep Archive, o Amazon S3 adiciona
32 KB de armazenamento para indexação e metadados relacionados. Esses dados extras são
necessários para identificar e recuperar seu objeto. As taxas do S3 Glacier ou S3 Glacier Deep
Archive são cobradas por esse armazenamento adicional.

Se você estiver arquivando objetos pequenos, considere esses encargos de armazenamento. Considere
também a possibilidade de agregar vários objetos pequenos em um número menor de objetos grandes
para reduzir os gastos adicionais.
• Número de dias que você pretende manter objetos arquivados: S3 Glacier e S3 Glacier Deep Archive
são soluções de arquivamento de longo prazo. O período mínimo de duração de armazenamento é
de 90 dias para a classe de armazenamento S3 Glacier e 180 dias para o S3 Glacier Deep Archive.
A exclusão de dados arquivados no Amazon S3 Glacier será gratuita se os objetos que você excluir
estiverem arquivados por mais do que o período mínimo de duração do armazenamento. Se você excluir
ou substituir um objeto arquivado dentro do período mínimo de duração do arquivamento, o Amazon S3
cobrará uma taxa pro rata pela exclusão antecipada. Para obter informações sobre a taxa de exclusão
antecipada, consulte a pergunta "Como sou cobrado pela exclusão de objetos do Amazon S3 Glacier
com menos de 90 dias?" nas Perguntas frequentes sobre o Amazon S3.
• Cobranças de solicitações de transição do S3 Glacier e S3 Glacier Deep Archive: cada objeto que
você transitar para a classe de armazenamento S3 Glacier ou S3 Glacier Deep Archive constitui
uma solicitação de transição. Há um custo para cada solicitação desse tipo. Se você pretende fazer
a transição de um grande número de objetos, considere os custos de solicitação. Se você estiver
arquivando objetos pequenos, considere a possibilidade de agregar vários objetos pequenos em um
número menor de objetos grandes para reduzir o custo da solicitação de transição.
• Cobranças de restauração de dados do S3 Glacier e S3 Glacier Deep Archive: o S3 Glacier e o S3
Glacier Deep Archive foram projetados para arquivamento de dados a longo prazo que você acessa com
pouca frequência. Para obter informações sobre cobranças de restauração de dados, consulte “Quanto
custa recuperar dados do Amazon S3 Glacier?” nas Perguntas frequentes sobre o Amazon S3. Para
obter informações sobre como restaurar dados do Amazon S3 Glacier, consulte Restaurar um objeto
arquivado (p. 547).

Quando você arquiva objetos no Amazon S3 Glacier usando o gerenciamento do ciclo de vida do S3, o
Amazon S3 faz a transição desses objetos de forma assíncrona. Pode haver um atraso entre a data de
transição na regra de configuração de ciclo de vida e a data de transição física. Você é cobrado pelos
preços do Amazon S3 Glacier com base na data de transição especificada na regra. Para obter mais
informações, consulte a seção Amazon S3 Glacier das Perguntas frequentes sobre o Amazon S3.

Versão da API 2006-03-01


574
Amazon Simple Storage Service Guia do usuário
Expirando objetos

A página de detalhes de produto do Amazon S3 fornece informações sobre preços e exemplos de cálculo
para arquivamento de objetos no Amazon S3. Para obter mais informações, consulte os tópicos a seguir:

• "Como minha cobrança de armazenamento é calculada para objetos do Amazon S3 arquivados no


Amazon S3 Glacier?" nas Perguntas frequentes sobre o Amazon S3.
• "Como sou cobrado pela exclusão de objetos do Amazon S3 Glacier com menos de 90 dias?" nas
Perguntas frequentes sobre o Amazon S3.
• “Quanto custa recuperar dados do Amazon S3 Glacier?” nas Perguntas frequentes sobre o Amazon S3.
• Definição de preço do Amazon S3 para custos de armazenamento das diferentes classes de
armazenamento.

Restaurar objetos arquivados


Os objetos arquivados não estão acessíveis em tempo real. Primeiro inicie uma solicitação de restauração
e, em seguida, aguarde até que uma cópia temporária do objeto esteja disponível pelo tempo que você
especificar na solicitação. Depois de receber uma cópia temporária do objeto restaurado, a classe de
armazenamento do objeto continuará sendo S3 Glacier ou S3 Glacier Deep Archive. (Uma solicitação de
operação HEAD Object ou ou GET Object da API retornará o S3 Glacier ou S3 Glacier Deep Archive como
a classe de armazenamento.)
Note

Quando restaura um arquivo, você está pagando pelo arquivo (taxa do S3 Glacier ou S3 Glacier
Deep Archive) e por uma cópia que você restaurou temporariamente (taxa de armazenamento
de redundância reduzida). Para obter mais informações sobre definição de preços, consulte
Definição de preços do Amazon S3.

Você pode restaurar uma cópia do objeto programaticamente ou usando o console do Amazon S3. O
Amazon S3 só processa uma solicitação de restauração por vez por objeto. Para obter mais informações,
consulte Restaurar um objeto arquivado (p. 547).

Expirando objetos
Quando um objeto atinge o fim de seu ciclo de vida, com base em sua política de ciclo de vida, o Amazon
S3 o coloca em uma fila para remoção e o remove assincronamente. Pode haver um atraso entre a data
de expiração e a data em que o Amazon S3 remove um objeto. Você não será cobrado pelo tempo de
armazenamento associado a um objeto que expirou.

Para descobrir quando um objeto está programado para expirar, use as operações de API HEAD Object
ou GET Object. Essas operações de API retornam os cabeçalhos de resposta que fornecem essas
informações.

Se você criar uma regra de expiração do ciclo de vida do S3 que fará com que os objetos que estiveram no
armazenamento S3 Intelligent-Tiering, S3 Standard – IA ou S3 One Zone – IA por menos de 30 dias para
expirar, você será cobrado por 30 dias. Se criar uma regra de expiração de ciclo de vida que resulte na
expiração de objetos armazenados na classe S3 Glacier por pelo menos 90 dias, você será cobrado por
90 dias. Se você criar uma regra de expiração do ciclo de vida que faça com que os objetos que estiveram
no armazenamento do S3 Glacier Deep Archive por menos de 180 dias expirem, será cobrado por 180
dias. Para obter mais informações, consulte a Definição de preço do Amazon S3 e Usar o console do
S3 (p. 576).

Definir a configuração do ciclo de vida em um bucket


Esta seção explica como você pode definir uma configuração de ciclo de vida do S3 em um bucket usando
AWS SDKs, a AWS CLI ou o console do S3. Para obter informações sobre a configuração do ciclo de vida
do S3, consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Versão da API 2006-03-01


575
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

É possível usar regras de ciclo de vida para definir ações que você deseja que o Amazon S3 realize
durante o ciclo de vida de um objeto (por exemplo, fazer a transição de objetos para outra classe de
armazenamento, arquivá-los, ou excluí-los após um período especificado).

Antes de definir uma configuração de ciclo de vida, observe o seguinte:

Atraso de propagação

Quando você adiciona uma configuração do ciclo de vida do S3 a um bucket, costuma haver algum atraso
antes que uma configuração nova ou atualizada do ciclo de vida seja totalmente propagada para todos
os sistemas do Amazon S3. Considere um atraso de alguns minutos antes que a configuração entre
totalmente em vigor. Esse atraso também pode ocorrer quando você exclui uma configuração do ciclo de
vida do S3.

Desabilitando ou excluindo regras de ciclo de vida

Quando você desabilita ou exclui regras do ciclo de vida, depois de um pequeno atraso o Amazon S3 para
de agendar a exclusão ou transição de novos objetos. Todos os objetos que já foram agendados não são
agendados e não são excluídos ou transicionados.

Objetos existentes e novos

Quando você adiciona uma configuração do ciclo de vida a um bucket, as regras de configuração se
aplicam aos objetos existentes e aos objetos que serão adicionados no futuro. Por exemplo, se você
adicionar uma regra de configuração do ciclo de vida hoje com uma ação de expiração que faz com que
os objetos com um prefixo específico expirem 30 dias após sua criação, o Amazon S3 organizará para
exclusão todos os objetos existentes com mais de 30 dias.

Alterações no faturamento

Pode haver um atraso entre o momento em que as regras de configuração do ciclo de vida são satisfeitas
e o momento em que a ação, ativada pela satisfação da regra, é tomada. No entanto, as alterações na
cobrança acontecem assim que a regra de configuração do ciclo de vida é satisfeita, mesmo que a ação
ainda não tenha sido tomada.

Por exemplo, você não será cobrado pelo armazenamento após o tempo de expiração do objeto, mesmo
que o objeto não seja excluído imediatamente. Outro exemplo é a cobrança das taxas de armazenamento
do Amazon S3 Glacier assim que o tempo de transição do objeto termina, mesmo que não seja feita a
transição do objeto para a classe de armazenamento S3 Glacier imediatamente. As transições do ciclo de
vida para a classe de armazenamento S3 Intelligent-Tiering são a exceção. As alterações no faturamento
não acontecem até que o objeto tenha transitado para a classe de armazenamento S3 Intelligent-Tiering.

Usar o console do S3
É possível definir uma regra de ciclo de vida para todos os objetos ou para um subconjunto de objetos no
bucket usando um prefixo compartilhado (nomes de objetos que começam com uma string comum) ou
uma tag. Usando uma regra de ciclo de vida, é possível definir ações específicas para versões atuais e
anteriores do objeto. Para obter mais informações, consulte:

• Gerenciando seu ciclo de vida de armazenamento (p. 569)


• Usando o controle de versão em buckets do S3 (p. 516)

Como criar uma regra de ciclo de vida

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja criar uma regra de ciclo de vida.

Versão da API 2006-03-01


576
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

3. Escolha a guia Management (Gerenciamento) e escolha Create lifecycle rule (Criar regra de ciclo de
vida).
4. Em Lifecycle rule name (Nome da regra do ciclo de vida), insira um nome para sua regra.

O nome deve ser exclusivo dentro do bucket.


5. Escolha o escopo da regra do ciclo de vida:

• Para aplicar essa regra de ciclo de vida a todos os objetos com um prefixo ou uma tag específica,
escolha Limitar o escopo a prefixos ou tags específicos.
• Para limitar o escopo por prefixo, em Prefix (Prefixo), insira o prefixo.
• Para limitar o escopo por tag, escolha Add tag (Adicionar tag) e insira a chave e o valor da tag.

Para obter mais informações sobre prefixos de nome de objeto, consulte Criar nomes de chave
de objeto (p. 64). Para obter mais informações sobre tags de objetos, consulte Categorizando seu
armazenamento usando tags (p. 683).
• Para aplicar essa regra de ciclo de vida a todos os objetos no bucket, escolha This rule applies to
all objects in the bucket e escolha I acknowledge that this rule applies to all objects in the bucket (Eu
reconheço que essa regra se aplica a todos os objetos no bucket).
6. Em Lifecycle rule actions (Ações de regra do ciclo de vida), escolha as ações que você deseja que sua
regra de ciclo de vida execute:

• Transição de versões atuais de objetos entre classes de armazenamento


• Transição de versões anteriores de objetos entre classes de armazenamento
• Expirar as versões atuais dos objetos
• Excluir permanentemente versões anteriores de objetos
• Excluir marcadores de exclusão expirados ou multipart uploads incompletos

Dependendo das ações que você escolher, diferentes opções serão exibidas.
7. Para fazer a transição de versões atuais de objetos entre classes de armazenamento, em Transition
current versions of objects between storage classes (Transição de versões atuais de objetos entre
classes de armazenamento):

a. Em Storage class transitions (Transições de classe de armazenamento), escolha a classe de


armazenamento para a qual fazer a transição:

• Standard-IA
• Intelligent-Tiering
• One Zone-IA
• Glacier
• Glacier Deep Archive
b. Em Days after object creation (Dias após a criação do objeto), insira o número de dias após a
criação para fazer a transição do objeto.

Para obter mais informações sobre classes de armazenamento, consulte Uso de classes de
armazenamento do Amazon S3 (p. 563). É possível definir transições para a versão atual ou as
versões anteriores do objeto, ou para ambas. O versionamento permite que você mantenha várias
versões de um objeto em um bucket. Para obter mais informações sobre versionamento, consulte
Usar o console do S3 (p. 521).
Important

Quando você seleciona a Versão


classe de armazenamento Glacier ou Glacier Deep Archive, os
da API 2006-03-01
objetos permanecem no Amazon S3.577Não será possível acessá-los diretamente por meio do
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

serviço separado do Amazon S3 Glacier. Para obter mais informações, consulte Transição de
objetos usando o ciclo de vida do Amazon S3 (p. 570).
8. Para fazer a transição de versões não atuais de objetos entre classes de armazenamento, em
Transition non-current versions of objects between storage classes (Transição de versões não atuais
de objetos entre classes de armazenamento):

a. Em Storage class transitions (Transições de classe de armazenamento), escolha a classe de


armazenamento para a qual fazer a transição:

• Standard-IA
• Intelligent-Tiering
• One Zone-IA
• Glacier
• Glacier Deep Archive
b. Em Days after object becomes non-current (Dias após o objeto se tornar não atual), insira o
número de dias após a criação para fazer a transição do objeto.
9. Para expirar as versões atuais dos objetos, em Expire previous versions of objects (Expirar versões
anteriores de objetos), em Number of days after object creation (Número de dias após a criação do
objeto), insira o número de dias.
Important

Em um bucket sem versionamento, a ação de expiração faz com que o Amazon S3 remova
permanente o objeto. Para obter mais informações sobre ações de ciclo de vida, consulte
Elementos para descrever ações de ciclo de vida (p. 591).
10. Para excluir permanentemente versões anteriores de objetos, em Permanently delete previous
versions of objects (Excluir permanentemente versões anteriores de objetos), em Number of days after
objects become previous versions (Número de dias após os objetos se tornarem versões anteriores),
insira o número de dias.
11. Em Delete expired delete markers or incomplete multipart uploads (Excluir marcadores de exclusão
expirados ou multipart uploads incompletos), escolha Delete expired object delete markers (Excluir
marcadores de exclusão de objetos expirados) e Delete incomplete multipart uploads (Excluir multipart
uploads incompletos). Depois, insira o número de dias após o início do multipart upload que você
deseja encerrar e limpar multipart uploads incompletos.

Para obter mais informações sobre multipart uploads, consulte Carregar e copiar objetos usando
multipart upload (p. 80).
12. Selecione Criar regra.

Se a regra não contiver erros, o Amazon S3 a habilitará e você poderá vê-la na guia Management
(Gerenciamento) em Lifecycle rules (Regras de ciclo de vida).

Para obter informações sobre modelos e exemplos do CloudFormation, consulte Trabalhando com
modelos do AWS CloudFormation e AWS::S3::Bucket no Guia do usuário do AWS CloudFormation.

Usar a CLI da AWS


Use os comandos da CLI da AWS a seguir para gerenciar as configurações do ciclo de vida do S3:

• put-bucket-lifecycle-configuration
• get-bucket-lifecycle-configuration
• delete-bucket-lifecycle

Versão da API 2006-03-01


578
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

Para obter instruções de configuração da AWS CLI, consulte Desenvolvimento com o Amazon S3 usando
a AWS CLI (p. 1033).

A configuração do ciclo de vida do Amazon S3 é um arquivo XML. Mas ao usar a CLI da AWS, você
não pode especificar o XML. Você deve especificar o JSON em vez disso. Veja a seguir exemplos de
configurações do ciclo de vida em XML e o JSON equivalente que pode ser especificado em um comando
da CLI da AWS.

Considere o seguinte exemplo de configuração do ciclo de vida do S3.

Example Exemplo 1

JSON

{
"Rules": [
{
"Filter": {
"Prefix": "documents/"
},
"Status": "Enabled",
"Transitions": [
{
"Days": 365,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 3650
},
"ID": "ExampleRule"
}
]
}

XML

<LifecycleConfiguration>
<Rule>
<ID>ExampleRule</ID>
<Filter>
<Prefix>documents/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>365</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
<Expiration>
<Days>3650</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>

Example Exemplo 2

JSON

{
"Rules": [
{

Versão da API 2006-03-01


579
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

"ID": "id-1",
"Filter": {
"And": {
"Prefix": "myprefix",
"Tags": [
{
"Value": "mytagvalue1",
"Key": "mytagkey1"
},
{
"Value": "mytagvalue2",
"Key": "mytagkey2"
}
]
}
},
"Status": "Enabled",
"Expiration": {
"Days": 1
}
}
]
}

XML

<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ID>id-1</ID>
<Expiration>
<Days>1</Days>
</Expiration>
<Filter>
<And>
<Prefix>myprefix</Prefix>
<Tag>
<Key>mytagkey1</Key>
<Value>mytagvalue1</Value>
</Tag>
<Tag>
<Key>mytagkey2</Key>
<Value>mytagvalue2</Value>
</Tag>
</And>
</Filter>
<Status>Enabled</Status>
</Rule>
</LifecycleConfiguration>

Teste o comando put-bucket-lifecycle-configuration da seguinte forma.

Como testar a configuração

1. Salve a configuração do ciclo de vida JSON em um arquivo (lifecycle.json).


2. Execute o comando da CLI da AWS a seguir para definir a configuração do ciclo de vida no bucket.

$ aws s3api put-bucket-lifecycle-configuration  \


--bucket bucketname  \
--lifecycle-configuration file://lifecycle.json

3. Para verificar, recupere a configuração do ciclo de vida do S3 usando o comando get-bucket-


lifecycle-configuration da CLI da AWS, da seguinte forma:

Versão da API 2006-03-01


580
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

$ aws s3api get-bucket-lifecycle-configuration  \


--bucket bucketname

4. Para excluir a configuração do ciclo de vida do S3 use o comando delete-bucket-lifecycle da


CLI da AWS, da seguinte forma:

aws s3api delete-bucket-lifecycle \


--bucket bucketname

Uso dos AWS SDKs


Java

Você pode usar o AWS SDK para Java para gerenciar a configuração do ciclo de vida do S3 de um
bucket. Para obter mais informações sobre o gerenciamento da configuração do ciclo de vida do S3,
consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).
Note

Quando você adiciona uma configuração do ciclo de vida do S3 em um bucket, o Amazon


S3 substitui a configuração do ciclo de vida atual do bucket, se houver. Para atualizar
uma configuração, recupere a configuração, faça as alterações desejadas e adicione a
configuração revisada ao bucket.

O exemplo a seguir mostra como usar o AWS SDK para Java para adicionar, atualizar e excluir a
configuração do ciclo de vida de um bucket. O exemplo faz o seguinte:

• Adiciona a configuração do ciclo de vida a um bucket.


• Recupera a configuração do ciclo de vida e a atualiza adicionando outra regra.
• Adiciona a configuração do ciclo de vida modificada ao bucket. O Amazon S3 substitui a
configuração existente.
• Recupera a configuração novamente e verifica se ela tem o número certo de regras pela impressão
do número de regras.
• Exclui a configuração do ciclo de vida e verifica se ela foi excluída ao tentar recuperá-la novamente.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.BucketLifecycleConfiguration;
import com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Transition;
import com.amazonaws.services.s3.model.StorageClass;
import com.amazonaws.services.s3.model.Tag;
import com.amazonaws.services.s3.model.lifecycle.LifecycleAndOperator;
import com.amazonaws.services.s3.model.lifecycle.LifecycleFilter;
import com.amazonaws.services.s3.model.lifecycle.LifecyclePrefixPredicate;
import com.amazonaws.services.s3.model.lifecycle.LifecycleTagPredicate;

import java.io.IOException;
import java.util.Arrays;

Versão da API 2006-03-01


581
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

public class LifecycleConfiguration {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

// Create a rule to archive objects with the "glacierobjects/" prefix to


Glacier immediately.
BucketLifecycleConfiguration.Rule rule1 = new
BucketLifecycleConfiguration.Rule()
.withId("Archive immediately rule")
.withFilter(new LifecycleFilter(new
LifecyclePrefixPredicate("glacierobjects/")))
.addTransition(new
Transition().withDays(0).withStorageClass(StorageClass.Glacier))
.withStatus(BucketLifecycleConfiguration.ENABLED);

// Create a rule to transition objects to the Standard-Infrequent Access


storage class
// after 30 days, then to Glacier after 365 days. Amazon S3 will delete the
objects after 3650 days.
// The rule applies to all objects with the tag "archive" set to "true".
BucketLifecycleConfiguration.Rule rule2 = new
BucketLifecycleConfiguration.Rule()
.withId("Archive and then delete rule")
.withFilter(new LifecycleFilter(new LifecycleTagPredicate(new
Tag("archive", "true"))))
.addTransition(new
Transition().withDays(30).withStorageClass(StorageClass.StandardInfrequentAccess))
.addTransition(new
Transition().withDays(365).withStorageClass(StorageClass.Glacier))
.withExpirationInDays(3650)
.withStatus(BucketLifecycleConfiguration.ENABLED);

// Add the rules to a new BucketLifecycleConfiguration.


BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration()
.withRules(Arrays.asList(rule1, rule2));

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Save the configuration.


s3Client.setBucketLifecycleConfiguration(bucketName, configuration);

// Retrieve the configuration.


configuration = s3Client.getBucketLifecycleConfiguration(bucketName);

// Add a new rule with both a prefix predicate and a tag predicate.
configuration.getRules().add(new
BucketLifecycleConfiguration.Rule().withId("NewRule")
.withFilter(new LifecycleFilter(new LifecycleAndOperator(
Arrays.asList(new
LifecyclePrefixPredicate("YearlyDocuments/"),
new LifecycleTagPredicate(new Tag("expire_after",
"ten_years"))))))
.withExpirationInDays(3650)
.withStatus(BucketLifecycleConfiguration.ENABLED));

// Save the configuration.


s3Client.setBucketLifecycleConfiguration(bucketName, configuration);

// Retrieve the configuration.

Versão da API 2006-03-01


582
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

configuration = s3Client.getBucketLifecycleConfiguration(bucketName);

// Verify that the configuration now has three rules.


configuration = s3Client.getBucketLifecycleConfiguration(bucketName);
System.out.println("Expected # of rules = 3; found: " +
configuration.getRules().size());

// Delete the configuration.


s3Client.deleteBucketLifecycleConfiguration(bucketName);

// Verify that the configuration has been deleted by attempting to retrieve


it.
configuration = s3Client.getBucketLifecycleConfiguration(bucketName);
String s = (configuration == null) ? "No configuration found." :
"Configuration found.";
System.out.println(s);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Você pode usar o AWS SDK para .NET para gerenciar a configuração do ciclo de vida do S3 em um
bucket. Para obter mais informações sobre o gerenciamento da configuração do ciclo de vida, consulte
Gerenciando seu ciclo de vida de armazenamento (p. 569).
Note

Quando você adiciona uma configuração do ciclo de vida, o Amazon S3 substitui a


configuração existente no bucket especificado. Para atualizar uma configuração, recupere a
configuração do ciclo de vida, faça as alterações e, depois, adicione a configuração revisada
ao bucket.

O exemplo a seguir mostra como usar o AWS SDK para .NET para adicionar, atualizar e excluir uma
configuração do ciclo de vida de um bucket. O exemplo de código faz o seguinte:

• Adiciona a configuração do ciclo de vida a um bucket.


• Recupera a configuração do ciclo de vida e a atualiza adicionando outra regra.
• Adiciona a configuração do ciclo de vida modificada ao bucket. O Amazon S3 substitui a
configuração do ciclo de vida existente.
• Recupera a configuração novamente e a verifica imprimindo o número de regras na configuração.
• Exclui a configuração do ciclo de vida e verifica a exclusão

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;

Versão da API 2006-03-01


583
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class LifecycleTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;
public static void Main()
{
client = new AmazonS3Client(bucketRegion);
AddUpdateDeleteLifecycleConfigAsync().Wait();
}

private static async Task AddUpdateDeleteLifecycleConfigAsync()


{
try
{
var lifeCycleConfiguration = new LifecycleConfiguration()
{
Rules = new List<LifecycleRule>
{
new LifecycleRule
{
Id = "Archive immediately rule",
Filter = new LifecycleFilter()
{
LifecycleFilterPredicate = new
LifecyclePrefixPredicate()
{
Prefix = "glacierobjects/"
}
},
Status = LifecycleRuleStatus.Enabled,
Transitions = new List<LifecycleTransition>
{
new LifecycleTransition
{
Days = 0,
StorageClass = S3StorageClass.Glacier
}
},
},
new LifecycleRule
{
Id = "Archive and then delete rule",
Filter = new LifecycleFilter()
{
LifecycleFilterPredicate = new
LifecyclePrefixPredicate()
{
Prefix = "projectdocs/"
}
},
Status = LifecycleRuleStatus.Enabled,
Transitions = new List<LifecycleTransition>
{
new LifecycleTransition
{
Days = 30,
StorageClass =
S3StorageClass.StandardInfrequentAccess
},

Versão da API 2006-03-01


584
Amazon Simple Storage Service Guia do usuário
Definir a configuração do ciclo de vida

new LifecycleTransition
{
Days = 365,
StorageClass = S3StorageClass.Glacier
}
},
Expiration = new LifecycleRuleExpiration()
{
Days = 3650
}
}
}
};

// Add the configuration to the bucket.


await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

// Retrieve an existing configuration.


lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

// Add a new rule.


lifeCycleConfiguration.Rules.Add(new LifecycleRule
{
Id = "NewRule",
Filter = new LifecycleFilter()
{
LifecycleFilterPredicate = new LifecyclePrefixPredicate()
{
Prefix = "YearlyDocuments/"
}
},
Expiration = new LifecycleRuleExpiration()
{
Days = 3650
}
});

// Add the configuration to the bucket.


await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

// Verify that there are now three rules.


lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);
Console.WriteLine("Expected # of rulest=3; found:{0}",
lifeCycleConfiguration.Rules.Count);

// Delete the configuration.


await RemoveLifecycleConfigAsync(client);

// Retrieve a nonexistent configuration.


lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered ***. Message:'{0}' when writing an
object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client,


LifecycleConfiguration configuration)

Versão da API 2006-03-01


585
Amazon Simple Storage Service Guia do usuário
Usando outras configurações de bucket

PutLifecycleConfigurationRequest request = new


PutLifecycleConfigurationRequest
{
BucketName = bucketName,
Configuration = configuration
};
var response = await client.PutLifecycleConfigurationAsync(request);
}

static async Task<LifecycleConfiguration>


RetrieveLifecycleConfigAsync(IAmazonS3 client)
{
GetLifecycleConfigurationRequest request = new
GetLifecycleConfigurationRequest
{
BucketName = bucketName
};
var response = await client.GetLifecycleConfigurationAsync(request);
var configuration = response.Configuration;
return configuration;
}

static async Task RemoveLifecycleConfigAsync(IAmazonS3 client)


{
DeleteLifecycleConfigurationRequest request = new
DeleteLifecycleConfigurationRequest
{
BucketName = bucketName
};
await client.DeleteLifecycleConfigurationAsync(request);
}
}
}

Ruby

Você pode usar o AWS SDK para Ruby para gerenciar a configuração do ciclo de vida do S3 em um
bucket usando a classe AWS#S3#BucketLifecycleConfiguration. Para obter mais informações sobre
como usar o AWS SDK para Ruby com o Amazon S3, consulte Usar o AWS SDK para Ruby versão
3 (p. 1045). Para obter mais informações sobre o gerenciamento da configuração do ciclo de vida,
consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Uso dos REST API


As seções a seguir na Referência da API do Amazon Simple Storage Service descrevem a API REST
relacionada à configuração do ciclo de vida do S3.

• Ciclo de vida de PUT Bucket


• Ciclo de vida de GET Bucket
• DELETE Bucket lifecycle

Ciclo de vida e outras configurações de bucket


Além de configurações de ciclo de vida do S3, você pode associar outras configurações a seu bucket.
Esta seção explica como a configuração de ciclo de vida do S3 está relacionada a outras configurações de
bucket.

Versão da API 2006-03-01


586
Amazon Simple Storage Service Guia do usuário
Usando outras configurações de bucket

Ciclo de vida e versionamento


Você pode adicionar configurações de ciclo de vida do S3 a buckets com e sem versionamento. Para obter
mais informações, consulte Usando o controle de versão em buckets do S3 (p. 516).

Um bucket com versionamento habilitado mantém uma versão atual do objeto e versões desatualizadas
do objeto (se disponíveis). Você pode definir regras separadas de ciclo de vida para versões atuais e não
atuais do objeto.

Para obter mais informações, consulte Elementos de configuração do ciclo de vida (p. 588).

Configuração do ciclo de vida em buckets com MFA habilitado


A configuração do ciclo de vida em buckets habilitados para autenticação multifator (MFA) não é
suportada.

Ciclo de vida e registro em log


As ações de ciclo de vida do Amazon S3 não são capturadas pelo log no nível do objeto do AWS
CloudTrail. O CloudTrail captura solicitações de API feitas para endpoints externos do Amazon S3,
enquanto as ações de ciclo de vida do S3 são executadas usando endpoints internos do Amazon S3. Os
logs de acesso ao servidor do Amazon S3 podem ser habilitados em um bucket do S3 para capturar ações
relacionadas ao ciclo de vida do S3, como transição de objetos para outra classe de armazenamento e
expiração de objeto, resultando em exclusão permanente ou exclusão lógica. Para obter mais informações,
consulte the section called “Registrando acesso ao servidor” (p. 833).

Se o registro em logs estiver ativado em seu bucket, os logs de acesso do servidor do Amazon S3
relatarão os resultados das seguintes operações.

Log de operação Descrição

S3.EXPIRE.OBJECT O Amazon S3 exclui permanentemente o objeto


devido à ação de expiração de ciclo de vida.

S3.CREATE.DELETEMARKER O Amazon S3 exclui logicamente a versão atual


e adiciona o marcador de exclusão em um bucket
com habilitação para versionamento.

S3.TRANSITION_SIA.OBJECT O Amazon S3 faz a transição do objeto para a


classe de armazenamento S3 Standard – IA.

S3.TRANSITION_ZIA.OBJECT O Amazon S3 faz a transição do objeto para a


classe de armazenamento S3 One Zone – IA.

S3.TRANSITION_INT.OBJECT O Amazon S3 faz a transição do objeto para a


classe de armazenamento Intelligent-Tiering.

S3.TRANSITION.OBJECT O Amazon S3 inicia a transição do objeto para a


classe de armazenamento S3 Glacier.

S3.TRANSITION_GDA.OBJECT O Amazon S3 inicia a transição do objeto para


a classe de armazenamento S3 Glacier Deep
Archive.

S3.DELETE.UPLOAD O Amazon S3 aborta o multipart upload


incompleto.

Versão da API 2006-03-01


587
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

Note

Os registros em log de acesso ao servidor do Amazon S3 geralmente são entregues com os


melhores esforços, não podendo ser usados para uma contabilização completa de todas as
solicitações do Amazon S3.

Mais informações
• Elementos de configuração do ciclo de vida (p. 588)
• Transição para as classes de armazenamento S3 Glacier e S3 Glacier Deep Archive (arquivamento de
objetos) (p. 573)
• Definir a configuração do ciclo de vida em um bucket (p. 575)

Elementos de configuração do ciclo de vida


Tópicos
• Elemento ID (p. 588)
• Elemento Status (p. 589)
• Elemento Filter (p. 589)
• Elementos para descrever ações de ciclo de vida (p. 591)

Especifique uma configuração de ciclo de vida do S3 como XML, consistindo em uma ou mais regras de
ciclo de vida.

<LifecycleConfiguration>
<Rule>
...
</Rule>
<Rule>
...
</Rule>
</LifecycleConfiguration>

Cada regra consiste no seguinte:

• Metadados de regra que incluem um ID de regra e o status que indica se a regra está ativada ou
desativada. Se uma regra estiver desativada, o Amazon S3 não executará as ações especificadas nela.
• Filtro que identifica os objetos aos quais a regra se aplica. Você pode especificar um filtro usando um
prefixo de chaves de objeto, uma ou mais tags de objeto ou ambos.
• Uma ou mais ações de transição ou expiração com uma data ou um período no ciclo de vida do objeto
quando você deseja que o Amazon S3 realize a ação especificada.

As seções a seguir descrevem os elementos XML em uma configuração de ciclo de vida do S3. Para obter
configurações de exemplo, consulte Exemplos de configuração de ciclo de vida (p. 594).

Elemento ID
Uma configuração do ciclo de vida do S3 pode ter até 1.000 regras. O elemento <ID> identifica uma regra
com exclusividade. O tamanho do ID está limitado a 255 caracteres.

Versão da API 2006-03-01


588
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

Elemento Status
O valor de elemento <Status> pode ser Ativado ou Desativado. Se uma regra estiver desativada, o
Amazon S3 não executará as ações definidas nela.

Elemento Filter
Uma regra de ciclo de vida pode ser aplicada a todos os objetos ou a um subconjunto de objetos em um
bucket com base no elemento <Filter> que você especifica na regra de ciclo de vida.

É possível filtrar objetos por prefixo de chaves, por tag de objeto ou por uma combinação dos dois. Nesse
último caso, o Amazon S3 usa um E lógico para combinar os filtros. Considere os seguintes exemplos:

• Especificação de um filtro usando prefixos de chaves: este exemplo mostra uma regra de ciclo de vida
do S3 que se aplica a um subconjunto de objetos com base no prefixo de nome de chave (logs/). Por
exemplo, a regra de ciclo de vida se aplica aos objetos logs/mylog.txt, logs/temp1.txt e logs/
test.txt. A regra não se aplica ao objeto example.jpg.

<LifecycleConfiguration>
<Rule>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
transition/expiration actions.
...
</Rule>
...
</LifecycleConfiguration>

Caso queira aplicar uma ação de ciclo de vida a um subconjunto de objetos com base em prefixos de
nome de chave diferentes, especifique regras separadas. Em cada regra, especifique um filtro com base
em prefixo. Por exemplo, para descrever uma ação de ciclo de vida para objetos com prefixos de chaves
projectA/ e projectB/, especifique duas regras da seguinte forma.

<LifecycleConfiguration>
<Rule>
<Filter>
<Prefix>projectA/</Prefix>
</Filter>
transition/expiration actions.
...
</Rule>

<Rule>
<Filter>
<Prefix>projectB/</Prefix>
</Filter>
transition/expiration actions.
...
</Rule>
</LifecycleConfiguration>

Para obter mais informações sobre chaves de objeto, consulte Criar nomes de chave de objeto (p. 64).
• Especificação um filtro com base em tags de objeto: no exemplo a seguir, a regra de ciclo de vida
especifica um filtro com base em uma tag (chave) e valor (valor). A regra aplica-se somente a um
subconjunto de objetos com a tag específica.

<LifecycleConfiguration>

Versão da API 2006-03-01


589
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

<Rule>
<Filter>
<Tag>
<Key>key</Key>
<Value>value</Value>
</Tag>
</Filter>
transition/expiration actions.
...
</Rule>
</LifecycleConfiguration>

Você pode especificar um filtro com base em várias tags. Você deve envolver as tags no elemento
<AND> mostrado no exemplo a seguir. A regra instrui o Amazon S3 a executar ações de ciclo de vida
em objetos com duas tags (com a chave e o valor específicos da tag).

<LifecycleConfiguration>
<Rule>
<Filter>
<And>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
...
</And>
</Filter>
transition/expiration actions.
</Rule>
</Lifecycle>

A regra de ciclo de vida se aplica a objetos que têm ambas as tags especificadas. O Amazon S3 realiza
uma operação E lógica. Observe o seguinte:
• Cada tag deve corresponder exatamente à chave e ao valor.
• A regra se aplica a um subconjunto de objetos que tenha todas as tags especificadas na regra. Se um
objeto tiver tags adicionais especificadas, a regra ainda será aplicada.
Note

Quando você especifica várias tags em um filtro, cada chave de tag deve ser exclusiva.
• Especificação de um filtro com base no prefixo e em uma ou mais tags: em uma regra de ciclo de vida,
você pode especificar um filtro com base no prefixo de chaves e em uma ou mais tags. Além disso, você
deve encapsular tudo isso no elemento <And> como mostrado a seguir.

<LifecycleConfiguration>
<Rule>
<Filter>
<And>
<Prefix>key-prefix</Prefix>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
Versão da API 2006-03-01
590
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

...
</And>
</Filter>
<Status>Enabled</Status>
transition/expiration actions.
</Rule>
</LifecycleConfiguration>

O Amazon S3 combina esses filtros usando um E lógico. Isto é, a regra aplica-se ao subconjunto de
objetos com o prefixo de chaves específico e as tags específicas. Um filtro pode ter somente um prefixo
e zero ou mais tags.
• Você pode especificar um filtro vazio e, nesse caso, a regra se aplica a todos os objetos no bucket.

<LifecycleConfiguration>
<Rule>
<Filter>
</Filter>
<Status>Enabled</Status>
transition/expiration actions.
</Rule>
</LifecycleConfiguration>

Elementos para descrever ações de ciclo de vida


Você pode instruir o Amazon S3 a executar ações específicas no ciclo de vida de um objeto, especificando
uma ou mais das seguintes ações predefinidas em uma regra de ciclo de vida do S3. O efeito dessas
ações depende do estado do versionamento de seu bucket.

• Elemento da ação Transição: você especifica a ação Transition para fazer a transição de objetos
de uma classe de armazenamento para outra. Para obter mais informações sobre transição de objetos,
consulte Transições com suporte e limitações relacionadas (p. 570). Quando uma data ou um período
especificado no ciclo de vida do objeto é atingido, o Amazon S3 executa a transição.

Para um bucket com versões (versionamento ativado ou suspenso no bucket), a ação Transition
aplica-se à versão do objeto atual. Para gerenciar versões não atuais, o Amazon S3 define a ação
NoncurrentVersionTransition (descrita abaixo).

• Elemento de ação de expiração: a ação Expiration expira objetos identificados na regra e se aplica a
objetos qualificados em qualquer uma das classes de armazenamento do Amazon S3. Para obter mais
informações sobre classes de armazenamento, consulte Uso de classes de armazenamento do Amazon
S3 (p. 563). O Amazon S3 deixa todos os objetos expirados indisponíveis. A remoção permanente dos
objetos depende do estado de versionamento do bucket.
Important

As políticas de ciclo de vida de expiração do objeto não removem multipart uploads


incompletos. Para remover os multipart uploads incompletos, você deve usar a ação de
configuração de ciclo de vida AbortIncompleteMultipartUpload que é descrita posteriormente
nesta seção.
• Bucket sem versão: a ação Expiration resulta na remoção permanente do objeto pelo Amazon S3.
• Bucket com versão: para um bucket com versão (ou seja, versionamento ativado ou suspenso), há
várias considerações que orientam como o Amazon S3 trata a ação expiration. Para obter mais
informações, consulte Usando o controle de versão em buckets do S3 (p. 516). Independentemente
do estado do versionamento, o seguinte é aplicado:
• A ação Expiration se aplica somente à versão atual (não afeta versões não atuais do objeto).
Versão da API 2006-03-01
591
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

• O Amazon S3 não realizará ações se houver uma ou mais versões de objeto e se o marcador de
exclusão estiver na versão atual.
• Se a versão atual do objeto for a única versão do objeto e também houver um marcador de exclusão
(também chamado de marcador de exclusão de objeto expirado, onde todas as versões do objeto
são excluídas e você tem somente um marcador de exclusão restante), o Amazon S3 removerá
o marcador de exclusão de objeto expirado. Você também pode usar a ação de expiração para
instruir o Amazon S3 a remover os marcadores de exclusão do objeto expirado. Para ver um
exemplo, consulte Exemplo 7: Remover marcadores de exclusão de objetos expirados (p. 602).

Ao configurar o Amazon S3 para gerenciar a expiração, considere também:


• Bucket com versionamento ativado

Se a versão atual do objeto não for um marcador de exclusão, o Amazon S3 adicionará um com um
ID exclusivo de versão. Isso torna a versão atual desatualizada, e o marcador de exclusão se torna
a versão atual.
• Bucket com versionamento suspenso

Em um bucket com versionamento suspenso, a ação de expiração faz com que o Amazon S3 crie
um marcador de exclusão com ID de versão nulo. Esse marcador de exclusão substitui qualquer
versão de objeto por um ID de versão nulo na hierarquia de versões, que exclui o objeto.

Além disso, o Amazon S3 fornece as seguintes ações que você pode usar para gerenciar versões de
objeto não atuais em um bucket com versão (isto é, buckets com versionamento ativado e suspenso).

• Elemento de ação NoncurrentVersionTransition: use essa ação para especificar quanto tempo
(desde quando os objetos passam a ser não atuais) você deseja que os objetos permaneçam na
classe de armazenamento atual antes que o Amazon S3 fizesse a transição deles para a classe de
armazenamento especificada. Para obter mais informações sobre transição de objetos, consulte
Transições com suporte e limitações relacionadas (p. 570).
• Elemento de ação NoncurrentVersionExpiration: use essa ação para especificar quanto tempo (desde
quando os objetos passam a ser não atuais) você deseja manter as versões não atuais do objeto antes
que o Amazon S3 as remova permanentemente. O objeto excluído não pode ser recuperado.

Essa remoção retardada de objetos não atuais pode ser útil quando você precisa corrigir exclusões
ou substituições acidentais. Por exemplo, você pode configurar uma regra de expiração para excluir
versões não atuais cinco dias após ficarem nesse estado. Por exemplo, imagine que, em 1/1/2014 10:30
AM UTC, você crie um objeto denominado photo.gif (ID de versão 111111). Em 1/2/2014 11:30
AM UTC, você exclui acidentalmente photo.gif (ID de versão 111111), o que cria um marcador de
exclusão com um novo ID de versão (como ID de versão 4857693). Agora você tem cinco dias para
recuperar a versão original de photo.gif (ID de versão 111111) até que a exclusão seja permanente.
Em 1/8/2014 00:00 UTC, a regra de ciclo de vida para expiração executa e exclui permanentemente
photo.gif (ID de versão 111111), cinco dias depois que ele passa a ser uma versão não atual.
Important

As políticas de ciclo de vida de expiração do objeto não removem multipart uploads


incompletos. Para remover os multipart uploads incompletos, você deve usar a ação de
configuração de ciclo de vida AbortIncompleteMultipartUpload que é descrita posteriormente
nesta seção.

Além das ações de transição e expiração, você pode usar a ação de configuração de ciclo de vida a seguir
para instruir o Amazon S3 a parar multipart uploads incompletos.

• Elemento de ação AbortIncompleteMultipartUpload: use esse elemento para definir o tempo máximo (em
dias) que você deseja permitir que os multipart uploads permaneçam em andamento. Se os multipart
uploads aplicáveis (determinados pelo nome de chave prefix especificado na regra de ciclo de vida)
Versão da API 2006-03-01
592
Amazon Simple Storage Service Guia do usuário
Elementos de configuração do ciclo de vida

não forem concluídos no período predefinido, o Amazon S3 parará os multipart uploads incompletos.
Para obter mais informações, consulte Abortar um multipart upload (p. 106).
Note

Você não pode especificar essa ação de ciclo de vida em uma regra que especifica um filtro
com base em tags de objeto.

• Elemento de ação ExpiredObjectDeleteMarker: em um bucket com versionamento ativado, um marcador


de exclusão sem versões não atuais é chamado de marcador de exclusão de objeto expirado. Você
pode usar essa ação de ciclo de vida para instruir o S3 a remover os marcadores de exclusão de objeto
expirado. Para ver um exemplo, consulte Exemplo 7: Remover marcadores de exclusão de objetos
expirados (p. 602).
Note

Você não pode especificar essa ação de ciclo de vida em uma regra que especifica um filtro
com base em tags de objeto.

Como o Amazon S3 calcula quanto tempo um objeto ficou desatualizado


Em um bucket com versionamento ativado, você pode ter várias versões de um objeto, sempre ter uma
versão atual e nenhuma ou mais versões desatualizadas. Sempre que você faz upload de um objeto,
a versão atual é retida como a versão não atual e a versão recém-adicionada, a sucessora, se torna a
versão atual. Para determinar o número de dias que um objeto fica desatualizado, o Amazon S3 observa
quando o sucessor foi criado. O Amazon S3 usa o número de dias desde que o sucessor foi criado como o
número de dias que um objeto fica desatualizado.
Restaurar versões anteriores de um objeto ao usar configurações de ciclo de vida

Como explicado em detalhes no tópico Restaurar versões anteriores (p. 533), você pode usar
qualquer um dos dois métodos seguintes para recuperar versões anteriores de um objeto:

1. Copiando uma versão não atual do objeto no mesmo bucket. O objeto copiado torna-se a
versão atual desse objeto e todas as versões são preservadas.
2. Excluindo permanentemente a versão atual do objeto. Ao excluir a versão atual do objeto, você
acaba transformando a versão não atual na versão atual do objeto.

Quando você estiver usando regras de configuração do ciclo de vida do S3 com buckets
habilitados para versionamento, recomendamos como prática recomendada que você use o
primeiro método.
O ciclo de vida opera sob um modelo eventualmente consistente. Uma versão atual que você
excluiu permanentemente pode não desaparecer até que as alterações sejam propagadas
(o Amazon S3 pode não estar ciente dessa exclusão). Entretanto, a regra de ciclo de vida
configurada para expirar objetos não atuais pode remover, permanentemente, objetos não atuais,
incluindo aquele que você deseja restaurar. Assim, copiar a versão antiga, como recomendado no
primeiro método, é uma alternativa mais confiável.

Regras de ciclo de vida: com base na idade de um objeto


É possível especificar um período, em número de dias desde a criação (ou modificação) dos objetos, no
qual o Amazon S3 pode realizar a ação.

Quando você especificar o número de dias nas ações Transition e Expiration em uma configuração
de ciclo de vida do S3, observe o seguinte:

• Trata-se do número de dias desde a criação de objeto quando a ação ocorrerá.


Versão da API 2006-03-01
593
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

• O Amazon S3 calcula o tempo, adicionando o número de dias especificado na regra ao momento


de criação do objeto e arredondando o tempo resultante para a meia-noite UTC do próximo dia. Por
exemplo, se um objeto foi criado em 1/15/2014 10:30 AM UTC e você especificar 3 dias em uma regra
de transição, a data de transição do objeto será calculada como 1/19/2014 00:00 UTC.

Note

O Amazon S3 mantém apenas a data da última modificação para cada objeto. Por exemplo, o
console do Amazon S3 mostra a data Last Modified (Última modificação) no painel Properties
(Propriedades) do objeto. Quando você cria inicialmente um novo objeto, essa data reflete a data
em que o objeto é criado. Se você substituir o objeto, a data será alterada conforme necessário.
Assim, o termo data de criação é sinônimo do termo data da última modificação.

Ao especificar o número de dias nas ações NoncurrentVersionTransition e


NoncurrentVersionExpiration em uma configuração de ciclo de vida, observe o seguinte:

• É o número de dias a partir do momento em que a versão do objeto se torna desatualizada (ou seja,
quando o objeto é sobrescrito ou excluído) que o Amazon S3 executará a ação no objeto ou objetos
especificados.
• O Amazon S3 calcula o tempo, adicionando o número de dias especificado na regra ao momento em
que a nova versão sucessora do objeto é criada e arredondando o tempo resultante para a meia-noite
UTC do próximo dia. Por exemplo, no seu bucket, suponha que a versão atual de um objeto foi criada
em 01/01/2014, 10:30 AM UTC. Se a nova versão do objeto que substitui a atual tiver sido criada em
15/01/2014, 10:30 AM UTC, e você especificar uma regra de transição de três dias, a data de transição
do objeto será calculada como 19/01/2014, 00:00 UTC.

Regras de ciclo de vida: com base em uma data especificada


Ao especificar uma ação em uma regra de ciclo de vida, é possível especificar uma data em que deseja
que o Amazon S3 realize a ação. Quando a data especificada chegar, o Amazon S3 aplicará a ação a
todos os objetos qualificados (com base nos critérios de filtro).

Se você especificar uma ação de ciclo de vida do S3 com uma data no passado, todos os objetos
qualificados estarão imediatamente qualificados para essa ação de ciclo de vida.
Important

A ação com base em data não é uma ação única. O Amazon S3 continuará aplicando a ação com
base em data mesmo após a data ter passado, contanto que o status da regra seja Enabled.
Por exemplo, imagine que você especifique uma ação de Expiration com base em data
para excluir todos os objetos (supondo que nenhum filtro seja especificado na regra). Na data
especificada, o Amazon S3 expira todos os objetos no bucket. O S3 também continuará expirando
todos os objetos novos que você criar no bucket. Para parar a ação de ciclo de vida, você
deve remover a ação da configuração de ciclo de vida, desabilitar a regra ou excluir a regra da
configuração de ciclo de vida.

O valor de data deve estar em conformidade com o formato ISO 8601. A hora é sempre meia-noite (UTC).
Note

Você não pode criar regras de ciclo de vida com base em data usando o console do Amazon S3,
mas pode visualizar, desativar ou excluir essas regras.

Exemplos de configuração de ciclo de vida


Esta seção fornece exemplos de configuração do ciclo de vida do S3. Cada exemplo mostra como você
pode especificar o XML em cada um dos cenários de exemplo.

Versão da API 2006-03-01


594
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

Tópicos
• Exemplo 1: Especificar um filtro (p. 595)
• Exemplo 2: Desabilitar uma regra de ciclo de vida (p. 597)
• Exemplo 3: Rebaixar uma classe de armazenamento pela duração do ciclo de vida de um objeto
(p. 597)
• Exemplo 4: Especificar várias regras (p. 598)
• Exemplo 5: sobreposição de filtros, ações de ciclo de vida conflitantes e o que o Amazon S3; faz
(p. 599)
• Exemplo 6: Especificar uma regra de ciclo de vida para um bucket com versionamento habilitado
(p. 602)
• Exemplo 7: Remover marcadores de exclusão de objetos expirados (p. 602)
• Exemplo 8: Configuração de ciclo de vida para anular multipart uploads (p. 604)

Exemplo 1: Especificar um filtro


Cada regra de ciclo de vida do S3 inclui um filtro que pode ser usado para identificar um subconjunto de
objetos em seu bucket ao qual a regra de ciclo de vida se aplica. As configurações de ciclo de vida do S3 a
seguir mostram exemplos de como você pode especificar um filtro.

• Nesta regra de configuração de ciclo de vida, o filtro especifica um prefixo de chave (tax/). Portanto,
a regra aplica-se a objetos com o prefixo de nome de chave tax/, como tax/doc1.txt e tax/
doc2.txt.

A regra especifica duas ações que direcionam o Amazon S3 a fazer o seguinte:


• Faça a transição de objetos para a classe de armazenamento S3 Glacier 365 dias (um ano) após a
criação.
• Exclua objetos (a ação Expiration) 3.650 dias (10 anos) após a criação.

<LifecycleConfiguration>
<Rule>
<ID>Transition and Expiration Rule</ID>
<Filter>
<Prefix>tax/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>365</Days>
<StorageClass>S3 Glacier</StorageClass>
</Transition>
<Expiration>
<Days>3650</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>

Em vez de especificar a idade do objeto em termos de dias após a criação, você pode especificar uma
data para cada ação. No entanto, você não pode usar Date e Days na mesma regra.
• Se você quiser que a regra de ciclo de vida se aplique a todos os objetos no bucket, especifique
um prefixo vazio. Na configuração a seguir, a regra especifica uma ação Transition levando o
Amazon S3 a fazer a transição de objetos para a classe de armazenamento S3 Glacier 0 dias após a
criação e, nesse caso, os objetos são qualificados para arquivamento no Amazon S3 Glacier à meia-
noite UTC após a criação. Para obter mais informações sobre restrições de ciclo de vida, consulte
Restrições (p. 571).

<LifecycleConfiguration>

Versão da API 2006-03-01


595
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

<Rule>
<ID>Archive all object same-day upon creation</ID>
<Filter>
<Prefix></Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>0</Days>
<StorageClass>S3 Glacier</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>

• Você pode especificar zero ou um prefixo de nome de chave ou zero ou mais tags de objeto em um filtro.
O exemplo de código a seguir aplica a regra de ciclo de vida a um subconjunto de objetos com prefixo
de chave tax/ e a objetos que têm duas tags com uma chave e valor específicos. Observe que, ao
especificar mais de um filtro, você deve incluir AND conforme mostrado (o Amazon S3 aplica um AND
lógico para combinar as condições de filtro especificadas).

...
<Filter>
<And>
<Prefix>tax/</Prefix>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
</And>
</Filter>
...

• Você pode filtrar objetos com base apenas nas tags. Por exemplo, a regra de ciclo de vida a seguir
aplica-se a objetos que tenham duas tags especificadas (não especifica nenhum prefixo).

...
<Filter>
<And>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
</And>
</Filter>
...

Important

Quando você tem várias regras em uma configuração de ciclo de vida, um objeto pode se tornar
qualificado para várias ações de ciclo de vida. Nesses casos, o Amazon S3 segue estas regras
gerais:
Versão da API 2006-03-01
596
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

• A exclusão permanente tem precedência sobre a transição.


• A transição tem precedência sobre a criação de marcadores de exclusão.
• Quando um objeto está qualificado para uma transição S3 Glacier e S3 Standard – IA (ou S3
One Zone – IA), o Amazon S3 escolhe a transição do S3 Glacier.

Para ver exemplos, consulte Exemplo 5: sobreposição de filtros, ações de ciclo de vida
conflitantes e o que o Amazon S3; faz (p. 599).

Exemplo 2: Desabilitar uma regra de ciclo de vida


Você pode desabilitar temporariamente uma regra de ciclo de vida. A configuração de ciclo de vida a
seguir especifica duas regras:

• Na regra 1, o Amazon S3 faz a transição de objetos com o prefixo logs/ para a classe de
armazenamento S3 Glacier logo após a criação.
• Na regra 2, o Amazon S3 faz a transição de objetos com o prefixo documents/ para a classe de
armazenamento S3 Glacier logo após a criação.

Na política, a regra 1 é habilitada e a regra 2 é desabilitada. O Amazon S3 não realiza nenhuma ação em
regras desativadas.

<LifecycleConfiguration>
<Rule>
<ID>Rule1</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>0</Days>
<StorageClass>S3 Glacier</StorageClass>
</Transition>
</Rule>
<Rule>
<ID>Rule2</ID>
<Prefix>documents/</Prefix>
<Status>Disabled</Status>
<Transition>
<Days>0</Days>
<StorageClass>S3 Glacier</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>

Exemplo 3: Rebaixar uma classe de armazenamento pela


duração do ciclo de vida de um objeto
Neste exemplo, você usa a configuração de ciclo de vida para rebaixar a classe de armazenamento de
objetos pela sua vida útil. O rebaixamento pode ajudar a reduzir os custos de armazenamento. Para obter
mais informações sobre a definição de preços, consulte Definição de preços do Amazon S3.

A configuração de ciclo de vida do S3 a seguir especifica uma regra que se aplica a objetos com o prefixo
de nome de chave logs/. A regra especifica as seguintes ações:

• Duas ações de transição:


• Transição de objetos para a classe de armazenamento S3 Standard – IA 30 dias após a criação.

Versão da API 2006-03-01


597
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

• A transição de objetos para a classe de armazenamento S3 Glacier 90 dias após a criação.


• Uma ação de expiração que leva o Amazon S3 a excluir esses objetos um ano após a criação.

<LifecycleConfiguration>
<Rule>
<ID>example-id</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>30</Days>
<StorageClass>STANDARD_IA</StorageClass>
</Transition>
<Transition>
<Days>90</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
<Expiration>
<Days>365</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>

Note

Você pode usar uma regra para descrever todas as ações de ciclo de vida se todas as ações
se aplicarem ao mesmo conjunto de objetos (identificados pelo filtro). Caso contrário, você pode
adicionar várias regras com cada uma especificando um filtro diferente.

Exemplo 4: Especificar várias regras

Você pode especificar várias regras se quiser diferentes ações de ciclo de vida de diferentes objetos. A
configuração de ciclo de vida a seguir tem duas regras:

• A regra 1 se aplica a objetos com prefixo de nome de chave classA/. Com ela, o Amazon S3 faz a
transição de objetos para a classe de armazenamento S3 Glacier um ano após a criação e expira esses
objetos 10 anos após a criação.
• A regra 2 se aplica a objetos com prefixo de nome de chave classB/. Ela direciona o Amazon S3 para
fazer a transição de objetos para a classe de armazenamento S3 Standard – IA 90 dias após a criação e
excluí-los um ano após a criação.

<LifecycleConfiguration>
<Rule>
<ID>ClassADocRule</ID>
<Filter>
<Prefix>classA/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>      
<Days>365</Days>      
<StorageClass>GLACIER</StorageClass>    
</Transition>
<Expiration>
<Days>3650</Days>
</Expiration>
</Rule>

Versão da API 2006-03-01


598
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

<Rule>
<ID>ClassBDocRule</ID>
<Filter>
<Prefix>classB/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>      
<Days>90</Days>      
<StorageClass>STANDARD_IA</StorageClass>    
</Transition>
<Expiration>
<Days>365</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>

Exemplo 5: sobreposição de filtros, ações de ciclo de vida


conflitantes e o que o Amazon S3; faz
Você pode especificar uma configuração de ciclo de vida do S3 em que especifica prefixos ou ações
sobrepostos.

Geralmente, o ciclo de vida do Amazon S3 otimiza o custo. Por exemplo, se duas políticas de expiração se
sobrepuserem, a mais curta será honrada para que os dados não sejam armazenados por mais tempo do
que o esperado.

Do mesmo modo, se duas políticas de transição se sobrepuserem, o ciclo de vida do S3 irá fazer a
transição dos seus objetos para a classe de armazenamento de menor custo. Nos dois casos, o ciclo de
vida do S3 tenta escolher o caminho com menos custo para você. Uma exceção a essa regra geral é com
a classe de armazenamento S3 Intelligent-Tiering. O S3 Intelligent-Tiering é favorecido pelo ciclo de vida
do S3 em qualquer classe de armazenamento, além das classes de armazenamento S3 Glacier e S3
Glacier Deep Archive.

Os exemplos a seguir mostram como o Amazon S3 resolve possíveis conflitos.

Example 1: prefixos sobrepostos (nenhum conflito)

O exemplo de configuração a seguir tem duas regras especificando prefixos sobrepostos da seguinte
maneira:

• A primeira regra especifica um filtro vazio, indicando todos os objetos no bucket.


• A segunda regra especifica um prefixo de nome de chave logs/ indicando somente um subconjunto de
objetos.

A Regra 1 solicita que o Amazon S3 exclua todos os objetos um ano após a criação. A Regra 2 solicita
que o Amazon S3 faça a transição de um subconjunto de objetos para a classe de armazenamento do S3
Standard – IA 30 dias após a criação.

<LifecycleConfiguration>
<Rule>
<ID>Rule 1</ID>
<Filter>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Days>365</Days>
</Expiration>
</Rule>
<Rule>

Versão da API 2006-03-01


599
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

<ID>Rule 2</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<StorageClass>STANDARD_IA<StorageClass>
<Days>30</Days>
</Transition>
</Rule>
</LifecycleConfiguration>

Example 2: ações de ciclo de vida conflitantes

Nessa configuração de exemplo, há duas regras que levam o Amazon S3 a executar ao mesmo tempo
duas diferentes ações no mesmo conjunto de objetos na vida útil do objeto:

• Ambas as regras especificam o mesmo prefixo de nome de chave, de modo que ambas as regras se
aplicam ao mesmo conjunto de objetos.
• Ambas as regras especificam os mesmos 365 dias após a criação de objeto quando as regras se
aplicam.
• Uma regra leva o Amazon S3 a fazer a transição de objetos para a classe de armazenamento S3
Standard – IA e outra regra quer que o Amazon S3 expire os objetos ao mesmo tempo.

<LifecycleConfiguration>
<Rule>
<ID>Rule 1</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Days>365</Days>
</Expiration>
</Rule>
<Rule>
<ID>Rule 2</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<StorageClass>STANDARD_IA<StorageClass>
<Days>365</Days>
</Transition>
</Rule>
</LifecycleConfiguration>

Nesse caso, como você deseja que os objetos sejam expirados (removidos), não faz sentido mudar a
classe de armazenamento, e o Amazon S3 simplesmente escolhe a ação de expiração desses objetos.

Example 3: prefixos sobrepostos que resultam em ações de ciclo de vida conflitantes

Neste exemplo, a configuração tem duas regras, que especificam prefixos sobrepostos da seguinte
maneira:

• A regra 1 especifica um prefixo vazio (indicando todos os objetos).


• A regra 2 especifica um prefixo de nome de chave (logs/) que identifica um subconjunto de todos os
objetos.

Versão da API 2006-03-01


600
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

Para o subconjunto de objetos com o prefixo de nome de chave logs/, as ações de ciclo de vida em
ambas as regras se aplicam. Uma regra levando o Amazon S3 a fazer a transição de objetos 10 dias após
a criação e outra regra em que o Amazon S3 faz a transição de objetos 365 dias após a criação.

<LifecycleConfiguration>
<Rule>
<ID>Rule 1</ID>
<Filter>
<Prefix></Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<StorageClass>STANDARD_IA<StorageClass>
<Days>10</Days>
</Transition>
</Rule>
<Rule>
<ID>Rule 2</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<StorageClass>STANDARD_IA<StorageClass>
<Days>365</Days>
</Transition>
</Rule>
</LifecycleConfiguration>

Nesse caso, o Amazon S3 escolhe fazer a transição dos objetos 10 dias após a criação.

Example 4: filtragem baseada em tags e ações de ciclo de vida conflitantes resultantes

Suponha que você tenha a seguinte política de ciclo de vida do S3 que tem duas regras, cada uma
especificando um filtro de tag:

• A regra 1 especifica um filtro baseado em tag (tag1/value1). Essa regra direciona o Amazon S3 para
fazer a transição de objetos para a classe de armazenamento do S3 Glacier 365 dias após a criação.
• A regra 2 especifica um filtro baseado em tag (tag2/value2). Essa regra leva o Amazon S3 a expirar
objetos 14 dias após a criação.

A configuração de ciclo de vida é apresentada como segue.

<LifecycleConfiguration>
<Rule>
<ID>Rule 1</ID>
<Filter>
<Tag>
<Key>tag1</Key>
<Value>value1</Value>
</Tag>
</Filter>
<Status>Enabled</Status>
<Transition>
<StorageClass>GLACIER<StorageClass>
<Days>365</Days>
</Transition>
</Rule>
<Rule>
<ID>Rule 2</ID>
<Filter>

Versão da API 2006-03-01


601
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

<Tag>
<Key>tag2</Key>
<Value>value1</Value>
</Tag>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Days>14</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>

A política está correta, mas se houver um objeto com ambas as tags, o S3 precisará decidir o que fazer.
Em outras palavras, as duas regras se aplicam a um objeto e, na realidade, você está levando o Amazon
S3 a executar ações conflitantes. Nesse caso, o Amazon S3 expira o objeto 14 dias após a criação. O
objeto é removido e, portanto, a ação de transição não acontece.

Exemplo 6: Especificar uma regra de ciclo de vida para um


bucket com versionamento habilitado
Suponha que você tenha um bucket com versionamento habilitado, o que significa que, para cada objeto,
há uma versão atual e zero ou mais versões desatualizadas. Você deseja manter o equivalente a um ano
de histórico e, em seguida, excluir as versões desatualizadas. Para obter mais informações sobre o S3
Versioning, consulte Usando o controle de versão em buckets do S3 (p. 516).

Além disso, você deseja economizar os custos de armazenamento movendo as versões desatualizadas
para S3 Glacier 30 dias depois de se tornarem desatualizadas (supondo que são dados antigos que você
não precisa acessar em tempo real). Além disso, você também espera que a frequência de acesso das
versões atuais diminua 90 dias após a criação, para que você possa optar por mover esses objetos para a
classe de armazenamento S3 Standard – IA.

<LifecycleConfiguration>
<Rule>
<ID>sample-rule</ID>
<Filter>
<Prefix></Prefix>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>90</Days>
<StorageClass>STANDARD_IA</StorageClass>
</Transition>
<NoncurrentVersionTransition>
<NoncurrentDays>30</NoncurrentDays>
<StorageClass>S3 Glacier</StorageClass>
</NoncurrentVersionTransition>
<NoncurrentVersionExpiration>
<NoncurrentDays>365</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>

Exemplo 7: Remover marcadores de exclusão de objetos


expirados
Um bucket com versionamento habilitado mantém uma versão atual e nenhuma ou mais versões
desatualizadas de cada objeto. Ao excluir um objeto, observe o seguinte:

Versão da API 2006-03-01


602
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

• Se você não especificar um ID de versão na solicitação de exclusão, o Amazon S3 adicionará um


marcador de exclusão em vez de excluir o objeto. A versão atual do objeto se torna desatualizada e o
marcador de exclusão se torna a versão atual.
• Se você não especificar um ID de versão na solicitação de exclusão, o Amazon S3 excluirá
permanentemente a versão do objeto (um marcador de exclusão não é criado).
• Um marcador de exclusão sem versões desatualizadas é chamado de marcador de exclusão do objeto
expirado.

Este exemplo mostra um cenário que pode criar marcadores de exclusão de objetos expirados em seu
bucket e como você pode usar a configuração de ciclo de vida do S3 para que o Amazon S3 remova os
marcadores de exclusão de objetos expirados.

Suponha que você elabore uma política de ciclo de vida que especifique a ação
NoncurrentVersionExpiration para remover as versões desatualizadas 30 dias após se tornarem
desatualizadas como mostrado a seguir.

<LifecycleConfiguration>
<Rule>
...
<NoncurrentVersionExpiration>
<NoncurrentDays>30</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>

A ação NoncurrentVersionExpiration não se aplica às versões de objeto atuais. Ela apenas remove
versões desatualizadas.

Para versões atuais do objeto, você tem as opções abaixo para gerenciar o ciclo de vida. Tudo vai
depender de as versões atuais seguirem um ciclo de vida bem definido.

• As versões atuais do objeto seguem um ciclo de vida bem definido.

Neste caso, você pode usar a política de ciclo de vida com a ação Expiration para que o Amazon S3
remova as versões atuais, conforme exibido no seguinte exemplo:

<LifecycleConfiguration>
<Rule>
...
<Expiration>
<Days>60</Days>
</Expiration>
<NoncurrentVersionExpiration>
<NoncurrentDays>30</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>

O Amazon S3 remove as versões atuais 60 dias após serem criadas adicionando um marcador de
exclusão para cada uma das versões atuais do objeto. Isso torna a versão atual do objeto desatualizada
e o marcador de exclusão se torna a versão atual. Para obter mais informações, consulte Usando o
controle de versão em buckets do S3 (p. 516).
Note

Não é possível especificar uma Days e ExpiredObjectDeleteMarker tag na mesma regra.


A especificação da Days tag executará automaticamente a ExpiredObjectDeleteMarker
limpeza assim que os marcadores de exclusão tiverem idade suficiente para

Versão da API 2006-03-01


603
Amazon Simple Storage Service Guia do usuário
Exemplos de configuração de ciclo de vida

satisfazer os critérios de idade. Você pode criar uma regra separada com apenas a
ExpiredObjectDeleteMarker tag para limpar marcadores de exclusão assim que eles se
tornarem a única versão.

A ação NoncurrentVersionExpiration na mesma configuração de ciclo de vida remove os objetos


desatualizados 30 dias após se tornarem desatualizados. Assim, neste exemplo, todas as versões de
objeto são permanentemente removidas 90 dias após a criação do objeto. Você terá marcadores de
exclusão de objetos expirados, mas o Amazon S3 detecta e remove os marcadores de exclusão de
objetos expirados para você.
• As versões atuais do objeto não têm um ciclo de vida bem definido.

Neste caso, você pode remover os objetos manualmente quando não forem mais necessários criando
um marcador de exclusão com uma ou mais versões desatualizadas. Se a configuração de ciclo de vida
com a ação NoncurrentVersionExpiration remover todas as versões desatualizadas, agora você
terá marcadores de exclusão de objetos expirados.

Especificamente para este cenário, a configuração de ciclo de vida do Amazon S3 fornece uma ação
Expiration em que você pode solicitar que o Amazon S3 remova os marcadores de exclusão de
objetos expirados:

<LifecycleConfiguration>
<Rule>
<ID>Rule 1</ID>
<Filter>
<Prefix>logs/</Prefix>
</Filter>
<Status>Enabled</Status>
<Expiration>
<ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
</Expiration>
<NoncurrentVersionExpiration>
<NoncurrentDays>30</NoncurrentDays>
</NoncurrentVersionExpiration>
</Rule>
</LifecycleConfiguration>

Ao definir o elemento ExpiredObjectDeleteMarker como verdadeiro na ação Expiration, você faz


o Amazon S3 remover os marcadores de exclusão de objetos expirados.
Note

Ao especificar a ação ExpiredObjectDeleteMarker de ciclo de vida, a regra não pode


especificar um filtro baseado em tag.

Exemplo 8: Configuração de ciclo de vida para anular multipart


uploads
Você pode usar a API de multipart upload para fazer upload de objetos grandes em partes. Para
obter mais informações sobre multipart uploads, consulte Carregar e copiar objetos usando multipart
upload (p. 80).

Usando a configuração de ciclo de vida do S3, você pode levar o Amazon S3 a interromper multipart
uploads incompletos (identificados pelo prefixo de nome de chave especificado na regra) se eles não
forem concluídos dentro de um número especificado de dias após a inicialização. Quando o Amazon S3
interrompe um multipart upload, ele exclui todas as partes associadas ao multipart upload. Isso garante
que você não tenha multipart uploads incompletos com partes que estão armazenadas no Amazon S3 e,
portanto, você não tem que pagar nada por custo de armazenamento para essas partes.

Versão da API 2006-03-01


604
Amazon Simple Storage Service Guia do usuário
Gerenciamento de inventário

Note

Ao especificar a ação AbortIncompleteMultipartUpload de ciclo de vida, a regra não pode


especificar um filtro baseado em tag.

Veja a seguir um exemplo de configuração de ciclo de vida do S3 que especifica uma regra com a ação
AbortIncompleteMultipartUpload. Essa ação solicita que o Amazon S3 interrompa multipart
uploads incompletos sete dias após a inicialização.

<LifecycleConfiguration>
<Rule>
<ID>sample-rule</ID>
<Filter>
<Prefix>SomeKeyPrefix/</Prefix>
</Filter>
<Status>rule-status</Status>
<AbortIncompleteMultipartUpload>
<DaysAfterInitiation>7</DaysAfterInitiation>
</AbortIncompleteMultipartUpload>
</Rule>
</LifecycleConfiguration>

Inventário do Amazon S3
O inventário do Amazon S3 é uma das ferramentas que o Amazon S3 fornece para ajudar a gerenciar
seu armazenamento. Você pode usá-lo para auditar e gerar relatórios sobre o status da replicação e
criptografia de seus objetos para os negócios, a conformidade e as necessidades normativas. Também
é possível simplificar e acelerar os fluxos de trabalho de negócios e as trabalhos de big data usando o
inventário do Amazon S3, que fornece uma alternativa programada para a operação síncrona da API List
do Amazon S3.

O inventário do Amazon S3 fornece arquivos de saída nos formatos CSV (valores separados por vírgulas),
ORC (colunar de linhas otimizado do Apache) ou Parquet (Apache Parquet ) que listam seus objetos e os
metadados correspondentes, diária ou semanalmente, para um bucket ou prefixo compartilhado do S3 (ou
seja, objetos que tenham nomes que comecem com uma string comum). Caso isso ocorra semanalmente,
um relatório será gerado todos os domingos (fuso horário UTC) após o relatório inicial. Para obter mais
informações sobre a definição de preços do Amazon S3, consulte Definição de preços do Amazon S3.

Você pode configurar várias listas de inventário para um bucket. Você pode configurar quais metadados
de objeto serão incluídos no inventário, se deseja relacionar todas as versões do objeto ou apenas as
versões atuais, onde armazenar o arquivo resultante da lista de inventários e se o inventário será gerado
em uma frequência diária ou semanal. Você também pode especificar se o arquivo de lista de inventários
será criptografado.

É possível consultar o inventário do Amazon S3 usando o SQL padrão, usando o Amazon Athena, o
Amazon Redshift Spectrum e outras ferramentas, como Presto, Apache Hive e Apache Spark. É fácil
usar o Athena para executar consultas em seus arquivos de inventário. É possível usar as consultas de
inventário do Amazon S3 em todas as regiões onde o Athena estiver disponível.

Buckets de origem e destino


O bucket para o qual o inventário lista objetos é chamado de bucket de origem. O bucket em que o arquivo
de lista de inventários é armazenado é chamado de bucket de destino.

Bucket de origem

Versão da API 2006-03-01


605
Amazon Simple Storage Service Guia do usuário
Listas de inventário

O inventário lista os objetos armazenados no bucket de origem. Você pode obter as listas de inventário
para um bucket inteiro ou filtradas pelo prefixo (nome de chave de objeto).

O bucket de origem:

• Contém os objetos que estão listados no inventário.


• Contém a configuração para o inventário.

Bucket de destino

Os arquivos da lista de inventários do Amazon S3 são gravados no bucket de destino. Você pode
especificar um prefixo de destino (nome de chave de objeto) na configuração do inventário para agrupar
todos os arquivos de lista de inventários em um local comum no bucket de destino.

O bucket de destino:

• Contém as listas de arquivos de inventário.


• Contém os arquivos manifestos que relacionam todas as listas de inventários de arquivo armazenadas
no bucket de destino. Para obter mais informações, consulte Manifesto de inventário (p. 613)
• Deve haver uma política de bucket para dar permissão ao Amazon S3 para verificar a propriedade do
bucket e permissão para gravar arquivos no bucket.
• Deve estar na mesma região da AWS que o bucket de origem.
• Pode ser igual ao bucket de origem.
• Pode pertencer a uma conta da AWS diferente da conta que tem a propriedade do bucket de origem.

Lista de inventários do Amazon S3


Um arquivo de lista de inventários contém uma lista dos objetos no bucket de origem e os metadados
de cada objeto. As listas de inventários são armazenadas no bucket de destino como um arquivo CSV
compactado com GZIP, como um arquivo colunar de linhas otimizado (ORC) do Apache compactado com
ZLIB ou como um arquivo do Apache Parquet (Parquet) compactado com Snappy.

Uma lista de inventários contém uma lista dos objetos em um bucket do S3 e os seguintes metadados para
cada objeto relacionado:

• Nome do bucket: o nome do bucket a que o inventário se refere.


• Nome da chave: o nome da chave de objeto (ou chave) que identifica cada objeto no bucket. Ao usar o
formato de arquivo CSV, o nome da chave é codificado em URL e deve ser decodificado para que possa
ser usado.
• ID de versão: o ID de versão de objetos. Quando você habilita o versionamento em um bucket,
o Amazon S3 atribui um número de versão aos objetos adicionados ao bucket. Para obter mais
informações, consulte Usando o controle de versão em buckets do S3 (p. 516). (O campo não está
incluído se a lista for somente para a versão atual dos objetos.)
• IsLatest: definido como True se o objeto for a versão atual do objeto. (O campo não está incluído se a
lista for somente para a versão atual dos objetos.)
• Tamanho: o tamanho do objeto em bytes.
• Data da última modificação: a data de criação do objeto ou a data da última modificação, a mais atual
entre as duas.
• ETag: a tag de entidade é um hash do objeto. O ETag reflete as alterações apenas no conteúdo de um
objeto, não em seus metadados. A ETag pode ou não ser um resumo MD5 dos dados do objeto. Tudo
depende de como o objeto foi criado e de como está criptografado.
• Classe de armazenamento: a classe de armazenamento usada para armazenar o objeto. Para obter
mais informações, consulte Uso de classes de armazenamento do Amazon S3 (p. 563).

Versão da API 2006-03-01


606
Amazon Simple Storage Service Guia do usuário
Configuração do inventário do Amazon S3

• Nível de acesso do Intelligent-Tiering: nível de acesso (frequente ou infrequente) do objeto se


armazenado no Intelligent-Tiering. Para obter mais informações, consulte Classe de armazenamento
para otimizar automaticamente dados com padrões de acesso alterados ou desconhecidos (p. 564).
• Sinalizador de multipart upload: definido como True se o objeto foi carregado como um multipart upload.
Para obter mais informações, consulte Carregar e copiar objetos usando multipart upload (p. 80).
• Marcador de exclusão: definido como True se o objeto for um marcador de exclusão. Para obter
mais informações, consulte Usando o controle de versão em buckets do S3 (p. 516). (Este campo é
adicionado automaticamente ao seu relatório se você configurou o relatório para incluir todas as versões
dos seus objetos).
• Status de replicação: definido como PENDING, COMPLETED, FAILED ou REPLICA.. Para obter mais
informações, consulte Obtenção de informações sobre o status da replicação (p. 678).
• Status da criptografia: definido como SSE-S3, SSE-C, SSE-KMS ou NOT-SSE. O status da criptografia no
lado do servidor para SSE-S3, SSE-KMS e SSE com chaves fornecidas pelo cliente (SSE-C). Um status
NOT-SSE significa que o objeto não foi criptografado com a criptografia no lado do servidor. Para obter
mais informações, consulte Proteção de dados usando criptografia (p. 194).
• Manutenção do bloqueio do objeto do S3 até a data: a data até a qual o objeto bloqueado não pode ser
excluído. Para obter mais informações, consulte Usar o S3 Object Lock (p. 554).
• Modo de bloqueio do objeto do S3: definido como Governance ou Compliance para objetos que
estejam bloqueados. Para obter mais informações, consulte Usar o S3 Object Lock (p. 554).
• Status de retenção legal de bloqueio do objeto do S3 : definido como On caso uma retenção legal tenha
sido aplicada a um objeto. Caso contrário, ele é definido como Off. Para obter mais informações,
consulte Usar o S3 Object Lock (p. 554).

Recomendamos que você crie uma política de ciclo de vida que exclua listas de inventário antigas. Para
obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Consistência de inventário
Todos os seus objetos podem não aparecer em cada lista de inventários. A lista de inventários fornece
uma consistência eventual para PUTs dos objetos novos e também dos substituídos e excluídos. As listas
de inventário são um snapshot de rolamento de itens do bucket, que são eventualmente consistentes (ou
seja, a lista pode não incluir os objetos adicionados ou excluídos recentemente).

Para validar o estado do objeto antes de você realizar uma ação no objeto, recomendamos que faça
uma solicitação HEAD Object da API REST para recuperar metadados do objeto ou verifique suas
propriedades no console do Amazon S3. Também é possível verificar metadados do objeto com a CLI da
AWS ou os AWS SDKs. Para obter mais informações, consulte Objeto HEAD na Referência de APIs do
Amazon Simple Storage Service.

Para obter mais informações sobre como trabalhar com o inventário do S3, consulte os tópicos abaixo.

Tópicos
• Configuração do inventário do Amazon S3 (p. 607)
• Configuração de notificações de eventos do Amazon S3 para conclusão de inventário (p. 612)
• Localização de lista de inventário (p. 612)
• Consulta do inventário do Amazon S3 com o Amazon Athena (p. 615)

Configuração do inventário do Amazon S3


O inventário do Amazon S3 fornece uma lista de arquivos simples dos seus objetos e metadados, que
é uma alternativa agendada para a operação da API List síncrona do Amazon S3. O inventário do
Amazon S3 fornece arquivos de saída no formato de valores separados por vírgulas (CSV), formato

Versão da API 2006-03-01


607
Amazon Simple Storage Service Guia do usuário
Configuração do inventário do Amazon S3

colunar de linhas otimizado do Apache (ORC) ou Apache Parquet (Parquet) que listam os seus objetos e
os metadados correspondentes, diária ou semanalmente, para um bucket do S3 ou para os objetos que
compartilham um prefixo (objetos com nomes iniciados pela mesma string). Para obter mais informações,
consulte Inventário do Amazon S3 (p. 605).

Esta seção descreve como configurar um inventário, incluindo detalhes sobre seus buckets de origem e
destino do inventário.

Tópicos
• Visão geral (p. 608)
• Criação de uma política de bucket de destino (p. 609)
• Conceder permissão para que o Amazon S3 use a CMK do AWS KMS para criptografia (p. 609)
• Configuração de um inventário usando o console do S3 (p. 610)

Visão geral
O inventário do Amazon S3 ajuda você a gerenciar seu armazenamento, criando listas dos objetos em
um bucket do S3 em uma programação definida. Você pode configurar várias listas de inventário para
um bucket. As listas de inventários são publicadas em arquivos CSV, ORC ou Parquet em um bucket de
destino.

A maneira mais fácil de configurar um inventário é usando o Console de Gerenciamento da AWS, mas
também é possível usar a API REST, a CLI da AWS ou os AWS SDKs. O console realiza a primeira etapa
do procedimento a seguir para você: adicionar uma política de bucket ao bucket de destino.

Como configurar um inventário do Amazon S3 para um bucket do S3

1. Adicionar uma política do bucket para o bucket de destino.

É necessário criar uma política de bucket no bucket de destino para conceder permissões ao Amazon
S3 para gravar objetos no bucket no local definido. Para ver um exemplo de política, consulte Conceder
permissões para inventário e análise do Amazon S3 (p. 386).
2. Configurar um inventário para relacionar objetos em um bucket de origem e publicar a lista em um
bucket de destino.

Ao configurar uma lista de inventários para um bucket de origem, você especifica o bucket de destino no
qual deseja que a lista seja armazenada e se quer gerar a lista diária ou semanalmente. Você também
pode configurar quais metadados de objeto serão incluídos e se serão relacionadas todas as versões
dos objetos ou apenas as versões atuais.

É possível especificar que o arquivo de lista de inventários seja criptografado usando uma chave
gerenciada do Amazon S3 (SSE-S3) ou uma chave mestra de cliente gerenciada pelo cliente (CMK) do
AWS Key Management Service (AWS KMS). Para obter mais informações sobre SSE-S3 e SSE-KMS,
consulte Proteção de dados usando criptografia no lado do servidor (p. 195). Se você pretende usar a
criptografia SSE-KMS, consulte a Etapa 3.
• Para obter informações sobre como usar o console para configurar uma lista de inventário, consulte
Configuração do inventário do Amazon S3 (p. 607).
• Para usar a API do Amazon S3 para configurar uma lista de inventários, use a API REST da
configuração de inventário de PUT Bucket ou o equivalente da CLI da AWS ou dos AWS SDKs.
3. Para criptografar o arquivo de lista de inventários com SSE-KMS, conceda permissão para que o
Amazon S3 use a CMK armazenada no AWS KMS.

É possível configurar a criptografia do arquivo de lista de inventários usando o Console de


Gerenciamento da AWS, a API REST, a CLI da AWS ou os AWS SDKs. Independentemente do que
você escolher, é necessário conceder permissão para que o Amazon S3 use a CMK gerenciada
pelo cliente do AWS KMS para criptografar o arquivo de inventário. Conceda permissão ao Amazon

Versão da API 2006-03-01


608
Amazon Simple Storage Service Guia do usuário
Configuração do inventário do Amazon S3

S3 modificando a política de chave para a CMK gerenciada pelo cliente que você deseja usar para
criptografar o arquivo de inventário. Para mais informações, consulte a próxima sessão, Conceder
permissão para que o Amazon S3 use a CMK do AWS KMS para criptografia (p. 609).

Criação de uma política de bucket de destino


O Amazon S3 cria uma política de bucket no bucket de destino que concede ao Amazon S3 permissão
para gravação. Isso permite que o Amazon S3 grave dados para os relatórios de inventário no bucket.

Se ocorrer um erro quando você tentar criar a política do bucket, você receberá instruções sobre como
corrigi-lo. Por exemplo, se você escolher um bucket de destino em outra conta da AWS e não tiver as
permissões para ler e gravar na política do bucket, você verá uma mensagem de erro.

Nesse caso, o proprietário do bucket de destino deve adicionar a política do bucket exibida ao bucket de
destino. Se a política não for adicionada ao bucket de destino, você não terá um relatório de inventário,
pois o Amazon S3 não tem permissão para gravar no bucket de destino. Se o bucket de origem pertencer
a uma conta diferente da conta do usuário atual, o ID de conta correto do bucket de origem deverá ser
substituído na política.

Conceder permissão para que o Amazon S3 use a CMK do AWS


KMS para criptografia
Para conceder ao Amazon S3 permissão para criptografar usando uma chave mestra de cliente (CMK)
gerenciada pelo cliente do AWS Key Management Service (AWS KMS), é necessário usar uma política de
chaves. Para atualizar sua política de chaves para que você possa usar uma CMK gerenciada pelo cliente
do AWS KMS, siga as etapas abaixo.

Como conceder permissões de criptografia usando a CMK do AWS KMS

1. Usando a conta da AWS que tem a CMK gerenciada pelo cliente, faça login no Console de
Gerenciamento da AWS.
2. Abra o console do AWS KMS em https://console.aws.amazon.com/kms.
3. Para alterar a região da AWS, use o seletor de região no canto superior direito da página.
4. No painel de navegação esquerdo, escolha Customer managed keys (Chaves gerenciadas pelo
cliente).
5. Em Customer managed keys (Chaves gerenciadas pelo cliente), escolha a CMK gerenciada pelo
cliente que você deseja usar para criptografar o arquivo de inventário.
6. Em Key policy (Política de chave), escolha Switch to policy view (Alternar para visualização de
política).
7. Para atualizar a política de chave, escolha Edit (Editar).
8. Em Edit key policy (Editar política de chave), adicione a seguinte política de chave à existente.

{
"Sid": "Allow Amazon S3 use of the CMK",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey"
],
"Resource": "*"
}

9. Selecione Save changes (Salvar alterações).

Versão da API 2006-03-01


609
Amazon Simple Storage Service Guia do usuário
Configuração do inventário do Amazon S3

Para obter mais informações sobre como criar CMKs gerenciadas pelo cliente do AWS KMS e usar
políticas de chave, consulte os seguintes links no Guia do desenvolvedor do AWS Key Management
Service:

• Conceitos básicos
• Usar políticas de chaves no AWS KMS

Configuração de um inventário usando o console do S3


Use estas instruções para configurar o inventário usando o console do S3.
Note

O primeiro relatório pode demorar até 48 horas para ser entregue.

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, selecione o nome do bucket para o qual deseja configurar o inventário do Amazon
S3.
3. Escolha Management.
4. Em Inventory configurations (Configurações de inventário), escolha Create inventory configuration
(Criar configuração de inventário).
5. Em Inventory configuration name (Nome da configuração do inventário), insira um nome.
6. Defina o Inventory scope (Escopo do inventário):

• Insira um prefixo opcional.


• Escolha versões de objeto: Current versions only (Somente versões atuais) ou Include all versions
(Incluir todas as versões).
7. Em Report details (Detalhes do relatório), escolha o local da conta da AWS em que deseja salvar os
relatórios: This account (Esta conta) ou A different account (Uma conta diferente).
8. Em Destination (Destino), selecione o bucket de destino no qual deseja salvar os relatórios.

O bucket de destino deve estar na mesma região da AWS que o bucket para o qual você está
configurando o inventário. O bucket de destino pode estar em uma conta da AWS diferente. No campo
de bucket Destination (Destino), você verá Destination bucket permission (Permissão do bucket de
destino) que é adicionada à política de bucket de destino para permitir que o Amazon S3 coloque
dados nesse bucket. Para obter mais informações, consulte Criação de uma política de bucket de
destino (p. 609).
9. Em Frequency (Frequência), escolha a frequência com que o relatório será gerado: Daily (Diário) ou
Weekly (Semanal).
10. Escolha o Output format (Formato de saída) para o relatório:

• CSV
• Apache ORC
• Apache Parquet
11. Em Status, escolha Enable (Ativar) ou Disable (Desabilitar).
12. Para usar a criptografia do lado do servidor, em Server-side encryption (Criptografia do lado do
servidor), siga estas etapas:

a. Escolha Enable (Habilitar).


b. Em Encryption key type (Tipo de chave de criptografia), escolha Amazon S3 key (SSE-S3) (chave
do Amazon S3 (SSE-S3)) ou AWS Key Management Service key (SSE-KMS) Chave do AWS Key
Management Service (SSE-KMS).

Versão da API 2006-03-01


610
Amazon Simple Storage Service Guia do usuário
Configuração do inventário do Amazon S3

A criptografia do lado do servidor do Amazon S3 usa o Advanced Encryption Standard de 256


bits (AES-256). Para obter mais informações, consulte Proteção de dados usando criptografia no
lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) (p. 213). Para
obter mais informações sobre SSE-KMS, consulteProteção de dados usando criptografia do lado
do servidor com CMKs armazenadas no AWS Key Management Service (SSE-KMS) (p. 195).
c. Para usar uma CMK do AWS KMS, escolha uma das seguintes opções:

• AWS managed key (aws/s3) (Chave gerenciada pela AWS (aws/s3))


• Choose from your KMS master keys (Escolha entre suas chaves-mestre do KMS), e selecione
sua KMS master key (chave mestra do KMS).
• Enter KMS master key ARN (Insira o ARN da chave mestra do KMS), e insira o ARN da sua
chave do AWS KMS.

Note

Para criptografar o arquivo da lista de inventários com SSE-KMS, você deve conceder
uma permissão ao Amazon S3 para usar a AWS KMS CMK. Para obter instruções,
consulte Conceder permissão para o Amazon S3 criptografar usando a CMK do AWS
KMS (p. 609) .
13. Em Additional fields (Campos adicionais), selecione um ou mais dos seguintes campos para adicionar
ao relatório de inventário:

• Size (Tamanho) – o tamanho do objeto em bytes.


• Last modified date (Data da última modificação) – a data de criação do objeto ou data da última
modificação, a mais atual entre as duas.
• Storage class (Classe de armazenamento) – a classe de armazenamento usada para armazenar o
objeto.
• ETag – a tag de entidade é um hash do objeto. A ETag reflete as alterações somente nos conteúdos
de um objeto e não em seus metadados. A ETag pode ou não ser um resumo MD5 dos dados do
objeto. Tudo depende de como o objeto foi criado e de como está criptografado.
• Multipart upload – especifica se o objeto foi carregado como um multipart upload. Para obter mais
informações, consulte Carregar e copiar objetos usando multipart upload (p. 80).
• Replication status (Status da replicação) – o status de replicação do objeto. Para obter mais
informações, consulte Uso do console do S3 (p. 637).
• Encryption status (Status da criptografia) – a criptografia do lado do servidor usada para criptografar
o objeto. Para obter mais informações, consulte Proteção de dados usando criptografia no lado do
servidor (p. 195).
• S3 Object lock configurations (Configurações do Bloqueio de objetos do S3) – o status do bloqueio
de objetos, incluindo as seguintes configurações:
• Retention mode (Modo de retenção) – O nível de proteção aplicado ao objeto, Governance
(Governança) ou Compliance (Conformidade).
• Retain until date (Reter até uma data específica) – a data até a qual o objeto bloqueado não pode
ser excluído.
• Legal hold status (Status da retenção legal) – o status de retenção legal do objeto bloqueado.

Para obter mais informações sobre bloqueio de objetos do S3, consulte Como o bloquei de objetos
do S3 funciona (p. 555).

Para obter mais informações sobre o conteúdo de um relatório de inventário, consulte Lista de
inventários do Amazon S3 (p. 606).
14. Escolha Create (Criar).
Versão da API 2006-03-01
611
Amazon Simple Storage Service Guia do usuário
Configuração de notificações para conclusão de inventário

Configuração de notificações de eventos do Amazon


S3 para conclusão de inventário
É possível configurar uma notificação de evento do Amazon S3 para receber um aviso quando o arquivo
de soma de verificação do manifesto for criado, o que indica que uma lista de inventários foi adicionada ao
bucket de destino. O manifesto é uma lista atualizada de todas as listas de inventário no local de destino.

O Amazon S3 pode publicar eventos em um tópico do Amazon Simple Notification Service (Amazon SNS),
em uma fila do Amazon Simple Queue Service (Amazon SQS) ou em uma função do AWS Lambda. Para
obter mais informações, consulte Notificações de eventos do Amazon S3 (p. 869).

A configuração de notificação a seguir define que todos os arquivos manifest.checksum recém-


adicionados ao bucket de destino sejam processados pela cloud-function-list-write do AWS
Lambda.

<NotificationConfiguration>
<QueueConfiguration>
<Id>1</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>destination-prefix/source-bucket</Value>
</FilterRule>
<FilterRule>
<Name>suffix</Name>
<Value>checksum</Value>
</FilterRule>
</S3Key>
</Filter>
<Cloudcode>arn:aws:lambda:us-west-2:222233334444:cloud-function-list-write</Cloudcode>
<Event>s3:ObjectCreated:*</Event>
</QueueConfiguration>
</NotificationConfiguration>

Para obter mais informações, consulte Usar o AWS Lambda com o Amazon S3 no Guia do desenvolvedor
do AWS Lambda.

Localização de lista de inventário


Quando uma lista de inventários é publicada, os arquivos manifestos são publicados no seguinte local no
bucket de destino.

destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json
destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.checksum
destination-prefix/source-bucket/config-ID/hive/dt=YYYY-MM-DD-HH-MM/symlink.txt

• prefixo de destino é o prefixo (nome de chave de objeto) definido na configuração de inventário,


que pode ser usado para agrupar todos os arquivos de lista de inventários em um local comum no
bucket de destino.
• bucket de origem é o bucket de origem ao qual a lista de inventários se refere. Ele é adicionado para
evitar colisões quando vários relatórios do inventário de diferentes buckets de origem são enviados ao
mesmo bucket de destino.

Versão da API 2006-03-01


612
Amazon Simple Storage Service Guia do usuário
Localização de inventário

• O ID de config é adicionado para evitar colisões com vários relatórios do inventário do mesmo
bucket de origem que são enviados ao mesmo bucket de destino. O config-ID vem da configuração
do relatório de inventário e é o nome do relatório definido na configuração.
• YYYY-MM-DDTHH-MMZ é o time stamp que consiste na hora de início e na data em que o relatório de
inventário começa a fazer a varredura no bucket. Por exemplo, 2016-11-06T21-32Z.
• manifest.json é o arquivo manifesto.
• manifest.checksum é o MD5 do conteúdo do arquivo manifest.json.
• symlink.txt é o arquivo manifesto compatível com o Apache Hive.

As listas de inventários são publicadas diária ou semanalmente no seguinte local do bucket de destino.

destination-prefix/source-bucket/config-ID/example-file-name.csv.gz
...
destination-prefix/source-bucket/config-ID/example-file-name-1.csv.gz

• destination-prefix é o prefixo (nome da chave de objeto) definido na configuração de inventário.


Ele pode ser usado para agrupar todos os arquivos da lista de inventários em um local comum no bucket
de destino.
• bucket de origem é o bucket de origem ao qual a lista de inventários se refere. Ele é adicionado para
evitar colisões quando vários relatórios do inventário de diferentes buckets de origem são enviados ao
mesmo bucket de destino.
• example-file-name.csv.gz é um dos arquivos de inventário em formato CSV. Os nomes de
inventário ORC terminam com a extensão do nome do arquivo .orc, e os nomes de inventário do
Parquet terminam com a extensão de nome de arquivo .parquet.

Manifesto de inventário
Os arquivos manifestos manifest.json e symlink.txt descrevem onde os arquivos de inventário
estão localizados. Sempre que uma nova lista de inventários é entregue, um novo conjunto de arquivos
manifestos a acompanha. Esses arquivos podem sobrescrever uns aos outros e, no versionamento, os
buckets habilitados criarão uma nova versão dos arquivos de manifesto.

Cada manifesto contido no arquivo manifest.json fornece metadados e outras informações básicas
sobre um inventário. Essas informações incluem:

• Nome do bucket de origem


• Nome do bucket de destino
• Versão do inventário
• Time stamp de criação no formato de data de referência (epoch) que consiste na hora de início e na data
em que o relatório de inventário começa a fazer a varredura no bucket
• Formato e esquema de arquivos de inventário
• Lista dos arquivos de inventário que estão no bucket de destino

Sempre que um arquivo manifest.json é gravado, ele é acompanhado por um arquivo


manifest.checksum, que representa o MD5 do conteúdo do arquivo manifest.json.

Example Manifesto de inventário em um arquivo manifest.json

Os exemplos a seguir mostram um manifesto de inventário em um arquivo manifest.json para


inventários formatados CSV, ORC e Parquet.

Versão da API 2006-03-01


613
Amazon Simple Storage Service Guia do usuário
Localização de inventário

CSV

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em


formato CSV.

{
"sourceBucket": "example-source-bucket",
"destinationBucket": "arn:aws:s3:::example-inventory-destination-bucket",
"version": "2016-11-30",
"creationTimestamp" : "1514944800000",
"fileFormat": "CSV",
"fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker,
Size, LastModifiedDate, ETag, StorageClass, IsMultipartUploaded,
ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode,
ObjectLockLegalHoldStatus",
"files": [
{
"key": "Inventory/example-source-bucket/2016-11-06T21-32Z/
files/939c6d46-85a9-4ba8-87bd-9db705a579ce.csv.gz",
"size": 2147483647,
"MD5checksum": "f11166069f1990abeb9c97ace9cdfabc"
}
]
}

ORC

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em


formato ORC.

{
"sourceBucket": "example-source-bucket",
"destinationBucket": "arn:aws:s3:::example-destination-bucket",
"version": "2016-11-30",
"creationTimestamp" : "1514944800000",
"fileFormat": "ORC",
"fileSchema":
"struct<bucket:string,key:string,version_id:string,is_latest:boolean,is_delete_marker:boolean,size
"files": [
{
"key": "inventory/example-source-bucket/data/
d794c570-95bb-4271-9128-26023c8b4900.orc",
"size": 56291,
"MD5checksum": "5925f4e78e1695c2d020b9f6eexample"
}
]
}

Parquet

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em


formato Parquet.

{
"sourceBucket": "example-source-bucket",
"destinationBucket": "arn:aws:s3:::example-destination-bucket",
"version": "2016-11-30",
"creationTimestamp" : "1514944800000",
"fileFormat": "Parquet",
"fileSchema": "message s3.inventory { required binary bucket (UTF8); required
binary key (UTF8); optional binary version_id (UTF8); optional boolean is_latest;

Versão da API 2006-03-01


614
Amazon Simple Storage Service Guia do usuário
Consultar o inventário com o Athena

optional boolean is_delete_marker; optional int64 size; optional int64


last_modified_date (TIMESTAMP_MILLIS); optional binary e_tag (UTF8); optional
binary storage_class (UTF8); optional boolean is_multipart_uploaded; optional binary
replication_status (UTF8); optional binary encryption_status (UTF8);}"
"files": [
{
"key": "inventory/example-source-bucket/data/
d754c470-85bb-4255-9218-47023c8b4910.parquet",
"size": 56291,
"MD5checksum": "5825f2e18e1695c2d030b9f6eexample"
}
]
}

O symlink.txt é um arquivo manifesto compatível com o Apache Hive pelo qual o Hive detecta
automaticamente arquivos de inventário e seus arquivos de dados associados. O manifesto compatível
com o Hive funciona com os serviços compatíveis com o Athena e o Amazon Redshift Spectrum. Ele
também funciona com aplicativos compatíveis com o Hive, como Presto, Apache Hive, Apache Spark e
muitos outros.
Important

O arquivo manifesto symlink.txt compatível com Apache Hive atualmente não funciona com o
AWS Glue.
A leitura do symlink.txt com o Apache Hive e o Apache Spark não é compatível com arquivos
de inventário nos formatos ORC e Parquet.

Consulta do inventário do Amazon S3 com o Amazon


Athena
É possível consultar o inventário do Amazon S3 usando o SQL padrão ao usar o Amazon Athena em todas
as regiões onde o Athena esteja disponível. Para verificar a disponibilidade de regiões da AWS, consulte a
Tabela de regiões da AWS.

O Athena pode consultar arquivos de inventário do Amazon S3 nos formatos ORC, Parquet ou CSV.
Quando você usar o Athena para consultar inventários, use arquivos de inventário no formato ORC ou
Parquet. Os formatos ORC e Parquet têm um desempenho de consulta mais rápido e custos mais baixos
de consulta. ORC e Parquet são formatos de arquivo colunares do tipo autodescritivo projetados para o
Apache Hadoop. O formato colunar permite que o leitor leia, descompacte e processe apenas as colunas
necessárias para a consulta atual. Os formatos ORC e Parquet para inventário do Amazon S3 estão
disponíveis em todas as regiões da AWS.

Como começar a usar o Athena para consultar o inventário do Amazon S3

1. Crie uma tabela do Athena. Para obter informações sobre como criar uma tabela, consulte Criar
tabelas no Amazon Athena no Guia do usuário do Amazon Athena.

O exemplo de consulta a seguir inclui todos os campos opcionais no relatório de inventário no formato
ORC. Descarte todos os campos opcionais que você não selecionou no inventário para que a consulta
corresponda aos campos escolhidos. Além disso, use o nome do seu bucket e a localização. A
localização indica o caminho de destino do inventário; por exemplo, s3://destination-prefix/
source-bucket/config-ID/hive/.

CREATE EXTERNAL TABLE your_table_name(


`bucket` string,
key string,
version_id string,

Versão da API 2006-03-01


615
Amazon Simple Storage Service Guia do usuário
Consultar o inventário com o Athena

is_latest boolean,
is_delete_marker boolean,
size bigint,
last_modified_date string,
e_tag string,
storage_class string,
is_multipart_uploaded boolean,
replication_status string,
encryption_status string,
intelligent_tiering_tier string,
object_lock_retain_until_date string,
object_lock_mode string,
object_lock_legal_hold_status string
)
PARTITIONED BY (dt string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION 's3://destination-prefix/source-bucket/config-ID/hive/';

Ao usar o Athena para consultar um relatório de inventário no formato Parquet, use a instrução
Parquet SerDe a seguir em vez de ORC SerDe na instrução ROW FORMAT SERDE.

ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'

Ao usar o Athena para consultar um relatório de inventário no formato CSV, use o CSV SerDe a seguir
em vez do ORC SerDe na instrução ROW FORMAT SERDE.

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

2. Para adicionar novas listas de inventários à sua tabela, use o comando MSCK REPAIR TABLE a
seguir.

MSCK REPAIR TABLE your-table-name;

3. Depois de executar as duas primeiras etapas, você pode executar consultas ad-hoc no inventário,
como mostrado no exemplo a seguir.

# Get list of latest inventory report dates available


SELECT DISTINCT dt FROM your-table-name ORDER BY 1 DESC limit 10;

# Get encryption status for a provided report date.


SELECT encryption_status, count(*) FROM your-table-name WHERE dt = 'YYYY-MM-DD-HH-MM'
GROUP BY encryption_status;

# Get encryption status for report dates in the provided range.


SELECT dt, encryption_status, count(*) FROM your-table-name
WHERE dt > 'YYYY-MM-DD-HH-MM' AND dt < 'YYYY-MM-DD-HH-MM' GROUP BY dt,
encryption_status;

Para obter mais informações sobre como usar o Athena, consulte o Guia do usuário do Amazon Athena.

Veja a seguir as operações REST usadas para o inventário do Amazon S3

• Inventário do bucket DELETE


• Inventário do bucket GET
• Inventário do bucket de lista
• Inventário do PUT Bucket

Versão da API 2006-03-01


616
Amazon Simple Storage Service Guia do usuário
Replicação de objetos

Replicação de objetos
O Replication permite a cópia automática e assíncrona de objetos nos buckets do Amazon S3. Os buckets
que são configurados para a replicação de objetos podem pertencer à mesma conta da AWS ou a
diferentes contas. O objeto pode ser replicado em um único bucket de destino ou em vários buckets de
destino. Os buckets de destino podem estar em diferentes regiões da AWS ou na mesma região que o
bucket de origem.

Por padrão, a replicação oferece suporte somente à cópia de novos objetos do Amazon S3 depois que
ela estiver habilitada. Você pode usar a replicação para copiar objetos existentes e cloná-los para um
bucket diferente, mas para isso, entre em contato com o AWS Support Center. Ao entrar em contato com o
suporte, forneça à sua ocorrência do AWS Support o assunto “Replicação para objetos existentes” e inclua
as seguintes informações:

• Bucket de origem
• Buckets ou buckets de destino
• Volume estimado de armazenamento a ser replicado (em terabytes)
• Contagem estimada de objetos de armazenamento a ser replicada

Para habilitar a replicação de objetos, adicione uma configuração de replicação ao bucket de origem. A
configuração mínima deve fornecer o seguinte:

• O bucket de destino ou buckets nos quais você quer que o Amazon S3 replique os objetos
• Uma função do AWS Identity and Access Management (IAM) que o Amazon S3 pode assumir para
replicar objetos em seu nome

Estão disponíveis opções de configuração adicionais. Para obter mais informações, consulte
Configurações de replicação adicionais (p. 663).

Tópicos
• Por que usar a replicação (p. 617)
• Quando usar a replicação entre regiões (p. 618)
• Quando usar Replicação na mesma região (p. 618)
• Requisitos para replicação (p. 618)
• O que o Amazon S3 replica? (p. 619)
• Configuração da replicação (p. 622)
• Orientações: Configuração da replicação (p. 636)
• Configurações de replicação adicionais (p. 663)
• Obtenção de informações sobre o status da replicação (p. 678)
• Solução de problemas de replicação (p. 680)
• Considerações adicionais (p. 681)

Por que usar a replicação


A replicação pode ajudar você a fazer o seguinte:

• Replicar objetos enquanto retém metadados: você pode usar a replicação para fazer cópias dos objetos
que retêm todos os metadados, como o tempo de criação do objeto original e as IDs de versão. Esse
recurso é importante se você precisar garantir que sua réplica seja idêntica ao objeto de origem.

Versão da API 2006-03-01


617
Amazon Simple Storage Service Guia do usuário
Quando usar a replicação entre regiões

• Replicar objetos em diferentes classes de armazenamento: você pode usar a replicação para colocar
objetos diretamente em S3 Glacier, S3 Glacier Deep Archive ou em outra classe de armazenamento no
bucket de destino. Você também pode replicar seus dados para a mesma classe de armazenamento
e usar políticas de ciclo de vida no bucket de destino para mover seus objetos para uma classe de
armazenamento "mais fria", conforme se aproximarem do fim da vida útil.
• Manter cópias de objetos em propriedades diferentes: independentemente de quem é o proprietário do
objeto de origem, você pode orientar o Amazon S3 a alterar a propriedade sobre a réplica para a conta
da AWS que tem o bucket de destino. Isso se chama opção de substituição do proprietário. Você pode
usar esta opção para restringir acesso às replicas do objeto.
• Mantenha objetos armazenados em várias regiões da AWS — você pode definir vários buckets de
destino em diferentes regiões da AWS para garantir diferenças geográficas onde seus dados são
mantidos. Isso pode ser útil para atender a certos requisitos de conformidade.
• Replicar objetos em 15 minutos: você pode usar o Controle do tempo de replicação do S3 (S3 RTC) para
replicar seus dados na mesma região da AWS ou em diferentes regiões em um período previsível. O S3
RTC replica 99,99 por cento dos novos objetos armazenados no Amazon S3 em 15 minutos (respaldado
por um acordo de nível de serviço). Para obter mais informações, consulte the section called “Uso do
Controle do tempo de replicação do S3” (p. 665).

Quando usar a replicação entre regiões


A replicação entre regiões (CRR) do S3 é usada para copiar objetos entre buckets do Amazon S3 em
regiões diferentes da AWS. As tags podem ajudar a fazer o seguinte:

• Atender aos requisitos de conformidade: embora o Amazon S3 armazene seus dados em diversas zonas
de disponibilidade geograficamente distantes por padrão, requisitos de conformidade podem ditar que
você armazene os dados em distâncias ainda maiores. A replicação entre regiões permite que você
replique dados entre regiões da AWS distantes para satisfazer esses requisitos.
• Minimizar a latência : se seus clientes estiverem em duas localizações geográficas distintas, é possível
minimizar a latência no acesso de objetos ao manter cópias deles nas regiões da AWS geograficamente
mais próximas dos usuários.
• Aumentar a eficiência operacional : se você computar clusters em duas regiões da AWS diferentes que
analisem o mesmo grupo de objetos, você pode optar por manter cópias do objeto nessas regiões.

Quando usar Replicação na mesma região


A replicação para a mesma região (SRR) é usada para copiar objetos entre buckets do Amazon S3 na
mesma região da AWS. A SRR pode ajudar a fazer o seguinte:

• Agregar logs em um único bucket: se você armazenar logs em vários buckets ou em várias contas, será
possível replicar facilmente os logs em um único bucket na região. Isso permite o processamento mais
simples de logs em uma única localização.
• Configurar replicação ao vivo entre contas de produção e teste: se você ou seus clientes tiverem contas
de produção e de teste que usam os mesmos dados, será possível replicar objetos entre essas várias
contas, mantendo os metadados do objeto.
• Cumprir as leis de soberania de dados: você pode ser solicitado a armazenar várias cópias dos seus
dados em contas separadas da AWS em uma determinada região. A replicação na mesma região
pode ajudar a replicar automaticamente dados críticos quando os regulamentos de conformidade não
permitirem que os dados saiam do país.

Requisitos para replicação


A replicação exige o seguinte:

Versão da API 2006-03-01


618
Amazon Simple Storage Service Guia do usuário
O que é replicado?

• O proprietário do bucket de origem deve ter as regiões da AWS de origem e de destino habilitadas para
a conta. O proprietário do bucket de destino deve ter a região de destino habilitada para a conta.

Para obter mais informações sobre como ativar ou desativar uma região da AWS, consulte Endpoints de
serviço da AWS na Referência geral da AWS.
• Tanto o bucket de origem quanto o de destino devem ter o versionamento habilitado. Para obter
mais informações sobre controle de versão, consulte Usando o controle de versão em buckets do
S3 (p. 516).
• O Amazon S3 deve ter permissões para replicar objetos do bucket de origem para o bucket de destino
ou buckets em seu nome.
• Se o proprietário do bucket de origem não for proprietário do objeto no bucket, o proprietário do objeto
precisará conceder ao proprietário do bucket as permissões READ e READ_ACP com a lista de controle
de acesso (ACL) do objeto. Para obter mais informações, consulte Visão geral da lista de controle de
acesso (ACL) (p. 440).
• Se o bucket de origem tiver o Bloqueio de objetos do S3 habilitado, o bucket de destino também deverá
ter o Bloqueio de objetos do S3 habilitado.

Para obter mais informações, consulte Usar o S3 Object Lock (p. 554). Para habilitar a replicação em
um bucket com Bloqueio de objetos habilitado, entre em contato com o Suporte da AWS.

Para obter mais informações, consulte Configuração da replicação (p. 622).

Se você estiver definindo a configuração de replicação em um cenário entre contas (onde os buckets de
origem e de destino pertencem a diferentes contas da AWS), o seguinte requisito adicional se aplicará:

• O proprietário dos buckets de destino precisa conceder ao proprietário do bucket de origem permissões
para replicar objetos com uma política de bucket. Para obter mais informações, consulte Conceder
permissões quando os buckets de origem e de destino forem de propriedade de contas diferentes da
AWS (p. 635).
• O bucket de destino não pode ser configurado como um bucket de Pagamento pelo solicitante.
Para obter mais informações, consulte Configuração de buckets de Pagamento pelo solicitante para
transferências de armazenamento e uso (p. 56).

O que o Amazon S3 replica?


O Amazon S3 replica somente itens específicos nos buckets que estão configurados para replicação.

O que é replicado?
Por padrão, o Amazon S3 replica o seguinte:

• Objetos criados depois de adicionar uma configuração de replicação.


• Objetos não criptografados.
• Objetos criptografados em repouso sob chaves gerenciadas pelo Amazon S3 (SSE-S3) ou chaves
mestras do cliente (CMKs) armazenadas no AWS Key Management Service (SSE-KMS).

Para replicar objetos criptografados com CMKs armazenadas no AWS KMS, é necessário habilitar
explicitamente a opção. A cópia replicada do objeto é criptografada usando o mesmo tipo de
criptografia do lado do servidor que foi usada para o objeto de origem. Para obter mais informações
sobre criptografia no lado do servidor, consulte Proteção de dados usando criptografia no lado do
servidor (p. 195).
• Metadados de objeto dos objetos de origem para as réplicas. Para obter informações sobre como
replicar metadados das réplicas para os objetos de origem, consulte Replicação de alterações de
metadados com sincronização de modificação de réplica do Amazon S3 (p. 669).

Versão da API 2006-03-01


619
Amazon Simple Storage Service Guia do usuário
O que é replicado?

• Somente os objetos no bucket de origem para os quais o proprietário do bucket tenha permissões para
ler objetos e listas de controle de acesso (ACLs).

Para obter mais informações sobre propriedade de recurso, consulte Propriedade de bucket e objeto do
Amazon S3 (p. 253).
• A ACL do objeto é atualizada, a menos que você oriente o Amazon S3 a alterar a propriedade da réplica
quando os buckets de origem e de destino não forem de propriedade das mesmas contas.

Para obter mais informações, consulte Alterar o proprietário da réplica (p. 670).

Pode levar um tempo até o Amazon S3 sincronizar as duas ACLs. Isso aplica-se apenas a objetos
criados depois que você adiciona uma configuração de replicação ao bucket.
• Tags de objeto, se houver.
• Informações de retenção de bloqueio de objetos do S3, se houver.

Quando o Amazon S3 replica objetos que tenham informações de retenção aplicadas, ele aplica esse
mesmo controles de retenção à suas réplicas, substituindo o período de retenção padrão configurado
nos buckets de destino. Se você não tiver controles de retenção aplicados aos objetos em seu bucket de
origem e replicá-los em buckets de destino que tenham um período de retenção definido, o período de
retenção padrão do bucket de destino será aplicado às réplicas de objeto. Para obter mais informações,
consulte Usar o S3 Object Lock (p. 554).

Como a exclusão de operações afeta a replicação


Se você excluir um objeto do bucket de origem, as seguintes ações ocorrerão por padrão:

• Se você fizer uma solicitação DELETE sem especificar um ID de versão de objeto, o Amazon S3
adicionará um marcador de exclusão. O Amazon S3 lida com o marcador de exclusão da seguinte
forma:
• Se estiver usando a versão mais recente da configuração de replicação (ou seja, se você especificar
o elemento Filter em uma regra de configuração da replicação), o Amazon S3 não replicará o
marcador de exclusão, por padrão. No entanto, você pode adicionar replicação de marcadores de
exclusão a regras não baseadas em tags, para obter mais informações, consulte Replicação de
marcadores de exclusão entre intervalos (p. 668).
• Se você não especificar o elemento Filter, o Amazon S3 assumirá que a configuração de replicação
é a versão V1 e replicará marcadores de exclusão resultantes de ações do usuário. No entanto, se o
Amazon S3 excluir um objeto devido a uma ação de ciclo de vida, o marcador de exclusão não será
replicado para os buckets de destino.
• Se você especificar um ID da versão do objeto a ser excluído na solicitação DELETE, o Amazon S3
excluirá essa versão do objeto no bucket de origem. Porém, ele não replica a exclusão no bucket de
destino. Em outras palavras: ele não exclui a mesma versão do objeto dos buckets de destino. Isso
protege os dados contra exclusões mal-intencionadas.

O que não é replicado?


Por padrão, o Amazon S3 não replica o seguinte:

• Objetos que existiam antes de você adicionar a configuração de replicação ao bucket. Em outras
palavras: o Amazon S3 não replica os objetos retroativamente.
• Objetos no bucket de origem que são réplicas criadas por outra regra de replicação. Por exemplo, se
você configurar a replicação em que o bucket A é a origem e o bucket B é o destino. Agora, suponha
que você adicione outra configuração da replicação em que o bucket B é a origem e o bucket C é
o destino. Neste caso, os objetos no bucket B que são réplicas de objetos no bucket A não serão
replicados para o bucket C.

Versão da API 2006-03-01


620
Amazon Simple Storage Service Guia do usuário
O que é replicado?

• Objetos no bucket de origem que já foram replicados para um destino diferente. Por exemplo, se você
alterar o bucket de destino em uma configuração de replicação existente, o Amazon S3 não replicará o
objeto novamente.
• Objetos criados com criptografia no lado do servidor usando chaves de criptografia fornecidas pelo
cliente (SSE-C), mas isso pode ser ativado, consulte Proteção de dados usando criptografia no lado do
servidor (p. 195).
• Objetos armazenados na classe de armazenamento S3 Glacier ou S3 Glacier Deep Archive.

Para saber mais sobre o serviço Amazon S3 Glacier, consulte o Guia do desenvolvedor do Amazon S3
Glacier.
• Objetos no bucket de origem para os quais o proprietário do bucket não tenha permissão (quando ele
não for o proprietário do objeto).

Para obter informações sobre como o proprietário de um objeto pode conceder permissões ao
proprietário do bucket, consulte Conceder permissões entre contas para fazer upload de objetos
garantindo que o proprietário do bucket tenha controle total (p. 385).
• Atualizações nos sub-recursos no nível do bucket.

Por exemplo, se você alterar a configuração do ciclo de vida ou adicionar uma configuração de
notificação ao bucket de origem, essas alterações não serão aplicadas ao bucket de destino. Isso
permite termos diferentes configurações nos buckets de origem e de destino.
• Ações realizadas pela configuração do ciclo de vida.

Por exemplo, se a configuração de ciclo de vida estiver habilitada apenas no seu bucket de origem,
o Amazon S3 criará marcadores de exclusão para objetos expirados, mas não replicará esses
marcadores. Caso queira que as mesmas configurações de ciclo de vida sejam aplicadas ao bucket
de origem e de destino, habilite a mesma configuração de ciclo de vida em ambos. Para obter
mais informações sobre a configuração do ciclo de vida, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).
Note

Se estiver usando a versão mais recente da configuração de replicação (o XML especifica


Filter como filho de Rule), não serão replicados os marcadores de exclusão criados por
ação do usuário ou pelo Amazon S3 como parte da ação do ciclo de vida. No entanto, se
você estiver usando uma versão anterior da configuração de replicação (o XML especifica
Prefix como filho de Rule), os marcadores de exclusão resultantes das ações do usuário são
replicados. Para obter mais informações, consulte Compatibilidade retroativa (p. 632).

Replicar objetos existentes


Para habilitar a replicação de objetos existentes em sua conta, é necessário entrar em contato com o AWS
Support. Para evitar que sua solicitação seja adiada, registre seu caso do AWS Support “Replicação para
objetos existentes” e inclua as seguintes informações:

• Bucket de origem
• Buckets de destino
• Volume estimado de armazenamento a ser replicado (em terabytes)
• Contagem estimada de objetos de armazenamento a ser replicada

Versão da API 2006-03-01


621
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Configuração da replicação
Para habilitar a replicação, basta adicionar uma configuração de replicação ao seu bucket de origem.
A configuração diz ao Amazon S3 para replicar objetos, conforme especificado. Na configuração de
replicação, você deve fornecer o seguinte:

• Os buckets de destino — O bucket ou os buckets nos quais você quer que o Amazon S3 replique os
objetos.
• Os objetos que você deseja replicar — você pode replicar todos os objetos no bucket de origem ou em
um subgrupo. Identifique um subgrupo fornecendo, na configuração, um prefixo do nome da chave, uma
ou mais tags de objeto ou ambos.

Por exemplo, se você configurar uma regra de replicação para replicar somente objetos com o prefixo
de nome da chave Tax/, o Amazon S3 replicará objetos com chaves como Tax/doc1 ou Tax/doc2.
Porém, ele não replica um objeto com a chave Legal/doc3. Se você especificar tanto o prefixo
quanto uma ou mais tags, o Amazon S3 replicará somente objetos com o prefixo de chaves e as tags
específicas.

Além desses requisitos mínimos, você pode escolher as seguintes opções:

• Classe de armazenamento de réplicas — Por padrão, o Amazon S3 armazena réplicas de objetos


usando a mesma classe de armazenamento que o objeto de origem. Você pode especificar uma classe
de armazenamento diferente para as réplicas.
• Propriedade da réplica — O Amazon S3 supõe que uma réplica de objeto continue pertencendo ao
proprietário do objeto de origem. Portanto, quando replica objetos, também replica a lista de controle de
acesso (ACL) a objetos correspondente. Se os buckets de origem e destino forem de propriedade de
diferentes contas da AWS, você poderá configurar a replicação para alterar o proprietário de uma réplica
para a conta da AWS que é proprietária do bucket de destino.

Você pode configurar a replicação usando a API REST, o AWS SDK, a AWS CLI ou o console do Amazon
S3.

O Amazon S3 também fornece APIs para oferecer suporte à configuração de regras de replicação. Para
obter mais informações, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage
Service:

• Replicação do PUT Bucket


• Replicação do GET Bucket
• DELETE replicação de bucket

Tópicos
• Configuração de replicação (p. 622)
• Configuração de permissões (p. 633)

Configuração de replicação
O Amazon S3 armazena uma configuração de replicação como XML. No arquivo XML de configuração de
replicação, você especifica uma função do AWS Identity and Access Management (IAM) e uma ou mais
regras.

<ReplicationConfiguration>
<Role>IAM-role-ARN</Role>
<Rule>

Versão da API 2006-03-01


622
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

...
</Rule>
<Rule>
...
</Rule>
...
</ReplicationConfiguration>

O Amazon S3 não pode replicar objetos sem sua permissão. Você concede permissões com a função
do IAM especificada na configuração de replicação. O Amazon S3 assume a função do IAM para
replicar objetos em seu nome. Primeiro você precisa fornecer as permissões necessárias à função
do IAM. Para obter mais informações sobre como gerenciar permissões, consulte Configuração de
permissões (p. 633).

Você adiciona uma regra na configuração da replicação nos seguintes cenários:

• Você quer replicar todos os objetos.


• Você quer replicar um subgrupo de objetos. Você identifica o subgrupo do objeto adicionando um filtro à
regra. No filtro, você especifica um prefixo de chaves do objeto, tags ou uma combinação de ambos, de
maneira a identificar o subgrupo de objetos aos quais a regra se aplica.

Você adiciona várias regras a uma configuração de replicação, caso deseje selecionar um subgrupo
diferente de objetos. Em cada regra, você especifica um filtro que seleciona um subgrupo diferente
de objetos. Por exemplo, você pode optar por replicar objetos com os prefixos de chaves tax/ ou
document/. Você precisaria adicionar duas regras e especificar o filtro do prefixo de chaves tax/ em
uma regra e o prefixo de chaves document/ na outra.

As seções a seguir fornecem informações adicionais.

Tópicos
• Configuração da regra básica (p. 623)
• Opcional: Especificação de um filtro (p. 624)
• Configurações adicionais de destino (p. 625)
• Exemplo de configurações de replicação (p. 628)
• Compatibilidade retroativa (p. 632)

Configuração da regra básica


Cada regra precisa incluir o status e a prioridade da regra, além de indicar se esses marcadores de
exclusão devem ser replicados ou não.

• Status indica se a regra está habilitada ou desabilitada. Se uma regra estiver desabilitada, o Amazon
S3 não executará as ações especificadas nela.
• Priority indica qual regra tem precedência sempre que duas ou mais regras de replicação entram em
conflito. O Amazon S3 tentará replicar objetos de acordo com todas as regras de replicação. No entanto,
se houver duas ou mais regras com o mesmo bucket de destino, os objetos serão replicados de acordo
com a regra com a prioridade mais alta. Quanto maior o número, maior a prioridade.
• No momento, os marcadores de exclusão não são replicados. Por isso, defina
DeleteMarkerReplication para Disabled.

Na configuração de destino, você deve fornecer o nome do bucket ou buckets onde quer que o Amazon S3
replique objetos.

O código a seguir mostra os requisitos mínimos para uma regra:

Versão da API 2006-03-01


623
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

...
<Rule>
<ID>Rule-1</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Destination>      
<Bucket>arn:aws:s3:::bucket-name</Bucket>
</Destination>
</Rule>
<Rule>
...
</Rule>
...
...

Você também pode especificar outras opções de configuração. Por exemplo: você pode optar pelo uso de
uma classe de armazenamento para réplicas de objetos diferentes da classe do objeto de origem.

Opcional: Especificação de um filtro


Para escolher um subgrupo de objetos aos quais a regra se aplique, adicione um filtro opcional. Você pode
filtrar por prefixo de chaves do objeto, tags do objeto ou uma combinação dos dois. Se você filtrar tanto por
prefixo de chaves quanto por tags de objeto, o Amazon S3 combinará os filtros usando o operador lógico
AND. Em outras palavras: a regra se aplica ao subgrupo de objetos com o prefixo de chaves específico e
as tags específicas.

Filtro baseado no prefixo da chave de objeto

Para especificar uma regra com um filtro baseado no prefixo de chaves de um objeto, use o código a
seguir. Você pode especificar apenas um prefixo.

<Rule>
...
<Filter>
<Prefix>key-prefix</Prefix>
</Filter>
...
</Rule>
...

Filtrar com base em tags de objeto

Para especificar uma regra com um filtro baseado nas tags do objeto, use o código a seguir. Você pode
especificar uma ou mais tags de objeto.

<Rule>
...
<Filter>
<And>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>

Versão da API 2006-03-01


624
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

...
</And>
</Filter>
...
</Rule>
...

Filtrar com um prefixo de chave e tags de objeto

Para especificar um filtro de regra com uma combinação de um prefixo de chaves e tags de objeto, use o
código a seguir. Você envolve esses filtros em um elemento pai AND. O Amazon S3 executa uma operação
lógica AND para combinar esses filtros. Em outras palavras: a regra se aplica ao subgrupo de objetos com
o prefixo de chaves específico e as tags específicas.

<Rule>
...
<Filter>
<And>
<Prefix>key-prefix</Prefix>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
...
</Filter>
...
</Rule>
...

Note

Se você especificar uma regra com uma tag de filtro vazia, a regra será aplicada a todos os
objetos no bucket.

Configurações adicionais de destino


Na configuração de destino, especifique o bucket onde você quer que o Amazon S3 replique objetos. Você
pode definir configurações para replicar objetos de um bucket de origem para um bucket de destino.

...
<Destination>
<Bucket>arn:aws:s3:::destination-bucket</Bucket>
</Destination>
...

Você pode adicionar as seguintes opções no elemento <Destination>.

Tópicos
• Especificar classe de armazenamento (p. 626)
• Adicionar vários buckets de destino (p. 626)
• Especificar parâmetros diferentes para cada regra de replicação com vários buckets de
destino (p. 626)
• Alterar a propriedade da réplica (p. 627)
• Ativar controle do tempo de replicação do S3 (S3 RTC) (p. 627)

Versão da API 2006-03-01


625
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

• Replicar objetos criados com criptografia no lado do servidor usando o AWS KMS (p. 628)

Especificar classe de armazenamento

Você pode especificar a classe de armazenamento para as réplicas do objeto. Por padrão, o Amazon S3
usa a classe de armazenamento do objeto de origem para criar as réplicas do objeto.

...
<Destination>
<Bucket>arn:aws:s3:::destinationbucket</Bucket>
<StorageClass>storage-class</StorageClass>
</Destination>
...

Adicionar vários buckets de destino

Você pode adicionar vários buckets de destino em uma única configuração de replicação, como segue.

...
<Rule>
<ID>Rule-1</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Enabled-or-Disabled</Status>
</DeleteMarkerReplication>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
</Destination>
</Rule>
<Rule>
<ID>Rule-2</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Enabled-or-Disabled</Status>
</DeleteMarkerReplication>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket>
</Destination>
</Rule>
...

Especificar parâmetros diferentes para cada regra de replicação com vários buckets de destino

Ao adicionar vários buckets de destino em uma única configuração de replicação, você pode especificar
parâmetros diferentes para cada regra de replicação, da seguinte forma.

...
<Rule>
<ID>Rule-1</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Metrics>
<Status>Enabled</Status>
<EventThreshold>
<Minutes>15</Minutes>
</EventThreshold>

Versão da API 2006-03-01


626
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

</Metrics>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
</Destination>
</Rule>
<Rule>
<ID>Rule-2</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Enabled</Status>
</DeleteMarkerReplication>
<Metrics>
<Status>Enabled</Status>
<EventThreshold>
<Minutes>15</Minutes>
</EventThreshold>
</Metrics>
<ReplicationTime>
<Status>Enabled</Status>
<Time>
<Minutes>15</Minutes>
</Time>
</ReplicationTime>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket>
</Destination>
</Rule>
...

Alterar a propriedade da réplica

Quando os buckets de origem e de destino não forem de propriedade da mesma conta, você poderá
alterar a propriedade da réplica para a conta da AWS que é proprietária do bucket de destino, adicionando
o elemento AccessControlTranslation:

...
<Destination>
<Bucket>arn:aws:s3:::destinationbucket</Bucket>
<Account>destination-bucket-owner-account-id</Account>
<AccessControlTranslation>
<Owner>Destination</Owner>
</AccessControlTranslation>
</Destination>
...

Se você não adicionar esse elemento à configuração de replicação, as réplicas serão de propriedade da
mesma conta da AWS proprietária do objeto de origem. Para obter mais informações, consulte Alterar o
proprietário da réplica (p. 670).

Ativar controle do tempo de replicação do S3 (S3 RTC)

Você pode habilitar o Controle do tempo de replicação do S3 (S3 RTC) na configuração de replicação.
O S3 RTC replica a maioria dos objetos em segundos e 99,99 por cento dos objetos em 15 minutos
(respaldado por um acordo de nível de serviço).
Note

Somente um valor válido de <Minutes>15</Minutes> é aceito para EventThreshold e


Time.

...

Versão da API 2006-03-01


627
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

<Destination>
<Bucket>arn:aws:s3:::destinationbucket</Bucket>
<Metrics>
<Status>Enabled</Status>
<EventThreshold>
<Minutes>15</Minutes>
</EventThreshold>
</Metrics>
<ReplicationTime>
<Status>Enabled</Status>
<Time>
<Minutes>15</Minutes>
</Time>
</ReplicationTime>
</Destination>
...

Para obter mais informações, consulte Atendimento aos requisitos de conformidade usando o
Controle do tempo de replicação do S3 (S3 RTC) (p. 665). Para obter exemplos de API, consulte
PutBucketReplication na Referência da API do Amazon Simple Storage Service.

Replicar objetos criados com criptografia no lado do servidor usando o AWS KMS

O bucket de origem pode conter objetos criados com criptografia no lado do servidor usando as chaves
armazenadas no AWS KMS. Por padrão, o Amazon S3 não replica esses objetos. Opcionalmente, você
pode direcionar o Amazon S3 para replicar esses objetos. Primeiro, opte explicitamente por esse recurso
adicionando o elemento SourceSelectionCriteria e forneça a CMK do AWS KMS (para a região da
AWS do bucket de destino) a ser usada para criptografar réplicas de objetos.

...
<SourceSelectionCriteria>
<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>
<Destination>
<Bucket>arn:aws:s3:::dest-bucket-name</Bucket>
<EncryptionConfiguration>
<ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</
ReplicaKmsKeyID>
</EncryptionConfiguration>
</Destination>
...

Para obter mais informações, consulte Replicação de objetos criados com criptografia no lado do servidor
(SSE) usando CMKs do AWS KMS (p. 672).

Exemplo de configurações de replicação


Para começar, você pode adicionar os seguintes exemplos de configuração de replicação ao bucket,
conforme adequado.
Important

Para adicionar uma configuração de replicação a um bucket, é preciso ter a permissão


iam:PassRole. Com essa permissão, você pode aprovar a função do IAM que concede as
permissões de replicação do Amazon S3. Você especifica a função do IAM ao fornecer o nome
de recurso da Amazon (ARN) usado no elemento Role na configuração de replicação XML. Para
obter mais informações, consulte Conceder permissões ao usuário para passar uma função a um
serviço da AWS no Guia do usuário do IAM.

Versão da API 2006-03-01


628
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Example 1: Configuração de replicação com uma regra

A configuração de replicação básica a seguir especifica uma regra. A regra especifica uma função do
IAM que o Amazon S3 pode assumir e um bucket de destino para único para réplicas de objetos. A regra
Status indica que a regra está em vigor.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::AcctID:role/role-name</Role>
<Rule>
<Status>Enabled</Status>

<Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination>

</Rule>
</ReplicationConfiguration>

Para escolher um subgrupo de objetos a serem replicados, adicione um filtro. Na configuração a seguir, o
filtro especifica um prefixo de chaves do objeto. Essa regra se aplica aos objetos que têm o prefixo Tax/
no nome da chave.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::AcctID:role/role-name</Role>
<Rule>
<Status>Enabled</Status>
<Priority>1</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>

<Filter>
<Prefix>Tax/</Prefix>
</Filter>

<Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination>

</Rule>
</ReplicationConfiguration>

Se você especificar o elemento Filter, inclua também os elementos Priority e


DeleteMarkerReplication. Neste exemplo, a prioridade é irrelevante, pois há somente uma regra.

Na configuração a seguir, o filtro especifica um prefixo e duas tags. A regra se aplica ao subgrupo de
objetos com o prefixo de chaves e as tags especificados. Mais especificamente, ela se aplica ao objeto
com o prefixo Tax/ no nome da chave e às duas tags de objeto especificadas. A prioridade não se aplica
porque há somente uma regra.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::AcctID:role/role-name</Role>
<Rule>
<Status>Enabled</Status>
<Priority>1</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>

<Filter>
<And>
<Prefix>Tax/</Prefix>

Versão da API 2006-03-01


629
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

<Tag>
<Tag>
<Key>tagA</Key>
<Value>valueA</Value>
</Tag>
</Tag>
<Tag>
<Tag>
<Key>tagB</Key>
<Value>valueB</Value>
</Tag>
</Tag>
</And>

</Filter>

<Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination>

</Rule>
</ReplicationConfiguration>

Você pode especificar uma classe de armazenamento para as réplicas conforme a seguir.

<?xml version="1.0" encoding="UTF-8"?>

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::account-id:role/role-name</Role>
<Rule>
<Status>Enabled</Status>
<Destination>
<Bucket>arn:aws:s3:::destinationbucket</Bucket>
<StorageClass>storage-class</StorageClass>
</Destination>
</Rule>
</ReplicationConfiguration>

Você pode especificar uma classe de armazenamento à qual o Amazon S3 ofereça suporte.

Example 2: Configuração de replicação com duas regras

Example

Na seguinte configuração de replicação:

• Cada regra filtra em um prefixo de chave diferente para que cada regra se aplique a um subconjunto
distinto de objetos. O Amazon S3 replica objetos com nomes de chave Tax/doc1.pdf e Project/
project1.txt, mas não replica objetos com o nome da chave PersonalDoc/documentA.
• A prioridade da regra é irrelevante, pois as regras se aplicam a dois grupos distintos de objetos. O
exemplo a seguir mostra o que acontece quando aplicamos uma prioridade de regras.
• A segunda regra especifica uma classe de armazenamento para réplicas de objetos. O Amazon S3 usa
a classe de armazenamento especificada para essas réplicas de objetos.

<?xml version="1.0" encoding="UTF-8"?>

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::account-id:role/role-name</Role>
<Rule>
<Status>Enabled</Status>

Versão da API 2006-03-01


630
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

<Priority>1</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>Tax</Prefix>
</Filter>
<Status>Enabled</Status>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
</Destination>
...
</Rule>
<Rule>
<Status>Enabled</Status>
<Priority>2</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>Project</Prefix>
</Filter>
<Status>Enabled</Status>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
<StorageClass>STANDARD_IA</StorageClass>
</Destination>
...
</Rule>

</ReplicationConfiguration>

Example 3: Configuração da replicação com duas regras e prefixos sobrepostos

Nessa configuração, as duas regras especificam filtros com prefixos de chaves sobrepostos, star/ e
starship. As duas regras se aplicam aos objetos com o nome de chave starship-x. Nesse caso,
o Amazon S3 usa a prioridade da regra para determinar qual regra deve ser aplicada. Quanto maior o
número, maior a prioridade.

<ReplicationConfiguration>

<Role>arn:aws:iam::AcctID:role/role-name</Role>

<Rule>
<Status>Enabled</Status>
<Priority>1</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>star</Prefix>
</Filter>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
</Destination>
</Rule>
<Rule>
<Status>Enabled</Status>
<Priority>2</Priority>
<DeleteMarkerReplication>
<Status>string</Status>
</DeleteMarkerReplication>
<Filter>

Versão da API 2006-03-01


631
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

<Prefix>starship</Prefix>
</Filter>
<Destination>
<Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket>
</Destination>
</Rule>
</ReplicationConfiguration>

Example 4: Demonstrações de exemplo

Para obter exemplos de demonstrações, consulte Orientações: Configuração da replicação (p. 636).

Para obter mais informações sobre a estrutura XML da configuração de replicação, consulte
PutBucketReplication na Referência da API do Amazon Simple Storage Service.

Compatibilidade retroativa
A versão mais recente do XML de configuração da replicação é V2. As configurações de replicação
XML V2 são aquelas que contêm o elemento Filter para regras e regras que especificam o Controle
do tempo de replicação do S3 (S3 RTC). Nas configurações de replicação de V2, o Amazon S3 não
replica marcadores de exclusão para regras com base em tag. Portanto, você deve definir o elemento
DeleteMarkerReplication como Disabled se estiver usando uma regra V2 baseada em tags.

Para ver a versão de configuração de replicação, você pode usar a API GetBucketReplication. Para
obter mais informações, consulte, GetBucketReplication na Referência da API do Amazon Simple Storage
Service.

Para compatibilidade com versões anteriores, o Amazon S3 continua a oferecer suporte à configuração de
replicação XML V1. Se você tiver usado a configuração da replicação XML V1, leve em consideração as
questões a seguir que afetam a compatibilidade reversa:

• A V2 do XML de configuração da replicação inclui o elemento Filter para regras. Com o elemento
Filter, você pode especificar filtros de objeto com base no prefixo de chaves do objeto, tags ou ambos
para colocar dentro do escopo os objetos aos quais a regra se aplica. A V1 do XML de configuração
da replicação oferecia suporte à filtragem com base somente no prefixo da chave. Nesse caso, você
adiciona o Prefix diretamente como elemento-filho do elemento Rule, conforme o exemplo a seguir.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::AcctID:role/role-name</Role>
<Rule>
<Status>Enabled</Status>
<Prefix>key-prefix</Prefix>
<Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination>

</Rule>
</ReplicationConfiguration>

Para compatibilidade reversa, o Amazon S3 continua a oferecer suporte à configuração da V1.


• Ao excluir um objeto do bucket de origem sem especificar um ID da versão do objeto, o Amazon S3
adicionar um marcador de exclusão. Se você usar a V1 do XML de configuração da replicação, o
Amazon S3 replicará os marcadores de exclusão que resultaram das ações do usuário. Em outras
palavras: se o usuário tiver excluído o objeto, e não se o Amazon S3 tiver excluído porque o objeto
expirou, como parte da ação do ciclo de vida. Na V2, o Amazon S3 não replica marcadores de exclusão.
Portanto, você deve definir o elemento DeleteMarkerReplication como Disabled.

...
<Rule>

Versão da API 2006-03-01


632
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

<ID>Rule-1</ID>
<Status>rule-Enabled-or-Disabled</Status>
<Priority>integer</Priority>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Destination>
<Bucket>arn:aws:s3:::bucket-name</Bucket>
</Destination>
</Rule>
...

Configuração de permissões
Ao definir a replicação, é preciso adquirir as permissões necessárias, da seguinte forma:

• Crie uma função do IAM: o Amazon S3 precisa de permissões para replicar objetos em seu nome. Você
concede essas permissões criando uma função do IAM e especificando a função na configuração da
replicação.
• Quando os buckets de origem e de destino não forem de propriedade da mesma conta, o proprietário do
bucket de destino deverá conceder ao proprietário do bucket de origem as permissões para armazenar
as réplicas.

Tópicos
• Criar uma função do IAM (p. 633)
• Conceder permissões quando os buckets de origem e de destino forem de propriedade de contas
diferentes da AWS (p. 635)

Criar uma função do IAM

Por padrão, todos os recursos do Amazon S3 — buckets, objetos e sub-recursos relacionados — são
privados e somente o proprietário do recurso pode acessá-lo. O Amazon S3 precisa de permissões de
leitura e replicação de objetos do bucket de origem. Você concede essas permissões criando uma função
do IAM e especificando a função na configuração da replicação.

Esta seção explica a política de confiança e a política de permissão mínima necessária. As demonstrações
de exemplo fornecem instruções passo a passo para criar uma função do IAM. Para obter mais
informações, consulte Orientações: Configuração da replicação (p. 636).

• Veja a seguir uma política de confiança na qual você identifica o Amazon S3 como o principal de serviço
que pode assumir a função.

"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}

Versão da API 2006-03-01


633
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

]
}

Para obter mais informações sobre funções do IAM, consulte Funções do IAM no Guia do Usuário do
IAM.
• Veja a seguir uma política de acesso em que você concede à função permissões para as tarefas de
replicação em seu nome. Quando o Amazon S3 assumir a função, ele terá as permissões que você
especificar nessa política.

"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetReplicationConfiguration",
"s3:ListBucket"
],
"Resource":[
"arn:aws:s3:::SourceBucket"
]
},
{
"Effect":"Allow",
"Action":[

"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"

],
"Resource":[
"arn:aws:s3:::SourceBucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
],
"Resource":"arn:aws:s3:::DestinationBucket/*"
}
]
}

A política de acesso concede permissões às seguintes ações:


• s3:GetReplicationConfiguration e s3:ListBucket: as permissões para essas ações
no bucket de origem permitem que o Amazon S3 recupere a configuração de replicação e liste o
conteúdo do bucket (o modelo atual de permissões exige a permissão s3:ListBucket para acesso
aos marcadores de exclusão).
• s3:GetObjectVersionForReplication e s3:GetObjectVersionAcl— as permissões para
essas ações concedidas em todos os objetos permitem que o Amazon S3 obtenha uma versão
específica do objeto e as listas de controle de acesso (ACL) associadas aos objetos.
• s3:ReplicateObject e s3:ReplicateDelete—as permissões para essas ações em objetos nos
buckets de destino permitem que o Amazon S3 replique objetos ou marcadores de exclusão para os
buckets de destino. Para obter mais informações sobre marcadores de exclusão, consulte Como a
exclusão de operações afeta a replicação (p. 620).
Versão da API 2006-03-01
634
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Note

As permissões para a ação s3:ReplicateObject nos buckets de destino também


permitem replicação de tags dos objetos. Por isso, você não precisa conceder permissões
explicitamente à ação s3:ReplicateTags.
• s3:GetObjectVersionTagging: as permissões para esta ação em objetos no bucket de origem
permitem que o Amazon S3 leia tags de objeto para replicação (consulte Categorizando seu
armazenamento usando tags (p. 683)). Se o Amazon S3 não tiver essas permissões, ele replicará os
objetos, mas não as tags do objeto.

Para obter uma lista de ações do Amazon S3, consulte Ações do Amazon S3 (p. 273).
Important

Mais especificamente, a conta da AWS proprietária da função do IAM precisa ter permissões
para as ações que conceder à função do IAM.
Por exemplo, suponha que o bucket de origem contenha objetos pertencentes a outra conta
da AWS. O proprietário dos objetos deve conceder explicitamente à conta da AWS que é
de propriedade da função do IAM as permissões exigidas por meio da ACL do objeto. Caso
contrário, o Amazon S3 não conseguirá acessar os objetos e haverá falha na replicação dos
objetos. Para obter informações sobre as permissões da ACL, consulte Visão geral da lista de
controle de acesso (ACL) (p. 440).
As permissões descritas aqui estão relacionadas à configuração mínima da replicação. Se optar
por adicionar configurações de replicação opcionais, será necessário conceder permissões
adicionais ao Amazon S3. Para obter mais informações, consulte Configurações de replicação
adicionais (p. 663).

Conceder permissões quando os buckets de origem e de destino forem de


propriedade de contas diferentes da AWS
Quando os buckets de origem e de destino não forem de propriedade da mesma conta, o proprietário
do bucket de destino também deverá adicionar uma política de bucket para conceder ao proprietário do
bucket de origem permissões para executar ações de replicação, conforme a seguir.

{
"Version":"2012-10-17",
"Id":"PolicyForDestinationBucket",
"Statement":[
{
"Sid":"Permissions on objects",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::SourceBucket-AcctID:source-acct-IAM-role"
},
"Action":[
"s3:ReplicateDelete",
"s3:ReplicateObject"
],
"Resource":"arn:aws:s3:::destinationbucket/*"
},
{
"Sid":"Permissions on bucket",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::SourceBucket-AcctID:source-acct-IAM-role"
},
"Action": [
"s3:List*",
"s3:GetBucketVersioning",
Versão da API 2006-03-01
635
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

"s3:PutBucketVersioning"
],
"Resource":"arn:aws:s3:::destinationbucket"
}
]
}

Para ver um exemplo, consulte Configuração da replicação para os buckets de origem e destino forem de
propriedade de contas diferentes (p. 649).

Se os objetos no bucket de origem estiverem marcados, observe o seguinte:

• Se o proprietário do bucket de origem conceder ao Amazon S3 permissão para as ações


s3:GetObjectVersionTagging e s3:ReplicateTags para replicação de tags de objeto (pela
função do IAM), o Amazon S3 replicará as tags com os objetos. Para obter informações sobre a função
do IAM, consulte Criar uma função do IAM (p. 633).
• Se o proprietário do bucket de destino não quiser replicar as tags, ele poderá adicionar a seguinte
instrução à política do bucket de destino para negar explicitamente a permissão para a ação
s3:ReplicateTags.

...
"Statement":[
{
"Effect":"Deny",
"Principal":{
"AWS":"arn:aws:iam::SourceBucket-AcctID:source-acct-IAM-role"
},
"Action":"s3:ReplicateTags",
"Resource":"arn:aws:s3:::DestinationBucket/*"
}
]
...

Alterar a propriedade da réplica

Quando diferentes contas da AWS tiverem a propriedade dos buckets de origem de destino, você poderá
dizer ao Amazon S3 para alterar a propriedade da réplica para a conta da AWS à qual pertence o bucket
de destino. Isso se chama opção de substituição do proprietário. Para obter mais informações, consulte
Alterar o proprietário da réplica (p. 670).

Orientações: Configuração da replicação


Os exemplos a seguir mostram como configurar a replicação para casos de uso comuns. Os exemplos
demonstram a configuração da replicação usando o console do Amazon S3, a interface da linha de
comando da AWS (CLI da AWS) e os AWS SDKs (exemplos de SDKs para Java e .NET são mostrados).
Para obter informações sobre como instalar e configurar a CLI da AWS, consulte os tópicos a seguir no
Guia do usuário da interface da linha de comando da AWS.

• Instalar a interface de linha de comando da AWS


• Configurar a CLI da AWS: configure pelo menos um perfil. Se você estiver explorando cenários entre
contas, configure dois perfis.

Para obter informações sobre os AWS SDKs, consulte AWS SDK para Java e AWS SDK para .NET.

Tópicos

Versão da API 2006-03-01


636
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

• Configuração da replicação para buckets de origem e de destino pertencentes à mesma


conta (p. 637)
• Configuração da replicação para os buckets de origem e destino forem de propriedade de contas
diferentes (p. 649)
• Alteração do proprietário da réplica para os buckets de origem e de destino forem de propriedade de
contas diferentes (p. 650)
• Replicar objetos criptografados (p. 654)
• Replicação de objetos com o Controle de Tempo de Replicação do S3 (S3 RTC) (p. 659)
• Gerenciamento de regras de replicação usando o console do Amazon S3 (p. 662)

Configuração da replicação para buckets de origem e de destino


pertencentes à mesma conta
A replicação é a cópia assíncrona automática de objetos em buckets na mesma ou em diferentes regiões
da AWS. A replicação copia os objetos recém-criados e as atualizações de objeto de um bucket de origem
para um bucket de destino. Para obter mais informações, consulte Replicação de objetos (p. 617).

Ao configurar a replicação, você adiciona regras de replicação ao bucket de origem. As regras de


replicação definem quais objetos do bucket de origem devem ser replicados e o bucket de destino ou
buckets nos quais os objetos replicados são armazenados. Você pode criar uma regra para replicar todos
os objetos dentro de um bucket ou um subgrupo de objetos com um prefixo específico de nome de chaves,
uma ou mais tags de objetos ou ambos. Um bucket de destino pode estar na mesma conta da AWS que o
bucket de origem, ou ele pode estar em uma conta diferente.

Se você especificar um ID da versão do objeto a ser excluído, o Amazon S3 excluirá essa versão do objeto
no bucket de origem. No entanto, ele não replica a exclusão no bucket de destino. Em outras palavras: ele
não exclui a mesma versão do objeto do bucket de destino. Isso protege os dados contra exclusões mal-
intencionadas.

Quando você adiciona uma regra de replicação a um bucket, ela fica ativada por padrão, portanto, começa
a funcionar assim que é salva.

Neste exemplo, você configura a replicação para os buckets de origem e de destino que são de
propriedade da mesma conta da AWS. São fornecidos exemplos para usar o console do Amazon S3, a
interface da linha de comando da AWS (CLI da AWS) e o AWS SDK para Java e o AWS SDK para .NET.

Uso do console do S3

Siga essas etapas para configurar uma replicação quando o bucket de destino estiver na mesma conta da
AWS que o bucket de origem.

Se o bucket de destino estiver um uma conta diferente do bucket de origem, você deverá adicionar uma
política ao bucket de destino. Assim, será possível conceder ao proprietário da conta do bucket de origem
permissão para replicar objetos no bucket de destino. Para obter mais informações, consulte Conceder
permissões quando os buckets de origem e de destino forem de propriedade de contas diferentes da
AWS (p. 635).

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket desejado.
3. Escolha Management (Gerenciamento), role para baixo até Replication rules (Regras de replicação) e
escolha Create replication rule (Criar regra de replicação).

Versão da API 2006-03-01


637
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

4. Em Rule name (Nome da regra), insira um nome para a regra, ajudando a identificá-la posteriormente.
O nome é obrigatório e precisa ser exclusivo dentro do bucket.
5. Configure uma função do AWS Identity and Access Management (IAM) que o Amazon S3 possa
assumir para replicar objetos em seu nome.

Para configurar uma função do IAM, na seção Replication rule configuration (Configuração da regra de
replicação), em IAM role (Função do IAM), siga um destes procedimentos:

• Recomendamos que você escolha Create new role (Criar nova função) para que o Amazon S3 crie
uma nova função do IAM para você. Quando você salva a regra, uma nova política é gerada para a
função do IAM que coincide com os buckets de origem e de destino que você escolher.
• Você pode usar uma função do IAM existente. Se fizer isso, escolha uma função que conceda ao
Amazon S3 as permissões necessárias para a replicação. A replicação falhará se essa função não
conceder ao Amazon S3 permissões suficientes para seguir sua regra de replicação.

Important

Quando você adiciona uma regra de replicação a um bucket, você deve ter a permissão
iam:PassRole para poder transmitir a função do IAM que concede permissões de
replicação do Amazon S3. Para obter mais informações, consulte Conceder permissões ao
usuário para passar uma função a um serviço da AWS no Guia do usuário do IAM.
6. Em Status, Enabled (Habilitado) é selecionado por padrão. Uma regra ativada começa a funcionar
assim que você a salva. Se você quiser habilitar a regra posteriormente, selecione Disabled
(Desabilitado).
7. Se o bucket tiver regras de replicação existentes, você será instruído a definir uma prioridade
para a regra. Defina uma prioridade para a regra, de maneira a evitar conflitos causados pelos
objetos incluídos no escopo de mais de uma regra. No caso de sobreposição de regras, o Amazon
S3 usa a prioridade da regra para determinar qual regra aplicar. Quanto maior o número, maior
a prioridade. Para obter mais informações sobre prioridade de regra, consulte Configuração de
replicação (p. 622).
8. Na Replication rule configuration (Configuração da regra de replicação), em Source bucket (Bucket de
origem), você tem as seguintes opções para definir a origem da replicação:

• Para replicar todo o bucket, escolha This rule applies to all objects in the bucket (Esta regra se
aplica a todos os objetos no bucket).
• Para replicar todos os objetos que tenham o mesmo prefixo, escolha Limit the scope of this rule
using one or more filters (Limitar o escopo desta regra usando um ou mais filtros). Isso limita
a replicação a todos os objetos que tenham nomes que começam com a string (por exemplo,
pictures). Insira um prefixo na caixa.
Note

Se você inserir um prefixo que seja o nome de uma pasta, é preciso usar / (barra) como o
último caractere (por exemplo, pictures/).
• Para replicar todos os objetos com uma ou mais tags de objeto, selecione Add tag (Adicionar tag)
e insira o par de valores de chave nas caixas. Repita o procedimento para adicionar outra tag.
Você pode combinar um prefixo e tags. Para obter mais informações sobre tags de objeto, consulte
Categorizando seu armazenamento usando tags (p. 683).

O novo esquema é compatível com os filtros de prefixo e tags e com a priorização das regras. Para
obter mais informações sobre o novo esquema, consulte Compatibilidade retroativa (p. 632).
Para obter mais informações sobre o XML usado com a API do Amazon S3 que funciona atrás da
interface do usuário, consulte Configuração de replicação (p. 622). O novo esquema é descrito como
configuração de replicação XML V2.
9. Em Destination (Destino), selecione o bucket no qual você deseja que o Amazon S3 replique objetos.

Versão da API 2006-03-01


638
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Note

O número de buckets de destino é limitado ao número de regiões da AWS em uma


determinada partição. Uma partição é um grupo de regiões. Atualmente, a AWS tem três
partições: aws (Regiões padrão), aws-cn (regiões da China) e aws-us-gov (regiões AWS
GovCloud [EUA]). Você pode usar cotas de serviço para solicitar um aumento no limite de
bucket de destino.

• Para replicar para um bucket ou buckets em sua conta, selecione Choose a bucket in this account
(Escolher um bucket nesta conta) e digite ou procure o bucket de destino.
• Para replicar para um bucket ou buckets em uma conta da AWS diferente, selecione Choose a
bucket in another account (Escolher um bucket em outra conta) e insira o ID da conta do bucket de
destino e o nome.

Se o destino estiver um uma conta diferente do bucket de origem, você deverá adicionar uma
política de bucket aos buckets de destino para conceder ao proprietário da conta do bucket
de origem permissão para replicar objetos. Para obter mais informações, consulte Conceder
permissões quando os buckets de origem e de destino forem de propriedade de contas diferentes
da AWS (p. 635).

Note

Se o versionamento não estiver ativado no bucket de destino, você receberá uma advertência
que contém um botão Enable versioning (Habilitar versionamento). Escolha esse botão para
habilitar o versionamento no bucket.
10. Você tem as seguintes opções adicionais ao definir o Destination (Destino):

• Se você quiser habilitar a Object Ownership (Propriedade do objeto) para ajudar a padronizar
a propriedade de novos objetos no bucket de destino, escolha Change object ownership to the
destination bucket owner (Alterar propriedade do objeto para o proprietário do bucket de destino).
Para obter mais informações sobre essa opção, consulte Controlar a propriedade de objetos
carregados usando a propriedade de objetos do S3 (p. 500).
• Se você quiser replicar seus dados a uma classe de armazenamento específica no destino, escolha
Change the storage class for the replicated objects (Alterar a classe de armazenamento dos objetos
replicados). Em seguida, escolha a classe de armazenamento que você deseja usar para os objetos
replicados no destino. Se você não selecionar essa opção, a classe de armazenamento para
objetos replicados será a mesma classe dos objetos originais.
• Se quiser habilitar a replicação de marcadores de exclusão na configuração de replicação,
selecione Delete marker replication (Excluir replicação de marcador). Para obter mais informações,
consulte Replicação de marcadores de exclusão entre intervalos (p. 668).
• Se você quiser habilitar a sincronização de modificação de réplica do Amazon S3 em sua
configuração de replicação, selecione Replica modification sync (Sincronização de modificação
de réplica). Para obter mais informações, consulte Replicação de alterações de metadados com
sincronização de modificação de réplica do Amazon S3 (p. 669).
• Se você quiser habilitar métricas de replicação do S3 na configuração de replicação, selecione
Replication metrics and events (Métricas e eventos de replicação). Para obter mais informações,
consulte Monitoramento do progresso com métricas de replicação e notificações de eventos do
Amazon S3 (p. 663).
• Se você quiser habilitar o Controle do tempo de replicação do S3 (S3 RTC) na configuração de
replicação, selecione S3 Replication Time Control (Controle do tempo de replicação do S3). Para
obter mais informações sobre essa opção, consulte Atendimento aos requisitos de conformidade
usando o Controle do tempo de replicação do S3 (S3 RTC) (p. 665).

Versão da API 2006-03-01


639
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Note

Quando você usa métricas de replicação S3 RTC ou S3, aplicam-se taxas adicionais.
11. Para replicar objetos no bucket de origem que são criptografados com AWS Key Management Service
(AWS KMS), em Replication criteria (Critérios de replicação), selecione Replicate objects encrypted
with AWS KMS (Replicar objetos criptografados com AWS KMS). Em AWS KMS key for encrypting
destination objects (Chave do AWS KMS para criptografar objetos de destino) estão as chaves de
origem que você permite que a replicação use. Todas as CMKs de origem são incluídas por padrão. É
possível optar por refinar a seleção de CMKs.

Os objetos criptografados pelas CMKs do AWS KMS que você não seleciona não são replicados. A
CMK ou um grupo de CMKs é escolhido para você, mas você pode escolher as CMKs, se preferir.
Para obter informações sobre como usar o AWS KMS com replicação, consulte Replicação de objetos
criados com criptografia no lado do servidor (SSE) usando CMKs do AWS KMS (p. 672).
Important

Ao replicar objetos que estão criptografados com AWS KMS, a taxa de solicitações do
AWS KMS dobra na região de origem e aumenta na região de destino pelo mesmo valor.
Essas taxas de chamada aprimoradas ao AWS KMS se devem à forma com que os dados
são recriptografados usando a chave mestra do cliente (CMK) que você define na região
de destino de replicação. O AWS KMS tem um limite de taxas de solicitação por conta de
chamada por região. Para obter informações sobre os padrões de limite, consulte Limites
do AWS KMS - Solicitações por segundo: varia no Guia do desenvolvedor do AWS Key
Management Service.
Se a taxa de solicitações do objeto PUT do Amazon S3 durante a replicação é maior que
a metade do limite da taxa padrão do AWS KMS para sua conta, recomendamos que você
solicite um aumento do limite de taxa de solicitação do AWS KMS. Para solicitar um aumento,
crie um caso no AWS Support Center em Entre em contato conosco. Por exemplo, suponha
que a sua taxa de solicitação do objeto PUT seja 1.000 solicitações por segundo e você use o
AWS KMS para criptografar seus objetos. Nesse caso, recomendamos que você solicite que
o AWS Support aumente o limite da taxa do AWS KMS para 2.500 solicitações por segundo,
nas regiões de origem e de destino (se diferentes), para garantir que não haja nenhuma
limitação pelo AWS KMS.
Para ver a taxa de solicitação de objeto PUT no bucket de origem, visualize PutRequests
nas métricas de solicitação do Amazon CloudWatch para o Amazon S3. Para obter
informações sobre como visualizar métricas do CloudWatch, consulte Usar o console do
S3 (p. 865)

Se você optar por replicar objetos criptografados com o AWS KMS, insira o nome de recurso
da Amazon (ARN) da CMK do AWS KMS para criptografar réplicas no bucket de destino. Você
pode encontrar o ARN da CMK do AWS KMS no console do IAM, em Encryption keys (Chaves de
criptografia). Outra possibilidade é escolher o nome da CMK na lista suspensa.

Para obter mais informações sobre como criar uma CMK do AWS KMS, consulte Criar chaves no Guia
do desenvolvedor do AWS Key Management Service.
Important

O console do Amazon S3 lista apenas 100 CMKs do AWS KMS por região da AWS. Se você
tiver mais de 100 CMKs na mesma região, será possível ver somente as primeiras 100 CMKs
no console do S3. Para usar uma CMK do KMS que não esteja listada no console, escolha
Custom KMS ARN (Personalizar o ARN do KMS) e insira o ARN da CMK do KMS.
12. Para terminar, escolha Save (Salvar).
13. Depois de salvar sua regra, você pode editar, ativar, desativar ou excluir sua regra selecionando sua
regra e escolhendo Edit rule (Editar regra).

Versão da API 2006-03-01


640
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Usar a CLI da AWS

Para usar a CLI da AWS para configurar a replicação quando os buckets de origem e de destino forem
de propriedade da mesma conta da AWS, crie buckets de origem e destino, habilite o versionamento
neles, crie uma função do IAM que conceda permissão ao Amazon S3 para replicar objetos e adicione a
configuração da replicação ao bucket de origem. Para verificar sua configuração, teste-a.

Como configurar a replicação quando os buckets de origem e destino forem de propriedade da


mesma conta da AWS

1. Defina um perfil de credenciais para a CLI da AWS. Neste exemplo, usamos o nome de perfil acctA.
Para obter informações sobre como configurar perfis de credenciais, consulte Perfis nomeados no
Guia do usuário da interface da linha de comando da AWS.
Important

O perfil que você usar para este exercício deve ter as permissões necessárias. Por exemplo,
na configuração da replicação, especifique a função do IAM que o Amazon S3 pode assumir.
Você só pode fazer isso se o perfil usado tiver a permissão iam:PassRole. Para obter mais
informações, consulte Conceder permissões ao usuário para passar uma função a um serviço
da AWS no Guia do usuário do IAM. Se você usar as credenciais do usuário administrador
para criar um perfil nomeado, poderá executar todas as tarefas.
2. Crie um bucket de origem e habilite o versionamento nele. O código a seguir cria um bucket de
origem na região Leste dos EUA (Norte da Virgínia) (us-east-1).

aws s3api create-bucket \


--bucket source \
--region us-east-1 \
--profile acctA

aws s3api put-bucket-versioning \


--bucket source \
--versioning-configuration Status=Enabled \
--profile acctA

3. Crie um bucket de destino e habilite o versionamento nele. O código a seguir cria um bucket de
destino na região Oeste dos EUA (Oregon) (us-west-2).
Note

Para fazer a configuração da replicação quando os buckets de origem e destino estiverem


na mesma conta da AWS, use o mesmo perfil. Este exemplo usa acctA. Para testar a
configuração da replicação quando os buckets forem de propriedade de diferentes contas da
AWS, especifique diferentes perfis para cada um. Este exemplo usa o perfil acctB para o
bucket de destino.

aws s3api create-bucket \


--bucket destination \
--region us-west-2 \
--create-bucket-configuration LocationConstraint=us-west-2 \
--profile acctA

aws s3api put-bucket-versioning \


--bucket destination \
--versioning-configuration Status=Enabled \
--profile acctA

Versão da API 2006-03-01


641
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

4. Crie uma função do IAM. Você especifica essa função na configuração da replicação que adiciona ao
bucket de origem posteriormente. O Amazon S3 assume essa função para replicar objetos em seu
nome. A função do IAM é criada em duas etapas:

• Crie uma função.


• Anexar uma política de permissões à função.

a. Crie a função do IAM.

i. Copie a política de confiança a seguir e salve-a em um arquivo chamado S3-role-trust-


policy.json no diretório atual do computador local. Essa política concede ao principal do
serviço da Amazon S3 permissões para assumir a função.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}

ii. Execute o comando a seguir para criar uma função.

$ aws iam create-role \


--role-name replicationRole \
--assume-role-policy-document file://s3-role-trust-policy.json \
--profile acctA

b. Anexar uma política de permissões à função.

i. Copie a política de permissões a seguir e salve-a em um arquivo com o nome S3-role-


permissions-policy.json no diretório atual do computador local. Essa política concede
permissões para várias ações de bucket e objetos do Amazon S3.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource":[
"arn:aws:s3:::source-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetReplicationConfiguration"
],
"Resource":[
"arn:aws:s3:::source-bucket"

Versão da API 2006-03-01


642
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

]
},
{
"Effect":"Allow",
"Action":[
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
],
"Resource":"arn:aws:s3:::destination-bucket/*"
}
]
}

ii. Execute o comando a seguir para criar uma política e ligá-la à função.

$ aws iam put-role-policy \


--role-name replicationRole \
--policy-document file://s3-role-permissions-policy.json \
--policy-name replicationRolePolicy \
--profile acctA

5. Adicione uma configuração de replicação ao bucket de origem.

a. Embora a API do Amazon S3 exija configuração da replicação como XML, a CLI da AWS exige
que você especifique a configuração da replicação como JSON. Salve o JSON a seguir em um
arquivo chamado replication.json no diretório local do seu computador.

{
"Role": "IAM-role-ARN",
"Rules": [
{
"Status": "Enabled",
"Priority": 1,
"DeleteMarkerReplication": { "Status": "Disabled" },
"Filter" : { "Prefix": "Tax"},
"Destination": {
"Bucket": "arn:aws:s3:::destination-bucket"
}
}
]
}

b. Atualize o JSON fornecendo valores para destination-bucket e IAM-role-ARN. Salve as


alterações.
c. Execute o comando a seguir para adicionar a configuração de replicação ao seu bucket de
origem. Não deixe de dar um nome ao bucket de origem.

$ aws s3api put-bucket-replication \


--replication-configuration file://replication.json \
--bucket source \
--profile acctA

Para recuperar a configuração de replicação, use o comando get-bucket-replication.

$ aws s3api get-bucket-replication \


--bucket source \
--profile acctA

6. Teste a configuração no console do Amazon S3:


Versão da API 2006-03-01
643
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

a. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
b. No bucket de origem, crie uma pasta chamada Tax.
c. Adicione objetos de amostra à pasta Tax no bucket de origem.
Note

O tempo necessário para o Amazon S3 replicar um objeto depende do tamanho


do objeto. Para obter informações sobre como ver o status da replicação, consulte
Obtenção de informações sobre o status da replicação (p. 678).

No bucket de destino, verifique o seguinte:

• Se o Amazon S3 replicou os objetos.


• Nas properties (propriedades) do objeto, que Replication Status (Status de replicação) está
definido como Replica (identificando-o como um objeto de réplica).
• Nas properties (propriedades) do objeto, que a seção de permissão não mostra nenhuma
permissão. Isso significa que a réplica ainda é de propriedade do proprietário do bucket
de origem e que o proprietário do bucket de destino não tem permissão na réplica do
objeto. Você pode adicionar uma configuração opcional para instruir o Amazon S3 a alterar a
propriedade da réplica. Para ver um exemplo, consulte Alteração do proprietário da réplica para
os buckets de origem e de destino forem de propriedade de contas diferentes (p. 650).

d. Atualize a ACL de um objeto no bucket de origem e verifique se as alterações aparecem no


bucket de destino.

Para obter instruções, consulte Configurar ACLs (p. 448).

Uso dos AWS SDKs

Use os exemplos de código a seguir para adicionar uma configuração de replicação a um bucket com o
AWS SDK para Java e o AWS SDK para .NET, respectivamente.

Versão da API 2006-03-01


644
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Java

O exemplo a seguir adiciona uma configuração de replicação a um bucket e, depois, a recupera e


verifica a configuração. Para obter instruções sobre criar e testar um exemplo funcional, consulte
Testar exemplos de código Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagementClientBuilder;
import com.amazonaws.services.identitymanagement.model.CreateRoleRequest;
import com.amazonaws.services.identitymanagement.model.PutRolePolicyRequest;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.BucketReplicationConfiguration;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import com.amazonaws.services.s3.model.DeleteMarkerReplication;
import com.amazonaws.services.s3.model.DeleteMarkerReplicationStatus;
import com.amazonaws.services.s3.model.ReplicationDestinationConfig;
import com.amazonaws.services.s3.model.ReplicationRule;
import com.amazonaws.services.s3.model.ReplicationRuleStatus;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;
import com.amazonaws.services.s3.model.StorageClass;
import com.amazonaws.services.s3.model.replication.ReplicationFilter;
import com.amazonaws.services.s3.model.replication.ReplicationFilterPredicate;
import com.amazonaws.services.s3.model.replication.ReplicationPrefixPredicate;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CrossRegionReplication {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String accountId = "*** Account ID ***";
String roleName = "*** Role name ***";
String sourceBucketName = "*** Source bucket name ***";
String destBucketName = "*** Destination bucket name ***";
String prefix = "Tax/";

String roleARN = String.format("arn:aws:iam::%s:role/%s", accountId, roleName);


String destinationBucketARN = "arn:aws:s3:::" + destBucketName;

AmazonS3 s3Client = AmazonS3Client.builder()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

createBucket(s3Client, clientRegion, sourceBucketName);


createBucket(s3Client, clientRegion, destBucketName);
assignRole(roleName, clientRegion, sourceBucketName, destBucketName);

try {

// Create the replication rule.

Versão da API 2006-03-01


645
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

List<ReplicationFilterPredicate> andOperands = new


ArrayList<ReplicationFilterPredicate>();
andOperands.add(new ReplicationPrefixPredicate(prefix));

Map<String, ReplicationRule> replicationRules = new HashMap<String,


ReplicationRule>();
replicationRules.put("ReplicationRule1",
new ReplicationRule()
.withPriority(0)
.withStatus(ReplicationRuleStatus.Enabled)
.withDeleteMarkerReplication(new
DeleteMarkerReplication().withStatus(DeleteMarkerReplicationStatus.DISABLED))
.withFilter(new ReplicationFilter().withPredicate(new
ReplicationPrefixPredicate(prefix)))
.withDestinationConfig(new ReplicationDestinationConfig()
.withBucketARN(destinationBucketARN)
.withStorageClass(StorageClass.Standard)));

// Save the replication rule to the source bucket.


s3Client.setBucketReplicationConfiguration(sourceBucketName,
new BucketReplicationConfiguration()
.withRoleARN(roleARN)
.withRules(replicationRules));

// Retrieve the replication configuration and verify that the configuration


// matches the rule we just set.
BucketReplicationConfiguration replicationConfig =
s3Client.getBucketReplicationConfiguration(sourceBucketName);
ReplicationRule rule = replicationConfig.getRule("ReplicationRule1");
System.out.println("Retrieved destination bucket ARN: " +
rule.getDestinationConfig().getBucketARN());
System.out.println("Retrieved priority: " + rule.getPriority());
System.out.println("Retrieved source-bucket replication rule status: " +
rule.getStatus());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

private static void createBucket(AmazonS3 s3Client, Regions region, String


bucketName) {
CreateBucketRequest request = new CreateBucketRequest(bucketName,
region.getName());
s3Client.createBucket(request);
BucketVersioningConfiguration configuration = new
BucketVersioningConfiguration().withStatus(BucketVersioningConfiguration.ENABLED);

SetBucketVersioningConfigurationRequest enableVersioningRequest = new


SetBucketVersioningConfigurationRequest(bucketName, configuration);
s3Client.setBucketVersioningConfiguration(enableVersioningRequest);

private static void assignRole(String roleName, Regions region, String


sourceBucket, String destinationBucket) {
AmazonIdentityManagement iamClient =
AmazonIdentityManagementClientBuilder.standard()
.withRegion(region)

Versão da API 2006-03-01


646
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

.withCredentials(new ProfileCredentialsProvider())
.build();
StringBuilder trustPolicy = new StringBuilder();
trustPolicy.append("{\\r\\n ");
trustPolicy.append("\\\"Version\\\":\\\"2012-10-17\\\",\\r\\n ");
trustPolicy.append("\\\"Statement\\\":[\\r\\n {\\r\\n ");
trustPolicy.append("\\\"Effect\\\":\\\"Allow\\\",\\r\\n \\\"Principal\\
\":{\\r\\n ");
trustPolicy.append("\\\"Service\\\":\\\"s3.amazonaws.com\\\"\\r\\n },\
\r\\n ");
trustPolicy.append("\\\"Action\\\":\\\"sts:AssumeRole\\\"\\r\\n }\\r\\n
]\\r\\n}");

CreateRoleRequest createRoleRequest = new CreateRoleRequest()


.withRoleName(roleName)
.withAssumeRolePolicyDocument(trustPolicy.toString());

iamClient.createRole(createRoleRequest);

StringBuilder permissionPolicy = new StringBuilder();


permissionPolicy.append("{\\r\\n \\\"Version\\\":\\\"2012-10-17\\\",\\r\\n
\\\"Statement\\\":[\\r\\n {\\r\\n ");
permissionPolicy.append("\\\"Effect\\\":\\\"Allow\\\",\\r\\n \\\"Action
\\\":[\\r\\n ");
permissionPolicy.append("\\\"s3:GetObjectVersionForReplication\\\",\\r\\n
");
permissionPolicy.append("\\\"s3:GetObjectVersionAcl\\\"\\r\\n ],\\r\\n
\\\"Resource\\\":[\\r\\n ");
permissionPolicy.append("\\\"arn:aws:s3:::");
permissionPolicy.append(sourceBucket);
permissionPolicy.append("/*\\\"\\r\\n ]\\r\\n },\\r\\n {\\r\
\n ");
permissionPolicy.append("\\\"Effect\\\":\\\"Allow\\\",\\r\\n \\\"Action
\\\":[\\r\\n ");
permissionPolicy.append("\\\"s3:ListBucket\\\",\\r\\n \\
\"s3:GetReplicationConfiguration\\\"\\r\\n ");
permissionPolicy.append("],\\r\\n \\\"Resource\\\":[\\r\\n \
\\"arn:aws:s3:::");
permissionPolicy.append(sourceBucket);
permissionPolicy.append("\\r\\n ");
permissionPolicy.append("]\\r\\n },\\r\\n {\\r\\n \\\"Effect\
\\":\\\"Allow\\\",\\r\\n ");
permissionPolicy.append("\\\"Action\\\":[\\r\\n \\
\"s3:ReplicateObject\\\",\\r\\n ");
permissionPolicy.append("\\\"s3:ReplicateDelete\\\",\\r\\n \\
\"s3:ReplicateTags\\\",\\r\\n ");
permissionPolicy.append("\\\"s3:GetObjectVersionTagging\\\"\\r\\n\\r\\n
],\\r\\n ");
permissionPolicy.append("\\\"Resource\\\":\\\"arn:aws:s3:::");
permissionPolicy.append(destinationBucket);
permissionPolicy.append("/*\\\"\\r\\n }\\r\\n ]\\r\\n}");

PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest()


.withRoleName(roleName)
.withPolicyDocument(permissionPolicy.toString())
.withPolicyName("crrRolePolicy");

iamClient.putRolePolicy(putRolePolicyRequest);

}
}

Versão da API 2006-03-01


647
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

C#

O exemplo de código do AWS SDK para .NET a seguir adiciona a configuração da replicação a um
bucket e, depois, a recupera. Para usar esse código, dê nomes aos buckets e o nome de recurso
da Amazon (ARN) à função do IAM. Para obter instruções sobre como criar e testar um exemplo
funcional, consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class CrossRegionReplicationTest
{
private const string sourceBucket = "*** source bucket ***";
// Bucket ARN example - arn:aws:s3:::destinationbucket
private const string destinationBucketArn = "*** destination bucket ARN ***";
private const string roleArn = "*** IAM Role ARN ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint sourceBucketRegion =
RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
public static void Main()
{
s3Client = new AmazonS3Client(sourceBucketRegion);
EnableReplicationAsync().Wait();
}
static async Task EnableReplicationAsync()
{
try
{
ReplicationConfiguration replConfig = new ReplicationConfiguration
{
Role = roleArn,
Rules =
{
new ReplicationRule
{
Prefix = "Tax",
Status = ReplicationRuleStatus.Enabled,
Destination = new ReplicationDestination
{
BucketArn = destinationBucketArn
}
}
}
};

PutBucketReplicationRequest putRequest = new


PutBucketReplicationRequest
{
BucketName = sourceBucket,
Configuration = replConfig
};

PutBucketReplicationResponse putResponse = await


s3Client.PutBucketReplicationAsync(putRequest);

// Verify configuration by retrieving it.


await RetrieveReplicationConfigurationAsync(s3Client);
}
catch (AmazonS3Exception e)

Versão da API 2006-03-01


648
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
private static async Task RetrieveReplicationConfigurationAsync(IAmazonS3
client)
{
// Retrieve the configuration.
GetBucketReplicationRequest getRequest = new GetBucketReplicationRequest
{
BucketName = sourceBucket
};
GetBucketReplicationResponse getResponse = await
client.GetBucketReplicationAsync(getRequest);
// Print.
Console.WriteLine("Printing replication configuration information...");
Console.WriteLine("Role ARN: {0}", getResponse.Configuration.Role);
foreach (var rule in getResponse.Configuration.Rules)
{
Console.WriteLine("ID: {0}", rule.Id);
Console.WriteLine("Prefix: {0}", rule.Prefix);
Console.WriteLine("Status: {0}", rule.Status);
}
}
}
}

Configuração da replicação para os buckets de origem e destino


forem de propriedade de contas diferentes
A definição de replicação quando os buckets de origem e destino são de propriedade de diferentes
contas da AWS é semelhante à definição de uma replicação quando os dois buckets são de propriedade
da mesma conta. A única diferença é que o proprietário do bucket de destino deve conceder ao
proprietário do bucket de origem permissão para replicar objetos adicionando uma política do bucket.

Para obter mais informações sobre como configurar a replicação usando criptografia de vários lados com o
AWS Key Management Service em cenários entre contas, consulte Conceder permissões adicionais para
cenários entre contas (p. 677).

Como configurar a replicação quando os buckets de origem e destino forem de propriedade de


contas diferentes da AWS

1. Neste exemplo, crie os buckets de origem e destino em duas contas diferentes da AWS. Você
precisa ter dois perfis de credencial definidos para a AWS CLI (neste exemplo, usamos os nomes
de perfil acctA e acctB). Para obter mais informações sobre como configurar perfis de credenciais,
consulte Perfis nomeados no Guia do usuário da interface da linha de comando da AWS.
2. Siga as instruções passo a passo em Configuração de buckets na mesma conta (p. 637) com as
seguintes alterações:

• Para todos os comandos da CLI da AWS relacionados a atividades do bucket de origem (para criar
o bucket de origem, habilitar o versionamento e criar a função do IAM), use o perfil acctA. Use o
perfil acctB para criar o bucket de destino.

Versão da API 2006-03-01


649
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

• Verifique se a política e permissões especifica os buckets de origem e destino que você criou
para este exemplo.
3. No console, adicione a seguinte política do bucket ao bucket de destino para permitir que o
proprietário do bucket de origem replique objetos. Não deixe de editar a política ao fornecer o ID da
conta da AWS do proprietário do bucket de origem e o nome do bucket de destino.

{
"Version":"2012-10-17",
"Id":"",
"Statement":[
{
"Sid":"Set permissions for objects",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::source-bucket-acct-ID:source-acct-IAM-role"
},
"Action":["s3:ReplicateObject", "s3:ReplicateDelete"],
"Resource":"arn:aws:s3:::destination/*"
},
{
"Sid":"Set permissions on bucket",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::source-bucket-acct-ID:source-acct-IAM-role"
},
"Action":["s3:GetBucketVersioning", "s3:PutBucketVersioning"],
"Resource":"arn:aws:s3:::destination"
}
]
}

Escolha o bucket e adicione a política do bucket. Para obter instruções, consulte Adicionar uma política de
bucket usando o console do Amazon S3 (p. 377).

Na replicação, o proprietário do objeto de origem possui a réplica por padrão. Quando os buckets de
origem e destino forem de propriedade de diferentes contas da AWS, você poderá adicionar configurações
opcionais para alterar a propriedade da réplica para a conta da AWS proprietária do bucket de destino.
Para obter mais informações, consulte Alterar o proprietário da réplica (p. 670).

Alteração do proprietário da réplica para os buckets de origem e


de destino forem de propriedade de contas diferentes
Quando os buckets de origem e de destino na configuração da replicação forem de propriedade de
diferentes contas da AWS, você poderá instruir o Amazon S3 a alterar a propriedade da réplica para a
conta da AWS que é proprietária do bucket de destino. Este exemplo explica como usar o console do
Amazon S3 e a CLI da AWS para alterar a propriedade da réplica. Para obter mais informações, consulte
Alterar o proprietário da réplica (p. 670).

Para obter mais informações sobre como configurar a replicação usando criptografia de vários lados com o
AWS Key Management Service em cenários entre contas, consulte Conceder permissões adicionais para
cenários entre contas (p. 677).

Uso do console do S3

Para obter instruções detalhadas, consulte Configuração da replicação para buckets de origem e de
destino pertencentes à mesma conta (p. 637). Este tópico traz instruções para definir a configuração da
replicação quando os buckets forem de propriedade de contas iguais e diferentes da AWS.

Versão da API 2006-03-01


650
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Usar a CLI da AWS

Para alterar a propriedade da réplica usando a CLI da AWS, crie buckets, habilite o versionamento neles,
crie uma função do IAM que dê permissão ao Amazon S3 para replicar objetos e adicione a configuração
da replicação ao bucket de origem. Na configuração da replicação, você instrui o Amazon S3 a alterar o
proprietário da réplica. Você também testa a configuração.

Para alterar o proprietário da réplica quando os buckets de origem e de destino forem de


propriedade de diferentes contas da AWS (AWS CLI)

1. Neste exemplo, você cria os buckets de origem e destino em duas contas diferentes da AWS.
Configure a CLI da AWS com dois perfis nomeados. Este exemplo usa os perfis nomeados acctA e
acctB, respectivamente. Para obter mais informações sobre como configurar perfis de credenciais,
consulte Perfis nomeados no Guia do usuário da interface da linha de comando da AWS.
Important

Os perfis que você usar para este exercício deve ter as permissões necessárias. Por
exemplo, na configuração da replicação, especifique a função do IAM que o Amazon S3
pode assumir. Você só pode fazer isso se o perfil usado tiver a permissão iam:PassRole.
Se você usar as credenciais do usuário administrador para criar um perfil nomeado, poderá
executar todas as tarefas. Para obter mais informações, consulte Conceder permissões ao
usuário para passar uma função a um serviço da AWS no Guia do usuário do IAM.

Você precisa garantir que esses perfis tenham as permissões necessárias. Por exemplo, a
configuração de replicação inclui uma função do IAM que o Amazon S3 pode assumir. O perfil
nomeado que você usa para conectar essa configuração a um bucket só poderá fazer isso se tiver
a permissão iam:PassRole. Se você especificar as credenciais do usuário administrador ao criar
esses perfis nomeados, eles terão todas as permissões. Para obter mais informações, consulte
Conceder permissões ao usuário para passar uma função a um serviço da AWS no Guia do usuário
do IAM.
2. Crie o bucket de origem e habilite o versionamento. Este exemplo cria o bucket de origem na região
Leste dos EUA (Norte da Virgínia) (us-east-1).

aws s3api create-bucket \


--bucket source \
--region us-east-1 \
--profile acctA

aws s3api put-bucket-versioning \


--bucket source \
--versioning-configuration Status=Enabled \
--profile acctA

3. Crie um bucket de destino e habilite o versionamento. Este exemplo cria o bucket de destino na
região Oeste dos EUA (Oregon) (us-west-2). Use um perfil de conta da AWS diferente do usado para
o bucket de origem.

aws s3api create-bucket \


--bucket destination \
--region us-west-2 \
--create-bucket-configuration LocationConstraint=us-west-2 \
--profile acctB

aws s3api put-bucket-versioning \


--bucket destination \
--versioning-configuration Status=Enabled \
Versão da API 2006-03-01
651
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

--profile acctB

4. É necessário adicionar permissões à política de bucket de destino para permitir a alteração da


propriedade da réplica.

a. Salve a seguinte política no destination-bucket-policy.json

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "destination_bucket_policy_sid",
"Principal": {
"AWS": "source-bucket-owner-account-id"
},
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ObjectOwnerOverrideToBucketOwner",
"s3:ReplicateTags",
"s3:GetObjectVersionTagging"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::destination/*"
]
}
]
}

b. Coloque a política acima no bucket de destino:

aws s3api put-bucket-policy --region $ {destination_region} --


bucket $ {destination} --policy file://destination_bucket_policy.json

5. Crie uma função do IAM. Você especifica essa função na configuração da replicação que adiciona ao
bucket de origem posteriormente. O Amazon S3 assume essa função para replicar objetos em seu
nome. A função do IAM é criada em duas etapas:

• Crie uma função.


• Anexar uma política de permissões à função.

a. Crie uma função do IAM.

i. Copie a política de confiança a seguir e salve-a em um arquivo chamado s3-role-trust-


policy.json no diretório atual do computador local. Essa política concede ao Amazon S3
permissões para assumir a função.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]

Versão da API 2006-03-01


652
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

ii. Execute o seguinte comando da CLI da AWS para criar uma função.

$ aws iam create-role \


--role-name replicationRole \
--assume-role-policy-document file://s3-role-trust-policy.json \
--profile acctA

b. Anexar uma política de permissões à função.

i. Copie a política de permissões a seguir e salve-a em um arquivo com o nome s3-role-


perm-pol-changeowner.json no diretório atual do computador local. Essa política
concede permissões para várias ações de bucket e objetos do Amazon S3. Nas etapas a
seguir, crie uma função do IAM e anexe a política à função.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl"
],
"Resource":[
"arn:aws:s3:::source/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetReplicationConfiguration"
],
"Resource":[
"arn:aws:s3:::source"
]
},
{
"Effect":"Allow",
"Action":[
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ObjectOwnerOverrideToBucketOwner",
"s3:ReplicateTags",
"s3:GetObjectVersionTagging"
],
"Resource":"arn:aws:s3:::destination/*"
}
]
}

ii. Para criar uma política e ligá-la à função, execute o comando a seguir.

$ aws iam put-role-policy \


--role-name replicationRole \
--policy-document file://s3-role-perm-pol-changeowner.json \
--policy-name replicationRolechangeownerPolicy \
--profile acctA

6. Adicione uma configuração de replicação ao bucket de origem.

Versão da API 2006-03-01


653
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

a. A CLI da AWS requer que você especifique a configuração da replicação como JSON. Salve
o JSON a seguir em um arquivo chamado replication.json no diretório atual local do
computador local. Na configuração, a adição de AccessControlTranslation indica alteração
na propriedade da réplica.

{
"Role":"IAM-role-ARN",
"Rules":[
{
"Status":"Enabled",
"Priority":1,
"DeleteMarkerReplication":{
"Status":"Disabled"
},
"Filter":{
},
"Status":"Enabled",
"Destination":{
"Bucket":"arn:aws:s3:::destination",
"Account":"destination-bucket-owner-account-id",
"AccessControlTranslation":{
"Owner":"Destination"
}
}
}
]
}

b. Edite o JSON fornecendo os valores do ID da conta do proprietário do bucket de destino e


IAM-role-ARN. Salve as alterações.
c. Para adicionar a configuração de replicação ao bucket de origem, execute o comando a seguir.
Dê o nome do bucket de origem.

$ aws s3api put-bucket-replication \


--replication-configuration file://replication.json \
--bucket source \
--profile acctA

7. Verifique a propriedade da réplica no console do Amazon S3.

a. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
b. Adicione objetos ao bucket de origem. Verifique se o bucket de destino contém as réplicas
do objeto e se a propriedade das réplicas mudou para a conta da AWS proprietária do bucket de
destino.

Uso dos AWS SDKs

Para obter um exemplo de código para adicionar a configuração da replicação, consulte Uso dos AWS
SDKs (p. 644). É necessário modificar a configuração de replicação de acordo. Para obter informações
conceituais, consulte Alterar o proprietário da réplica (p. 670).

Replicar objetos criptografados


Por padrão, o Amazon S3 não replica objetos armazenados em repouso usando a criptografia no lado
do servidor com chaves mestras de cliente (CMKs) do AWS Key Management Service (AWS KMS). Para
replicar objetos criptografados, modifique a configuração da replicação do bucket para instruir o Amazon
S3 a replicar esses objetos. Este exemplo explica como usar o console do Amazon S3 e a interface da

Versão da API 2006-03-01


654
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

linha de comando da AWS (CLI da AWS) para alterar a configuração da replicação do bucket para permitir
a replicação de objetos criptografados. Para obter mais informações, consulte Replicação de objetos
criados com criptografia no lado do servidor (SSE) usando CMKs do AWS KMS (p. 672).

Uso do console do S3

Para obter instruções detalhadas, consulte Configuração da replicação para buckets de origem e de
destino pertencentes à mesma conta (p. 637). Este tópico traz instruções para definir a configuração da
replicação quando os buckets forem de propriedade de contas iguais e diferentes da AWS.

Usar a CLI da AWS

Para replicar objetos criptografados com a CLI da AWS, crie buckets, habilite o versionamento neles,
crie uma função do IAM que dê permissão ao Amazon S3 para replicar objetos e adicione a configuração
da replicação ao bucket de origem. A configuração de replicação fornece informações relacionadas à
replicação de objetos criptografados usando as chaves do KMS. As permissões da função do IAM incluem
as permissões necessárias para replicar os objetos criptografados. Você também testa a configuração.

Como replicar objetos criptografados no lado do servidor (CLI da AWS)

1. Neste exemplo, criamos tanto os buckets de origem quanto de destino na mesma conta da AWS.
Defina um perfil de credenciais para a CLI da AWS. Neste exemplo, usamos o nome de perfil acctA.
Para obter mais informações sobre como configurar perfis de credenciais, consulte Perfis nomeados
no Guia do usuário da interface da linha de comando da AWS.
2. Crie o bucket de origem e habilite o versionamento nele. Neste exemplo, criamos o bucket de
origem na região Leste dos EUA (Norte da Virgínia) (us-east-1).

aws s3api create-bucket \


--bucket source \
--region us-east-1 \
--profile acctA

aws s3api put-bucket-versioning \


--bucket source \
--versioning-configuration Status=Enabled \
--profile acctA

3. Crie o bucket de destino e habilite o versionamento nele. Neste exemplo, criamos o bucket de
destino na região Oeste dos EUA (Oregon) (us-west-2).
Note

Para fazer a configuração da replicação quando os buckets de origem e destino estiverem


na mesma conta da AWS, use o mesmo perfil. Neste exemplo, usamos acctA. Para testar a
configuração da replicação quando os buckets forem de propriedade de diferentes contas da
AWS, especifique diferentes perfis para cada um.

aws s3api create-bucket \


--bucket destination \
--region us-west-2 \
--create-bucket-configuration LocationConstraint=us-west-2 \
--profile acctA

aws s3api put-bucket-versioning \


--bucket destination \
--versioning-configuration Status=Enabled \
--profile acctA

Versão da API 2006-03-01


655
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

4. Crie uma função do IAM. Você especifica essa função na configuração da replicação que adiciona ao
bucket de origem posteriormente. O Amazon S3 assume essa função para replicar objetos em seu
nome. A função do IAM é criada em duas etapas:

• Criar uma função


• Anexar uma política de permissões à função

a. Crie uma função do IAM.

i. Copie a política de confiança a seguir e salve-a em um arquivo com o nome s3-role-


trust-policy-kmsobj.json no diretório atual do seu computador local. Essa política
concede ao serviço Amazon S3 as principais permissões para assumir a função para que o
Amazon S3 possa executar tarefas em seu nome.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}

ii. Crie uma função.

$ aws iam create-role \


--role-name replicationRolekmsobj \
--assume-role-policy-document file://s3-role-trust-policy-kmsobj.json \
--profile acctA

b. Anexar uma política de permissões à função. Essa política concede permissões para várias ações
de bucket e objetos do Amazon S3.

i. Copie a política de permissões a seguir e salve-a em um arquivo com o nome s3-role-


permissions-policykmsobj.json no diretório atual do computador local. Crie uma
função do IAM e depois anexe a política à ela.
Important

Na política de permissões, especifique os IDs de chaves do AWS KMS que serão


usados para a criptografia dos buckets de origem e de destination. É necessário
criar duas CMKs separadas do AWS KMS para os buckets de source e de
destination. As chaves do AWS KMS nunca são compartilhadas fora das regiões
da AWS onde foram criadas.

{
"Version":"2012-10-17",
"Statement":[
{
"Action":[
"s3:ListBucket",
"s3:GetReplicationConfiguration",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
Versão da API 2006-03-01
656
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

"Effect":"Allow",
"Resource":[
"arn:aws:s3:::source",
"arn:aws:s3:::source/*"
]
},
{
"Action":[
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
],
"Effect":"Allow",
"Condition":{
"StringLikeIfExists":{
"s3:x-amz-server-side-encryption":[
"aws:kms",
"AES256"
],
"s3:x-amz-server-side-encryption-aws-kms-key-id":[
"AWS KMS key IDs(in ARN format) to use for encrypting object
replicas"
]
}
},
"Resource":"arn:aws:s3:::destination/*"
},
{
"Action":[
"kms:Decrypt"
],
"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::source/*"
]
}
},
"Resource":[
"AWS KMS key IDs(in ARN format) used to encrypt source objects."
]
},
{
"Action":[
"kms:Encrypt"
],
"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.us-west-2.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::destination/*"
]
}
},
"Resource":[
"AWS KMS key IDs(in ARN format) to use for encrypting object
replicas"
]
}
]
}

Versão da API 2006-03-01


657
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

ii. Crie uma política e anexe-a à função.

$ aws iam put-role-policy \


--role-name replicationRolekmsobj \
--policy-document file://s3-role-permissions-policykmsobj.json \
--policy-name replicationRolechangeownerPolicy \
--profile acctA

5. Adicione a seguinte configuração de replicação ao bucket de origem. Isso instrui o Amazon S3 a


replicar objetos com o prefixo Tax/ no bucket de destino.
Important

Na configuração da replicação, especifique a função do IAM que o Amazon S3 pode assumir.


Você só poderá fazer isso se tiver a permissão iam:PassRole. O perfil especificado no
comando da CLI deve ter a permissão. Para obter mais informações, consulte Conceder
permissões ao usuário para passar uma função a um serviço da AWS no Guia do usuário do
IAM.

<ReplicationConfiguration>
<Role>IAM-Role-ARN</Role>
<Rule>
<Status>Enabled</Status>
<Priority>1</Priority>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>Tax</Prefix>
</Filter>
<Status>Enabled</Status>
<SourceSelectionCriteria>
<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>
<Destination>
<Bucket>arn:aws:s3:::dest-bucket-name</Bucket>
<EncryptionConfiguration>
<ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</
ReplicaKmsKeyID>
</EncryptionConfiguration>
</Destination>
</Rule>
</ReplicationConfiguration>

Para adicionar a configuração de replicação ao bucket de origem, faça o seguinte:

a. A CLI da AWS requer que você especifique a configuração da replicação como JSON. Salve o
JSON a seguir em um arquivo (replication.json) no diretório atual local do seu computador
local.

{
"Role":"IAM-Role-ARN",
"Rules":[
{
"Status":"Enabled",
"Priority":1,
"DeleteMarkerReplication":{
"Status":"Disabled"
},
"Filter":{

Versão da API 2006-03-01


658
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

"Prefix":"Tax"
},
"Destination":{
"Bucket":"arn:aws:s3:::destination",
"EncryptionConfiguration":{
"ReplicaKmsKeyID":"AWS KMS key IDs(in ARN format) to use for
encrypting object replicas"
}
},
"SourceSelectionCriteria":{
"SseKmsEncryptedObjects":{
"Status":"Enabled"
}
}
}
]
}

b. Edite o JSON para fornecer valores para o bucket de destino, ARN de ID do KMS e IAM-
role-ARN. Salve as alterações.
c. Adicione a configuração de replicação ao bucket de origem. Não deixe de dar um nome ao
bucket de origem.

$ aws s3api put-bucket-replication \


--replication-configuration file://replication.json \
--bucket source \
--profile acctA

6. Teste a configuração para verificar se os objetos criptografados estão replicados. No console do


Amazon S3:

a. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
b. No bucket de origem, crie uma pasta chamada Tax.
c. Adicione objetos de amostra à pasta. Não se esqueça de escolher a opção de criptografia e
especificar a CMK do AWS KMS para criptografar os objetos.
d. Verifique se o bucket de destino contém as réplicas dos objetos e se elas são criptografadas
usando a CMK do AWS KMS especificada na configuração.

Uso dos AWS SDKs

Para obter um exemplo de código para adicionar a configuração da replicação, consulte Uso dos AWS
SDKs (p. 644). É necessário modificar a configuração de replicação de acordo.

Para obter informações conceituais, consulte Replicação de objetos criados com criptografia no lado do
servidor (SSE) usando CMKs do AWS KMS (p. 672).

Replicação de objetos com o Controle de Tempo de Replicação


do S3 (S3 RTC)
O Controle do tempo de replicação do S3 (S3 RTC) ajuda a atender aos requisitos empresariais ou de
conformidade relacionados à replicação de dados, além de fornecer visibilidade dos tempos de replicação
do Amazon S3. O S3 RTC replica a maioria dos objetos obtidos por upload para o Amazon S3 em
segundos, e 99,99 por cento desses objetos em 15 minutos.

Com o S3 RTC, você pode monitorar o número total e o tamanho dos objetos com replicação pendente
e o tempo máximo de replicação para a região de destino. As métricas de replicação estão disponíveis
por meio do Console de Gerenciamento da AWS e do Guia do usuário do Amazon CloudWatch.

Versão da API 2006-03-01


659
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Para obter mais informações, consulte the section called “Métricas de replicação do Amazon S3
CloudWatch” (p. 859).

Uso do console do S3

Para obter instruções detalhadas, consulte Configuração da replicação para buckets de origem e de
destino pertencentes à mesma conta (p. 637). Este tópico traz instruções para habilitar o S3 RTC na
configuração da replicação quando os buckets forem de propriedade de contas iguais e diferentes da
AWS.

Usar a CLI da AWS

Para usar a AWS CLI para replicar objetos com o S3 RTC habilitado na AWS CLI, crie buckets, habilite o
versionamento neles, crie uma função do IAM que conceda permissão ao Amazon S3 para replicar objetos
e adicione a configuração da replicação ao bucket de origem. A configuração da replicação precisa ter o
Controle do tempo de replicação do S3 (S3 RTC) habilitado.

Como replicar com o S3 RTC habilitado (AWS CLI)

• O exemplo a seguir define ReplicationTime e Metric, e adiciona configuração de replicação ao


bucket de origem.

{
"Rules": [
{
"Status": "Enabled",
"Filter": {
"Prefix": "Tax"
},
"DeleteMarkerReplication": {
"Status": "Disabled"
},
"Destination": {
"Bucket": "arn:aws:s3:::destination",
"Metrics": {
"Status": "Enabled",
"EventThreshold": {
"Minutes": 15
}
},
"ReplicationTime": {
"Status": "Enabled",
"Time": {
"Minutes": 15
}
}
},
"Priority": 1
}
],
"Role": "IAM-Role-ARN"
}

Important

Metrics:EventThreshold:Minutes e ReplicationTime:Time:Minutes podem ter


apenas 15, que é um valor válido.

Versão da API 2006-03-01


660
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

Usando o AWS SDK Java

O seguinte exemplo de Java adiciona a configuração da replicação com o Controle do tempo de replicação
do S3 (S3 RTC):

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.model.DeleteMarkerReplication;
import software.amazon.awssdk.services.s3.model.Destination;
import software.amazon.awssdk.services.s3.model.Metrics;
import software.amazon.awssdk.services.s3.model.MetricsStatus;
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.ReplicationConfiguration;
import software.amazon.awssdk.services.s3.model.ReplicationRule;
import software.amazon.awssdk.services.s3.model.ReplicationRuleFilter;
import software.amazon.awssdk.services.s3.model.ReplicationTime;
import software.amazon.awssdk.services.s3.model.ReplicationTimeStatus;
import software.amazon.awssdk.services.s3.model.ReplicationTimeValue;

public class Main {

public static void main(String[] args) {


S3Client s3 = S3Client.builder()
.region(Region.US_EAST_1)
.credentialsProvider(() -> AwsBasicCredentials.create(
"AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY")
)
.build();

ReplicationConfiguration replicationConfig = ReplicationConfiguration


.builder()
.rules(
ReplicationRule
.builder()
.status("Enabled")
.priority(1)
.deleteMarkerReplication(
DeleteMarkerReplication
.builder()
.status("Disabled")
.build()
)
.destination(
Destination
.builder()
.bucket("destination_bucket_arn")
.replicationTime(
ReplicationTime.builder().time(
ReplicationTimeValue.builder().minutes(15).build()
).status(
ReplicationTimeStatus.ENABLED
).build()
)
.metrics(
Metrics.builder().eventThreshold(
ReplicationTimeValue.builder().minutes(15).build()
).status(
MetricsStatus.ENABLED
).build()
)
.build()
)
.filter(
ReplicationRuleFilter

Versão da API 2006-03-01


661
Amazon Simple Storage Service Guia do usuário
Configuração da replicação

.builder()
.prefix("testtest")
.build()
)
.build())
.role("role_arn")
.build();

// Put replication configuration


PutBucketReplicationRequest putBucketReplicationRequest = PutBucketReplicationRequest
.builder()
.bucket("source_bucket")
.replicationConfiguration(replicationConfig)
.build();

s3.putBucketReplication(putBucketReplicationRequest);
}
}

Para obter mais informações, consulte Atendimento aos requisitos de conformidade usando o Controle do
tempo de replicação do S3 (S3 RTC) (p. 665).

Gerenciamento de regras de replicação usando o console do


Amazon S3
A replicação é a cópia assíncrona automática de objetos em buckets na mesma ou em diferentes regiões
da AWS. Ela replica os objetos recém-criados e as atualizações de objeto de um bucket de origem para
um bucket de destino especificado.

Você usa o console do Amazon S3 para adicionar regras de replicação ao bucket de origem. As regras
de replicação definem os objetos do bucket de origem que devem ser replicados e o bucket de destino
ou buckets nos quais os objetos replicados estão armazenados. Para obter mais informações sobre a
replicação, consulte Replicação de objetos (p. 617).

Você pode gerenciar as regras de replicação na página Replication (Replicação). Você pode adicionar, ver,
habilitar, desabilitar, excluir e alterar a prioridade das regras de replicação. Para obter informações sobre
como adicionar regras de replicação a um bucket, consulte Uso do console do S3 (p. 637).

Como gerenciar as regras de replicação para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket desejado.
3. Escolha Management (Gerenciamento) e role para baixo até Replication rules (Regras de replicação).
4. Você pode alterar as regras de replicação das seguintes formas:
• Para habilitar ou desabilitar uma regra de replicação, selecione a regra, escolha Actions (Ações),
e, na lista suspensa, escolha Enable rule (Habilitar regra) ou Disable rule (Desabilitar regra). Você
também pode desabilitar, habilitar ou excluir todas as regras do bucket na lista suspensa Actions
(Ações).
• Para alterar as prioridades de regra, selecione a regra e escolha Edit (Editar), o que faz com que
o Assistente de replicação comece a ajudá-lo a fazer a alteração. Para obter informações sobre
como usar o assistente, consulte Uso do console do S3 (p. 637).

Defina prioridades para a regra, de maneira a evitar conflitos causados pelos objetos incluídos no
escopo de mais de uma regra. No caso de sobreposição de regras, o Amazon S3 usa a prioridade
da regra para determinar qual regra aplicar. Quanto maior o número, maior a prioridade. Para
obter mais informações sobre prioridade de regra, consulte Configuração de replicação (p. 622).

Versão da API 2006-03-01


662
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Configurações de replicação adicionais


Esta seção descreve opções adicionais de configuração de replicação disponíveis no Amazon S3.
Para obter informações sobre a configuração de replicação principal, consulte Configuração da
replicação (p. 622).

Tópicos
• Monitoramento do progresso com métricas de replicação e notificações de eventos do Amazon
S3 (p. 663)
• Atendimento aos requisitos de conformidade usando o Controle do tempo de replicação do S3 (S3
RTC) (p. 665)
• Replicação de marcadores de exclusão entre intervalos (p. 668)
• Replicação de alterações de metadados com sincronização de modificação de réplica do Amazon
S3 (p. 669)
• Alterar o proprietário da réplica (p. 670)
• Replicação de objetos criados com criptografia no lado do servidor (SSE) usando CMKs do AWS
KMS (p. 672)

Monitoramento do progresso com métricas de replicação e


notificações de eventos do Amazon S3
As métricas de replicação do S3 fornecem métricas detalhadas para as regras de replicação na
configuração de replicação. Com as métricas de replicação, você pode monitorar o andamento minuto a
minuto da replicação rastreando bytes pendentes, operações pendentes e latência de replicação. Além
disso, você pode configurar Notificações de eventos do Amazon S3 para receber eventos de falha de
replicação para ajudar na solução de problemas de configuração.

Quando ativadas, as métricas de replicação do S3 publicam as seguintes métricas no Amazon


CloudWatch:

Bytes pendentes de replicação—O número total de bytes de objetos com replicação pendente para uma
determinada regra de replicação.

Latência de replicação— o número máximo de segundos pelo qual os buckets de destino da replicação
estão atrás do bucket de origem para uma determinada regra de replicação.

Operações pendentes de replicação— o número de operações pendentes de replicação para uma


determinada regra de replicação. As operações incluem objetos, marcadores de exclusão, tags, ACLs e
operações de Bloqueio de objeto.
Note

As métricas de replicação de S3 são cobradas usando a mesma taxa das métricas personalizadas
do Amazon CloudWatch. Para obter mais informações, consulte Definição de preço do Amazon
CloudWatch.

As métricas de replicação do S3 são ativadas automaticamente quando você habilita o Controle do


tempo de replicação do S3 (S3 RTC). O S3 RTC inclui outros recursos, como um contrato de nível de
serviço (SLA) e notificações para limites perdidos. Para obter mais informações, consulte Atendimento aos
requisitos de conformidade usando o Controle do tempo de replicação do S3 (S3 RTC) (p. 665).

Tópicos
• Ativação de métricas de replicação do S3 (p. 664)
• Recebimento de eventos de falha de replicação com notificações de eventos do Amazon S3 (p. 664)
• Exibição de métricas de replicação usando o console do Amazon S3 (p. 664)

Versão da API 2006-03-01


663
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Ativação de métricas de replicação do S3


Você pode começar a usar métricas de replicação do S3 com uma regra de replicação nova ou existente.
Você pode optar por aplicar a regra de replicação a um bucket do S3 inteiro ou a objetos do Amazon S3
com um prefixo ou tag específica.

Este tópico traz instruções para habilitar as métricas de replicação do S3 em sua configuração da
replicação quando os buckets forem de propriedade de contas iguais e diferentes da AWS.

Para habilitar métricas de replicação usando a Interface de linhas de comando da AWS (AWS CLI), você
deve adicionar uma configuração de replicação ao bucket de origem com Metrics habilitadas. Neste
exemplo de configuração, os objetos sob o prefixo Tax (Imposto) são replicados para o bucket de destino
DOC-EXAMPLE-BUCKET, e métricas são geradas para esses objetos.

{
"Rules": [
{
"Status": "Enabled",
"Filter": {
"Prefix": "Tax"
},
"Destination": {
"Bucket": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"Metrics": {
"Status": "Enabled"
}
},
"Priority": 1
}
],
"Role": "IAM-Role-ARN"
}

Para obter instruções completas sobre como criar regras de replicação, consulte Configuração da
replicação para buckets de origem e de destino pertencentes à mesma conta (p. 637).

Para obter mais informações sobre como exibir métricas de replicação no console do S3, consulte Exibição
de métricas de replicação usando o console do Amazon S3 (p. 664).

Recebimento de eventos de falha de replicação com notificações de eventos do


Amazon S3
As notificações de eventos do Amazon S3 podem notificá-lo na instância rara quando os objetos não
forem replicados para a região de destino. Os eventos do Amazon S3 estão disponíveis no Amazon
Simple Queue Service (Amazon SQS), no Amazon Simple Notification Service (Amazon SNS) ou no AWS
Lambda. Para obter mais informações, consulte Configurar notificações de eventos do Amazon S3.

Exibição de métricas de replicação usando o console do Amazon S3


Existem três tipos de métricas do Amazon CloudWatch para o Amazon S3: métricas de armazenamento,
métricas de solicitação e métricas de replicação. As métricas de replicação são ativadas automaticamente
quando você habilita a replicação com o Controle do tempo de replicação do S3 (S3 RTC) usando o
Console de Gerenciamento da AWS ou a API do Amazon S3. As métricas de replicação estão disponíveis
15 minutos após a habilitação de uma regra de replicação com o Controle do tempo de replicação do S3
(S3 RTC).

As métricas de replicação controlam os IDs de regra da configuração de replicação. Um ID de regra


de replicação pode ser específico para um prefixo, uma tag ou uma combinação de ambos. Para obter
mais informações sobre o Controle do tempo de replicação do S3 (S3 RTC), consulte Atendimento aos
requisitos de conformidade usando o Controle do tempo de replicação do S3 (S3 RTC) (p. 665).

Versão da API 2006-03-01


664
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Para obter mais informações sobre métricas do CloudWatch para o Amazon S3, consulte Monitoramento
de métricas com o Amazon CloudWatch (p. 855).

Pré-requisitos

Habilite uma regra de replicação que tenha o S3 RTC.

Como exibir métricas de replicação

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket que contém os objetos para os quais você deseja
métricas de replicação.
3. Escolha a guia Metrics.
4. Em Replication metrics (Métricas de replicação), escolha Replication rules (Regras de replicação).
5. Escolha Display charts (Exibir gráficos).

O Amazon S3 exibe Replication Latency (in seconds) (Latência de replicação (em segundos)),
Operations pending replication (Operações pendentes de replicação) em gráficos.
6. Para exibir todas as métricas de replicação, incluindo Bytes pending replication (Bytes pendentes de
replicação)), Replication Latency (in seconds) (Latência de replicação (em segundos)), e Operations
pending replication (Operações pendentes replicação) juntos em uma página separada, escolha View
1 more chart (Exibir mais 1 gráfico).

Depois, você pode exibir as métricas de replicação Replication Latency (in seconds) (Latência de
replicação (em segundos)), Operations pending replication (Operações pendentes de replicação) e Bytes
pending replication (Replicação de bytes pendentes) para as regras selecionadas. O Amazon CloudWatch
começa a relatar métricas de replicação 15 minutos após você habilitar o S3 RTC na respectiva regra de
replicação. Você pode visualizar métricas de replicação no console do Amazon S3 ou do CloudWatch.
Para obter informações, consulte Métricas de replicação com o S3 RTC (p. 666).

Atendimento aos requisitos de conformidade usando o Controle


do tempo de replicação do S3 (S3 RTC)
O Controle do tempo de replicação do S3 (S3 RTC) ajuda a atender aos requisitos empresariais ou de
conformidade relacionados à replicação de dados, além de fornecer visibilidade dos tempos de replicação
do Amazon S3. O S3 RTC replica a maioria dos objetos obtidos por upload para o Amazon S3 em
segundos, e 99,99 por cento desses objetos em 15 minutos.

O S3 RTC por padrão inclui métricas de replicação S3 e notificações de eventos S3, com as quais
você pode monitorar o número total de operações da API do S3 que estão com replicação pendente, o
tamanho total dos objetos com replicação pendente e o tempo máximo de replicação. As métricas de
replicação podem ser habilitadas independentemente do S3 RTC; consulte Monitoramento do progresso
com métricas de replicação. Além disso, o S3 RTC fornece eventos OperationMissedThreshold e
OperationReplicatedAfterThreshold que notificam o proprietário do bucket se a replicação do
objeto exceder ou replicar após o limite de 15 minutos.

Com o S3 RTC, os eventos do Amazon S3 podem notificar você nas raras vezes em que objetos não
replicam em até 15 minutos e quando esses objetos são replicados com êxito para a região de destino. Os
eventos do Amazon S3 estão disponíveis por meio do Amazon SQS, Amazon SNS ou AWS Lambda. Para
obter mais informações, consulte the section called “Notificações de eventos do Amazon S3” (p. 869).

Tópicos
• Habilitar o Controle do tempo de replicação do S3 (p. 666)
• Métricas de replicação com o S3 RTC (p. 666)

Versão da API 2006-03-01


665
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

• Usar notificações de eventos do Amazon S3 para rastrear objetos de replicação (p. 666)
• Melhores práticas e diretrizes do S3 RTC (p. 666)

Habilitar o Controle do tempo de replicação do S3


Você pode começar a usar o Controle do tempo de replicação do S3 (S3 RTC) com uma regra de
replicação nova ou existente. Você pode optar por aplicar a regra de replicação a um bucket do S3 inteiro
ou a objetos do Amazon S3 com um prefixo ou tag específica. Quando você habilita o S3 RTC, as métricas
de replicação também são habilitadas na regra de replicação.

Se estiver usando a versão mais recente da configuração de replicação (ou seja, se você especificar o
elemento Filter em uma regra de configuração da replicação), o Amazon S3 não replicará o marcador
de exclusão, por padrão. No entanto, você pode adicionar replicação do marcador de exclusão a regras
não baseadas em tags.
Note

As métricas de replicação são cobradas na mesma taxa que as métricas personalizadas do


Amazon CloudWatch. Para obter mais informações, consulte Definição de preço do Amazon
CloudWatch.

Para obter mais informações sobre como criar uma regra com o S3 RTC, consulte Replicação de objetos
com o Controle de Tempo de Replicação do S3 (S3 RTC) (p. 659).

Métricas de replicação com o S3 RTC


As regras de replicação com o Controle do tempo de replicação do S3 (S3 RTC) habilitado publica
métricas de replicação. Com métricas de replicação, é possível monitorar o número total de operações
de API do S3 que estão pendentes de replicação, o tamanho total de objetos pendentes de replicação e
o tempo máximo de replicação para a região de destino. Você pode monitorar cada conjunto de dados
replicado separadamente.

As métricas de replicação ficam disponíveis 15 minutos após a ativação do S3 RTC. As métricas de


replicação estão disponíveis por meio do console do Amazon S3, da API do Amazon S3, dos AWS SDKs,
da Interface da linha de comando da AWS (CLI da AWS) e do Amazon CloudWatch. Para obter mais
informações, consulte Monitoramento de métricas com o Amazon CloudWatch (p. 855).

Para obter mais informações sobre como encontrar métricas de replicação por meio do console do
Amazon S3, consulte Exibição de métricas de replicação usando o console do Amazon S3 (p. 664).

Usar notificações de eventos do Amazon S3 para rastrear objetos de replicação


Você pode controlar o tempo de replicação de objetos que não foram replicados em 15 minutos
monitorando notificações de eventos específicas que o Controle do tempo de replicação do S3 (S3 RTC)
publica. Esses eventos são publicados quando um objeto qualificado para replicação usando o S3 RTC
não foi replicado em 15 minutos e quando esse objeto é replicado para a região de destino.

Os eventos de replicação estão disponíveis dentro de 15 minutos após a ativação do S3 RTC. Os eventos
do Amazon S3 estão disponíveis por meio do Amazon SQS, Amazon SNS ou AWS Lambda. Para obter
mais informações, consulte Notificações de eventos do Amazon S3 (p. 869).

Melhores práticas e diretrizes do S3 RTC


Ao replicar dados no Amazon S3 usando o Controle do tempo de replicação do S3 (S3 RTC), siga estas
diretrizes de melhores práticas para otimizar o desempenho da replicação para suas cargas de trabalho.

Tópicos
• Diretrizes de performance da taxa de replicação e de solicitação do Amazon S3 (p. 667)

Versão da API 2006-03-01


666
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

• Estimar as taxas de solicitação de replicação (p. 667)


• Exceder os limites da taxa de transferência de dados do S3 RTC (p. 667)
• Taxas de solicitação de replicação de objetos criptografados do AWS KMS (p. 667)

Diretrizes de performance da taxa de replicação e de solicitação do Amazon S3

Ao fazer upload e recuperar armazenamento do Amazon S3, as aplicações podem realizar milhares de
transações por segundo em desempenho de solicitação. Por exemplo, um aplicativo pode atingir pelo
menos 3.500 solicitações PUT/COPY/POST/DELETE ou 5.500 solicitações GET/HEAD por segundo
por prefixo em um bucket do S3, incluindo as solicitações que a replicação do S3 faz em seu nome. Não
há limite para o número de prefixos em um bucket. Você pode aumentar seu desempenho de leitura ou
gravação paralelizando as leituras. Por exemplo, se você criar 10 prefixos em um bucket do S3 para
paralelizar leituras, poderá escalar o desempenho de leitura para 55.000 solicitações de leitura por
segundo.

O Amazon S3 é dimensionado automaticamente em resposta a taxas de solicitação sustentadas acima


dessas diretrizes ou taxas de solicitação sustentadas simultâneas às solicitações LIST. Enquanto o
Amazon S3 estiver sendo otimizado internamente para a nova taxa de solicitação, você pode receber
respostas de solicitação HTTP 503 temporariamente até que a otimização seja concluída. Isso pode
ocorrer com aumentos nas taxas de solicitação por segundo ou quando você habilita o S3 RTC pela
primeira vez. Durante esses períodos, sua latência de replicação pode aumentar. O acordo de nível de
serviço (SLA) do S3 RTC não se aplica a períodos em que as diretrizes de desempenho do Amazon S3 em
solicitações por segundo são excedidas.

O SLA do S3 RTC também não se aplica durante períodos em que a taxa de transferência de dados de
replicação excede o limite padrão de 1 Gbps. Se você espera que sua taxa de transferência de replicação
exceda 1 Gbps, entre em contato com o AWS Support Center ou use as Cotas de serviço para solicitar um
aumento no limite.

Estimar as taxas de solicitação de replicação

A taxa total de solicitações, incluindo as solicitações que a replicação do Amazon S3 faz em seu nome,
deve estar dentro das diretrizes de taxa de solicitação do Amazon S3 para os buckets de origem e destino
da replicação. Para cada objeto replicado, a replicação do Amazon S3 faz até cinco solicitações GET/
HEAD e uma solicitação PUT para o bucket de origem e uma solicitação PUT para cada bucket de destino.

Por exemplo, se você espera replicar 100 objetos por segundo, a replicação do Amazon S3 pode executar
mais 100 solicitações PUT em seu nome para um total de 200 PUTs por segundo para o bucket do S3 de
origem. A replicação do Amazon S3 também pode executar até 500 GET/HEAD (5 solicitações GET/HEAD
para cada objeto replicado).
Note

Você será cobrado pelos custos de apenas uma solicitação PUT por objeto replicado. Para obter
mais informações, consulte as informações sobre definição de preço nas Perguntas frequentes
sobre replicação do Amazon S3.

Exceder os limites da taxa de transferência de dados do S3 RTC

Se você espera que a taxa de transferência de dados do Controle do tempo de replicação do S3 exceda
o limite padrão de 1 Gbps, entre em contato com o AWS Support Center ou use as Cotas de serviço para
solicitar um aumento no limite.

Taxas de solicitação de replicação de objetos criptografados do AWS KMS

Quando você replica objetos criptografados com criptografia no lado do servidor (SSE-KMS) usando a
replicação do Amazon S3, os limites de solicitações por segundo do AWS Key Management Service (AWS
KMS) são aplicáveis. O AWS KMS pode rejeitar uma solicitação válida porque sua taxa de solicitação

Versão da API 2006-03-01


667
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

excede o limite do número de solicitações por segundo. Quando uma solicitação é rejeitada, o AWS
KMS retorna um erro ThrottlingException. O limite de taxa de solicitação do AWS KMS se aplica a
solicitações feitas diretamente e a solicitações feitas pela replicação do Amazon S3 em seu nome.

Por exemplo, se você espera replicar 1.000 objetos por segundo, poderá subtrair 2.000 solicitações do
limite de taxa de solicitação do AWS KMS. A taxa de solicitação resultante por segundo está disponível
para as cargas de trabalho do AWS KMS, excluindo a replicação. Você pode usar métricas de solicitação
do AWS KMS no Amazon CloudWatch para monitorar a taxa total de solicitações do AWS KMS em sua
conta da AWS.

Replicação de marcadores de exclusão entre intervalos


Por padrão, quando a replicação do Amazon S3 está habilitada e um objeto é excluído no bucket de
origem, o Amazon S3 adiciona um marcador de exclusão somente no bucket de origem. Esta ação protege
os dados contra exclusões mal-intencionadas.

Se você tiver a replicação de marcadores de exclusão ativada, esses marcadores serão copiados para
os buckets de destino e o Amazon S3 se comporta como se o objeto tivesse sido excluído nos buckets
de origem e de destino. Para obter mais informações sobre como funcionam os marcadores de exclusão,
consulte Trabalhar com marcadores de exclusão (p. 536).
Note

A replicação de marcadores de exclusão não é suportada para regras de replicação baseadas


em tags. A replicação de marcadores de exclusão também não adere ao SLA de 15 minutos
concedido ao usar o Controle de tempo de replicação do S3.

Se você não estiver usando a versão de configuração de replicação mais recente, as operações de
exclusão afetarão a replicação de forma diferente. Para obter mais informações, consulte Como a exclusão
de operações afeta a replicação (p. 620).

Habilitando a replicação de marcadores de exclusão


Você pode começar a usar a replicação de marcadores de exclusão com uma regra de replicação nova
ou existente. Você pode aplicá-lo a um bucket inteiro do S3 ou a objetos do Amazon S3 que tenham um
prefixo específico.

Para habilitar a replicação de marcadores de exclusão usando o console do Amazon S3, consulte Uso
do console do S3 (p. 637). Este tópico fornece instruções para habilitar a replicação de marcadores de
exclusão na configuração de replicação quando os buckets são de propriedade das mesmas contas da
AWS ou de contas diferentes.

Para habilitar a replicação de marcadores de exclusão usando a Interface de linhas de comando


da AWS (AWS CLI), você deve adicionar uma configuração de replicação ao bucket de origem com
DeleteMarkerReplication habilitada.

No exemplo de configuração a seguir, os marcadores de exclusão são replicados para o bucket de destino
DOC-EXAMPLE-BUCKET para objetos sob o prefixo Tax (Imposto).

{
"Rules": [
{
"Status": "Enabled",
"Filter": {
"Prefix": "Tax"
},
"DeleteMarkerReplication": {
"Status": "Enabled"
},

Versão da API 2006-03-01


668
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

"Destination": {
"Bucket": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
"Priority": 1
}
],
"Role": "IAM-Role-ARN"
}

Para obter instruções completas sobre como criar regras de replicação por meio da AWS CLI, consulte
Configuração da replicação para buckets de origem e de destino pertencentes à mesma conta (p. 637)
na seção Orientações de replicação.

Replicação de alterações de metadados com sincronização de


modificação de réplica do Amazon S3
A sincronização de modificação de réplica do Amazon S3 pode ajudá-lo a manter metadados de objeto,
como tags, ACLs e configurações de bloqueio de objeto replicadas entre réplicas e objetos de origem.
Por padrão, o Amazon S3 replica metadados dos objetos de origem somente para as réplicas. Quando a
sincronização de modificação de réplica está ativada, o Amazon S3 replica as alterações de metadados
feitas nas cópias da réplica de volta ao objeto de origem, tornando a replicação bidirecional.

Ativação da sincronização de modificação da réplica


Você pode usar a sincronização de modificação de réplica do Amazon S3 com regras de replicação novas
ou existentes. Você pode aplicá-lo a um bucket inteiro do S3 ou a objetos do Amazon S3 que tenham um
prefixo específico.

Para habilitar a sincronização de modificação de réplica usando o console do Amazon S3, consulte
Orientações: Configuração da replicação (p. 636). Este tópico fornece instruções para ativar a
sincronização de modificação de réplica na configuração de replicação quando os buckets são de
propriedade das mesmas contas da AWS ou diferentes.

Para habilitar a sincronização de modificação de réplica usando a Interface de linhas de comando da


AWS (AWS CLI), você deve adicionar uma configuração de replicação ao bucket contendo as réplicas
ReplicaModifications habilitadas. Para tornar a replicação bidirecional, ative a sincronização da
modificação da réplica no bucket contendo as réplicas e o bucket que contém os objetos de origem.

No exemplo de configuração a seguir, o Amazon S3 replica alterações de metadados sob o prefixo Tax
(Imposto) para o bucket DOC-EXAMPLE-BUCKET, que conteria os objetos de origem.

{
"Rules": [
{
"Status": "Enabled",
"Filter": {
"Prefix": "Tax"
},
"SourceSelectionCriteria": {
"ReplicaModifications":{
"Status": "Enabled"
}
},
"Destination": {
"Bucket": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
"Priority": 1
}
],
"Role": "IAM-Role-ARN"

Versão da API 2006-03-01


669
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Para obter instruções completas sobre como criar regras de replicação usando a AWS CLI, consulte
Configuração da replicação para buckets de origem e de destino pertencentes à mesma conta (p. 637).

Alterar o proprietário da réplica


Na replicação, por padrão o proprietário do objeto de origem também é proprietário da réplica. Quando os
buckets de origem e destino forem de propriedade de diferentes contas da AWS, você poderá adicionar
configurações opcionais para alterar a propriedade da réplica para a conta da AWS proprietária do bucket
de destino. Você pode fazer essa opção, por exemplo, para restringir o acesso às réplicas de objeto.
Isso é chamado de opção de substituição do proprietário da configuração de replicação. Esta seção
explica somente as configurações adicionais relevantes. Para obter mais informações sobre como definir a
configuração de replicação, consulte Replicação de objetos (p. 617).

Para configurar a substituição do proprietário, faça o seguinte:

• Adicione a opção de substituição do proprietário à configuração da replicação para dizer ao Amazon S3


para alterar a propriedade da réplica.
• Conceda ao Amazon S3 permissões para alterar a propriedade da réplica.
• Adicione a permissão na política do bucket de destino para permitir a alteração da propriedade da
réplica. Isso permite que o proprietário do bucket de destino aceite a propriedade das réplicas do objeto.

As seções a seguir descrevem como executar essas tarefas. Para ver um exemplo funcional com
instruções detalhadas, consulte Alteração do proprietário da réplica para os buckets de origem e de destino
forem de propriedade de contas diferentes (p. 650).

Adicionar a opção de substituição do proprietário à configuração da replicação


Warning
Adicione a opção de substituição do proprietário somente quando os buckets de origem e de
destino pertencerem a contas diferentes da AWS. O Amazon S3 não verifica se os buckets
pertencem à mesma conta ou a contas diferentes. Se você adicionar a substituição do proprietário
quando os dois buckets forem de propriedade da mesma conta da AWS, o Amazon S3 aplicará
a substituição do proprietário. Ele concede permissões completas ao proprietário do bucket de
destino e não replica as atualizações subsequentes para a lista de controle de acesso (ACL) do
objeto de origem. O proprietário da réplica pode alterar diretamente na ACL associada a uma
réplica com uma solicitação PUT ACL, mas não por replicação.

Para especificar a opção de substituição do proprietário, adicione o seguinte ao elemento Destination:

• O elemento AccessControlTranslation, que diz ao Amazon S3 para alterar a propriedade da


réplica
• O elemento Account, que especifica a conta da AWS do proprietário do bucket de destino

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
...
<Destination>
...
<AccessControlTranslation>
<Owner>Destination</Owner>
</AccessControlTranslation>
<Account>destination-bucket-owner-account-id</Account>
</Destination>
</Rule>
</ReplicationConfiguration>

Versão da API 2006-03-01


670
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

A configuração da replicação do exemplo a seguir diz ao Tax para replicar os objetos que têm o prefixo de
chaves Amazon S3 ao bucket de destino e altere a propriedade das réplicas.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Role>arn:aws:iam::account-id:role/role-name</Role>
<Rule>
<ID>Rule-1</ID>
<Priority>1</Priority>
<Status>Enabled</Status>
<Status>Enabled</Status>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>Tax</Prefix>
</Filter>
<Destination>
<Bucket>arn:aws:s3:::destination-bucket</Bucket>
<Account>destination-bucket-owner-account-id</Account>
<AccessControlTranslation>
<Owner>Destination</Owner>
</AccessControlTranslation>
</Destination>
</Rule>
</ReplicationConfiguration>

Conceder permissão do Amazon S3 para alterar a propriedade da réplica


Conceda permissões do Amazon S3 para alterar a propriedade da réplica adicionando permissão para
a ação s3:ObjectOwnerOverrideToBucketOwner na política de permissões associada à função do
IAM. Essa é a função do IAM especificada na configuração de replicação que permite que o Amazon S3
assuma e replique objetos em seu nome.

...
{
"Effect":"Allow",
"Action":[
"s3:ObjectOwnerOverrideToBucketOwner"
],
"Resource":"arn:aws:s3:::destination-bucket/*"
}
...

Adicionar a permissão na política do bucket de destino para permitir a alteração


da propriedade da réplica
O proprietário do bucket de destino deve conceder ao proprietário da permissão do bucket de origem para
alterar a propriedade da réplica. A propriedade do bucket de destino concede ao proprietário do bucket
de origem permissão para a ação s3:ObjectOwnerOverrideToBucketOwner. Isso permite que o
proprietário do bucket de destino aceite a propriedade das réplicas do objeto. O exemplo de declaração de
política do bucket a seguir mostra como fazer isso.

...
{
"Sid":"1",
"Effect":"Allow",
"Principal":{"AWS":"source-bucket-account-id"},
"Action":["s3:ObjectOwnerOverrideToBucketOwner"],
"Resource":"arn:aws:s3:::destination-bucket/*"

Versão da API 2006-03-01


671
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

}
...

Considerações adicionais
Ao configurar a opção de substituição da propriedade, aplicam-se as seguintes considerações:

• Por padrão, o proprietário do objeto de origem também possui a réplica. O Amazon S3 replica a versão
do objeto e a ACL associada a ela.

Se você adicionar a substituição do proprietário, o Amazon S3 replicará somente a versão do objeto, não
a ACL. Além disso, o Amazon S3 não replica as alterações subsequentes na ACL do objeto de origem.
O Amazon S3 define a ACL na réplica que concede controle total ao proprietário do bucket de destino.
• Ao atualizar uma configuração de replicação para habilitar ou desabilitar a substituição do proprietário,
ocorrerá a situação a seguir.

 
• Se você adicionar a opção de substituição do proprietário à configuração da replicação:

Quando o Amazon S3 replica uma versão do objeto, ele descarta a ACL associada ao objeto de
origem. Em vez disso, ele define a ACL na réplica, dando o controle total ao proprietário do bucket
de destino. Ele não replica as alterações subsequentes na ACL do objeto de origem. No entanto,
essa alteração na ACL não se aplica às versões de objeto replicadas antes de você definir a opção
de substituição do proprietário. As atualizações da ACL nos objetos de origem replicados antes da
substituição do proprietário foram definidas para continuarem a ser replicadas (porque o objeto e suas
réplicas continuam a ter o mesmo proprietário).
• Se você remover a opção de substituição do proprietário da configuração da replicação:

O Amazon S3 replica novos objetos que aparecem no bucket de origem e as ACLs associadas aos
buckets de destino. Para objetos replicados antes de você ter removido a substituição do proprietário,
o Amazon S3 não replicará as ACLs, pois a propriedade do objeto muda, de maneira que o Amazon
S3 feito permanece em vigor. Em outras palavras: as ACLs colocaram a versão do objeto que foi
replicada quando a substituição do proprietário tinha sido substituída para não continuarem a ser
replicadas.

Replicação de objetos criados com criptografia no lado do


servidor (SSE) usando CMKs do AWS KMS
Por padrão, o Amazon S3 não replica objetos armazenados em repouso usando criptografia no lado do
servidor com chaves mestras de cliente (CMKs) armazenadas no AWS KMS. Esta seção explica outras
configurações que você adiciona para orientar o Amazon S3 a replicar esses objetos.
Important
A replicação de dados criptografados é um processo no lado do servidor que ocorre totalmente
dentro do Amazon S3. A replicação não oferece suporte à criptografia no lado do cliente.

Para obter um exemplo com instruções passo a passo, consulte Replicar objetos criptografados (p. 654).
Para obter informações sobre como criar uma configuração da replicação, consulte Replicação de
objetos (p. 617).

Tópicos
• Especificar informações adicionais na configuração de replicação (p. 673)
• Conceder permissões adicionais para a função do IAM (p. 674)
• Conceder permissões adicionais para cenários entre contas (p. 677)
• Considerações sobre o limite de transação do AWS KMS (p. 677)

Versão da API 2006-03-01


672
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Especificar informações adicionais na configuração de replicação


Na configuração de replicação, você faz o seguinte:

• Na configuração Destination, adicione a CMK do AWS KMS gerenciada pelo cliente simétrica que
você deseja que o Amazon S3 use para criptografar réplicas de objetos.
• Aceite explicitamente ao habilitar a replicação de objetos criptografados usando as CMKs do AWS KMS
adicionando o elemento SourceSelectionCriteria.

<ReplicationConfiguration>
<Rule>
...
<SourceSelectionCriteria>
<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>

<Destination>
...
<EncryptionConfiguration>
<ReplicaKmsKeyID>AWS KMS key ID for the AWS region of the destination
bucket.</ReplicaKmsKeyID>
</EncryptionConfiguration>
</Destination>
...
</Rule>
</ReplicationConfiguration>

Important

A CMK do AWS KMS deve ter sido criada na mesma região da AWS que os buckets de destino.
A CMK do AWS KMS deve ser válida. A API de replicação do bucket PUT não verifica a validade
das CMKs do AWS KMS. Se você usar uma CMK inválida, receberá o código de status 200 OK
como resposta, mas a replicação falhará.

O exemplo a seguir mostra uma configuração de replicação, que inclui elementos de configuração
opcionais.

<?xml version="1.0" encoding="UTF-8"?>


<ReplicationConfiguration>
<Role>arn:aws:iam::account-id:role/role-name</Role>
<Rule>
<ID>Rule-1</ID>
<Priority>1</Priority>
<Status>Enabled</Status>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
<Filter>
<Prefix>Tax</Prefix>
</Filter>
<Destination>
<Bucket>arn:aws:s3:::destination-bucket</Bucket>
<EncryptionConfiguration>
<ReplicaKmsKeyID>The AWS KMS key ID for the AWS region of the destination
buckets (S3 uses it to encrypt object replicas).</ReplicaKmsKeyID>
</EncryptionConfiguration>
</Destination>
<SourceSelectionCriteria>

Versão da API 2006-03-01


673
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>
</Rule>
</ReplicationConfiguration>

Essa configuração de replicação tem uma regra. Esta regra aplica-se aos objetos com o prefixo de chaves
Tax. O Amazon S3 usa o ID da chave do AWS KMS para criptografar essas réplicas de objeto.

Conceder permissões adicionais para a função do IAM


Para replicar objetos criptografados em repouso no AWS Key Management Service (AWS KMS), conceda
as seguintes permissões adicionais para a função do IAM especificada na configuração de replicação.
Você concede essas permissões ao atualizar a política de permissões associada à função do IAM. Objetos
criados com criptografia do lado do servidor usando as chaves de criptografia fornecidas pelo usuário
(SSE-C) não serão replicados.

• s3:GetObjectVersionForReplication ação para objetos de origem – permite que o Amazon S3


replique objetos não criptografados e objetos criados com criptografia no lado do servidor por meio de
chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) ou CMKs armazenadas no AWS KMS
(SSE-KMS).
Note

Recomendamos que você use a ação s3:GetObjectVersionForReplication em


vez da ação s3:GetObjectVersion, pois ela fornece ao Amazon S3 somente as
permissões mínimas necessárias para a replicação. Além disso, a permissão para a ação
s3:GetObjectVersion permite a replicação de objetos não criptografados e objetos
criptografados com SSE-S3, mas não de objetos criados usando uma CMK armazenada no
AWS KMS.
• kms:Decrypt e kms:Encrypt ações do AWS KMS:
• Permissões kms:Decrypt para a CMK do AWS KMS usada para descriptografar o objeto de origem
• Permissões kms:Encrypt para a CMK do AWS KMS utilizada para criptografar a réplica de objetos

Recomendamos que você restrinja essas permissões apenas aos buckets e objetos de destino usando
chaves de condição do AWS KMS. A conta da AWS proprietária da função do IAM precisa ter permissões
para estas ações do AWS KMS (kms:Encrypt e kms:Decrypt) para CMKs do AWS KMS listadas
na política. Se as CMKs do AWS KMS forem de propriedade de outra conta da AWS, o proprietário da
CMK deverá conceder essas permissões à conta da AWS que possui a função do IAM. Para obter mais
informações sobre como gerenciar o acesso a essas CMKs, consulte Usar políticas do IAM com o AWS
KMS no Guia do desenvolvedor do AWS Key Management Service.

Chaves de bucket do Amazon S3 e replicação

Para usar a replicação com uma chave de bucket do S3, a política de chaves do AWS KMS para a CMK
usada para criptografar a réplica do objeto deve incluir permissões kms:Decrypt para o principal de
chamada. A chamada para kms:Decrypt verifica a integridade da chave do bucket do S3 antes de usá-la.

Quando uma chave de bucket do S3 estiver habilitada para o bucket de origem ou de destino, o contexto
de criptografia será o Amazon Resource Name (ARN) do bucket e não o ARN do objeto, por exemplo,
arn:aws:s3:::bucket_ARN. Você precisa atualizar suas políticas do IAM para usar o ARN do bucket
para o contexto de criptografia:

"kms:EncryptionContext:aws:s3:arn": [
"arn:aws:s3:::bucket_ARN"
]

Versão da API 2006-03-01


674
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Para obter mais informações, consulte Contexto de criptografia (p. 198) e Alterações na observação antes
de habilitar uma chave de bucket do S3 (p. 206).

Exemplo de políticas - Usar criptografia do lado do servidor AWS KMS (SSE-KMS) com replicação

Os exemplos de políticas do IAM a seguir mostram instruções para o uso de criptografia do lado do
servidor AWS KMS com replicação.

Neste exemplo, o contexto de criptografia é o ARN do objeto. Se você usar o SSE-KMS com uma chave
de bucket do S3 habilitada, use o ARN do bucket como o contexto de criptografia. Para obter mais
informações, consulte Contexto de criptografia (p. 198).

Se o

Example Usando criptografia lateral do servidor do AWS KMS (SSE-KMS) — buckets de destino
separados

A política de exemplo a seguir mostra instruções para usar o AWS KMS com buckets de destino
separados.

{
"Version": "2012-10-17",
"Statement": [{
"Action": ["kms:Decrypt"],
"Effect": "Allow",
"Resource": "List of AWS KMS key ARNs used to encrypt source objects.",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.source-bucket-region.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::source-bucket-name/key-prefix1/*"
}
}
},

{
"Action": ["kms:Encrypt"],
"Effect": "Allow",
"Resource": "AWS KMS key ARNs (for the AWS Region of the destination bucket 1). Used to
encrypt object replicas created in destination bucket 1.",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.destination-bucket-1-region.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::destination-bucket-name-1/key-
prefix1/*"
}
}
},
{
"Action": ["kms:Encrypt"],
"Effect": "Allow",
"Resource": "AWS KMS key ARNs (for the AWS Region of destination bucket 2). Used to
encrypt object replicas created in destination bucket 2.",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.destination-bucket-2-region.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::destination-bucket-2-name/key-
prefix1*"
}
}
}
]
}

Versão da API 2006-03-01


675
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Example Replicação de objetos criados com criptografia no lado do servidor usando chaves de
criptografia gerenciadas do Amazon S3 e CMKs armazenadas no AWS KMS

Veja a seguir uma política completa do IAM que concede as permissões necessárias para replicar objetos
não criptografados, objetos criados com criptografia no lado do servidor usando chaves de criptografia
gerenciadas do Amazon S3 e CMKs armazenadas no AWS KMS.
Note

Objetos criados com criptografia do lado do servidor usando as chaves de criptografia fornecidas
pelo usuário (SSE-C) não serão replicados.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetReplicationConfiguration",
"s3:ListBucket"
],
"Resource":[
"arn:aws:s3:::source-bucket"
]
},
{
"Effect":"Allow",
"Action":[
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl"
],
"Resource":[
"arn:aws:s3:::source-bucket/key-prefix1*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource":"arn:aws:s3:::destination-bucket/key-prefix1*"
},
{
"Action":[
"kms:Decrypt"
],
"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.source-bucket-region.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::source-bucket-name/key-prefix1*"
]
}
},
"Resource":[
"List of AWS KMS key ARNs used to encrypt source objects."
]
},
{
"Action":[
"kms:Encrypt"
],

Versão da API 2006-03-01


676
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.destination-bucket-region.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::destination-bucket-name/prefix1*"
]
}
},
"Resource":[
"AWS KMS key ARNs (for the AWS Region of the destination buckets) to use for
encrypting object replicas"
]
}
]
}

Conceder permissões adicionais para cenários entre contas


Em um cenário entre contas, no qual os buckets de origem e destino pertencem a diferentes contas da
AWS, é possível usar uma CMK gerenciada pelo cliente para criptografar réplicas de objetos. No entanto, o
proprietário da CMK deve conceder ao proprietário do bucket de origem permissão para usar a CMK.

Como conceder permissão ao proprietário do bucket de origem para usar a CMK do AWS KMS
(console do IAM)

1. Faça login no Console de Gerenciamento da AWS e abra o console do AWS Key Management
Service (AWS KMS) em https://console.aws.amazon.com/kms.
2. Para alterar a região da AWS, use o seletor de região no canto superior direito da página.
3. Para exibir as chaves em sua conta que você cria e gerencia, no painel de navegação, escolha
Customer managed keys (Chaves gerenciadas de cliente).
4. Escolha a CMK.
5. Em General configuration (Configurações gerais), selecione a guia Key policy (Política de chaves).
6. Escolha Other AWS Accounts (Outras contas da AWS).
7. Escolha Add another AWS Account (Adicionar outra conta da AWS).
8. Em arn:aws:iam::, insira o ID da conta do bucket de origem.
9. Escolha Save Changes (Salvar alterações).

Como conceder ao proprietário do bucket de origem permissão para usar a CMK do AWS KMS
(CLI da AWS)

• Para obter mais informações, consulte put-key-policy na Referência de comando da CLI da AWS. Para
obter informações sobre a API subjacente, consulte PutKeyPolicy na Referência da API do AWS Key
Management Service.

Considerações sobre o limite de transação do AWS KMS


Ao adicionar muitos novos objetos com a criptografia do AWS KMS depois de habilitar replicação entre
regiões (CRR), você pode experimentar limitação (erros de respostas HTTP 503 recebidas com lentidão).
A limitação acontece quando o número de transações do AWS KMS por segundo excede o limite atual.
Para obter mais informações, consulte Limites no Guia do desenvolvedor do AWS Key Management
Service.

Para solicitar um aumento de limite, use Cotas de serviço. Para obter mais informações, consulte Limites
da Amazon Web Services. Se as cotas de serviço não forem compatíveis com sua região, abra um caso do
AWS Support.

Versão da API 2006-03-01


677
Amazon Simple Storage Service Guia do usuário
Obtenção de status da replicação

Obtenção de informações sobre o status da replicação


O status da replicação pode ajudá-lo a determinar o estado atual de um objeto que está sendo replicado.
O status de replicação de um objeto de origem retornará PENDINGCOMPLETED, ou FAILED. O status de
replicação de uma réplica retornará REPLICA.

Tópicos
• Visão geral do status da replicação (p. 678)
• Status da replicação, se replicar para vários intervalos de destino (p. 678)
• Status da replicação se a sincronização de modificação de réplica do Amazon S3 estiver
ativada (p. 678)
• Localização do status de replicação (p. 679)

Visão geral do status da replicação


Na replicação, você tem um bucket de origem em que configura a replicação e um bucket de destino
onde o Amazon S3 replica objetos. Ao solicitar um objeto (usando o objeto GET) ou metadados de objeto
(usando o objeto HEAD) nesses buckets, o Amazon S3 retornará o cabeçalho x-amz-replication-
status na resposta da seguinte maneira:

• Ao solicitar um objeto no bucket de origem, o Amazon S3 retornará o cabeçalho x-amz-replication-


status se o objeto em sua solicitação for qualificado para replicação.

Por exemplo, suponha que, em sua configuração de replicação, você especifique o prefixo de objeto
TaxDocs para dizer ao Amazon S3 para replicar somente objetos com o prefixo de nome de chave
TaxDocs. Todos os objetos dos quais você fizer upload e tiverem esse prefixo de nome de chave, por
exemplo, TaxDocs/document1.pdf, serão replicados. Para qualquer solicitação de objeto com esse
prefixo de nome de chave, o Amazon S3 retorna o cabeçalho x-amz-replication-status com um
dos seguintes valores para o status de replicação de objeto: PENDING, COMPLETED ou FAILED.
Note

Se a replicação do objeto falhar depois de você fazer upload de um objeto, não será possível
tentar novamente a replicação. É preciso fazer upload do objeto novamente. Os objetos mudam
para um estado FAILED em caso de problemas como a ausência das permissões da função
de replicação do S3, do AWS KMS ou do bucket. Para falhas temporárias, por exemplo, se
um bucket ou região não estiver disponível, o status da replicação não fará a transição para
FAILED, mas permanecerá PENDING. Depois que o recurso estiver online novamente,o S3
retomará a replicação desses objetos.
• Ao solicitar um objeto no bucket de destino, se o objeto da sua solicitação for uma réplica criada pelo
Amazon S3, o Amazon S3 retornará o cabeçalho x-amz-replication-status com valor REPLICA.

Note

Antes de excluir um objeto de um bucket de origem com a replicação habilitada, verifique o status
de replicação dele para garantir que o objeto tenha sido replicado.
Se a configuração de ciclo de vida estiver habilitada no bucket de origem, o Amazon S3
suspenderá as ações de ciclo de vida até que o status dos objetos seja COMPLETED ou FAILED.

Status da replicação, se replicar para vários intervalos de destino


Quando você replica objetos para vários intervalos de destino, o cabeçalhox-amz-replication-
status age de forma diferente. O cabeçalho do objeto de origem retorna apenas um valor de COMPLETED
quando a replicação é bem-sucedida para todos os destinos. O cabeçalho permanece no valor PENDING

Versão da API 2006-03-01


678
Amazon Simple Storage Service Guia do usuário
Obtenção de status da replicação

até que a replicação tenha sido concluída para todos os destinos. Se um ou mais destinos falharem na
replicação, o cabeçalho retornará FAILED.

Status da replicação se a sincronização de modificação de


réplica do Amazon S3 estiver ativada
Quando suas regras de replicação habilitam as réplicas de sincronização de modificação de réplica do
Amazon S3 podem relatar status diferente de REPLICA. Se as alterações de metadados estiverem no
processo de replicação, o cabeçalho x-amz-replication-status retornará PENDING. A sincronização
de modificação de réplica falha ao replicar metadados, o cabeçalho retornará FAILED. Se os metadados
forem replicados corretamente, as réplicas retornarão cabeçalho REPLICA.

Localização do status de replicação


Para obter o status de replicação dos objetos em um bucket, você pode usar a ferramenta de inventário do
Amazon S3. O Amazon S3 envia um arquivo CSV para o bucket de destino especificado na configuração
de inventário. Você também pode usar o Amazon Athena para consultar o status da replicação no relatório
de inventário. Para obter mais informações sobre inventário do Amazon S3, consulte Inventário do
Amazon S3 (p. 605).

Você pode encontrar o status de replicação de objetos usando o console, a interface de linha de comandos
da AWS (AWS CLI) ou o AWS SDK.

Uso do console do S3
No console do S3, você pode exibir o status da replicação de um objeto na página Details (Detalhes) do
objeto na Object management overview (Visão geral de gerenciamento de objeto).

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets (Buckets), escolha o nome do bucket.
3. Na lista Objects (Objetos), escolha o nome do objeto.

A página Details (Detalhes) do objeto é aberta.


4. Em Object management overview (Visão geral do gerenciamento de objetos), você pode ver o
Replication status (Status da replicação).

Usar a CLI da AWS


Use o comando head-object para recuperar metadados do objeto, como segue.

aws s3api head-object --bucket source-bucket --key object-key --version-id object-version-


id

O comando retorna os metadados do objeto, inclusive ReplicationStatus, conforme exibido no


exemplo de resposta a seguir.

{
"AcceptRanges":"bytes",
"ContentType":"image/jpeg",
"LastModified":"Mon, 23 Mar 2015 21:02:29 GMT",
"ContentLength":3191,
"ReplicationStatus":"COMPLETED",
"VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.",
"ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"",
"Metadata":{

Versão da API 2006-03-01


679
Amazon Simple Storage Service Guia do usuário
Solução de problemas

Uso dos AWS SDKs


Os fragmentos de código a seguir obtêm status de replicação com o AWS SDK para Java e o AWS SDK
para .NET, respectivamente.

Java

GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName,


key);
ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest);

System.out.println("Replication Status : " +


metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));

.NET

GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest


{
BucketName = sourceBucket,
Key = objectKey
};

GetObjectMetadataResponse getmetadataResponse =
client.GetObjectMetadata(getmetadataRequest);
Console.WriteLine("Object replication status: {0}",
getmetadataResponse.ReplicationStatus);

Solução de problemas de replicação


Se as réplicas dos objetos não aparecerem no bucket de destino depois de configurar a replicação, use as
dicas a seguir para identificar e corrigir os problemas.

• Para a maioria dos objetos, a replicação ocorre em até 15 minutos, mas, às vezes, pode levar algumas
horas. Raramente a replicação pode levar mais tempo. O tempo que o Amazon S3 leva para replicar um
objeto depende de vários fatores, incluindo o par de regiões de origem e destino e o tamanho do objeto.
Para objetos grandes, a replicação pode levar várias horas.

Se o objeto que estiver sendo replicado for grande, aguarde um pouco antes de conferir se ele está
sendo exibido no destino. Você também pode conferir o status de replicação do objeto de origem. Se o
status de replicação do objeto for PENDING, você saberá que o Amazon S3 não concluiu a replicação.
Se o status de replicação do objeto for FAILED, confira a configuração de replicação definida no bucket
de origem.
• Na configuração de replicação do bucket de origem, verifique o seguinte:
• O nome de recurso da Amazon (ARN) dos buckets de destino está correto.
• O prefixo do nome de chave está correto. Por exemplo, se você definiu a configuração para replicar
objetos com o prefixo Tax, apenas objetos com nomes de chaves como Tax/document1 ou Tax/
document2 serão replicados. Um objeto com o nome de chave document3 não será replicado.
• O status é Enabled.
• Verifique se o controle de versão não foi suspenso em nenhum bucket. Tanto o bucket de origem quanto
o de destino devem ter o versionamento habilitado.
• Se o bucket de destino for de propriedade de outra conta da AWS, verifique se o proprietário do bucket
tem uma política de bucket no bucket de destino que permite que o proprietário do bucket de origem
replique objetos. Para ver um exemplo, consulte Configuração da replicação para os buckets de origem
e destino forem de propriedade de contas diferentes (p. 649).

Versão da API 2006-03-01


680
Amazon Simple Storage Service Guia do usuário
Considerações adicionais

• Se a réplica do objeto não aparecer no bucket de destino, a replicação poderá ter sido evitada pelo
seguinte:
• O Amazon S3 não replica um objeto em um bucket de origem que seja uma réplica criada por outra
configuração de replicação. Por exemplo, se você definir a configuração de replicação do bucket A
para o bucket B e para o bucket C, o Amazon S3 não replicará réplicas de objeto no bucket B para o
bucket C.
• O proprietário de bucket de origem pode conceder a outras contas da AWS permissão para fazer
upload de objetos. Por padrão, o proprietário do bucket de origem não tem nenhuma permissão para
os objetos criados por outras contas. A configuração de replicação vai replicar somente os objetos
para os quais o proprietário do bucket de origem tem permissões de acesso. O proprietário do bucket
de origem pode conceder a outras contas da AWS permissões para criar objetos condicionalmente
exigindo permissões explícitas de acesso nesses objetos. Para ver um exemplo de política, consulte
Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do
bucket tenha controle total (p. 385).
• Vamos supor que, na configuração da replicação, você adicione uma regra para replicar um subgrupo de
objetos com uma tag específica. Neste caso, atribua a chave da tag específica e o valor no momento de
criar o objeto para o Amazon S3 replicar o objeto. Se você primeiro criar um objeto e depois adicionar a
tag ao objeto existente, o Amazon S3 não replicará o objeto.
• A replicação falhará se a política de bucket negar o acesso à função de replicação para qualquer uma
das seguintes ações:

Bucket de origem:

"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"

Buckets de destino:

"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"

Tópicos relacionados
Replicação de objetos (p. 617)

Considerações adicionais
O Amazon S3 também oferece suporte às configurações do bucket para o seguinte:

• Versionamento: para obter mais informações, consulte Usando o controle de versão em buckets do
S3 (p. 516).
• Hospedagem de sites: para obter mais informações, consulte Hospedagem de um site estático usando o
Amazon S3 (p. 945).
• Acesso ao bucket por meio de uma política ou lista de controle de acesso (ACL) — Para obter mais
informações, consulte Políticas de bucket e políticas de usuário (p. 268) e Visão geral da lista de controle
de acesso (ACL) (p. 440).

Versão da API 2006-03-01


681
Amazon Simple Storage Service Guia do usuário
Considerações adicionais

• Armazenamento de logs: para obter mais informações, consulte Registrar em log as solicitações com
registro em log de acesso ao servidor (p. 833).
• Gerenciamento do ciclo de vida para os objetos dentro de um bucket: para obter mais informações,
consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Este tópico explica como a configuração de replicação do bucket afeta o comportamento dessas
configurações do bucket.

Tópicos
• Configuração de ciclo de vida e réplicas de objeto (p. 682)
• Configuração do versionamento e configuração de replicação (p. 682)
• Configuração de log e de replicação (p. 682)
• A CRR e a região de destino (p. 683)
• Pausar a replicação (p. 683)

Configuração de ciclo de vida e réplicas de objeto


O tempo que o Amazon S3 leva para replicar um objeto depende do tamanho do objeto. Para objetos
grandes, pode levar várias horas. Embora possa demorar um pouco até a réplica ser disponibilizada no
destino, demora o mesmo tempo para criar a réplica que demorou para criar o objeto correspondente
no bucket de origem. Se uma política de ciclo de vida estiver habilitada em um bucket de destino, as
regras de ciclo de vida honram o tempo original de criação de objeto, não o momento em que a réplica foi
disponibilizada no bucket de destino.

A configuração de replicação requer que o bucket seja ativado por versionamento. Ao habilitar o
versionamento em um bucket, lembre-se de:

• Se você tiver uma política de ciclo de vida de expiração de um objeto, depois de habilitar o
versionamento, adicione uma política de NonCurrentVersionExpiration para manter o mesmo
comportamento de exclusão permanente que antes de habilitar o versionamento.
• Se você tiver uma política de ciclo de vida de transição, depois de habilitar o versionamento, considere
adicionar a política NonCurrentVersionTransition.

Configuração do versionamento e configuração de replicação


Os buckets de origem e de destino devem ter versionamento habilitado quando você configura replicação
em um bucket. Depois que você habilitar o versionamento nos buckets de origem e de destino e configurar
a replicação no bucket de origem, vai encontrar os seguintes problemas:

• Se você tentar desabilitar o versionamento do bucket de origem, o Amazon S3 retornará um erro. É


necessário remover a configuração de replicação antes de desabilitar o versionamento o bucket de
origem.
• Se você desabilitar o versionamento o bucket de destino, ocorrerá falha na replicação. O objeto de
origem tem o status de replicação FAILED.

Configuração de log e de replicação


Se o Amazon S3 entregar logs em um bucket com a replicação habilitada, ele vai replicar os objetos do
log.

Se os logs de acesso ao servidor (Registrar em log as solicitações com registro em log de acesso ao
servidor (p. 833)) ou logs do AWS CloudTrail (Registrar em log chamadas de API do Amazon S3 usando

Versão da API 2006-03-01


682
Amazon Simple Storage Service Guia do usuário
Uso de tags de objeto

o AWS CloudTrail (p. 815)) estiverem ativados no seu bucket de origem ou de destino, o Amazon S3
incluirá nos logs as solicitações relacionadas à replicação. Por exemplo, o Amazon S3 registra cada objeto
que ele replica.

A CRR e a região de destino


A replicação entre regiões (CRR) do Amazon S3 é usada para copiar objetos entre buckets do S3 em
regiões diferentes da AWS. Você pode escolher a região do seu bucket de destino com base nas suas
necessidades comerciais ou nas considerações de custo. Por exemplo, as cobranças de transferência de
dados entre regiões variam dependendo das regiões que você escolher.

Suponha que você escolheu Leste dos EUA (Norte da Virgínia) (us-east-1) como a região do bucket de
origem. Se você escolher Oeste dos EUA (Oregon) (us-west-2) como a região dos buckets de destino,
pagará mais do que se escolher a região Leste dos EUA (Ohio) (us-east-2). Para obter informações
sobre preços, consulte a seção "Definição de preço da transferência de dados" em Definição de preço do
Amazon S3.

Não há cobranças de transferência de dados associadas à mesma região de replicação (SRR)

Pausar a replicação
Para pausar temporariamente a replicação, desabilite a regra em questão na configuração da replicação.

Se a replicação estiver ativada e você remover a função do IAM que concede ao Amazon S3 as
permissões necessárias, a replicação falhará. O Amazon S3 relata o status da replicação para objetos
afetados como FAILED.

Categorizando seu armazenamento usando tags


Use a marcação de objetos para classificar o armazenamento. Cada tag é um par de chave-valor.

Você pode adicionar tags a objetos novos ao fazer upload deles ou pode adicioná-las aos objetos
existentes.

• Você pode associar até 10 tags a um objeto. As tags associadas a um objeto devem ter chaves de tag
exclusivas.
• Um chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até 256 caracteres
Unicode.
• As chaves e os valores diferenciam letras maiúsculas de minúsculas.
• Para obter mais informações sobre restrições de tags, consulte Restrições de tags definidas pelo
usuário.

Exemplos

Considere os seguintes exemplos de marcação:

Example Informação de PHI


Suponha que um objeto contenha dados de informações de saúde protegidas (PHI). Você pode marcar o
objeto usando o par de chave/valor a seguir.

PHI=True

ou

Classification=PHI

Versão da API 2006-03-01


683
Amazon Simple Storage Service Guia do usuário
Uso de tags de objeto

Example Arquivos do projeto


Suponha que você armazene arquivos de projeto em seu bucket do S3. Você pode marcar esses objetos
com uma chave denominada Project e um valor, como mostrado a seguir.

Project=Blue

Example Várias tags


Você pode adicionar várias tags a um objeto, como mostrado a seguir.

Project=x
Classification=confidential

Prefixos e tags de nome de chave

Os prefixos de nome da chave do objeto também permitem categorizar o armazenamento. No entanto, a


categorização baseada em prefixo é unidimensional. Considere os seguintes nomes de chave de objeto:

photos/photo1.jpg
project/projectx/document.pdf
project/projecty/document2.pdf

Esses nomes de chave têm os prefixos photos/, project/projectx/ e project/projecty/. Esses


prefixos habilitam a classificação de uma dimensão. Isto é, tudo que tiver um prefixo pertencerá a uma
categoria. Por exemplo, o prefixo project/projectx identifica todos os documentos relacionados ao
projeto x.

Com a marcação, você agora tem outra dimensão. Se você quiser que photo1 esteja na categoria projeto
x, poderá marcar o objeto conforme necessário.

Benefícios adicionais

Além de classificação de dados, a marcação oferece benefícios como os seguintes:

• As tags de objeto permitem ter controle de acesso de permissões. Por exemplo, você pode conceder a
um usuário do IAM permissões a objetos somente leitura com tags específicas.
• As tags de objeto permitem o gerenciamento de ciclo de vida do objeto em que você pode especificar
um filtro com base em tag, além de um prefixo de nome da chave, em uma regra de ciclo de vida.
• Ao usar a análise do Amazon S3, você pode configurar filtros para agrupar objetos para análise por tags
de objeto, prefixo de nome da chave ou ambos, prefixo e tags.
• Você também pode personalizar métricas do Amazon CloudWatch para exibir informações por filtros de
tag específicos. As seguintes seções fornecem detalhes.

Important

É aceitável usar tags para identificar objetos que contêm dados confidenciais, como informações
de identificação pessoal (PII) ou informações de saúde protegidas (PHI). No entanto, as próprias
tags não devem conter nenhuma informação confidencial.

Adição de conjuntos de tags de objeto a vários objetos do Amazon S3 com uma única solicitação

Para adicionar conjuntos de tags de objeto a mais de um objeto do Amazon S3 com uma única solicitação,
você pode usar operações em lote do S3. Você fornece às operações em lote do S3 uma lista de objetos
nos quais operar. O S3 Batch Operations chama a respectiva API para executar a operação especificada.
Um único trabalho de operações em lote pode realizar a operação especificada em bilhões de objetos
contendo exabytes de dados.

Versão da API 2006-03-01


684
Amazon Simple Storage Service Guia do usuário
Operações de API relacionadas à marcação de objetos

O recurso S3 Batch Operations rastreia o progresso, envia notificações e armazena um relatório de


conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável
e sem servidor. Você pode usar as operações em lote do S3 por meio do Console de Gerenciamento da
AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para obter mais informações, consulte the section
called “Noções básicas do Batch Ops” (p. 739).

Para obter mais informações sobre tags de objetos, consulte Gerenciar tags de objeto (p. 689).

Operações de API relacionadas à marcação de


objetos
O Amazon S3 oferece suporte às seguintes operações de API que são especificamente para marcação de
objetos:

Operações de API do objeto

• Atribuição de tags de objeto PUT: Substitui tags em um objeto. Especifique tags no corpo de solicitação.
Há dois cenários distintos de gerenciamento de tags de objeto usando essa API.
• O objeto não tem tags – Usando essa API, você pode adicionar um conjunto de tags a um objeto (o
objeto não tem nenhuma tag anterior).
• O objeto tem um conjunto de tags existentes – Para modificar o conjunto de tags existente, você deve
primeiro recuperar o conjunto de tags existente, modificá-lo no lado do cliente e usar essa API para
substituir o conjunto de tags.
Note

Se você enviar essa solicitação com o conjunto de tags vazio, o Amazon S3 excluirá o
conjunto de tags existente no objeto. Se você usar esse método, será cobrado por uma
solicitação de nível 1 (PUT). Para obter mais informações, consulte Definição de preço do
Amazon S3.
A solicitação de Atribuição de tags de objeto DELETE é preferível, pois atinge o mesmo
resultado sem incorrer em cobranças.
• Atribuição de tags de objeto GET: retorna o conjunto de tags associado a um objeto. O Amazon S3
retorna tags de objetos no corpo da resposta.
• Atribuição de tags de objeto DELETE: exclui o conjunto de tags associado a um objeto.

Outras operações de API que oferecem suporte à atribuição de tags

• Objeto PUT e Iniciar multipart upload: você pode especificar tags ao criar objetos. Especifique tags
usando o cabeçalho de solicitação x-amz-tagging.
• Objeto GET: em vez de retornar o conjunto de tags, o Amazon S3 retorna a contagem de tags de objeto
no cabeçalho x-amz-tag-count (somente se o solicitante tiver permissões para ler tags) porque o
tamanho de resposta do cabeçalho está limitado a 8 KB. Caso queira ver as tags, faça outra solicitação
para a operação de API Atribuição de tags de objeto GET.
• Objeto POST: você pode especificar tags na solicitação POST.

Contanto que as tags na solicitação não ultrapassem o limite de tamanho de cabeçalho de solicitações
HTTP de 8 KB, você pode usar a PUT Object API para criar objetos com tags. Se as tags
especificadas ultrapassarem o limite de tamanho do cabeçalho, você poderá usar esse método POST
para incluir as tags no corpo.

Objeto PUT - Copiar: você pode especificar a x-amz-tagging-directive na solicitação para instruir
o Amazon S3 a copiar (comportamento padrão) as tags ou substituir as tags por um novo conjunto de
tags fornecido na solicitação.
Versão da API 2006-03-01
685
Amazon Simple Storage Service Guia do usuário
Configurações adicionais

Observe o seguinte:

• A atribuição de tags de objetos do S3 é muito consistente. Para obter mais informações, consulte
Modelo de consistência de dados do Amazon S3 (p. 3).

Configurações adicionais
Esta seção explica como a marcação de objetos está relacionada a outras configurações.

Marcação de objetos e gerenciamento do ciclo de vida


Na configuração de ciclo de vida de bucket, você pode especificar um filtro para selecionar um subconjunto
de objetos ao qual a regra se aplica. Você pode especificar um filtro com base em prefixos de nome de
chave, em tags de objeto ou em ambos.

Suponha que você armazene fotos (brutas e no formato concluído) no bucket do Amazon S3. Você pode
marcar esses objetos como mostrado a seguir.

phototype=raw
or
phototype=finished

Você pode considerar o arquivamento das fotos brutas no S3 Glacier pouco tempo depois de serem
criadas. Você pode configurar uma regra de ciclo de vida com um filtro que identifica o subconjunto de
objetos com o prefixo de nome de chave (photos/) que têm uma tag específica (phototype=raw).

Para obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento (p. 569).

Marcação e replicação de objetos


Se você tiver configurado a replicação no bucket, o Amazon S3 replicará as tags, contanto que você
conceda permissão ao Amazon S3 para ler as tags. Para obter mais informações, consulte Configuração
da replicação (p. 622).

Para obter mais informações sobre a marcação de objetos, consulte os seguintes tópicos:

Tópicos
• Marcação e políticas de controle de acesso (p. 686)
• Gerenciar tags de objeto (p. 689)

Marcação e políticas de controle de acesso


Você também pode usar políticas de permissões (políticas de bucket e de usuário) para gerenciar
permissões relacionadas à atribuição de tags de objetos. Para ver ações de política, consulte os seguintes
tópicos:

• Exemplo: operações de objeto (p. 273)


• Exemplo: operações de bucket (p. 274)

As tags de objeto permitem ter controle de acesso para gerenciar permissões. Você pode conceder
permissões condicionais com base em tags de objeto. O Amazon S3 oferece suporte às seguintes chaves
de condição que podem ser usadas para conceder permissões condicionais com base em tags de objeto:

• s3:ExistingObjectTag/<tag-key> – Use esta chave de condição para verificar se uma tag de


objeto existente tem a chave e o valor de tag específicos.

Versão da API 2006-03-01


686
Amazon Simple Storage Service Guia do usuário
Controle de acesso

Note

Para conceder permissões para as operações PUT Object e DELETE Object, não é
permitido usar essa chave de condição. Isto é, você não pode criar uma política para conceder
ou negar permissões de usuário para excluir ou substituir um objeto existente com base nas
tags existentes.
• s3:RequestObjectTagKeys – Use esta chave de condição para restringir as chaves de tag
que deseja permitir em objetos. Isso é útil para adicionar tags a objetos usando as solicitações
PutObjectTagging e PutObject e de POST objeto.
• s3:RequestObjectTag/<tag-key> – Use esta chave de condição para restringir as chaves e
os valores de tag que deseja permitir em objetos. Isso é útil para adicionar tags a objetos usando as
solicitações PutObjectTagging e PutObject e de bucket POST.

Para obter uma lista completa de chaves de condição específicas de serviço do Amazon S3, consulte
Exemplos de chave de condição do Amazon S3 (p. 278). As seguintes políticas de permissões ilustram
como a marcação de objetos permite gerenciar permissões de acesso.

Example 1: Permitir que um usuário leia somente os objetos que têm uma tag específica

A política de permissões a seguir concede ao usuário permissão para ler objetos, mas a condição limita a
permissão de leitura somente a objetos que possuem a chave e o valor de tag específicos a seguir.

security : public

Observe que a política usa a chave de condição do Amazon S3, s3:ExistingObjectTag/<tag-key>,


para especificar a chave e o valor.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Principal": "*",
"Condition": { "StringEquals": {"s3:ExistingObjectTag/security": "public" } }
}
]
}

Example 2: permitir que um usuário adicione tags de objeto com restrições nas chaves de tag
permitidas

A política de permissões a seguir concede ao usuário permissões para executar a ação


s3:PutObjectTagging, que permite que o usuário adicione tags a um objeto existente. A
condição limita as chaves de tag que o usuário pode usar. A condição usa a chave de condição
s3:RequestObjectTagKeys para especificar o conjunto de chaves de tag.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [

Versão da API 2006-03-01


687
Amazon Simple Storage Service Guia do usuário
Controle de acesso

"arn:aws:s3:::awsexamplebucket1/*"
],
"Principal":{
"CanonicalUser":[
"64-digit-alphanumeric-value"
]
},
"Condition": {
"ForAllValues:StringLike": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}

A política garante que o conjunto de tags, se especificado na solicitação, tenha as chaves especificadas.
Um usuário pode enviar um conjunto de tags vazio em PutObjectTagging, o que é permitido por essa
política (um conjunto de tags vazio na solicitação remove as tags existentes no objeto). Se você quiser
impedir que um usuário remova o conjunto de tags, adicione outra condição para garantir que o usuário
forneça pelo menos um valor. O ForAnyValue na condição garante que pelo menos um dos valores
especificados deva estar presente na solicitação.

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
],
"Principal":{
"AWS":[
"arn:aws:iam::account-number-without-hyphens:user/username"
]
},
"Condition": {
"ForAllValues:StringLike": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
},
"ForAnyValue:StringLike": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}

Para obter mais informações, consulte Criar uma condição que testa vários valores de chave (operações
de conjunto) no Guia do usuário do IAM.

Versão da API 2006-03-01


688
Amazon Simple Storage Service Guia do usuário
Gerenciar tags de objeto

Example 3: permitir que um usuário adicione tags de objeto que incluam uma chave e um valor de
tag específicos

A política de usuário a seguir concede ao usuário permissões para executar a ação


s3:PutObjectTagging, que permite que o usuário adicione tags a um objeto existente. A condição
requer que o usuário inclua uma tag específica (Project) com o valor definido como X.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
],
"Principal":{
"AWS":[
"arn:aws:iam::account-number-without-hyphens:user/username"
]
},
"Condition": {
"StringEquals": {
"s3:RequestObjectTag/Project": "X"
}
}
}
]
}

Gerenciar tags de objeto


Esta seção explica como você pode gerenciar tags de objeto usando os SDKs da AWS para Java e .NET
ou o console do Amazon S3.

A marcação de objetos é uma forma de categorizar o armazenamento. Cada tag é um par de valores
chave que segue as regras a seguir:

• Você pode associar até 10 tags a um objeto. As tags associadas a um objeto devem ter chaves de tag
exclusivas.
• Um chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até 256 caracteres
Unicode.
• Os valores de chave e tag diferenciam maiúsculas de minúsculas.

Para obter mais informações sobre tags de objetos, consulte Categorizando seu armazenamento usando
tags (p. 683). Para obter mais informações sobre restrições de tags, consulte Restrições de tags
definidas pelo usuário no Guia do usuário do AWS Billing and Cost Management.

Uso do console do S3
Para adicionar tags a um objeto

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Versão da API 2006-03-01


689
Amazon Simple Storage Service Guia do usuário
Gerenciar tags de objeto

2. Na lista Buckets (Buckets), escolha o nome do bucket que contém os objetos aos quais você deseja
adicionar às tags.

Você também pode, opcionalmente, navegar até uma pasta.


3. Na lista Objects (Objetos), marque a caixa de seleção ao lado dos nomes dos objetos aos quais você
deseja adicionar tags.
4. No menu Actions (Ações), escolha Edit (Editar).
5. Revise os objetos listados e escolha Add tags (Adicionar tags).
6. Cada tag de objeto é um par de chave-valor. Insira uma Key (Chave) e um Value (Valor). Para
adicionar outra tag, escolha Add Tag (Adicionar tag).

Você pode digitar até 10 tags para um objeto.


7. Selecione Save changes.

O Amazon S3 adiciona as tags aos objetos especificados.

Para obter mais informações, consulte também Exibir propriedades do objeto no console do Amazon
S3 (p. 157) e Fazer upload de objetos (p. 71) neste guia.

Uso dos AWS SDKs


Java

O exemplo a seguir mostra como usar o AWS SDK para Java para definir tags para um objeto novo
e recuperar ou substituir tags para um objeto existente. Para obter mais informações sobre marcação
de objetos, consulte Categorizando seu armazenamento usando tags (p. 683). Para obter instruções
sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java no Amazon
S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class ManagingObjectTags {

public static void main(String[] args) {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";
String filePath = "*** File path ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Create an object, add two new tags, and upload the object to Amazon S3.
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, new
File(filePath));
List<Tag> tags = new ArrayList<Tag>();

Versão da API 2006-03-01


690
Amazon Simple Storage Service Guia do usuário
Gerenciar tags de objeto

tags.add(new Tag("Tag 1", "This is tag 1"));


tags.add(new Tag("Tag 2", "This is tag 2"));
putRequest.setTagging(new ObjectTagging(tags));
PutObjectResult putResult = s3Client.putObject(putRequest);

// Retrieve the object's tags.


GetObjectTaggingRequest getTaggingRequest = new
GetObjectTaggingRequest(bucketName, keyName);
GetObjectTaggingResult getTagsResult =
s3Client.getObjectTagging(getTaggingRequest);

// Replace the object's tags with two new tags.


List<Tag> newTags = new ArrayList<Tag>();
newTags.add(new Tag("Tag 3", "This is tag 3"));
newTags.add(new Tag("Tag 4", "This is tag 4"));
s3Client.setObjectTagging(new SetObjectTaggingRequest(bucketName, keyName,
new ObjectTagging(newTags)));
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

O exemplo a seguir mostra como usar o AWS SDK para .NET para definir as tags para um objeto
novo e recuperar ou substituir as tags para um objeto existente. Para obter mais informações sobre
marcação de objetos, consulte Categorizando seu armazenamento usando tags (p. 683).

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos
de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
public class ObjectTagsTest
{
private const string bucketName = "*** bucket name ***";
private const string keyName = "*** key name for the new object ***";
private const string filePath = @"*** file path ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
PutObjectWithTagsTestAsync().Wait();
}

static async Task PutObjectWithTagsTestAsync()

Versão da API 2006-03-01


691
Amazon Simple Storage Service Guia do usuário
Gerenciar tags de objeto

{
try
{
// 1. Put an object with tags.
var putRequest = new PutObjectRequest
{
BucketName = bucketName,
Key = keyName,
FilePath = filePath,
TagSet = new List<Tag>{
new Tag { Key = "Keyx1", Value = "Value1"},
new Tag { Key = "Keyx2", Value = "Value2" }
}
};

PutObjectResponse response = await client.PutObjectAsync(putRequest);


// 2. Retrieve the object's tags.
GetObjectTaggingRequest getTagsRequest = new GetObjectTaggingRequest
{
BucketName = bucketName,
Key = keyName
};

GetObjectTaggingResponse objectTags = await


client.GetObjectTaggingAsync(getTagsRequest);
for (int i = 0; i < objectTags.Tagging.Count; i++)
Console.WriteLine("Key: {0}, Value: {1}",
objectTags.Tagging[i].Key, objectTags.Tagging[i].Value);

// 3. Replace the tagset.

Tagging newTagSet = new Tagging();


newTagSet.TagSet = new List<Tag>{
new Tag { Key = "Key3", Value = "Value3"},
new Tag { Key = "Key4", Value = "Value4" }
};

PutObjectTaggingRequest putObjTagsRequest = new


PutObjectTaggingRequest()
{
BucketName = bucketName,
Key = keyName,
Tagging = newTagSet
};
PutObjectTaggingResponse response2 = await
client.PutObjectTaggingAsync(putObjTagsRequest);

// 4. Retrieve the object's tags.


GetObjectTaggingRequest getTagsRequest2 = new
GetObjectTaggingRequest();
getTagsRequest2.BucketName = bucketName;
getTagsRequest2.Key = keyName;
GetObjectTaggingResponse objectTags2 = await
client.GetObjectTaggingAsync(getTagsRequest2);
for (int i = 0; i < objectTags2.Tagging.Count; i++)
Console.WriteLine("Key: {0}, Value: {1}",
objectTags2.Tagging[i].Key, objectTags2.Tagging[i].Value);

}
catch (AmazonS3Exception e)
{
Console.WriteLine(
"Error encountered ***. Message:'{0}' when writing an object"
, e.Message);

Versão da API 2006-03-01


692
Amazon Simple Storage Service Guia do usuário
Usar tags de alocação de custos

}
catch (Exception e)
{
Console.WriteLine(
"Encountered an error. Message:'{0}' when writing an object"
, e.Message);
}
}
}
}

Usar tags de alocação de custos para buckets do


S3
Para monitorar o custo de armazenamento ou outros critérios de projetos individuais ou grupos de projetos,
rotule seus buckets do Amazon S3 usando tags de alocação de custos. Uma tag de alocação de custos
é um par nome-valor que você associa a um bucket do S3. Depois que você ativa as tags de alocação de
custos, a AWS as utiliza para organizar os custos de recursos em seu relatório de alocação de custo. As
tags de alocação de custos só podem ser usadas para identificar buckets. Para obter informações sobre
tags usadas para identificar objetos, consulte Categorizando seu armazenamento usando tags (p. 683).

O relatório de alocação de custos lista o uso da AWS de sua conta por categoria de produto e usuário do
AWS Identity and Access Management (IAM). O relatório contém os mesmos itens de linha do relatório
de faturamento detalhado (consulte Entender os relatórios de uso e faturamento da AWS para o Amazon
S3 (p. 698)) e colunas adicionais para suas chaves de tag.

A AWS fornece dois tipos de tags de alocação de custos: uma tag gerada pela AWS e tags definidas pelo
usuário. A AWS define, cria e aplica a tag createdBy gerada pela AWS para você depois de um evento
de CreateBucket do Amazon S3. Você define, cria e aplica tags definidas pelo usuário ao seu bucket do
S3.

Você deve ativar ambos os tipos de tags separadamente no console de Gerenciamento de custos
e faturamento antes que elas possam aparecer em seus relatórios de faturamento. Para obter mais
informações sobre tags geradas pela AWS, consulte Tags de alocação de custos geradas pela AWS.

• Para criar tags no console, consulte Visualização das propriedades de um bucket do S3 (p. 35).
• Para criar tags usando a API do Amazon S3, consulte Marcação de PUT bucket na Referência da API do
Amazon Simple Storage Service.
• Para criar tags usando a CLI da AWS, consulte put-bucket-tagging na Referência de comandos da CLI
da AWS .
• Para obter mais informações sobre a ativação de tags, consulte Usar tags de alocação de custos no
Guia do usuário do Gerenciamento de custos e faturamento da AWS.

Tags de alocação de custos definidas pelo usuário

Uma tag de alocação de custos definida pelo usuário tem os seguintes componentes:

• A chave de tags. A chave de tags é o nome da tag. Por exemplo, no projeto de tags/Trinity, o projeto é a
chave. A chave de tags é uma string que diferencia maiúsculas e minúsculas que pode conter de 1 a 128
caracteres Unicode.

• O valor da tag. O valor da tag é uma string obrigatória. Por exemplo, no projeto de tags/Trinity, Trinity é
o valor. O valor da tag é uma string que diferencia maiúsculas e minúsculas que pode conter de 0 a 256
caracteres Unicode.

Versão da API 2006-03-01


693
Amazon Simple Storage Service Guia do usuário
Mais informações

Para obter detalhes sobre os caracteres permitidos em tags definidas pelo usuário e outras restrições,
consulte Restrições de tags definidas pelo usuário no Guia do usuário do Gerenciamento de custos e
faturamento da AWS. Para obter mais informações sobre tags, consulte Tags de alocação de custos
definidas pelo usuário no Guia do usuário do Gerenciamento de custos e faturamento da AWS.

Tags de bucket do S3

Cada bucket do S3 tem um conjunto de tags. Um conjunto de tags contém todas as tags que são
atribuídas àquele bucket. Um conjunto de tags pode conter até 50 tags ou estar vazio. As chaves podem
ser únicas em um conjunto de tags, mas os valores nele não precisam ser únicos. Por exemplo, você pode
ter o mesmo valor nos conjuntos de tags chamados project/Trinity e cost-center/Trinity.

Em um bucket, se você adicionar uma tag que tenha a mesma chave de uma tag existente, o novo valor
substituirá o antigo.

A AWS não aplica nenhum significado semântico às suas tags. Interpretamos as tags estritamente como
sequências de caracteres.

Para adicionar, listar, editar ou excluir tags, você pode usar o console do Amazon S3, a interface de linha
de comando da AWS (CLI da AWS) ou a API do Amazon S3.

Mais informações
• Usar tags de alocação de custos no Guia do usuário do Gerenciamento de custos e faturamento da
AWS
• Entender os relatórios de uso e faturamento da AWS para o Amazon S3 (p. 698)
• Relatórios de faturamento da AWS para o Amazon S3 (p. 695)

Relatórios de uso e faturamento dos buckets do S3


Ao usar o Amazon Simple Storage Service (Amazon S3), você não precisa pagar taxas iniciais ou se
comprometer com a quantidade de conteúdo que armazenará. Quanto aos outros serviços da Amazon
Web Services (AWS), você paga conforme usar e apenas por aquilo que usar.

A AWS fornece os seguintes relatórios do Amazon S3:

• Relatórios de faturamento: vários relatórios que fornecem visualizações de alto nível de todas as
atividades dos serviços da AWS que você está usando, incluindo o Amazon S3. A AWS sempre cobra as
taxas do Amazon S3 do proprietário do bucket do S3, a menos que o bucket tenha sido criado como um
bucket de Pagamento pelo solicitante. Para obter mais informações sobre Pagamento pelo solicitante,
consulte Configuração de buckets de Pagamento pelo solicitante para transferências de armazenamento
e uso (p. 56). Para obter mais informações sobre relatórios de faturamento, consulte Relatórios de
faturamento da AWS para o Amazon S3 (p. 695).
• Relatório de uso: um resumo das atividades de um serviço específico, agregado por hora, dia ou mês.
Você pode escolher qual tipo e operação de uso incluir. Também é possível escolher a forma como os
dados são agregados. Para obter mais informações, consulte Relatório de uso da AWS para o Amazon
S3 (p. 696).

Os tópicos seguintes fornecem informações sobre os relatórios de uso e faturamento do Amazon S3.

Tópicos
• Relatórios de faturamento da AWS para o Amazon S3 (p. 695)
• Relatório de uso da AWS para o Amazon S3 (p. 696)

Versão da API 2006-03-01


694
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

• Entender os relatórios de uso e faturamento da AWS para o Amazon S3 (p. 698)

Relatórios de faturamento da AWS para o Amazon S3


A fatura mensal da AWS separa suas informações de uso e custo por serviço e função da AWS. Há vários
relatórios de faturamento da AWS disponíveis, o relatório mensal, o relatório de alocação de custos e os
relatórios detalhados de faturamento. Para obter informações sobre como ver os relatórios de faturamento,
consulte Visualizar sua fatura no Guia do usuário do Gerenciamento de custos e faturamento da AWS.

Você também pode fazer download de um relatório de uso que forneça mais detalhes sobre o uso do
armazenamento do Amazon S3 do que os relatórios de faturamento. Para obter mais informações,
consulte Relatório de uso da AWS para o Amazon S3 (p. 696).

A tabela a seguir lista as taxas associadas ao uso do Amazon S3.

Cobranças de uso do Amazon S3

Cobrança Comentários

Armazenamento Você paga para armazenar objetos em seu bucket


do S3. A taxa pela qual você é cobrado depende
do tamanho dos objetos, de quanto tempo você
os armazenou durante o mês e da classe de
armazenamento: S3 Standard, S3 Intelligent-
Tiering, S3 Standard-IA (IA para acesso pouco
frequente), S3 One Zone-IA, S3 Glacier, S3 Glacier
Deep Archive ou Reduced Redundancy Storage
(RRS). Para obter mais informações sobre classes
de armazenamento, consulte Uso de classes de
armazenamento do Amazon S3 (p. 563).

Monitoramento e automação Você paga uma taxa mensal de monitoramento


e automação por objeto armazenado na classe
de armazenamento S3 Intelligent Tiering para
monitorar padrões de acesso e mover objetos
entre camadas de acesso no S3 Intelligent Tiering.

Solicitações Você paga por solicitações, por exemplo,


solicitações GET, feitas em seus buckets e
objetos do S3. Isso inclui solicitações de ciclo de
vida. As taxas para solicitações dependem de
qual tipo de solicitação você está fazendo. Para
obter informações sobre a definição de preço
de solicitações, consulte Definição de preço do
Amazon S3.

Recuperações Você paga para recuperar objetos que são


armazenados no armazenamento S3 Standard-
IA, S3 One Zone-IA, S3 Glacier e S3 Glacier Deep
Archive.

Exclusões adiantadas Se você excluir um objeto armazenado no S3


Intelligent-Tiering, S3 Standard-IA, S3 One Zone-
IA, S3 Glacier ou S3 Glacier Deep Archive antes
que o compromisso de armazenamento mínimo
tenha sido cumprido, você pagará uma taxa de
exclusão antecipada desse objeto.

Versão da API 2006-03-01


695
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Cobrança Comentários

Gerenciamento de armazenamento Você paga pelos recursos de gerenciamento de


armazenamento (inventário, análise e marcação de
objetos do Amazon S3) habilitados nos buckets da
sua conta.

Largura de banda Você paga por toda a largura de banda de entrada


e de saída do Amazon S3, exceto:

• Dados transferidos da Internet


• Dados transferidos para uma instância do
Amazon Elastic Compute Cloud (Amazon EC2),
quando a instância está na mesma região da
AWS que o bucket do S3.
• Dados transferidos para o Amazon CloudFront
(CloudFront).

Você também paga uma taxa por todos os dados


transferidos usando o Amazon S3 Transfer
Acceleration.

Para obter informações detalhadas sobre as cobranças de uso do Amazon S3 para armazenamento,
transferência de dados e serviços, consulte Definição de preço do Amazon S3 e Perguntas frequentes
sobre o Amazon S3.

Para obter informações sobre como entender os códigos e as abreviações usadas nos relatórios de uso e
faturamento do Amazon S3, consulte Entender os relatórios de uso e faturamento da AWS para o Amazon
S3 (p. 698).

Mais informações
• Relatório de uso da AWS para o Amazon S3 (p. 696)
• Usar tags de alocação de custos para buckets do S3 (p. 693)
• AWS Billing and Cost Management
• Definição de preço do Amazon S3
• Perguntas frequentes sobre o Amazon S3
• Definição de preço do S3 Glacier

Relatório de uso da AWS para o Amazon S3


Ao fazer download de um relatório de uso, você pode optar por agregar os dados de uso por hora, dia ou
mês. O relatório de uso do Amazon S3 lista as operações por tipo de uso e região da AWS. Para obter
mais detalhes sobre o uso do armazenamento do Amazon S3, faça download dos relatórios de uso da
AWS gerados dinamicamente. Você pode escolher qual tipo de uso, operação e período de tempo incluir.
Também é possível escolher a forma como os dados são agregados.

O relatório de uso do Amazon S3 inclui as seguintes informações:

• Serviço: Amazon S3
• Operação: a operação executada em seu bucket ou objeto. Para obter uma explicação detalhada das
operações do Amazon S3, consulte Controle de operações em seus relatórios de uso (p. 709).
• UsageType: um dos seguintes valores:

Versão da API 2006-03-01


696
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

• Um código que identifica o tipo de armazenamento


• Um código que identifica o tipo de solicitação
• Um código que identifica o tipo de recuperação
• Um código que identifica o tipo de transferência de dados
• Um código que identifica exclusões antecipadas do armazenamento S3 Intelligent-Tiering, S3
Standard-IA, S3 One Zone-Infrequente Access (S3 One Zone-IA), S3 Glacier ou S3 Glacier Deep
Archive
• StorageObjectCount: a contagem de objetos armazenados em um determinado bucket

Para obter uma explicação detalhada dos tipos de uso do Amazon S3, consulte Entender os relatórios
de uso e faturamento da AWS para o Amazon S3 (p. 698).
• Recurso: o nome do bucket associado ao uso listado.
• StartTime: a hora inicial do dia ao qual o uso se aplica, no Tempo Universal Coordenado (UTC).
• EndTime: a hora de término do dia ao qual o uso se aplica, no Tempo universal coordenado (UTC).
• UsageValue: um dos valores de volume a seguir: A unidade de medida comum para dados é gigabytes
(GB). No entanto, dependendo do serviço e do relatório, terabytes (TB) podem aparecer.
• O número de solicitações durante o período especificado
• A quantidade de dados transferidos
• A quantidade de dados armazenados em uma determinada hora
• A quantidade de dados associados a restaurações do armazenamento de S3 Standard-IA, S3 One
Zone-IA, S3 Glacier ou S3 Glacier Deep Archive

Tip

Para obter informações detalhadas sobre cada solicitação recebida pelo Amazon S3 para seus
objetos, ative os logs de acesso do servidor para seus buckets. Para obter mais informações,
consulte Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833).

Você pode fazer download de um relatório de uso como um arquivo XML ou de valores separados por
vírgula (CSV). A seguir há um relatório de uso de exemplo em formato CSV aberto em um aplicativo de
planilha.

Para obter informações sobre como entender o relatório de uso, consulte Entender os relatórios de uso e
faturamento da AWS para o Amazon S3 (p. 698).

Fazer download do relatório de uso da AWS


Você pode fazer download de um relatório de uso como um arquivo .xml ou .csv.

Para fazer download do relatório de uso

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na barra de título, escolha seu nome de usuário do AWS Identity and Access Management (IAM) e
escolha My Billing Dashboard (Meu painel de faturamento).

Versão da API 2006-03-01


697
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

3. No painel de navegação, escolha AWS Cost and Usage Reports (Relatórios de custo e uso da AWS).
4. Na seção Other Reports (Outros relatórios), escolha AWS Usage Report (Relatório de uso da AWS).
5. Para Services (Serviços), escolha Amazon Simple Storage Service.
6. Para Download Usage Report (Fazer download do relatório de uso), escolha as seguintes
configurações:

• Usage Types (Tipos de uso): para obter uma explicação detalhada sobre os tipos de uso do
Amazon S3, consulte Entender os relatórios de uso e faturamento da AWS para o Amazon
S3 (p. 698).
• Operation (Operação): para obter uma explicação detalhada sobre as operações do Amazon S3,
consulte Controle de operações em seus relatórios de uso (p. 709).
• Time Period (Período): o período de cobertura do relatório.
• Report Granularity (Granularidade do relatório): para que o relatório inclua subtotais por hora, dia ou
mês.
7. Escolha o formato Download e siga as instruções para abrir ou salvar o relatório.

Mais informações
• Entender os relatórios de uso e faturamento da AWS para o Amazon S3 (p. 698)
• Relatórios de faturamento da AWS para o Amazon S3 (p. 695)

Entender os relatórios de uso e faturamento da AWS para o


Amazon S3
Os relatórios de uso e faturamento do Amazon S3 usam códigos e abreviações. Para tipos de uso na
tabela a seguir, substitua region, region1e region2 por abreviaturas desta lista:

• APE1: Ásia-Pacífico (Hong Kong)


• APN1: Ásia-Pacífico (Tóquio)
• APN2: Ásia-Pacífico (Seul)
• APS1: Ásia-Pacífico (Cingapura)
• APS2: Ásia-Pacífico (Sydney)
• APS3: Ásia-Pacífico (Mumbai)
• CAN1: Canadá (Central)
• CPT: África (Cidade do Cabo)
• EUN1: UE (Estocolmo)
• EUC1: UE (Frankfurt)
• EU: UE (Irlanda)
• EUW2: UE (Londres)
• EUW3: UE (Paris)
• MES1: Oriente Médio (Bahrein)
• SAE1: América do Sul (São Paulo)
• UGW1: AWS GovCloud (EUA-Oeste)
• UGE1: AWS GovCloud (EUA-Leste)
• USE1 (ou sem prefixo): Leste dos EUA (Norte da Virgínia)
• USE2: Leste dos EUA (Ohio)
• USW1: Oeste dos EUA (Norte da Califórnia)
• USW2: Oeste dos EUA (Oregon)

Versão da API 2006-03-01


698
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Para obter informações sobre a definição de preço por região da AWS, consulte Definição de preço do
Amazon S3.

A primeira coluna da tabela a seguir indica os tipos de uso que aparecem em seus relatórios de uso e
faturamento. A unidade de medida comum para dados é gigabytes (GB). No entanto, dependendo do
serviço e do relatório, terabytes (TB) podem aparecer.

Tipos de uso

Tipo de uso Unidades Granularity Descrição

region1-region2-AWS-In-ABytes GB Por hora A quantidade de dados


acelerados transferidos para
a AWS Region1 da AWS
Region2

region1-region2-AWS-In-ABytes-T1 GB Por hora A quantidade de dados


acelerados T1 transferidos
para a AWS Region1 da
AWS Region2, em que T1
se refere a solicitações do
CloudFront para POPs nos
Estados Unidos, Europa e
Japão

region1-region2-AWS-In-ABytes-T2 GB Por hora A quantidade de dados


acelerados T2 transferidos
para a AWS Region1 da
AWS Region2, em que T2
se refere a solicitações do
CloudFront para POPs em
todos os outros pontos de
presença da AWS

region1-region2-AWS-In-Bytes GB Por hora A quantidade de dados


transferidos para a AWS
Region1 da AWS Region2

region1-region2-AWS-Out-ABytes GB Por hora A quantidade de dados


acelerados transferidos da
AWS Region1 para a AWS
Region2

region1-region2-AWS-Out-ABytes-T1 GB Por hora A quantidade de dados


acelerados T1 transferidos
da AWS Region1 da AWS
Region2, em que T1 se
refere a solicitações do
CloudFront para POPs nos
Estados Unidos, Europa e
Japão

region1-region2-AWS-Out-ABytes-T2 GB Por hora A quantidade de dados


acelerados T2 transferidos
da AWS Region1 para a
AWS Region2, onde T2
se refere a solicitações do
CloudFront para POPs em

Versão da API 2006-03-01


699
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição


todos os outros pontos de
presença da AWS

region1-region2-AWS-Out-Bytes GB Por hora A quantidade de dados


transferidos da AWS
Region1 para a AWS
Region2

region-BatchOperations-Jobs Contagem Por hora O número de trabalhos de


Operações em lote do S3
executados

region-BatchOperations-Objects Contagem Por hora O número de Operações de


objetos executadas pelas
operações em lote do S3

region-Bulk-Retrieval-Bytes GB Por hora A quantidade de dados


recuperados com
solicitações em massa do
S3 Glacier ou do S3 Glacier
Deep Archive

region-BytesDeleted-GDA GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject do
armazenamento S3 Glacier
Deep Archive

region-BytesDeleted-GLACIER GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject do
armazenamento S3 Glacier

region-BytesDeleted-INT GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject
do armazenamento S3
Intelligent-Tiering

region-BytesDeleted-RRS GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject
do armazenamento RRS
(Reduced Redundancy
Storage, armazenamento de
redundância reduzida)

region-BytesDeleted-SIA GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject
do armazenamento S3
Standard-IA

Versão da API 2006-03-01


700
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-BytesDeleted-STANDARD GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject
do armazenamento S3
Standard

region-BytesDeleted-ZIA GB Mensal A quantidade de dados


excluídos por uma
operação DeleteObject do
armazenamento S3 One
Zone-IA

region-C3DataTransfer-In-Bytes GB Por hora A quantidade de dados


transferidos para o Amazon
S3 do Amazon EC2 na
mesma região da AWS

region-C3DataTransfer-Out-Bytes GB Por hora A quantidade de dados


transferidos do Amazon
S3 para o Amazon EC2 na
mesma região da AWS

region-CloudFront-In-Bytes GB Por hora A quantidade de dados


transferidos para uma
região da AWS de uma
distribuição do CloudFront

region-CloudFront-Out-Bytes GB Por hora A quantidade de dados


transferidos de uma
região da AWS para uma
distribuição do CloudFront

região-DataTransfer-In-Bytes GB Por hora A quantidade de dados


transferidos para o Amazon
S3 pela Internet

região-DataTransfer-Out-Bytes GB Por hora A quantidade de dados


transferidos do Amazon S3
1
para a internet

region-DataTransfer-Regional-Bytes GB Por hora A quantidade de dados


transferidos do Amazon S3
para os recursos da AWS
dentro da mesma região da
AWS

region-EarlyDelete-ByteHrs GB-Horas Por hora Uso pro rata de


armazenamento de
objetos excluídos do
armazenamento S3 Glacier
antes do término do
compromisso mínimo de 90
2
dias

Versão da API 2006-03-01


701
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-EarlyDelete-GDA GB-Horas Por hora Uso pro rata de


armazenamento de
objetos excluídos do
armazenamento S3 Glacier
Deep Archive antes do
término do compromisso
2
mínimo de 180 dias

region-EarlyDelete-INT GB-Horas Por hora Uso pro rata de


armazenamento de
objetos excluídos do
armazenamento S3
Intelligent-Tiering antes do
término do compromisso
mínimo de 30 dias

region-EarlyDelete-SIA GB-Horas Por hora Uso pro-rata de


armazenamento de objetos
excluídos do S3 Standard-
IA antes do término do
compromisso mínimo de 30
3
dias

region-EarlyDelete-SIA-SmObjects GB-Horas Por hora Uso pro rata de


armazenamento de objetos
pequenos (menores
que 128 KB) que foram
excluídos do S3 Standard-
IA antes que o compromisso
mínimo de 30 dias
3
terminasse

region-EarlyDelete-ZIA GB-Horas Por hora Uso pro-rata de


armazenamento de objetos
excluídos do S3 One Zone-
IA antes do término do
compromisso mínimo de 30
3
dias

region-EarlyDelete-ZIA-SmObjects GB-Horas Por hora Uso pro rata de


armazenamento de objetos
pequenos (menores que
128 KB) excluídos do S3
One Zone-IA antes do
término do compromisso
3
mínimo de 30 dias

region-Expedited-Retrieval-Bytes GB Por hora A quantidade de dados


recuperados com
solicitações Expedited S3
Glacier

Versão da API 2006-03-01


702
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-Inventory-ObjectsListed Objetos Por hora O número de objetos


listados em um grupo de
objetos (eles são agrupados
por bucket ou prefixo) com
uma lista de inventários

region-Monitoring-Automation-INT Objetos Por hora O número de objetos


exclusivos monitorados e
autonivelados na classe
de armazenamento S3
Intelligent-Tiering

region-OverwriteBytes-Copy-GDA GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject do
armazenamento S3 Glacier
Deep Archive

region-OverwriteBytes-Copy-GLACIER GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject do
armazenamento S3 Glacier

region-OverwriteBytes-Copy-INT GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject
do armazenamento S3
Intelligent-Tiering

region-OverwriteBytes-Copy-RRS GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject
do armazenamento RRS
(Reduced Redundancy
Storage, armazenamento de
redundância reduzida)

region-OverwriteBytes-Copy-SIA GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject
do armazenamento S3
Standard-IA

region-OverwriteBytes-Copy-STANDARD GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject
do armazenamento S3
Standard

region-OverwriteBytes-Copy-ZIA GB Mensal A quantidade de dados


substituídos por uma
operação CopyObject do
armazenamento S3 One
Zone-IA

Versão da API 2006-03-01


703
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-OverwriteBytes-Put-GDA GB Mensal A quantidade de dados


substituídos por uma
operação PutObject do
armazenamento S3 Glacier
Deep Archive

region-OverwriteBytes-Put-GLACIER GB Mensal A quantidade de dados


substituídos por uma
operação PutObject a partir
do armazenamento S3
Glacier

region-OverwriteBytes-Put-INT GB Mensal A quantidade de dados


substituídos por uma
operação PutObject
do armazenamento S3
Intelligent-Tiering

region-OverwriteBytes-Put-RRS GB Mensal A quantidade de dados


sobrescritos por uma
operação PutObject
do armazenamento
RRS (Reduzido do
armazenamento de
redundância)

region-OverwriteBytes-Put-SIA GB Mensal A quantidade de dados


substituídos por uma
operação PutObject
do armazenamento S3
Standard-IA

region-OverwriteBytes-Put-STANDARD GB Mensal A quantidade de dados


substituídos por uma
operação PutObject
do armazenamento S3
Standard

region-OverwriteBytes-Put-ZIA GB Mensal A quantidade de dados


substituídos por uma
operação PutObject do
armazenamento S3 One
Zone-IA

region-Requests-GDA-Tier1 Contagem Por hora O número de solicitações


PUT, COPY, POST,
InitiateMultipartUpload,
UploadPart ou
CompleteMultipartUpload
em objetos do DEEP
Archive

region-Requests-GDA-Tier2 Contagem Por hora O número de solicitações


GET, HEAD e LIST

Versão da API 2006-03-01


704
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-Requests-GDA-Tier3 Contagem Por hora O número de solicitações de


restauração padrão do S3
Glacier Deep Archive

region-Requests-GDA-Tier5 Contagem Por hora O número de solicitações de


restauração em massa do
S3 Glacier Deep Archive

region-Requests-INT-Tier1 Contagem Por hora O número de solicitações


PUT, COPY, POST ou LIST
em objetos do S3 Intelligent-
Tiering

region-Requests-INT-Tier2 Contagem Por hora O número de solicitações


GET e todas as outras
solicitações non-Tier1 para
objetos do S3 Intelligent-
Tiering

region-Requests-SIA-Tier1 Contagem Por hora O número de solicitações


PUT, COPY, POST ou LIST
em objetos do S3 Standard-
IA

region-Requests-SIA-Tier2 Contagem Por hora O número de solicitações


GET e todas as outras
solicitações non-SIA-Tier1
em objetos do S3 Standard-
IA

region-Requests-Tier1 Contagem Por hora O número de solicitações


PUT, COPY, POST ou LIST
para STANDARD, RRS e
marcas

region-Requests-GLACIER-Tier1 Contagem Por hora O número de solicitações


PUT, COPY, POST,
InitiateMultipartUpload,
UploadPart ou
CompleteMultipartUpload
em objetos do S3 Glacier

region-Requests-Tier2 Contagem Por hora O número de solicitações


GET e todas as outras
solicitações non-Tier1

region-Requests-GLACIER-Tier2 Contagem Por hora O número de solicitações


GET e todas as outras não
listadas em objetos do S3
Glacier

region-Requests-Tier3 Contagem Por hora O número de solicitações


de ciclo de vida para
solicitações de restauração
do S3 Glacier ou do S3
Glacier Deep Archive e do
S3 Glacier padrão

Versão da API 2006-03-01


705
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-Requests-Tier4 Contagem Por hora O número de transições


do ciclo de vida para
o armazenamento S3
Intelligent-Tiering, S3
Standard-IA ou S3 One
Zone-IA

region-Requests-Tier5 Contagem Por hora O número de solicitações de


restauração em massa do
S3 Glacier

region-Requests-Tier6 Contagem Por hora O número de solicitações de


restauração expressas do
S3 Glacier

region-Requests-ZIA-Tier1 Contagem Por hora Número de solicitações


PUT, COPY, POST ou
LIST em objetos do S3 One
Zone-IA

region-Requests-ZIA-Tier2 Contagem Por hora Número de solicitações


GET e todas as outras
solicitações non-ZIA-Tier1
em objetos do S3 One
Zone-IA

region-Retrieval-SIA GB Por hora A quantidade de


dados recuperados do
armazenamento S3
Standard-IA

region-Retrieval-ZIA GB Por hora A quantidade de


dados recuperados do
armazenamento S3 One
Zone-IA

region-S3G-DataTransfer-In-Bytes GB Por hora A quantidade de dados


transferidos para o Amazon
S3 para restaurar objetos do
armazenamento S3 Glacier
ou S3 Glacier Deep Archive

region-S3G-DataTransfer-Out-Bytes GB Por hora A quantidade de dados


transferidos do Amazon
S3 para fazer a transição
de objetos para o
armazenamento S3 Glacier
ou S3 Glacier Deep Archive

region-Select-Returned-Bytes GB Por hora A quantidade de dados


retornados com as
solicitações Select do
armazenamento S3
Standard

Versão da API 2006-03-01


706
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-Select-Returned-INT-Bytes GB Por hora A quantidade de dados


retornados com as
solicitações Select do
armazenamento S3
Intelligent-Tiering

region-Select-Returned-SIA-Bytes GB Por hora A quantidade de dados


retornados com as
solicitações Select do
armazenamento S3
Standard-IA

region-Select-Returned-ZIA-Bytes GB Por hora A quantidade de dados


retornados com as
solicitações Select do
armazenamento S3 One
Zone-IA

region-Select-Scanned-Bytes GB Por hora A quantidade de dados


verificados com as
solicitações Select do
armazenamento S3
Standard

region-Select-Scanned-INT-Bytes GB Por hora A quantidade de dados


verificados com solicitações
Select do armazenamento
S3 Intelligent-Tiering

region-Select-Scanned-SIA-Bytes GB Por hora A quantidade de dados


verificados com as
solicitações Select do
armazenamento S3
Standard-IA

region-Select-Scanned-ZIA-Bytes GB Por hora A quantidade de dados


verificados com as
solicitações Select do
armazenamento S3 One
Zone-IA

region-Standard-Retrieval-Bytes GB Por hora O número de bytes de


dados recuperados com
solicitações padrão do S3
Glacier ou do S3 Glacier
Deep Archive

region-StorageAnalytics-ObjCount Objetos Por hora O número de objetos


únicos em cada grupo de
objetos (onde os eles são
agrupados por bucket ou
prefixo) controlado pela
análise do armazenamento

Versão da API 2006-03-01


707
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-TagStorage-TagHrs Tag-Hours Diariamente O total de tags em todos


os objetos no bucket
informados por hora

region-TimedStorage-ByteHrs GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
no armazenamento S3
Standard

region-TimedStorage-GlacierByteHrs GB-Horas Diariamente O número de GB-horas em


que os dados ficaram no
armazenamento S3 Glacier

region-TimedStorage-GDA-ByteHrs GB-Horas Diariamente O número de GB-horas em


que os dados ficaram no
armazenamento S3 Glacier
Deep Archive

region-TimedStorage-GDA-Staging GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
no armazenamento de
preparação do S3 Glacier
Deep Archive

region-TimedStorage-GlacierStaging GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
no armazenamento de
preparação do S3 Glacier

região-TimedStorage-INT-FA-ByteHrs GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
armazenados no nível
de acesso frequente
do armazenamento S3
5
Intelligent-Tiering

região-TimedStorage-INT-IA-ByteHrs GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
armazenados no nível de
acesso pouco frequente
do armazenamento S3
Intelligent-Tiering

region-TimedStorage-RRS-ByteHrs GB-Horas Diariamente O número de GB-horas em


que os dados ficaram no
armazenamento Reduced
Redundancy Storage (RRS)

region-TimedStorage-SIA-ByteHrs GB-Horas Diariamente O número de GB-horas


em que os dados ficaram
no armazenamento S3
Standard-IA

Versão da API 2006-03-01


708
Amazon Simple Storage Service Guia do usuário
Relatórios de uso e faturamento

Tipo de uso Unidades Granularity Descrição

region-TimedStorage-SIA-SmObjects GB-Horas Diariamente O número de GB-horas


em que pequenos objetos
(menores que 128 KB)
ficaram no armazenamento
4
S3 Standard-IA

region-TimedStorage-ZIA-ByteHrs GB-Horas Diariamente O número de GB-


horas em que os dados
foram armazenados no
armazenamento S3 One
Zone-IA

region-TimedStorage-ZIA-SmObjects GB-Horas Diariamente Número de GB-horas em


que pequenos objetos
(menores que 128 KB)
ficaram no armazenamento
One Zone-IA

StorageObjectCount Contagem Diariamente O número de objetos


armazenados em um
determinado bucket

Observações:

1. Caso você encerre uma transferência antes da conclusão, o volume de dados transferidos pode exceder
o volume de dados recebidos pelo aplicativo. Essa discrepância pode ocorrer porque uma solicitação
de encerramento de transferência não pode ser executada instantaneamente, e parte do volume de
dados pode estar em trânsito com execução pendente da solicitação de encerramento. Esses dados em
trânsito são faturados como dados de "saída" transferidos.
2. Quando objetos arquivados na classe de armazenamento do S3 Glacier ou S3 Glacier Deep Archive
são excluídos, substituídos ou fizerem transição para outra classe de armazenamento antes do término
do compromisso de armazenamento mínimo, que é de 90 dias para o S3 Glacier ou de 180 dias para S3
Glacier Deep Archive, há uma cobrança pro rata por gigabyte para os dias restantes.
3. Para objetos que estão no armazenamento S3 Intelligent-Tiering, S3 Standard-IA ou S3 One Zone-IA,
quando são excluídos, substituídos ou movidos para uma classe de armazenamento diferente antes de
30 dias, existe uma cobrança pro rata por gigabyte pelos dias restantes.
4. Para pequenos objetos (menores que 128 KB) que estão no armazenamento S3 Standard-IA ou S3 One
Zone-IA, quando são excluídos, substituídos ou movidos para uma classe de armazenamento diferente
antes de 30 dias, existe uma cobrança pro rata por gigabyte pelos dias restantes.
5. Não há tamanho de objeto mínimo faturável para objetos na classe de armazenamento S3 Intelligent-
Tiering, mas objetos menores que 128 KB não estão qualificados para autonivelamento e sempre são
cobrados segundo a taxa do nível de acesso frequente S3 Intelligent-Tiering.

Controle de operações em seus relatórios de uso


As operações descrevem a ação executada no objeto ou bucket da AWS pelo tipo de uso especificado. As
operações são indicadas por códigos autoexplicativos, como PutObject ou ListBucket. Para ver quais
ações em seu bucket geraram um tipo de uso específico, use estes códigos. Ao criar um relatório de uso,
você pode optar por incluir Todas as operações ou uma operação específica, por exemplo, GetObject,
para relatar.

Versão da API 2006-03-01


709
Amazon Simple Storage Service Guia do usuário
Uso do Amazon S3 Select

Mais informações
• Relatório de uso da AWS para o Amazon S3 (p. 696)
• Relatórios de faturamento da AWS para o Amazon S3 (p. 695)
• Definição de preço do Amazon S3
• Perguntas frequentes sobre o Amazon S3
• Definição de preço do S3 Glacier
• Perguntas frequentes sobre o S3 Glacier

Filtragem e recuperação de dados usando o


Amazon S3 Select
Com o Seleção do Amazon S3, é possível usar instruções de linguagem de consulta estruturada (SQL)
para filtrar o conteúdo de objetos do Amazon S3 e recuperar somente o subconjunto de dados necessário.
Ao usar o Seleção do Amazon S3 para filtrar esses dados, é possível reduzir a quantidade de dados
transferidos pelo Amazon S3. Isso reduz o custo e a latência de recuperação desses dados.

O Seleção do Amazon S3 funciona em objetos armazenados em formato CSV, JSON ou Apache Parquet.
Ele também funciona com objetos compactados com GZIP ou BZIP2 (somente para objetos CSV e JSON)
e objetos criptografados no lado do servidor. Você pode especificar o formato dos resultados como CSV ou
JSON e determinar como os registros do resultado são delimitados.

Expressões SQL são passadas para o Amazon S3 na solicitação. O Seleção do Amazon S3 é compatível
com um subconjunto de SQL. Para obter mais informações sobre os elementos SQL compatíveis com o
Seleção do Amazon S3, consulte Referência SQL para Amazon S3 Select e S3 Glacier Select. (p. 714).

É possível executar consultas SQL usando AWS SDKs, a API REST de conteúdo de objeto SELECT, a
Interface de linha de comando da AWS (CLI da AWS) ou o console do Amazon S3. O console do Amazon
S3 limita a quantidade de dados retornados em 40 MB. Para recuperar mais dados, use a CLI da AWS ou
a API.

Requisitos e limites
Estes são os requisitos para o uso do Seleção do Amazon S3:

• É necessário ter permissão s3:GetObject para o objeto sendo consultado.


• Se o objeto sendo consultado for criptografado com uma chave de criptografia fornecida pelo cliente
(SSE-C), use https e forneça a chave na solicitação.

Os seguintes limites se aplicam ao usar o Seleção do Amazon S3:

• O tamanho máximo de uma expressão SQL é 256 KB.


• O tamanho máximo de um registro na entrada ou no resultado é de 1 MB.
• O Seleção do Amazon S3 só pode emitir dados aninhados usando o formato de saída JSON.

Limitações adicionais são aplicáveis no uso do Seleção do Amazon S3 com objetos Parquet:

• O Seleção do Amazon S3 é compatível somente com a compactação colunar com GZIP ou Snappy. O
Seleção do Amazon S3 não é compatível com a compactação de objetos inteiros no caso de objetos
Parquet.

Versão da API 2006-03-01


710
Amazon Simple Storage Service Guia do usuário
Criar uma solicitação

• O Seleção do Amazon S3 não é compatível com a saída do Parquet. É necessário especificar o formato
de saída como CSV ou JSON.
• O tamanho máximo do grupo de linhas não compactadas é de 256 MB.
• É necessário usar os tipos de dados especificados no esquema do objeto.
• A seleção em um campo repetido retorna apenas o último valor.

Criar uma solicitação


Ao criar uma solicitação, você fornece detalhes do objeto sendo consultado usando um objeto
InputSerialization. Forneça detalhes sobre como os resultados serão retornados usando um objeto
OutputSerialization. Inclua também a expressão SQL que o Amazon S3 usa para filtrar a solicitação.

Para obter mais informações sobre como criar uma solicitação do Seleção do Amazon S3, consulte
SELECTObjectContent na Referência de APIs do Amazon Simple Storage Service. Também é possível um
exemplo de código do SDK nas seções a seguir.

Solicitações usando intervalos de verificação


Com o Seleção do Amazon S3, é possível verificar um subconjunto de um objeto especificando um
intervalo de bytes a ser consultado. Esse recurso permite paralelizar a verificação de todo o objeto
dividindo o trabalho em solicitações separadas do Seleção do Amazon S3 para uma série de intervalos
de verificação não sobrepostos. Os intervalos de verificação não precisam estar alinhados aos limites de
registro. Uma solicitação de intervalo de verificação do Seleção do Amazon S3 é executada no intervalo de
bytes especificado. Um registro que começa no intervalo de verificação especificado, mas se estende para
além do intervalo de verificação, será processado pela consulta. Por exemplo; a seguir mostra um objeto
do Amazon S3 que contém uma série de registros em um formato CSV delimitado por linha:

A,B
C,D
D,E
E,F
G,H
I,J

Use o parâmetro ScanRange do Seleção do Amazon S3 e inicie no (byte) 1 e termine no (byte) 4. Assim,
o intervalo de verificação começaria em "," e faria a verificação até o final do registro, começando em "C" e
retornaria o resultado C, D, pois esse é o final do registro.

As solicitações de intervalo de verificação do Seleção do Amazon S3 são compatíveis com objetos


Parquet, CSV (sem delimitadores entre aspas) e JSON (somente no modo LINES). Os objetos CSV e
JSON devem estar descompactados. Para objetos JSON e CSV baseados em linha, quando um intervalo
de verificação é especificado como parte da solicitação do Seleção do Amazon S3, todos os registros que
começam no intervalo de verificação são processados. Para objetos Parquet, todos os grupos de linhas
que começam no intervalo de verificação solicitado são processados.

As solicitações de intervalo de varredura do Seleção do Amazon S3 estão disponíveis para uso na CLI,
na API e no SDK do Amazon S3. É possível usar o parâmetro ScanRange na solicitação do Seleção do
Amazon S3 desse recurso. Para obter mais informações, consulte o conteúdo do objeto do Seleção do
Amazon S3 na Referência de APIs do Amazon Simple Storage Service.

Erros
O Seleção do Amazon S3 retorna um código de erro e uma mensagem de erro associada quando
um problema é encontrado ao tentar executar uma consulta. Para obter uma lista de códigos de erro
e descrições, consulte a seção Lista de Códigos de erro de conteúdo de objetos SELECT da página
Respostas de erro na Referência de APIs do Amazon Simple Storage Service.

Versão da API 2006-03-01


711
Amazon Simple Storage Service Guia do usuário
Exemplos do S3 Select

Para obter mais informações sobre o Amazon S3 Select, consulte os tópicos abaixo:

Tópicos
• Exemplos de uso do Amazon S3 Select em objetos (p. 712)
• Referência SQL para Amazon S3 Select e S3 Glacier Select. (p. 714)

Exemplos de uso do Amazon S3 Select em objetos


Você pode usar o S3 Select com a API REST do Amazon S3 e o AWS SDK para selecionar conteúdo de
objetos.

Uso dos REST API


Você pode usar o SDK da AWS para selecionar conteúdo de objetos. Contudo, se o seu aplicativo
exigir, você pode enviar solicitações REST diretamente. Para obter mais informações sobre o formato de
solicitação e de resposta, consulte Conteúdo de objetos SELECT.

Uso dos AWS SDKs


Você pode usar o Amazon S3 Select para selecionar conteúdo de um objeto usando o método
selectObjectContent, que retornará com sucesso os resultados da expressão SQL.

Java

O código Java a seguir retorna o valor da primeira coluna para cada registro armazenado em um
objeto que contém dados armazenados em formato CSV. Ele também solicita que mensagens de
Progress e Stats sejam retornadas. É necessário fornecer um nome de bucket válido e um objeto
que contenha dados em formato CSV.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

package com.amazonaws;

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CSVInput;
import com.amazonaws.services.s3.model.CSVOutput;
import com.amazonaws.services.s3.model.CompressionType;
import com.amazonaws.services.s3.model.ExpressionType;
import com.amazonaws.services.s3.model.InputSerialization;
import com.amazonaws.services.s3.model.OutputSerialization;
import com.amazonaws.services.s3.model.SelectObjectContentEvent;
import com.amazonaws.services.s3.model.SelectObjectContentEventVisitor;
import com.amazonaws.services.s3.model.SelectObjectContentRequest;
import com.amazonaws.services.s3.model.SelectObjectContentResult;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.atomic.AtomicBoolean;

import static com.amazonaws.util.IOUtils.copy;

/**
* This example shows how to query data from S3Select and consume the response in the
form of an
* InputStream of records and write it to a file.
*/

Versão da API 2006-03-01


712
Amazon Simple Storage Service Guia do usuário
Exemplos do S3 Select

public class RecordInputStreamExample {

private static final String BUCKET_NAME = "${my-s3-bucket}";


private static final String CSV_OBJECT_KEY = "${my-csv-object-key}";
private static final String S3_SELECT_RESULTS_PATH = "${my-s3-select-results-
path}";
private static final String QUERY = "select s._1 from S3Object s";

public static void main(String[] args) throws Exception {


final AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

SelectObjectContentRequest request = generateBaseCSVRequest(BUCKET_NAME,


CSV_OBJECT_KEY, QUERY);
final AtomicBoolean isResultComplete = new AtomicBoolean(false);

try (OutputStream fileOutputStream = new FileOutputStream(new File


(S3_SELECT_RESULTS_PATH));
SelectObjectContentResult result = s3Client.selectObjectContent(request))
{
InputStream resultInputStream = result.getPayload().getRecordsInputStream(
new SelectObjectContentEventVisitor() {
@Override
public void visit(SelectObjectContentEvent.StatsEvent event)
{
System.out.println(
"Received Stats, Bytes Scanned: " +
event.getDetails().getBytesScanned()
+ " Bytes Processed: " +
event.getDetails().getBytesProcessed());
}

/*
* An End Event informs that the request has finished
successfully.
*/
@Override
public void visit(SelectObjectContentEvent.EndEvent event)
{
isResultComplete.set(true);
System.out.println("Received End Event. Result is
complete.");
}
}
);

copy(resultInputStream, fileOutputStream);
}

/*
* The End Event indicates all matching records have been transmitted.
* If the End Event is not received, the results may be incomplete.
*/
if (!isResultComplete.get()) {
throw new Exception("S3 Select request was incomplete as End Event was not
received.");
}
}

private static SelectObjectContentRequest generateBaseCSVRequest(String bucket,


String key, String query) {
SelectObjectContentRequest request = new SelectObjectContentRequest();
request.setBucketName(bucket);
request.setKey(key);
request.setExpression(query);
request.setExpressionType(ExpressionType.SQL);

Versão da API 2006-03-01


713
Amazon Simple Storage Service Guia do usuário
Referência SQL

InputSerialization inputSerialization = new InputSerialization();


inputSerialization.setCsv(new CSVInput());
inputSerialization.setCompressionType(CompressionType.NONE);
request.setInputSerialization(inputSerialization);

OutputSerialization outputSerialization = new OutputSerialization();


outputSerialization.setCsv(new CSVOutput());
request.setOutputSerialization(outputSerialization);

return request;
}
}

JavaScript

Para obter um exemplo de JavaScript usando o AWS SDK para JavaScript com a API do S3
SelectObjectContent para selecionar registros de arquivos JSON e CSV armazenados no Amazon S3,
consulte a publicação de blog Querying data without servers or databases using Amazon S3 Select.
Python

Para obter um exemplo do Python sobre o uso de consultas de linguagem de consulta estruturada
(SQL) para pesquisar dados carregados para o Amazon S3 como um arquivo de valor separado por
vírgulas (CSV) usando o S3 Select, consulte a publicação do blog Querying data without servers or
databases using Amazon S3 Select.

Referência SQL para Amazon S3 Select e S3 Glacier


Select.
Essa referência contém uma descrição de elementos de linguagem de consulta estruturada (SQL) que são
compatíveis com o Seleção do Amazon S3 e com o Seleção do S3 Glacier.

Tópicos
• Comando SELECT (p. 714)
• Tipos de dados (p. 720)
• Operadores (p. 721)
• Palavras-chave reservadas (p. 722)
• Funções SQL (p. 726)

Comando SELECT
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis somente com o comando SELECT
de SQL. As seguintes cláusulas padrão ANSI são compatíveis com SELECT:

• SELECT lista
• Cláusula FROM
• Cláusula WHERE
• Cláusula LIMIT (somente Seleção do Amazon S3)

Note
As consultas do Seleção do Amazon S3 e do Seleção do S3 Glacier não são compatíveis com
subconsultas nem com junções.

Versão da API 2006-03-01


714
Amazon Simple Storage Service Guia do usuário
Referência SQL

Lista SELECT
A lista SELECT nomeia as colunas, as funções e as expressões que a consulta deve retornar. A lista
representa o resultado da consulta.

SELECT *
SELECT projection [ AS column_alias | column_alias ] [, ...]

O primeiro formulário com * (asterisco) retorna todas as linhas que passaram na cláusula WHERE, da
maneira como estão. O segundo formulário cria uma linha com expressões escalares de saída definidas
pelo usuário projection para cada coluna.

Cláusula FROM
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com os seguintes formulários da
cláusula FROM:

FROM table_name
FROM table_name alias
FROM table_name AS alias

Em que table_name é um S3Object (para o Seleção do Amazon S3), ARCHIVE ou OBJECT (para o
Seleção do S3 Glacier) que faz referência ao arquivo que está sendo consultado. Os usuários provenientes
de bancos de dados relacionais tradicionais podem pensar nisso como um esquema de banco de dados
que contém várias visualizações em uma tabela.

Seguindo o SQL padrão, a cláusula FROM cria linhas filtradas na cláusula WHERE e projetadas na lista
SELECT.

Para objetos JSON armazenados no Seleção do Amazon S3, você também pode usar as seguintes formas
da cláusula FROM:

FROM S3Object[*].path
FROM S3Object[*].path alias
FROM S3Object[*].path AS alias

Com essa forma da cláusula FROM, você pode selecionar entre matrizes ou objetos em um objeto JSON.
Você pode especificar esse pathusando uma das formas a seguir:

• Por nome (em um objeto): .name ou ['name']


• Por índice (em uma matriz): [index]
• Por curinga (em um objeto): .*
• Por curinga (em uma matriz): [*]

Note

• Essa forma da cláusula FROM funciona apenas com objetos JSON.


• Curingas sempre emitem pelo menos um registro. Se não houver correspondência com nenhum
registro, o Seleção do Amazon S3 emitirá o valor MISSING. Durante a serialização de saída
(após a conclusão da consulta), o Seleção do Amazon S3 substituirá os valores MISSING por
registros vazios.
• Funções agregadas (AVG, COUNT, MAX, MIN, and SUM) ignoram valores MISSING.
• Se você não fornecer um alias ao usar um curinga, poderá consultar a linha usando o último
elemento do caminho. Por exemplo, você pode selecionar todos os preços em uma lista

Versão da API 2006-03-01


715
Amazon Simple Storage Service Guia do usuário
Referência SQL

de livros usando a consulta SELECT price FROM S3Object[*].books[*].price.


Se o caminho terminar com um curinga em vez de um nome, você poderá usar o
valor _1 para consultar a linha. Por exemplo, em vez de SELECT price FROM
S3Object[*].books[*].price, você pode usar a consulta SELECT _1.price FROM
S3Object[*].books[*].
• O Seleção do Amazon S3 sempre trata um documento JSON como uma matriz de valores
no nível da raiz. Dessa forma, mesmo se o objeto JSON que você estiver consultando tiver
apenas um elemento raiz, a cláusula FROM deverá começar com S3Object[*]. No entanto,
por razões de compatibilidade, o Seleção do Amazon S3 permite omitir o curinga caso você não
inclua um caminho. Dessa forma, a cláusula completa FROM S3Object é equivalente a FROM
S3Object[*] as S3Object. Se você incluir um caminho, também deverá usar o curinga.
Portanto, FROM S3Object e FROM S3Object[*].path são clausulas válidas, mas FROM
S3Object.path não.

Example

Exemplos:

Exemplo 1

Este exemplo mostra resultados usando o seguinte conjunto de dados e consulta:

{ "Rules": [ {"id": "1"}, {"expr": "y > x"}, {"id": "2", "expr": "z = DEBUG"} ]}
{ "created": "June 27", "modified": "July 6" }

SELECT id FROM S3Object[*].Rules[*].id

{"id":"1"}
{}
{"id":"2"}
{}

O Seleção do Amazon S3 produz cada resultado pelos seguintes motivos:

• {"id":"id-1"} — S3Object[0].Rules[0].id produziu uma correspondência.


• {} — S3Object[0].Rules[1].id não correspondeu a um registro. Portanto, o Seleção do Amazon S3 emitiu
MISSING, que foi, então, alterado para um registro vazio durante a serialização de saída e retornou.
• {"id":"id-2"} — S3Object[0].Rules[2].id produziu uma correspondência.
• {} — S3Object[1] não teve correspondência em Rules. Portanto, o Seleção do Amazon S3 emitiu
MISSING, que foi, então, alterado para um registro vazio durante a serialização de saída e retornou.

Se você não quiser que o Seleção do Amazon S3 retorne registros vazios quando não encontrar uma
correspondência, você poderá testar o valor MISSING. A consulta a seguir retorna os mesmos resultados
que a consulta anterior, mas com os valores vazios omitidos:

SELECT id FROM S3Object[*].Rules[*].id WHERE id IS NOT MISSING

{"id":"1"}
{"id":"2"}

Exemplo 2

Este exemplo mostra resultados usando o seguinte conjunto de dados e consultas:

Versão da API 2006-03-01


716
Amazon Simple Storage Service Guia do usuário
Referência SQL

{ "created": "936864000", "dir_name": "important_docs", "files": [ { "name": "." },


{ "name": ".." }, { "name": ".aws" }, { "name": "downloads" } ], "owner": "AWS S3" }
{ "created": "936864000", "dir_name": "other_docs", "files": [ { "name": "." }, { "name":
".." }, { "name": "my stuff" }, { "name": "backup" } ], "owner": "User" }

SELECT d.dir_name, d.files FROM S3Object[*] d

{"dir_name":"important_docs","files":[{"name":"."},{"name":".."},{"name":".aws"},
{"name":"downloads"}]}
{"dir_name":"other_docs","files":[{"name":"."},{"name":".."},{"name":"my stuff"},
{"name":"backup"}]}

SELECT _1.dir_name, _1.owner FROM S3Object[*]

{"dir_name":"important_docs","owner":"AWS S3"}
{"dir_name":"other_docs","owner":"User"}

Cláusula WHERE
A cláusula WHERE segue esta sintaxe:

WHERE condition

A cláusula WHERE filtra as linhas com base na condição. Uma condição é uma expressão com um valor
booliano. Somente linhas para as quais a condição é avaliada como TRUE são retornadas no resultado.

Cláusula LIMIT (somente para o Seleção do Amazon S3)


A cláusula LIMIT segue esta sintaxe:

LIMIT number

A cláusula LIMIT limita o número de registros que você deseja que a consulta retorne com base no
número.
Note
O S3 Glacier Select não é compatível com a cláusula LIMIT.

Acesso de atributo
As cláusulas SELECT e WHERE podem se referir a dados de registro usando um dos métodos nas seções a
seguir, dependendo se o arquivo que está sendo consultado está no formato CSV ou JSON.

CSV

• Números da coluna — você pode se referir à Nª coluna de uma linha com o nome _N, em que N é a
posição da coluna. A contagem da posição começa em 1. Por exemplo, a primeira coluna é denominada
_1 e a segunda coluna é denominada _2.

Você pode se referir a uma coluna como _N ou alias._N. Por exemplo, _2 e myAlias._2 são
maneiras válidas de fazer referência a uma coluna na lista SELECT e na cláusula WHERE.
• Cabeçalhos da coluna — Para objetos no formato CSV que possuem uma linha de cabeçalho, os
cabeçalhos estão disponíveis para a lista SELECT e a cláusula WHERE. Especificamente, como no
SQL tradicional, nas expressões de cláusula SELECT e WHERE, você pode consultar as colunas por
alias.column_name ou column_name.

Versão da API 2006-03-01


717
Amazon Simple Storage Service Guia do usuário
Referência SQL

JSON (somente para o Seleção do Amazon S3)

• Documento — você pode acessar os campos do documentos JSON como alias.name. Os campos
aninhados também podem ser acessados, por exemplo, alias.name1.name2.name3
• Lista — Você pode acessar elementos em uma lista JSON usando índices baseados em zero com
o operador []. Por exemplo, você pode acessar o segundo elemento de uma lista como alias[1].
Acessar elementos de lista pode ser combinado com campos como alias.name1.name2[1].name3.
• Exemplos: considere esse objeto JSON como um exemplo de conjunto de dados:

{"name": "Susan Smith",


"org": "engineering",
"projects":
[
{"project_name":"project1", "completed":false},
{"project_name":"project2", "completed":true}
]
}

Exemplo 1

A consulta a seguir retorna estes resultados:

Select s.name from S3Object s

{"name":"Susan Smith"}

Exemplo 2

A consulta a seguir retorna estes resultados:

Select s.projects[0].project_name from S3Object s

{"project_name":"project1"}

Diferenciação de letras maiúsculas e minúsculas de cabeçalho/nomes de atributo


Com o Seleção do Amazon S3 e o Seleção do S3 Glacier, você pode usar aspas duplas para indicar
que cabeçalhos de coluna (para objetos CSV) e atributos (para objetos JSON) fazem diferenciação entre
letras maiúsculas e minúsculas. Sem as aspas duplas, os cabeçalhos/atributos de objeto não fazem
diferenciação entre letras maiúsculas e minúsculas. Um erro ocorre em casos de ambiguidade.

Os exemplos a seguir são 1) objetos do Amazon S3 ou do S3 Glacier no formato CSV com os cabeçalhos
de coluna especificados e com FileHeaderInfo definido como "Usar" para a solicitação de consulta; ou
2) objetos do Amazon S3 no formato JSON com os atributos especificados.

Exemplo 1: O objeto que está sendo consultado tem o cabeçalho/atributo “NAME”.

• A expressão a seguir retorna com êxito valores do objeto (sem aspas: não diferenciando entre letras
maiúsculas e minúsculas):

SELECT s.name from S3Object s

• Os seguintes resultados de expressão em um erro 400 MissingHeaderName (aspas: diferenciação


entre letras maiúsculas e minúsculas):

Versão da API 2006-03-01


718
Amazon Simple Storage Service Guia do usuário
Referência SQL

SELECT s."name" from S3Object s

Exemplo 2: O objeto do Amazon S3 que está sendo consultado tem um cabeçalho/atributo com "NAME" e
outro cabeçalho/atributo com "name".

• A seguinte expressão resulta em um erro 400 AmbiguousFieldName (sem aspas: sem diferenciação
entre letras maiúsculas e minúsculas, mas há duas correspondências):

SELECT s.name from S3Object s

• A expressão a seguir retorna com êxito valores do objeto (aspas: diferenciação entre letras maiúsculas e
minúsculas, portanto, resolve a ambiguidade):

SELECT s."NAME" from S3Object s

Usar palavras-chave reservadas como termos definidos pelo usuário


O Seleção do Amazon S3 e o Seleção do S3 Glacier possuem um conjunto de palavras-chave reservadas
que são necessárias para executar as expressões SQL usadas para consultar o conteúdo do objeto. As
palavras-chave reservadas incluem nomes de função, tipos de dados, operadores, e assim por diante. Em
alguns casos, os termos definidos pelo usuário como os cabeçalhos de coluna (para arquivos CSV) ou os
atributos (para objeto JSON) podem entrar em conflito com uma palavra-chave reservada. Quando isso
ocorrer, é necessário usar as aspas duplas para indicar que você está usando intencionalmente um termo
definido pelo usuário que entra em conflito com uma palavra-chave reservada. Caso contrário, ocorrerá um
erro de análise 400.

Para obter a lista completa de palavras-chave, consulte Palavras-chave reservadas (p. 722).

O exemplo a seguir é 1) um objeto do Amazon S3 ou do S3 Glacier no formato CSV com os cabeçalhos


de coluna especificados, com FileHeaderInfo definido como "Usar" para a solicitação de consulta ou 2)
um objeto do Amazon S3 no formato JSON com os atributos especificados.

Exemplo: o objeto que está sendo consultado tem o cabeçalho/atributo nomeado como “CAST”, que é uma
palavra-chave reservada.

• A expressão a seguir retorna com êxito valores do objeto (aspas: usar cabeçalho/atributo definido pelo
usuário):

SELECT s."CAST" from S3Object s

• Os seguintes resultados de expressão resultam em um erro de análise 400 (sem aspas: entram em
conflito com palavra-chave reservada):

SELECT s.CAST from S3Object s

Expressões escalares
Na cláusula WHERE e na lista SELECT, você tem expressões escalares SQL, que são expressões que
retornam valores escalares. Elas têm o seguinte formato:

• literal

Um literal SQL.

Versão da API 2006-03-01


719
Amazon Simple Storage Service Guia do usuário
Referência SQL

• column_reference

Uma referência a uma coluna no formato column_name ou alias.column_name.


• unary_op expression

Em que unary_op é um operador unário SQL.


• expression binary_op expression

Em que binary_op é um operador binário SQL.


• func_name

Em que func_name é o nome de uma função escalar a ser invocada.

• expression [ NOT ] BETWEEN expression AND expression

• expression LIKE expression [ ESCAPE expression ]

Tipos de dados
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com vários tipos de dados primitivos.

Conversões de tipo de dados


A regra geral é seguir a função CAST se definida. Se CAST não estiver definido, todos os dados de entrada
serão tratados como uma string. Ele deve ser convertido em tipos de dados relevantes quando necessário.

Para obter mais informações sobre a função CAST, consulte CAST (p. 730).

Tipos de dados compatíveis


O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com o conjunto de tipos de dados
primitivos a seguir.

Nome Descrição Exemplos

bool TRUE ou FALSE FALSE

int, inteiro Número inteiro assinado de 8 bytes no intervalo de 100000


-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.

string String de tamanho variável codificada por UTF8. O limite padrão 'xyz'
é um caractere. O limite máximo de caracteres é 2.147.483.647.

flutuante Número de ponto flutuante de 8 bytes. CAST(0.456


AS FLOAT)

decimal, Número de base 10, com precisão máxima de 38 (ou seja, a 123.456
numérico quantidade máxima de dígitos significativos) e com escala no
31 31
intervalo de -2 a 2 -1 (ou seja, o expoente de base 10).
Note

O Seleção do Amazon S3 ignora a escala e a precisão


quando as duas são fornecidas ao mesmo tempo.
Versão da API 2006-03-01
720
Amazon Simple Storage Service Guia do usuário
Referência SQL

Nome Descrição Exemplos

timestamp Os time stamps representam um momento específico, sempre CAST('2007-04-05T14:30Z'


incluem um deslocamento local e são capazes de oferecer AS
precisão arbitrária. TIMESTAMP)

No formato de texto, os time stamps seguem a nota W3C sobre


formatos de data e hora, mas devem terminar com o literal “T”,
se não for pelo menos a precisão de dia inteiro. As frações de
segundos são permitidas, com pelo menos um dígito de precisão
e um máximo ilimitado. Os deslocamentos de hora local podem
ser representados como deslocamentos de hora:minuto em UTC
ou como o literal "Z" para indicar uma hora local em UTC. Eles
são necessários em time stamps com hora e não são permitidos
em valores de data.

Operadores
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com os seguintes operadores.

Operadores lógicos

• AND
• NOT
• OR

Operadores de comparação

• <
• >
• <=
• >=
• =
• <>
• !=
• BETWEEN
• IN – Por exemplo: IN ('a', 'b', 'c')

Operadores de correspondência de padrões


• LIKE
• _ (corresponde a qualquer caractere)
• % (corresponde a qualquer sequência de caracteres)

Operadores unitários
• IS NULL
• IS NOT NULL

Versão da API 2006-03-01


721
Amazon Simple Storage Service Guia do usuário
Referência SQL

Operadores matemáticos
A adição, a subtração, a multiplicação, a divisão e o módulo são compatíveis.

• +
• –
• *
• /
• %

Precedência do operador
A tabela a seguir mostra a precedência dos operadores em ordem decrescente.

Operador/ Capacidade de associação Obrigatório


elemento

– direita menos unário

*, /, % esquerda multiplicação,
divisão, módulo

+, - esquerda adição,
subtração

IN   associação de
conjunto

BETWEEN   contenção de
intervalo

LIKE   correspondência
de padrões de
string

<>   menor que,


maior que

= direita igualdade,
atribuição

NOT direita negação lógica

AND esquerda conjunção lógica

OU esquerda disjunção lógica

Palavras-chave reservadas
Abaixo está a lista de palavras-chave reservadas para o Seleção do Amazon S3 e o Seleção do S3
Glacier. Estes incluem os nomes de função, tipos de dados, operadores etc., necessários para executar as
expressões SQL usadas para consultar o conteúdo do objeto.

absolute
action
add

Versão da API 2006-03-01


722
Amazon Simple Storage Service Guia do usuário
Referência SQL

all
allocate
alter
and
any
are
as
asc
assertion
at
authorization
avg
bag
begin
between
bit
bit_length
blob
bool
boolean
both
by
cascade
cascaded
case
cast
catalog
char
char_length
character
character_length
check
clob
close
coalesce
collate
collation
column
commit
connect
connection
constraint
constraints
continue
convert
corresponding
count
create
cross
current
current_date
current_time
current_timestamp
current_user
cursor
date
day
deallocate
dec
decimal
declare
default
deferrable
deferred
delete
desc

Versão da API 2006-03-01


723
Amazon Simple Storage Service Guia do usuário
Referência SQL

describe
descriptor
diagnostics
disconnect
distinct
domain
double
drop
else
end
end-exec
escape
except
exception
exec
execute
exists
external
extract
false
fetch
first
float
for
foreign
found
from
full
get
global
go
goto
grant
group
having
hour
identity
immediate
in
indicator
initially
inner
input
insensitive
insert
int
integer
intersect
interval
into
is
isolation
join
key
language
last
leading
left
level
like
limit
list
local
lower
match
max

Versão da API 2006-03-01


724
Amazon Simple Storage Service Guia do usuário
Referência SQL

min
minute
missing
module
month
names
national
natural
nchar
next
no
not
null
nullif
numeric
octet_length
of
on
only
open
option
or
order
outer
output
overlaps
pad
partial
pivot
position
precision
prepare
preserve
primary
prior
privileges
procedure
public
read
real
references
relative
restrict
revoke
right
rollback
rows
schema
scroll
second
section
select
session
session_user
set
sexp
size
smallint
some
space
sql
sqlcode
sqlerror
sqlstate
string
struct

Versão da API 2006-03-01


725
Amazon Simple Storage Service Guia do usuário
Referência SQL

substring
sum
symbol
system_user
table
temporary
then
time
timestamp
timezone_hour
timezone_minute
to
trailing
transaction
translate
translation
trim
true
tuple
union
unique
unknown
unpivot
update
upper
usage
user
using
value
values
varchar
varying
view
when
whenever
where
with
work
write
year
zone

Funções SQL
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com várias funções SQL.

Tópicos
• Funções agregadas (somente no Seleção do Amazon S3) (p. 726)
• Funções condicionais (p. 727)
• Funções da conversão (p. 730)
• Funções de data (p. 730)
• Funções de string (p. 736)

Funções agregadas (somente no Seleção do Amazon S3)


O Seleção do Amazon S3 é compatível com as seguintes funções agregadas.
Note

O S3 Glacier Select não é compatível com as funções agregadas.

Versão da API 2006-03-01


726
Amazon Simple Storage Service Guia do usuário
Referência SQL

Função Tipo de argumento Tipo de retorno

AVG(expression)INT, FLOAT, DECIMAL DECIMAL para


um argumento
INT, FLOAT para
um argumento
de ponto
flutuante, caso
contrário, é igual
ao tipo de dados
do argumento.

COUNT – INT

MAX(expression)INT, DECIMAL O mesmo


que o tipo de
argumento.

MIN(expression)INT, DECIMAL O mesmo


que o tipo de
argumento.

SUM(expression)INT, FLOAT, DOUBLE, DECIMAL INT para o


argumento INT,
FLOAT para um
argumento de
ponto flutuante,
caso contrário,
é igual ao tipo
de dados do
argumento.

Funções condicionais
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com as seguintes funções
condicionais.

Tópicos
• CASE (p. 727)
• COALESCE (p. 729)
• NULLIF (p. 729)

CASE

A expressão CASE é uma expressão condicional, semelhante às instruções if/then/else encontradas em


outras linguagens. CASE é usada para especificar um resultado onde há várias condições. Há dois tipos
de expressões CASE: simples e pesquisada.

Em expressões CASE simples, uma expressão é comparada a um valor. Quando uma correspondência
é encontrada, a ação especificada na cláusula THEN é aplicada. Se nenhuma correspondência é
encontrada, a ação especificada na cláusula ELSE é aplicada.

Em expressões CASE pesquisadas, cada CASE é avaliado com base em uma expressão booleana e a
instrução CASE retorna o primeiro CASE correspondente. Se nenhum CASE correspondente é encontrado
entre as cláusulas WHEN, a ação na cláusula ELSE é retornada.

Versão da API 2006-03-01


727
Amazon Simple Storage Service Guia do usuário
Referência SQL

Sintaxe
Instrução CASE simples usada para correspondência de condições:

CASE expression
WHEN value THEN result
[WHEN...]
[ELSE result]
END

Instrução CASE pesquisada usada para avaliação de cada condição:

CASE
WHEN boolean condition THEN result
[WHEN ...]
[ELSE result]
END

Exemplos
Use uma expressão CASE simples para substituir Nova York City por Big Apple em uma consulta.
Substitua todos os outros nomes de cidade por outros.

select venuecity,
case venuecity
when 'New York City'
then 'Big Apple' else 'other'
end from venue
order by venueid desc;

venuecity | case
-----------------+-----------
Los Angeles | other
New York City | Big Apple
San Francisco | other
Baltimore | other
...
(202 rows)

Use uma expressão CASE pesquisada para atribuir números de grupo com base no valor PRICEPAID
para vendas individuais de ingresso:

select pricepaid,
case when pricepaid <10000 then 'group 1'
when pricepaid >10000 then 'group 2'
else 'group 3'
end from sales
order by 1 desc;

pricepaid | case
-----------+---------
12624.00 | group 2
10000.00 | group 3
10000.00 | group 3
9996.00 | group 1

Versão da API 2006-03-01


728
Amazon Simple Storage Service Guia do usuário
Referência SQL

9988.00 | group 1
...
(172456 rows)

COALESCE
Avalia os argumentos na ordem e retorna o primeiro não desconhecido, ou seja, o primeiro que não for
nulo ou ausente. Essa função não propaga nulos e ausentes.

Sintaxe

COALESCE ( expression, expression, ... )

Parâmetros

expressão

A expressão de destino na qual a função opera.

Exemplos

COALESCE(1) -- 1
COALESCE(null) -- null
COALESCE(null, null) -- null
COALESCE(missing) -- null
COALESCE(missing, missing) -- null
COALESCE(1, null) -- 1
COALESCE(null, null, 1) -- 1
COALESCE(null, 'string') -- 'string'
COALESCE(missing, 1) -- 1

NULLIF
Dadas as duas expressões, retorna NULL se as duas forem avaliadas para o mesmo valor. Caso contrário,
retorna o resultado da avaliação da primeira expressão.

Sintaxe

NULLIF ( expression1, expression2 )

Parâmetros

expression1, expression2

As expressões de destino nas quais a função opera.

Exemplos

NULLIF(1, 1) -- null
NULLIF(1, 2) -- 1
NULLIF(1.0, 1) -- null
NULLIF(1, '1') -- 1
NULLIF([1], [1]) -- null
NULLIF(1, NULL) -- 1
NULLIF(NULL, 1) -- null
NULLIF(null, null) -- null
NULLIF(missing, null) -- null

Versão da API 2006-03-01


729
Amazon Simple Storage Service Guia do usuário
Referência SQL

NULLIF(missing, missing) -- null

Funções da conversão
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com as seguintes funções de
conversão.

Tópicos
• CAST (p. 730)

CAST
A função CAST converte uma entidade, como uma expressão que retorna um único valor, de um tipo em
outro.

Sintaxe

CAST ( expression AS data_type )

Parâmetros

expressão

Uma combinação de um ou mais valores, operadores e funções SQL que retornam um valor.
data_type

O tipo de dados de destino, como INT, no qual a expressão será convertida. Para obter uma lista dos
tipos de dados compatíveis, consulte Tipos de dados (p. 720).

Exemplos

CAST('2007-04-05T14:30Z' AS TIMESTAMP)
CAST(0.456 AS FLOAT)

Funções de data
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com as seguintes funções de data.

Tópicos
• DATE_ADD (p. 730)
• DATE_DIFF (p. 731)
• EXTRACT (p. 732)
• TO_STRING (p. 732)
• TO_TIMESTAMP (p. 735)
• UTCNOW (p. 736)

DATE_ADD
Dada uma parte da data, uma quantidade e um time stamp, retorna um time stamp atualizado, alterando a
parte da data pela quantidade.

Sintaxe

DATE_ADD( date_part, quantity, timestamp )

Versão da API 2006-03-01


730
Amazon Simple Storage Service Guia do usuário
Referência SQL

Parâmetros

date_part

Especifica que parte da data deve ser modificada. Pode ser uma das partes a seguir:
• year
• mês
• dia
• hora
• minuto
• segundos
quantity (quantidade)

O valor a ser aplicado a um time stamp atualizado. Os valores positivos para a quantidade são
adicionados à date_part do time stamp e os valores negativos são subtraídos.
timestamp

O time stamp de destino no qual a função opera.

Exemplos

DATE_ADD(year, 5, `2010-01-01T`) -- 2015-01-01 (equivalent to 2015-01-01T)


DATE_ADD(month, 1, `2010T`) -- 2010-02T (result will add precision as
necessary)
DATE_ADD(month, 13, `2010T`) -- 2011-02T
DATE_ADD(day, -1, `2017-01-10T`) -- 2017-01-09 (equivalent to 2017-01-09T)
DATE_ADD(hour, 1, `2017T`) -- 2017-01-01T01:00-00:00
DATE_ADD(hour, 1, `2017-01-02T03:04Z`) -- 2017-01-02T04:04Z
DATE_ADD(minute, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:05:05.006Z
DATE_ADD(second, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:04:06.006Z

DATE_DIFF

Dada uma parte da data e dois time stamps, retorna a diferença nas partes da data. O valor de retorno
é um inteiro negativo quando o valor date_part do timestamp1 for maior que o valor date_part do
timestamp2. O valor de retorno é um inteiro positivo quando o valor date_part do timestamp1 for
menor que o valor date_part do timestamp2.

Sintaxe

DATE_DIFF( date_part, timestamp1, timestamp2 )

Parâmetros

date_part

Especifica que parte dos time stamps deve ser comparada. Para a definição de date_part, consulte
DATE_ADD (p. 730).
timestamp1

O primeiro time stamp a ser comparado.


timestamp2

O segundo time stamp a ser comparado.

Versão da API 2006-03-01


731
Amazon Simple Storage Service Guia do usuário
Referência SQL

Exemplos

DATE_DIFF(year, `2010-01-01T`, `2011-01-01T`) -- 1


DATE_DIFF(year, `2010T`, `2010-05T`) -- 4 (2010T is equivalent to
2010-01-01T00:00:00.000Z)
DATE_DIFF(month, `2010T`, `2011T`) -- 12
DATE_DIFF(month, `2011T`, `2010T`) -- -12
DATE_DIFF(day, `2010-01-01T23:00`, `2010-01-02T01:00`) -- 0 (need to be at least 24h apart
to be 1 day apart)

EXTRACT

Dada uma parte da data e um time stamp, retorna o valor da parte da data do time stamp.

Sintaxe

EXTRACT( date_part FROM timestamp )

Parâmetros

date_part

Especifica que parte dos time stamps deve ser extraída. Pode ser uma das partes a seguir:
• year
• mês
• dia
• hora
• minuto
• segundos
• timezone_hour
• timezone_minute
timestamp

O time stamp de destino no qual a função opera.

Exemplos

EXTRACT(YEAR FROM `2010-01-01T`) -- 2010


EXTRACT(MONTH FROM `2010T`) -- 1 (equivalent to
2010-01-01T00:00:00.000Z)
EXTRACT(MONTH FROM `2010-10T`) -- 10
EXTRACT(HOUR FROM `2017-01-02T03:04:05+07:08`) -- 3
EXTRACT(MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 4
EXTRACT(TIMEZONE_HOUR FROM `2017-01-02T03:04:05+07:08`) -- 7
EXTRACT(TIMEZONE_MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 8

TO_STRING

Dado um time stamp e um padrão de formato, retorna uma representação de string do time stamp no
formato especificado.

Sintaxe

TO_STRING ( timestamp time_format_pattern )

Versão da API 2006-03-01


732
Amazon Simple Storage Service Guia do usuário
Referência SQL

Parâmetros

timestamp

O time stamp de destino no qual a função opera.


time_format_pattern

Uma string que possui as seguintes interpretações especiais de caracteres.

Formato Exemplo Descrição

yy 69 Ano com dois


dígitos

y 1969 Ano com quatro


dígitos

yyyy 1969 Ano com


4 dígitos
preenchido com
zeros

M 1 Mês do ano

MM 01 Mês do ano
preenchido com
zeros

MMM Jan Nome do ano


referente ao
mês abreviado

MMMM January Nome completo


do mês do ano

MMMMM J Primeira letra


do mês do ano
(NOTA: inválido
para uso
com a função
to_timestamp)

d 2 Dia do mês (1 a
31)

dd 02 Dia do mês
preenchido com
zeros (01 a 31)

a AM H do dia

h 3 Hora do dia (1 a
12)

hh 03 Hora do dia
preenchida com
zeros (01 a 12)

H 3 Hora do dia (0 a
23)

Versão da API 2006-03-01


733
Amazon Simple Storage Service Guia do usuário
Referência SQL

Formato Exemplo Descrição

HH 03 Hora do dia
preenchida com
zeros (00 a 23)

m 4 Minuto da hora
(0 a 59)

mm 04 Minuto da hora
preenchido com
zeros (00 a 59)

s 5 Segundo do
minuto (0 a 59)

ss 05 Segundo
do minuto
preenchido com
zeros (00 a 59)

S 0 Fração de
segundos
(precisão: 0,1,
intervalo: 0,0 a
0,9)

SS 6 Fração de
segundos
(precisão: 0,01,
intervalo: 0,0 a
0,99)

SSS 60 Fração de
segundos
(precisão:
0,001, intervalo:
0,0 a 0,999)

… … …

SSSSSSSSS 60000000 Fração de


segundos
(precisão
máxima: 1
nanossegundo,
intervalo: 0,0 a
0,999999999)

n 60000000 Nano de
segundo

X +07 or Z Deslocamento
em horas
ou "Z" se o
deslocamento
for 0

Versão da API 2006-03-01


734
Amazon Simple Storage Service Guia do usuário
Referência SQL

Formato Exemplo Descrição

XX or XXXX +0700 or Z Deslocamento


em horas
e minutos
ou "Z" se o
deslocamento
for 0

XXX or XXXXX +07:00 or Z Deslocamento


em horas
e minutos
ou "Z" se o
deslocamento
for 0

x 7 Deslocamento
em horas

xx or xxxx 700 Deslocamento


em horas e
minutos

xxx or xxxxx +07:00 Deslocamento


em horas e
minutos

Exemplos

TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y') -- "July 20, 1969"


TO_STRING(`1969-07-20T20:18Z`, 'MMM d, yyyy') -- "Jul 20, 1969"
TO_STRING(`1969-07-20T20:18Z`, 'M-d-yy') -- "7-20-69"
TO_STRING(`1969-07-20T20:18Z`, 'MM-d-y') -- "07-20-1969"
TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y h:m a') -- "July 20, 1969 8:18 PM"
TO_STRING(`1969-07-20T20:18Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXX') --
"1969-07-20T20:18:00+0800"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXXX') --
"1969-07-20T20:18:00+08:00"

TO_TIMESTAMP

Dada uma string, converte-a em um time stamp. Esta é a operação inversa de TO_STRING.

Sintaxe

TO_TIMESTAMP ( string )

Parâmetros

string

A string de destino na qual a função opera.

Versão da API 2006-03-01


735
Amazon Simple Storage Service Guia do usuário
Referência SQL

Exemplos

TO_TIMESTAMP('2007T') -- `2007T`
TO_TIMESTAMP('2007-02-23T12:14:33.079-08:00') -- `2007-02-23T12:14:33.079-08:00`

UTCNOW

Retorna o tempo atual em UTC como um time stamp.

Sintaxe

UTCNOW()

Parâmetros

none

Exemplos

UTCNOW() -- 2017-10-13T16:02:11.123Z

Funções de string
O Seleção do Amazon S3 e o Seleção do S3 Glacier são compatíveis com as seguintes funções de string.

Tópicos
• CHAR_LENGTH, CHARACTER_LENGTH (p. 736)
• LOWER (p. 737)
• SUBSTRING (p. 737)
• TRIM (p. 738)
• UPPER (p. 738)

CHAR_LENGTH, CHARACTER_LENGTH

Conta o número de caracteres na string especificada.


Note

CHAR_LENGTH e CHARACTER_LENGTH são sinônimos.

Sintaxe

CHAR_LENGTH ( string )

Parâmetros

string

A string de destino na qual a função opera.

Exemplos

CHAR_LENGTH('') -- 0

Versão da API 2006-03-01


736
Amazon Simple Storage Service Guia do usuário
Referência SQL

CHAR_LENGTH('abcdefg') -- 7

LOWER

Dada uma string, converte todos os caracteres maiúsculos em minúsculos. Todos os caracteres
minúsculos permanecem inalterados.

Sintaxe

LOWER ( string )

Parâmetros

string

A string de destino na qual a função opera.

Exemplos

LOWER('AbCdEfG!@#$') -- 'abcdefg!@#$'

SUBSTRING

Dada uma string, um índice inicial e, opcionalmente, um tamanho, retorna a substring do índice inicial até o
final da string ou até o tamanho fornecido.
Note

O primeiro caractere da string de entrada tem o índice 1. Se start for < 1, será definido como 1.

Sintaxe

SUBSTRING( string FROM start [ FOR length ] )

Parâmetros

string

A string de destino na qual a função opera.


start

A posição inicial da string.


length

O tamanho da substring a ser retornada. Se não estiver presente, prossiga para o final da string.

Exemplos

SUBSTRING("123456789", 0) -- "123456789"
SUBSTRING("123456789", 1) -- "123456789"
SUBSTRING("123456789", 2) -- "23456789"
SUBSTRING("123456789", -4) -- "123456789"

Versão da API 2006-03-01


737
Amazon Simple Storage Service Guia do usuário
Referência SQL

SUBSTRING("123456789", 0, 999) -- "123456789"


SUBSTRING("123456789", 1, 5) -- "12345"

TRIM

Corta os caracteres iniciais ou finais de uma string. O caractere padrão a ser removido é ' '.

Sintaxe

TRIM ( [[LEADING | TRAILING | BOTH remove_chars] FROM] string )

Parâmetros

string

A string de destino na qual a função opera.


LEADING | TRAILING | BOTH

Se é necessário cortar os caracteres iniciais ou finais, ou ambos.


remove_chars

O conjunto de caracteres a ser removido. Observe que remove_chars pode ser uma string com
tamanho > 1. Essa função retorna a string com qualquer caractere de remove_chars encontrado no
início ou final da string que foi removida.

Exemplos

TRIM(' foobar ') -- 'foobar'


TRIM(' \tfoobar\t ') -- '\tfoobar\t'
TRIM(LEADING FROM ' foobar ') -- 'foobar '
TRIM(TRAILING FROM ' foobar ') -- ' foobar'
TRIM(BOTH FROM ' foobar ') -- 'foobar'
TRIM(BOTH '12' FROM '1112211foobar22211122') -- 'foobar'

UPPER

Dada uma string, converte todos os caracteres minúsculos em maiúsculos. Todos os caracteres
maiúsculos permanecem inalterados.

Sintaxe

UPPER ( string )

Parâmetros

string

A string de destino na qual a função opera.

Exemplos

UPPER('AbCdEfG!@#$') -- 'ABCDEFG!@#$'

Versão da API 2006-03-01


738
Amazon Simple Storage Service Guia do usuário
Realizar operações em lote

Executar operações em lote do S3


Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos
do Amazon S3. As operações em lote do S3 podem executar uma única operação em listas de objetos
do Amazon S3 especificadas. Um único trabalho pode realizar uma operação especificada em bilhões
de objetos contendo exabytes de dados. O Amazon S3 monitora o progresso, envia notificações e
armazena um relatório de conclusão detalhado de todas as ações, fornecendo uma experiência totalmente
gerenciada, auditável e sem servidor. Você pode usar o recurso Operações em lote do S3 por meio do
Console AWS, da CLI da AWS, dos SDKs da AWS ou da API REST.

Use as operações em lote do S3 para copiar objetos e definir tags de objetos ou listas de controle de
acesso (ACLs). Também é possível iniciar restaurações de objetos no Amazon S3 Glacier ou chamar uma
função do AWS Lambda para executar ações personalizadas usando os seus objetos. É possível executar
essas operações em uma lista personalizada de objetos ou usar um relatório de inventário do Amazon S3
para facilitar a geração de listas de objetos. As operações em lote do Amazon S3 usam as mesmas APIs
do Amazon S3 que você já usa com o Amazon S3, portanto, a interface é familiar.

Tópicos
• Conceitos básicos sobre operações em lote do S3 (p. 739)
• Conceder permissões para operações em lote do Amazon S3 (p. 740)
• Criar um trabalho de operações em lote do S3 (p. 746)
• Operações (p. 753)
• Gerenciar trabalhos de operações em lote do S3 (p. 767)
• Controlar o acesso e rotular trabalhos usando tags (p. 774)
• Gerenciar o Bloqueio de objetos do S3 usando o Operações em lote do S3 (p. 785)
• Copiar objetos em contas da AWS usando o Operações em lote do S3 (p. 801)
• Monitorar um trabalho do Operações em lote do S3 no Amazon EventBridge por meio do AWS
CloudTrail (p. 806)
• Relatórios de conclusão do Operações em lote do S3 (p. 809)

Conceitos básicos sobre operações em lote do S3


Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos
do Amazon S3. As operações em lote do S3 podem executar uma única operação ou ação em listas de
objetos do Amazon S3 que você especificar.

Tópicos
• Terminologia (p. 739)
• Como funciona um trabalho de operações em lote do S3 (p. 740)

Terminologia
Esta seção usa os termos trabalhos, operações e tarefas. Confira suas definições abaixo:

Trabalho

Um trabalho é a unidade básica de trabalho para operações em lote do S3. Uma tarefa contém todas
as informações necessárias para executar a operação especificada nos objetos listados no manifesto.
Depois que você tiver fornecido essas informações e solicitado o início do trabalho, ele executará a
operação em cada objeto no manifesto.

Versão da API 2006-03-01


739
Amazon Simple Storage Service Guia do usuário
Conceder permissões

Operação

A operação é o tipo de ação da API, como copiar objetos, que você deseja que o trabalho de
operações em lote execute. Cada trabalho executa um único tipo de operação em todos os objetos
especificados no manifesto.
Tarefa

Uma tarefa é a unidade de execução para um trabalho. Uma tarefa representa uma única chamada
para uma operação de API do AWS Lambda ou do Amazon S3 a fim de executar a operação do
trabalho em um único objeto. Ao longo da vida útil de um trabalho, as operações em lote do S3 criam
uma tarefa para cada objeto especificado no manifesto.

Como funciona um trabalho de operações em lote do S3


Um trabalho é a unidade básica de trabalho para operações em lote do S3. Uma tarefa contém todas as
informações necessárias para executar a operação especificada em uma lista de objetos. Para criar um
trabalho, dê uma lista de objetos às operações em lote do S3 e especifique a ação a ser realizada neles.

As operações em lote do S3 oferece suporte às seguintes operações:

• Copiar (p. 754)


• Restaurar (p. 764)
• Invocar uma função do AWS Lambda (p. 754)
• Substituir lista de controle de acesso (p. 763)
• Substituir todas as tags de objeto (p. 762)
• Excluir todas as tags de objeto (p. 762)
• Retenção do Bloqueio de objetos (p. 765)
• Retenção legal do Bloqueio de objetos (p. 766)

Um trabalho em lote realiza a operação especificada em cada objeto incluído em seu manifesto. Um
manifesto lista os objetos que você deseja que um trabalho em lote processe e ele é armazenado como
um objeto em um bucket. Você pode usar um relatório Inventário do Amazon S3 (p. 605) formatado em
CSV como um manifesto, o que facilita a criação de grandes listas de objetos localizados em um bucket.
Também é possível especificar um manifesto em um formato CSV simples que permite realizar operações
em lotem em uma lista personalizada de objetos contidos em um único bucket.

Depois de criar um trabalho, o Amazon S3 processará a lista de objetos no manifesto e executará a


operação especificada em cada objeto. Enquanto um trabalho está em execução, é possível monitorar
o andamento de maneira programática ou por meio do console do Amazon S3. Também é possível
configurar uma tarefa para gerar um relatório de conclusão quando ele termina. O relatório de conclusão
descreve os resultados de cada tarefa executada pelo trabalho. Para obter mais informações sobre como
monitorar trabalhos, consulte Gerenciar trabalhos de operações em lote do S3 (p. 767).

Conceder permissões para operações em lote do


Amazon S3
Esta seção descreve como conceder as permissões necessárias para criar e realizar trabalhos de
operações em lote do S3.

Tópicos
• Permissões necessárias para criar um trabalho de operações em lote do S3 (p. 741)
• Criar uma função do IAM das operações em lote do S3 (p. 741)
• Políticas de permissões (p. 741)

Versão da API 2006-03-01


740
Amazon Simple Storage Service Guia do usuário
Conceder permissões

Permissões necessárias para criar um trabalho de operações em


lote do S3
Para criar um trabalho de operações em lote do Amazon S3, a permissão s3:CreateJob é necessária. A
mesma entidade que cria o trabalho deve ter a permissão iam:PassRole para passar a função do AWS
Identity and Access Management (IAM) especificada para o trabalho de operações em lote do Amazon S3.
Para obter informações sobre como criar essa função do IAM, consulte o próximo tópico Criar uma função
do IAM das operações em lote do S3 (p. 741).

Criar uma função do IAM das operações em lote do S3


Tópicos
• Política de confiança (p. 741)

O Amazon S3 deve ter permissão para executar operações em lote no S3 em seu nome. Você concede
essas permissões por meio de uma função do AWS Identity and Access Management (IAM). Esta seção
fornece exemplos das políticas de permissões e confiança usadas ao criar uma função do IAM. Para
obter mais informações, consulte Funções do IAM. Para exemplos, consulte Controlar permissões para o
recurso Operações em lote do S3 usando tags de trabalho (p. 780) e Copiar objetos em contas da AWS
usando o Operações em lote do S3 (p. 801).

Em suas políticas do IAM, você também pode usar chaves de condição para filtrar permissões de acesso
para trabalhos de operações em lote do S3. Para obter mais informações e uma lista completa de chaves
de condição específicas do Amazon S3, consulte Ações, recursos e chaves de condição do Amazon
S3 (p. 288).

O vídeo a seguir mostra como configurar permissões do IAM para trabalhos de operações em lote usando
o Console de Gerenciamento da AWS.

Política de confiança
Para permitir que o principal do serviço de operações em lote do S3 assuma a função do IAM, anexe a
política de confiança a seguir à função.

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"batchoperations.s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}

Políticas de permissões
Dependendo do tipo de operação, é possível anexar uma das seguintes políticas:

Antes de configurar as permissões, observe o seguinte:

• Independentemente da operação, o Amazon S3 precisa de permissão para ler o objeto do manifesto


no seu bucket do S3 e, opcionalmente, gerar um relatório para o bucket. Portanto, todas as políticas a
seguir incluem essas permissões.

Versão da API 2006-03-01


741
Amazon Simple Storage Service Guia do usuário
Conceder permissões

• Para manifestos de relatório de inventário do Amazon S3, as operações em lote do S3 requerem


permissão para ler o objeto manifest.json e todos os arquivos de dados CSV associados.
• Permissões específicas da versão, como s3:GetObjectVersion, somente são necessárias ao
especificar o ID de versão dos objetos.
• Se você estiver executando as operações em lote do S3 em objetos criptografados, a função do IAM
também deverá ter acesso às chaves do AWS KMS usadas para criptografá-las.

Tópicos
• Copiar objetos: PutObject (p. 742)
• Substituir marcação de objetos: PutObjectTagging (p. 743)
• Excluir marcação de objetos: DeleteObjectTagging (p. 743)
• Substituir lista de controle de acesso: PutObjectAcl (p. 744)
• Restaurar objetos: RestoreObject (p. 744)
• Aplicar retenção do bloqueio de objetos: PutObjectRetention (p. 745)
• Aplicar retenção legal do bloqueio de objetos: PutObjectLegalHold (p. 746)

Copiar objetos: PutObject

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectTagging"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
},
{
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::{{SourceBucket}}",
"arn:aws:s3:::{{SourceBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],

Versão da API 2006-03-01


742
Amazon Simple Storage Service Guia do usuário
Conceder permissões

"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Substituir marcação de objetos: PutObjectTagging

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging"
],
"Resource": "arn:aws:s3:::{{TargetResource}}/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Excluir marcação de objetos: DeleteObjectTagging

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::{{TargetResource}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],

Versão da API 2006-03-01


743
Amazon Simple Storage Service Guia do usuário
Conceder permissões

"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Substituir lista de controle de acesso: PutObjectAcl

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl"
],
"Resource": "arn:aws:s3:::{{TargetResource}}/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Restaurar objetos: RestoreObject

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:RestoreObject"
],
"Resource": "arn:aws:s3:::{{TargetResource}}/*"
},

Versão da API 2006-03-01


744
Amazon Simple Storage Service Guia do usuário
Conceder permissões

{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Aplicar retenção do bloqueio de objetos: PutObjectRetention

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [
"arn:aws:s3:::{{TargetResource}}"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObjectRetention",
"s3:BypassGovernanceRetention"
],
"Resource": [
"arn:aws:s3:::{{TargetResource}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]

Versão da API 2006-03-01


745
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

Aplicar retenção legal do bloqueio de objetos: PutObjectLegalHold

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [
"arn:aws:s3:::{{TargetResource}}"
]
},
{
"Effect": "Allow",
"Action": "s3:PutObjectLegalHold",
"Resource": [
"arn:aws:s3:::{{TargetResource}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}

Criar um trabalho de operações em lote do S3


Com as operações em lote do S3, você pode executar operações em lote em grande escala em uma lista
de objetos específicos do Amazon S3. Você pode criar trabalhos de operações em lote do S3 usando o
Console de Gerenciamento da AWS, a Interface da linha de comando da AWS (CLI da AWS), os AWS
SDKs ou a API REST.

Para obter mais informações sobre o recurso Operações em lote, consulte Conceitos básicos sobre
operações em lote do S3 (p. 739).

Esta seção descreve as informações necessárias para criar um trabalho do Operações em lote do S3 e
os resultados de uma solicitação Create Job. Ela também fornece instruções para criar um trabalho do
recurso Operações em lote.

Ao criar uma trabalho de operações em lote do S3, você pode solicitar um relatório de conclusão para
todas as tarefas ou somente para aquelas que apresentaram falha. Contanto que pelo menos uma tarefa
tenha sido invocada com êxito, as operações em lote do S3 geram um relatório para tarefas que foram

Versão da API 2006-03-01


746
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

concluídas, que falharam ou que foram canceladas. Para obter mais informações, consulte Relatórios de
conclusão do Operações em lote do S3 (p. 809).

Pré-requisito: antes de criar um trabalho do Operações em lote, confirme se você configurou as


permissões relevantes. Para obter mais informações, consulte Conceder permissões para operações em
lote do Amazon S3 (p. 740).

Tópicos
• Elementos da solicitação de trabalho de Operações em lote (p. 747)
• Especificar um manifesto (p. 748)
• Como criar um trabalho de Operações em lote (p. 749)
• Respostas do trabalho (p. 753)
• Recursos relacionados (p. 753)

Elementos da solicitação de trabalho de Operações em lote


Para criar um trabalho de operações em lote do S3, você deve fornecer as seguintes informações:

Operação

Especifique a operação que deseja que as operações em lote do S3 execute nos objetos no
manifesto. Cada tipo de operação aceita parâmetros específicos para essa operação. Isso permite que
você realize as mesmas tarefas que se executasse a operação individualmente em cada objeto.
Manifesto

O manifesto é uma lista de todos os objetos em que você deseja que as operações em lote do S3
execute a ação especificada. Use um relatório em formato CSV Inventário do Amazon S3 (p. 605)
como manifesto ou a própria lista CSV personalizada de objetos.

Se os objetos no manifesto estiverem em um bucket com versão, você deverá especificar os IDs de
versão dos objetos. Para obter mais informações, consulte Especificar um manifesto (p. 748).
Priority

Use prioridades de trabalho para indicar a prioridade relativa desse trabalho em relação a outros em
execução na conta. Um número maior indica uma prioridade mais alta.

As prioridades de trabalho só têm significado em relação às prioridades definidas para outros


trabalhos na mesma conta e região. Você pode escolher qualquer sistema de numeração adequado
para você. Por exemplo, talvez você queira atribuir prioridade 1 a todos os trabalhos Initiate
Restore Object, prioridade 2 a todos os trabalhos PUT Object Copy e prioridade 3 a todos os
trabalhos Put Object ACL.

As operações em lote do S3 priorizam trabalhos em ordem numérica, mas não é garantida rigidez
a essa ordem. Por isso, você não deve usar prioridades de trabalho para garantir que um trabalho
comece ou termine antes de outro. Caso precise garantir uma ordem rígida, aguarde a conclusão de
uma tarefa para iniciar a próxima.
RoleArn

Especifique uma função do AWS Identity and Access Management (IAM) para executar o trabalho.
A função do IAM usada deve ter permissões suficientes para realizar a operação especificada no
trabalho. Por exemplo, para executar um trabalho PUT Object Copy, a função do IAM deve ter
permissões s3:GetObject para o bucket de origem e permissões s3:PutObject para o bucket
de destino. A função também precisa de permissões para ler o manifesto e gravar o relatório de
conclusão do trabalho.

Versão da API 2006-03-01


747
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

Para obter mais informações sobre funções do IAM, consulte Funções do IAM no Guia do Usuário do
IAM.

Para obter mais informações sobre as permissões do Amazon S3, consulte Ações do Amazon
S3 (p. 273).
Relatório

Especifique se deseja que as operações em lote do S3 gerem um relatório de conclusão. Caso solicite
um relatório de conclusão do trabalho, você deve fornecer os parâmetros para o relatório neste
elemento. As informações necessárias incluem o bucket onde você deseja armazenar o relatório, o
formato do relatório, se deseja que o relatório inclua os detalhes de todas as tarefas ou apenas tarefas
com falha e uma string de prefixo opcional.
Tags (opcional)

Você pode rotular e controlar o acesso aos trabalhos de operações em lote do S3 adicionando tags.
As tags podem ser usadas para identificar quem é responsável por um trabalho de operações em
lote. Você pode criar trabalhos com tags anexadas a eles e pode adicionar tags a trabalhos depois de
criá-los. Por exemplo, você pode conceder a um usuário do IAM permissão para invocar CreateJob,
desde que o trabalho seja criado com a tag "Department=Finance".

Para obter mais informações, consulte the section called “Usar tags” (p. 774).
Descrição (opcional)

Para rastrear e monitorar seu trabalho, você também pode fornecer uma descrição de até 256
caracteres. O Amazon S3 inclui essa descrição sempre que retorna informações sobre um trabalho
ou exibe detalhes do trabalho no console do Amazon S3. É possível classificar e filtrar os trabalhos
com facilidade de acordo com as descrições atribuídas. As descrições não precisam ser exclusivas,
de maneira que você possa usar descrições como categorias (por exemplo, "Tarefas de cópia de log
semanais") para ajudar a rastrear grupos de tarefas semelhantes.

Especificar um manifesto
Um manifesto é um objeto do Amazon S3 que lista as chaves de objeto nas quais você deseja que o
Amazon S3 atue. Para criar um manifesto de uma tarefa, especifique a chave de objeto, a ETag e o ID da
versão opcional do manifesto. O conteúdo do manifesto deve estar codificado em URL. Os manifestos que
usam a criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C) e a criptografia no lado
do servidor com chaves mestras (CMKs) de cliente do AWS Key Management Service (SSE-KMS) não são
compatíveis. O manifesto deve conter o nome do bucket, a chave de objeto e, opcionalmente, a versão de
cada objeto. Qualquer outro campo no manifesto não é usado pelas operações em lote do S3.

É possível especificar um manifesto na solicitação de criação de um trabalho usando um dos seguintes


formatos:

• Relatório de inventário do Amazon S3 — Deve ser um relatório de inventário do Amazon S3 formatado


em CSV. É necessário especificar o arquivo manifest.json associado ao relatório de inventário. Para
obter mais informações sobre relatórios de inventário, consulte Inventário do Amazon S3 (p. 605). Se
o relatório de inventário incluir IDs de versões, o recurso Operações em lote do S3 operará nas versões
especificadas do objeto.
Note

As operações em lote do S3 oferecem suporte a relatórios de inventário CSV criptografados


pelo AWS KMS.
• Arquivo CSV — Cada linha no arquivo deve incluir o nome do bucket, a chave do objeto e,
opcionalmente, a versão do objeto. As chaves de objeto devem ser codificadas em URL conforme
mostrado nos exemplos a seguir. O manifesto deve incluir ou omitir IDs de versão para todos os

Versão da API 2006-03-01


748
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

objetos. Para obter mais informações sobre o formato de manifesto CSV, consulte JobManifestSpec na
Referência da API do Amazon Simple Storage Service.
Note

As operações em lote do S3 não oferecem suporte a arquivos de manifesto CSV criptografados


pelo AWS KMS.

Veja a seguir um exemplo de manifesto no formato CSV sem os IDs de versão.

Examplebucket,objectkey1
Examplebucket,objectkey2
Examplebucket,objectkey3
Examplebucket,photos/jpgs/objectkey4
Examplebucket,photos/jpgs/newjersey/objectkey5
Examplebucket,object%20key%20with%20spaces

Veja a seguir um exemplo de manifesto no formato CSV incluindo os IDs de versão.

Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p
Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF
Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI
Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4
Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs
Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

Important

Se os objetos no manifesto estiverem em um bucket com versão, você deverá especificar os IDs
de versão dos objetos. Quando você cria um trabalho, o recurso Operações em lote do S3 analisa
todo o manifesto antes de executar o trabalho. No entanto, ele não tira snapshots do estado do
bucket.
Como os manifestos podem conter bilhões de objetos, as tarefas podem demorar muito para
serem executadas. Se você substituir um objeto por uma nova versão enquanto um trabalho
estiver em execução e não especificar o ID da versão desse objeto, o Amazon S3 realizará a
operação na versão mais recente do objeto, não na versão que existia quando você criou o
trabalho. A única maneira de evitar esse comportamento é especificar o ID de versão do objeto
listado no manifesto.

Como criar um trabalho de Operações em lote


Esta seção descreve como criar um trabalho de operações em lote do S3. Para obter mais informações
sobre os detalhes da criação de uma solicitação de trabalho, consulte Elementos da solicitação de
trabalho de Operações em lote (p. 747). Para obter informações sobre como configurar as permissões
necessárias para criar um trabalho, consulte Conceder permissões para operações em lote do Amazon
S3 (p. 740).

Usar o console do S3

Esta seção descreve como criar um trabalho de Operações em lote do S3 usando o console do Amazon
S3.

Para criar um trabalho em lote

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Selecione Batch Operations (Operações em lote) no painel de navegação do console do Amazon S3.

Versão da API 2006-03-01


749
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

3. Selecione Create job (Criar trabalho).


4. Selecione a Region (região) onde você deseja criar o trabalho.
5. Em Formato do manifesto, escolha o tipo de objeto do manifesto a ser usado.

• Se você selecionar S3 inventory report (Relatório de inventário do S3), insira o caminho para o
objeto manifest.json gerado pelo Amazon S3 como parte do relatório de inventário em formato CSV
e, opcionalmente, o ID de versão do objeto do manifesto a ser usado, se não for a mais recente.
• Se você selecionar CSV, insira o caminho para o objeto do manifesto formatado em CSV. O objeto
do manifesto deve seguir o formato descrito no console. Opcionalmente, inclua o ID de versão do
objeto do manifesto que deseja usar, se não for a mais recente.
6. Escolha Next (Próximo).
7. Em Operation (Operação), selecione a operação a ser executada em todos os objetos no manifesto.
Preencha as informações da operação escolhida e, depois, selecione Next (Próximo).
8. Preencha as informações para Configure additional options (Configurar opções adicionais) e, depois,
selecione Next (Próximo).
9. Em Review (Revisão), verifique as configurações. Se precisar fazer alterações, escolha Previous
(Anterior). Caso contrário, selecione Create job (Criar trabalho).

Usar a CLI da AWS

O exemplo a seguir cria um trabalho S3PutObjectTagging de operações em lote do S3 usando a CLI da


AWS.

Como criar uma tarefa S3PutObjectTagging de operações em lote

1. Crie uma função do AWS Identity and Access Management (IAM) e atribua permissões. A função
concede permissão ao Amazon S3 para adicionar tags de objeto, para as quais você vai criar uma
tarefa na próxima etapa.

a. Crie uma função do IAM da seguinte forma.

aws iam create-role \


--role-name S3BatchJobRole \
--assume-role-policy-document '{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"batchoperations.s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}'

Registre o nome de recurso da Amazon (ARN) da função. Você precisará dele ao criar trabalhos.
b. Crie uma política do IAM com permissões e anexe-a à função do IAM que você criou na etapa
anterior. Para obter mais informações sobre permissões, consulte Conceder permissões para
operações em lote do Amazon S3 (p. 740).

aws iam put-role-policy \


--role-name S3BatchJobRole \
--policy-name PutObjectTaggingBatchJobPolicy \
--policy-document '{
"Version":"2012-10-17",

Versão da API 2006-03-01


750
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging"
],
"Resource": "arn:aws:s3:::{{TargetResource}}/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}",
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetBucketLocation"
],
"Resource":[
"arn:aws:s3:::{{ReportBucket}}",
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}'

2. Crie um trabalho do S3PutObjectTagging.

O arquivo manifest.csv fornece uma lista de buckets e valores de chave de objeto. O trabalho
aplica as tags específicas aos objetos identificados no manifesto. O ETag é o ETag do objeto
manifest.csv, que você pode obter no console do Amazon S3. A solicitação especifica o parâmetro
do no-confirmation-required. Portanto, o Amazon S3 qualifica o trabalho para ser executado
sem a necessidade de confirmá-lo usando o comando udpate-job-status.

aws s3control create-job \


--region us-west-2 \
--account-id acct-id \
--operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne",
"Value":"ValueOne"}] }}' \
--manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":
["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/
manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \
--report '{"Bucket":"arn:aws:s3:::bucket-where-
completion-report-goes","Prefix":"final-reports",
"Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \
--priority 42 \
--role-arn IAM-role \
--client-request-token $(uuidgen) \
--description "job Description" \
--no-confirmation-required

Em resposta, o Amazon S3 retorna um ID de trabalho (por exemplo, 00e123a4-c0d8-41f4-a0eb-


b46f9ba5b07c). Você vai precisar do ID nos próximos comandos.

Versão da API 2006-03-01


751
Amazon Simple Storage Service Guia do usuário
Criar um trabalho

Usar o AWS SDK para Java


O exemplo a seguir cria um trabalho de operações em lote do S3 usando o AWS SDK para Java.

Example

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.*;

import java.util.UUID;
import java.util.ArrayList;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class CreateJob {


public static void main(String[] args) {
String accountId = "Account ID";
String iamRoleArn = "IAM Role ARN";
String reportBucketName = "arn:aws:s3:::bucket-where-completion-report-goes";
String uuid = UUID.randomUUID().toString();

ArrayList tagSet = new ArrayList<S3Tag>();


tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne"));

try {
JobOperation jobOperation = new JobOperation()
.withS3PutObjectTagging(new S3SetObjectTaggingOperation()
.withTagSet(tagSet)
);

JobManifest manifest = new JobManifest()


.withSpec(new JobManifestSpec()
.withFormat("S3BatchOperations_CSV_20180820")
.withFields(new String[]{
"Bucket", "Key"
}))
.withLocation(new JobManifestLocation()
.withObjectArn("arn:aws:s3:::my_manifests/manifest.csv")
.withETag("60e460c9d1046e73f7dde5043ac3ae85"));
JobReport jobReport = new JobReport()
.withBucket(reportBucketName)
.withPrefix("reports")
.withFormat("Report_CSV_20180820")
.withEnabled(true)
.withReportScope("AllTasks");

AWSS3Control s3ControlClient = AWSS3ControlClient.builder()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.createJob(new CreateJobRequest()
.withAccountId(accountId)
.withOperation(jobOperation)
.withManifest(manifest)

Versão da API 2006-03-01


752
Amazon Simple Storage Service Guia do usuário
Operações

.withReport(jobReport)
.withPriority(42)
.withRoleArn(iamRoleArn)
.withClientRequestToken(uuid)
.withDescription("job description")
.withConfirmationRequired(false)
);

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Respostas do trabalho
Se a solicitação Create Job for bem-sucedida, o Amazon S3 retornará um ID de trabalho. O ID de
trabalho é um identificador exclusivo gerado pelo Amazon S3 automaticamente para que você possa
identificar as operações em lote e monitorar o status do trabalho.

Quando você cria um trabalho pela AWS CLI, AWS SDKs ou API REST, é possível configurar para que as
operações em lote do S3 comecem a processar o trabalho automaticamente. Ele é executado assim que
fica pronto e não aguarda o processamento de trabalhos de prioridade mais alta.

Ao criar um trabalho por meio do Console de Gerenciamento da AWS, você deve revisar os detalhes do
trabalho e confirmar se deseja executá-lo antes que as operações em lote possam começar a processá-
lo. Depois que você confirma que deseja executar a tarefa, ela avança como se tivesse sido criada por
meio de um dos outros métodos. Se uma tarefa permanecer no estado suspenso por mais de 30 dias, ela
apresentará falha.

Recursos relacionados
• Conceitos básicos sobre operações em lote do S3 (p. 739)
• Operações (p. 753)
• Gerenciar trabalhos de operações em lote do S3 (p. 767)

Operações
As operações em lote do S3 são compatíveis com várias operações diferentes. Os tópicos desta seção
descrevem cada uma dessas operações.

Tópicos
• Copiar (p. 754)
• Invocar uma função do AWS Lambda (p. 754)
• Substituir todas as tags de objeto (p. 762)
• Excluir todas as tags de objeto (p. 762)
• Substituir lista de controle de acesso (p. 763)
• Restaurar (p. 764)

Versão da API 2006-03-01


753
Amazon Simple Storage Service Guia do usuário
Operações

• Retenção do Bloqueio de objetos do S3 (p. 765)


• Retenção legal do Bloqueio de objetos do S3 (p. 766)

Copiar
A operação Copiar copia cada objeto especificado no manifesto. É possível copiar objetos em um bucket
na mesma região da AWS ou em um bucket em outra região. O recurso Operações em lote do S3 é
compatível com a maioria das opções disponíveis no Amazon S3 para copiar objetos. Essas opções
incluem a definição de metadados de objetos e permissões e a alteração da classe de armazenamento
de um objeto. Para obter mais informações sobre a funcionalidade disponível no Amazon S3 para copiar
objetos, consulte Cópia de objetos (p. 114).

Restrições e limitações
• Todos os objetos de origem devem estar em um só bucket.
• Todos os objetos de destino devem estar em um só bucket.
• Você deve ler todas as permissões para o bucket de origem e gravar permissões para o bucket de
destino.
• Os objetos a serem copiados devem ter até 5 GB.
• Os trabalhos de cópia devem ser criados na região de destino, que é a região para a qual você pretende
copiar os objetos.
• Todas as opções de cópia são suportadas, exceto para verificações condicionais em ETags e
criptografia do lado do servidor com chaves de criptografia fornecidas pelo cliente (SSE-C).
• Se os buckets não tiverem versões, você deverá substituir os objetos pelos mesmos nomes de chave.
• Os objetos não são necessariamente copiados na mesma ordem em que são listados no manifesto.
Para buckets versionados, se preservar a ordem de versão atual/não atual for importante, você deve
copiar todas as versões não atuais primeiro. Em seguida, após a conclusão do primeiro trabalho, copie
as versões atuais em um trabalho subsequente.
• A cópia de objetos na classe Reduced Redundancy Storage (RRS) não é compatível.

Invocar uma função do AWS Lambda


As operações em lote do S3 podem invocar funções do AWS Lambda para executar ações personalizadas
em objetos listados em um manifesto. Esta seção descreve como criar uma função do Lambda para
uso com as operações em lote do S3 e como criar um trabalho para chamar a função. O trabalho de
Operações em lote do S3 usa a operação LambdaInvoke para executar uma função do Lambda em cada
objeto listado em um manifesto.

É possível trabalhar com as operações em lote do S3 para Lambda usando o Console de Gerenciamento
da AWS, a interface da linha de comando da AWS (CLI da AWS), os AWS SDKs ou as APIs REST. Para
obter mais informações sobre como usar o Lambda, consulte Conceitos básicos do AWS Lambda no Guia
do desenvolvedor do AWS Lambda.

As seções a seguir explicam como começar a usar as operações em lote do S3 com o Lambda.

Tópicos
• Usar o Lambda com operações em lote do Amazon S3 (p. 755)
• Criar uma função do Lambda para uso com operações em lote do S3 (p. 755)
• Criar um trabalho de operações em lote do S3 que chama uma função do Lambda (p. 759)
• Fornecer informações em nível de tarefa em manifestos do Lambda (p. 759)

Versão da API 2006-03-01


754
Amazon Simple Storage Service Guia do usuário
Operações

Usar o Lambda com operações em lote do Amazon S3


Ao usar as operações em lote do S3 com o AWS Lambda, crie novas funções do Lambda especificamente
para uso com as operações em lote do S3. Não é possível reutilizar funções baseadas em eventos
do Amazon S3 existentes com operações em lote do S3. As funções de eventos só podem receber
mensagens; elas não retornam mensagens. As funções do Lambda usadas com operações em lote do
S3 devem aceitar e retornar mensagens. Para obter mais informações sobre como usar o Lambda com
eventos do Amazon S3, consulte Usar o AWS Lambda com o Amazon S3 no Guia do desenvolvedor do
AWS Lambda.

Crie um trabalho de operações em lote do S3 que chame a função do Lambda. O trabalho executa a
mesma função do Lambda em todos os objetos listados no manifesto. É possível controlar quais versões
da função do Lambda usar durante o processamento dos objetos no manifesto. As operações em lote
do S3 são compatíveis com nomes de recursos da Amazon (ARNs) não qualificados, aliases e versões
específicas. Para obter mais informações, consulte Apresentação do versionamento do AWS Lambda no
Guia do desenvolvedor do AWS Lambda.

Se você fornecer ao trabalho de operações em lote do S3 um ARN de função que usa um alias ou o
qualificador $LATEST, e atualizar a versão indicada por um deles, as operações em lote do S3 começarão
a chamar a nova versão dessa função do Lambda. Isso pode ser útil quando você quer atualizar a
funcionalidade durante um trabalho grande. Para que as operações em lote do S3 não alterem a versão
usada, forneça a versão específica no parâmetro FunctionARN ao criar o trabalho.

Códigos de resultado e resposta

Há dois níveis de código que as operações em lote do S3 esperam das funções do Lambda. O primeiro é
o código de resposta para toda a solicitação, e o segundo é um código de resultado por tarefa. A tabela a
seguir contém os códigos de resposta.

Código de resposta Descrição

Succeeded A tarefa foi concluída normalmente. Se você


solicitou um relatório de conclusão do trabalho,
a string do resultado da tarefa será incluída no
relatório.

TemporaryFailure A tarefa sofreu uma falha temporária e será


redirecionada antes da conclusão do trabalho.
A string de resultado é ignorada. Se esse for o
redirecionamento final, a mensagem de erro será
incluída no relatório final.

PermanentFailure A tarefa sofreu uma falha permanente. Se você


solicitou um relatório de conclusão do trabalho,
a tarefa será marcada como Failed e incluirá
a string da mensagem de erro. As strings de
resultado de tarefas com falha são ignoradas.

Criar uma função do Lambda para uso com operações em lote do S3


Esta seção fornece permissões de exemplo do AWS Identity and Access Management (IAM) que devem
ser usadas com a função do Lambda. Ela também contém um exemplo de função do Lambda para uso
com operações em lote do S3. Se você nunca criou uma função do Lambda antes, consulte Tutorial: Usar
o AWS Lambda com o Amazon S3 no Guia do desenvolvedor do AWS Lambda.

Crie funções do Lambda especificamente para uso com as operações em lote do S3. Não é possível
reutilizar as funções existentes do Lambda baseadas em eventos do Amazon S3. Isso ocorre porque as

Versão da API 2006-03-01


755
Amazon Simple Storage Service Guia do usuário
Operações

funções do Lambda usadas para operações em lote do S3 devem aceitar e retornar campos de dados
especiais.
Important

As funções do AWS Lambda escritas em Java aceitam as interfaces de manipulador


RequestHandler ou RequestStreamHandler. No entanto, para que seja compatível com formato
de solicitação e resposta de operações em lote do S3, o AWS Lambda requer a interface
RequestStreamHandler para serialização e desserialização personalizadas de uma solicitação
e resposta. Essa interface permite que o Lambda passe um InputStream e um OutputStream para
o método Java handleRequest.
Use a interface RequestStreamHandler ao usar funções do Lambda com operações em lote
do S3. Se você usar uma interface RequestHandler, o trabalho em lote falhará com “Invalid
JSON returned in Lambda payload (JSON inválido retornado no payload do Lambda)” no relatório
de conclusão.
Para obter mais informações, consulte Interfaces de manipulador no Guia do usuário do AWS
Lambda.

Exemplo de permissões do IAM

Veja a seguir exemplos das permissões do IAM necessárias para usar uma função do Lambda com
operações em lote do S3.

Example Política de confiança de operações em lote do S3

Veja a seguir um exemplo da política de confiança que pode ser usada para a função do IAM de operações
em lote. Essa função do IAM é especificada quando você cria o trabalho e concede às operações em lote
permissão para assumir a função do IAM.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "batchoperations.s3.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}

Example Política do IAM do Lambda

Veja a seguir um exemplo de uma política do IAM que concede permissão às operações em lote do S3
para chamar a função do Lambda e ler o manifesto de entrada.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BatchOperationsLambdaPolicy",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"lambda:InvokeFunction"
],
"Resource": "*"

Versão da API 2006-03-01


756
Amazon Simple Storage Service Guia do usuário
Operações

}
]
}

Exemplo de solicitação e resposta

Esta seção fornece exemplos de solicitação e resposta para a função do Lambda.

Example Solicitação

Veja a seguir um exemplo do JSON de uma solicitação para a função do Lambda.

{
"invocationSchemaVersion": "1.0",
"invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
"job": {
"id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce"
},
"tasks": [
{
"taskId": "dGFza2lkZ29lc2hlcmUK",
"s3Key": "customerImage1.jpg",
"s3VersionId": "1",
"s3BucketArn": "arn:aws:s3:us-east-1:0123456788:awsexamplebucket1"
}
]
}

Example Resposta

Veja a seguir um exemplo do JSON de uma resposta para a função do Lambda.

{
"invocationSchemaVersion": "1.0",
"treatMissingKeysAs" : "PermanentFailure",
"invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
"results": [
{
"taskId": "dGFza2lkZ29lc2hlcmUK",
"resultCode": "Succeeded",
"resultString": "[\"Mary Major", \"John Stiles\"]"
}
]
}

Exemplo de função do Lambda para operações em lote do S3

O exemplo Lambda em Python a seguir remove um marcador de exclusão de um objeto versionado.

Como mostra o exemplo, as chaves das operações em lote do S3 são codificadas por URL. Para usar o
Amazon S3 com outros serviços da AWS, é importante decodificar a chave passada pelas operações em
lote do S3.

import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel('INFO')

Versão da API 2006-03-01


757
Amazon Simple Storage Service Guia do usuário
Operações

s3 = boto3.client('s3')

def lambda_handler(event, context):


"""
Removes a delete marker from the specified versioned object.

:param event: The S3 batch event that contains the ID of the delete marker
to remove.
:param context: Context about the event.
:return: A result structure that Amazon S3 uses to interpret the result of the
operation. When the result code is TemporaryFailure, S3 retries the
operation.
"""
# Parse job parameters from Amazon S3 batch operations
invocation_id = event['invocationId']
invocation_schema_version = event['invocationSchemaVersion']

results = []
result_code = None
result_string = None

task = event['tasks'][0]
task_id = task['taskId']

try:
obj_key = parse.unquote(task['s3Key'], encoding='utf-8')
obj_version_id = task['s3VersionId']
bucket_name = task['s3BucketArn'].split(':')[-1]

logger.info("Got task: remove delete marker %s from object %s.",


obj_version_id, obj_key)

try:
# If this call does not raise an error, the object version is not a delete
# marker and should not be deleted.
response = s3.head_object(
Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id)
result_code = 'PermanentFailure'
result_string = f"Object {obj_key}, ID {obj_version_id} is not " \
f"a delete marker."

logger.debug(response)
logger.warning(result_string)
except ClientError as error:
delete_marker = error.response['ResponseMetadata']['HTTPHeaders'] \
.get('x-amz-delete-marker', 'false')
if delete_marker == 'true':
logger.info("Object %s, version %s is a delete marker.",
obj_key, obj_version_id)
try:
s3.delete_object(
Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id)
result_code = 'Succeeded'
result_string = f"Successfully removed delete marker " \
f"{obj_version_id} from object {obj_key}."
logger.info(result_string)
except ClientError as error:
# Mark request timeout as a temporary failure so it will be retried.
if error.response['Error']['Code'] == 'RequestTimeout':
result_code = 'TemporaryFailure'
result_string = f"Attempt to remove delete marker from " \
f"object {obj_key} timed out."
logger.info(result_string)
else:

Versão da API 2006-03-01


758
Amazon Simple Storage Service Guia do usuário
Operações

raise
else:
raise ValueError(f"The x-amz-delete-marker header is either not "
f"present or is not 'true'.")
except Exception as error:
# Mark all other exceptions as permanent failures.
result_code = 'PermanentFailure'
result_string = str(error)
logger.exception(error)
finally:
results.append({
'taskId': task_id,
'resultCode': result_code,
'resultString': result_string
})
return {
'invocationSchemaVersion': invocation_schema_version,
'treatMissingKeysAs': 'PermanentFailure',
'invocationId': invocation_id,
'results': results
}

Criar um trabalho de operações em lote do S3 que chama uma função do Lambda


Ao criar um trabalho de operações em lote do S3 para chamar uma função do Lambda, forneça o seguinte:

• O ARN da função do Lambda (que pode incluir o alias da função ou o número de uma versão específica)
• Uma função do IAM com permissão para invocar a função
• O parâmetro de ação LambdaInvokeFunction

Para obter mais informações sobre como criar um trabalho de operações em lote do S3, consulte Criar um
trabalho de operações em lote do S3 (p. 746) e Operações (p. 753).

O exemplo a seguir cria um trabalho de operações em lote do S3 que invoca uma função do Lambda
usando a CLI da AWS.

aws s3control create-job


--account-id <AccountID>
--operation '{"LambdaInvoke": { "FunctionArn":
"arn:aws:lambda:Region:AccountID:function:LambdaFunctionName" } }'
--manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":
["Bucket","Key"]},"Location":
{"ObjectArn":"arn:aws:s3:::ManifestLocation","ETag":"ManifestETag"}}'
--report
'{"Bucket":"arn:aws:s3:::awsexamplebucket1","Format":"Report_CSV_20180820","Enabled":true,"Prefix":"Re
--priority 2
--role-arn arn:aws:iam::AccountID:role/BatchOperationsRole
--region Region
--description “Lambda Function"

Fornecer informações em nível de tarefa em manifestos do Lambda


Ao usar funções do AWS Lambda com operações em lote do S3, talvez você queira que dados adicionais
acompanhem cada tarefa/chave em que são operados. Por exemplo, você pode querer fornecer uma
chave de objeto de origem e uma nova chave de objeto. A função do Lambda pode copiar a chave de
origem em um novo bucket do S3 com um novo nome. Por padrão, as operações em lote do Amazon S3
permitem especificar apenas o bucket de destino e uma lista de chaves de origem no manifesto de entrada

Versão da API 2006-03-01


759
Amazon Simple Storage Service Guia do usuário
Operações

do trabalho. O processo a seguir descreve como você pode incluir dados adicionais em seu manifesto para
poder executar funções do Lambda mais complexas.

Para especificar parâmetros por chave no manifesto de operações em lote do S3 para usar no código da
função do Lambda, use o seguinte formato JSON codificado por URL. O campo key é passado para a
função do Lambda como se fosse uma chave de objeto do Amazon S3. Porém, ele pode ser interpretado
pela função do Lambda como contendo outros valores ou várias chaves, como mostrado a seguir.
Note

O número máximo de caracteres para o campo key no manifesto é 1.024.

Example manifesto que substitui as "chaves do Amazon S3" por strings JSON

A versão codificada por URL deve ser fornecida para operações em lote do S3.

my-bucket,{"origKey": "object1key", "newKey": "newObject1Key"}


my-bucket,{"origKey": "object2key", "newKey": "newObject2Key"}
my-bucket,{"origKey": "object3key", "newKey": "newObject3Key"}

Example Manifesto codificado por URL

Essa versão codificada por URL deve ser fornecida para operações em lote do S3. A versão não
codificada em URL não funciona.

my-bucket,%7B%22origKey%22%3A%20%22object1key%22%2C%20%22newKey%22%3A%20%22newObject1Key
%22%7D
my-bucket,%7B%22origKey%22%3A%20%22object2key%22%2C%20%22newKey%22%3A%20%22newObject2Key
%22%7D
my-bucket,%7B%22origKey%22%3A%20%22object3key%22%2C%20%22newKey%22%3A%20%22newObject3Key
%22%7D

Example função do Lambda com formato de manifesto que grava resultados no relatório de
trabalho

Esta função do Lambda mostra como analisar uma tarefa delimitada por pipe que é codificada no
manifesto das operações em lote do S3 A tarefa indica qual operação de revisão é aplicada ao objeto
especificado.

import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel('INFO')

s3 = boto3.resource('s3')

def lambda_handler(event, context):


"""
Applies the specified revision to the specified object.

:param event: The Amazon S3 batch event that contains the ID of the object to
revise and the revision type to apply.
:param context: Context about the event.

Versão da API 2006-03-01


760
Amazon Simple Storage Service Guia do usuário
Operações

:return: A result structure that Amazon S3 uses to interpret the result of the
operation.
"""
# Parse job parameters from Amazon S3 batch operations
invocation_id = event['invocationId']
invocation_schema_version = event['invocationSchemaVersion']

results = []
result_code = None
result_string = None

task = event['tasks'][0]
task_id = task['taskId']
# The revision type is packed with the object key as a pipe-delimited string.
obj_key, revision = \
parse.unquote(task['s3Key'], encoding='utf-8').split('|')
bucket_name = task['s3BucketArn'].split(':')[-1]

logger.info("Got task: apply revision %s to %s.", revision, obj_key)

try:
stanza_obj = s3.Bucket(bucket_name).Object(obj_key)
stanza = stanza_obj.get()['Body'].read().decode('utf-8')
if revision == 'lower':
stanza = stanza.lower()
elif revision == 'upper':
stanza = stanza.upper()
elif revision == 'reverse':
stanza = stanza[::-1]
elif revision == 'delete':
pass
else:
raise TypeError(f"Can't handle revision type '{revision}'.")

if revision == 'delete':
stanza_obj.delete()
result_string = f"Deleted stanza {stanza_obj.key}."
else:
stanza_obj.put(Body=bytes(stanza, 'utf-8'))
result_string = f"Applied revision type '{revision}' to " \
f"stanza {stanza_obj.key}."

logger.info(result_string)
result_code = 'Succeeded'
except ClientError as error:
if error.response['Error']['Code'] == 'NoSuchKey':
result_code = 'Succeeded'
result_string = f"Stanza {obj_key} not found, assuming it was deleted " \
f"in an earlier revision."
logger.info(result_string)
else:
result_code = 'PermanentFailure'
result_string = f"Got exception when applying revision type '{revision}' " \
f"to {obj_key}: {error}."
logger.exception(result_string)
finally:
results.append({
'taskId': task_id,
'resultCode': result_code,
'resultString': result_string
})
return {
'invocationSchemaVersion': invocation_schema_version,
'treatMissingKeysAs': 'PermanentFailure',
'invocationId': invocation_id,
'results': results

Versão da API 2006-03-01


761
Amazon Simple Storage Service Guia do usuário
Operações

Substituir todas as tags de objeto


A operação Substituir todas as tags de objeto substitui as tags de objeto do Amazon S3 em cada objeto
listado no manifesto. A tag de objeto do Amazon S3 é um par de chave-valor de string que pode ser usada
para armazenar metadados sobre um objeto.

Para criar um trabalho Substituir todas as tags de objeto, forneça um conjunto de tags que pretende
aplicar. As Operações em lote do Amazon S3 aplica o mesmo conjunto de tags a cada objeto. O conjunto
de tags que você fornece substitui os conjuntos de tags já associados aos objetos no manifesto. As
Operações em lote do S3 não são compatíveis com a adição de tags a objetos, deixando as tags
existentes no lugar.

Se os objetos em seu manifesto estiverem em um bucket versionado, você pode aplicar o conjunto de tags
a versões específicas de cada objeto. Para fazer isso, especifique um ID de versão para cada objeto no
manifesto. Se você não incluir um ID de versão para nenhum objeto, as Operações em lote do S3 aplicam
o conjunto de tags à versão mais recente de cada objeto.

Restrições e limitações
• A função do IAM que você especificar para executar o trabalho das Operações em lote deve ter
permissões para executar a operação subjacente do Amazon S3 Substituir todas as tags de objeto. Para
obter mais informações sobre as permissões necessárias, consulte PutObjectTagging na Referência da
API do Amazon Simple Storage Service.
• As Operações em lote do S3 usam a operação PutObjectTagging do Amazon S3 para aplicar tags
a cada objeto no manifesto. Todas as restrições e limitações que se aplicam à operação subjacente
também se aplicam a trabalhos das Operações em lote do S3.

Para obter mais informações sobre como Criar um trabalho de Operações em lote do S3 a partir do
console, consulte o Guia do usuário do console do Amazon Simple Storage Service.

Para obter mais detalhes sobre marcação, consulte Categorizando seu armazenamento usando
tags (p. 683) neste guia, bem como PutObjectTagging, GetObjectTagginge DeleteObjectTagging na
Referência da API do Amazon Simple Storage Service.

Excluir todas as tags de objeto


A operação Excluir todas as tags de objeto remove todos os conjuntos de tags de objeto do Amazon
S3 atualmente associados aos objetos listados no manifesto. As Operações em lote do S3 não são
compatíveis com a exclusão de tags de objetos enquanto mantém outras tags no lugar.

Se os objetos no manifesto estiverem em um bucket versionado, você poderá remover os conjuntos de


tags de uma versão específica de um objeto. Para fazer isso, especifique um ID de versão para cada
objeto no manifesto. Se você não incluir um ID de versão para um objeto, as Operações em lote do S3
removerão o conjunto de tags da versão mais recente de cada objeto.

Para obter mais informações sobre o recurso Operações em lote, consulte Especificar um
manifesto (p. 748).
Warning

A execução deste trabalho remove todos os conjuntos de tags de objeto em cada objeto listado no
manifesto.

Versão da API 2006-03-01


762
Amazon Simple Storage Service Guia do usuário
Operações

Restrições e limitações
• A função do AWS Identity and Access Management (IAM) que você especificar para executar o trabalho
deve ter permissões para executar a operação subjacente Excluir marcação de objetos do Amazon S3.
Para obter mais informações, consulte DeleteObjectTagging na Referência da API do Amazon Simple
Storage Service.
• As Operações em lote do S3 usam a operação DeleteObjectTagging do Amazon S3 para remover
os conjuntos de tags de cada objeto no manifesto. Todas as restrições e limitações que se aplicam à
operação subjacente também se aplicam a trabalhos das Operações em lote do S3.

Para obter mais informações sobre como criar trabalhos, consulte Criar um trabalho de operações em lote
do S3 (p. 746).

Para obter mais detalhes sobre a marcação de objetos, consulte Substituir todas as tags de
objeto (p. 762) neste guia e PutObjectTagging, GetObjectTagginge DeleteObjectTagging na Referência
da API do Amazon Simple Storage Service.

Substituir lista de controle de acesso


A operação Substituir lista de controle de acesso substitui as listas de controle de acesso (ACLs) do
Amazon S3 para cada objeto listado no manifesto. Com as ACLs, é possível definir quem pode acessar o
objeto e quais ações podem ser executadas.

As operações em lote do S3 são compatíveis com ACLs que você define e com ACLs pré-configuradas
fornecidas pelo Amazon S3 com um conjunto predefinido de permissões de acesso.

Se os objetos em seu manifesto estiverem em um bucket versionado, é possível aplicar as ACLs a versões
específicas de cada objeto. Para fazer isso, especifique um ID de versão para cada objeto no manifesto.
Se você não incluir um ID de versão para um objeto, as operações em lote do S3 aplicarão a ACL à versão
mais recente do objeto.
Note
Para limitar o acesso público a todos os objetos em um bucket, use o bloqueio de acesso público
do Amazon S3 em vez de operações em lote do S3. O bloqueio do acesso público pode limitar
o acesso público a cada bucket ou à conta com uma única operação simples, que entra em
vigor rapidamente. Essa é uma melhor opção caso seu objetivo seja controlar o acesso público
a todos os objetos em um bucket ou uma conta. Usar as Operações em lote do S3 quando
precisar aplicar uma ACL personalizada a cada objeto no manifesto. Para obter mais informações
sobre o bloqueio de acesso público do Amazon S3, consulte Bloquear o acesso público ao
armazenamento do Amazon S3 (p. 469).

Restrições e limitações
• A função especificada para executar o trabalho Substituir lista de controle de acesso deve ter
permissões para executar a operação subjacente do Amazon S3 PutObjectAcl. Para obter mais
informações sobre as permissões necessárias, consulte PutObjectAcl na Referência da API do Amazon
Simple Storage Service.
• As Operações em lote do S3 usam a operação PutObjectAcl do Amazon S3 para aplicar a ACL
especificada a cada objeto no manifesto. Portanto, todas as restrições e limitações que se aplicam
à operação PutObjectAcl subjacente também se aplicam a trabalhos Substituir lista de controle de
acesso das Operações em lote do S3. Para obter mais informações, consulte a seção Recursos
relacionados (p. 763) desta página.

Recursos relacionados
• Visão geral da lista de controle de acesso (ACL) (p. 440)

Versão da API 2006-03-01


763
Amazon Simple Storage Service Guia do usuário
Operações

• GetObjectAcl na Referência da API do Amazon Simple Storage Service

Restaurar
As Operações em lote do S3 podem executar operações em uma lista de objetos do Amazon S3 que
você especificar, incluindo a inicialização de solicitações de restauração para objetos arquivados. Os
seguintes objetos devem ser restaurados com um trabalho Iniciar a restauração de um objeto do S3 antes
que possam ser acessados em tempo real:

• Objetos arquivados nas classes de armazenamento S3 Glacier ou S3 Glacier Deep Archive


• Objetos arquivados por meio da classe de armazenamento Intelligent-Tiering do S3 nos níveis Acesso
de arquivamento ou Acesso de arquivamento profundo

O uso de uma operação Iniciar a restauração de um objeto do S3 no trabalho das Operações em lote do
S3 resulta em uma solicitação de restauração para cada objeto especificado no manifesto.
Important
O trabalho Iniciar a restauração de um objeto do S3 apenas inicia a solicitação para restaurar
objetos. As Operações em lote do S3 relatam o trabalho como concluído para cada objeto depois
que a solicitação é iniciada para aquele objeto. O Amazon S3 não atualiza o trabalho nem o
notificará quando os objetos tiverem sido restaurados. No entanto, é possível usar notificações de
eventos para receber alertas quando os objetos estiverem disponíveis no Amazon S3. Para obter
mais informações, consulte Notificações de eventos do Amazon S3 (p. 869).

A restauração de arquivos arquivados das classes de armazenamento S3 Glacier ou S3 Glacier Deep


Archive difere da restauração de arquivos da classe de armazenamento S3 Intelligent-Tiering nos níveis
Acesso de arquivamento ou Acesso de arquivamento profundo.

• Quando você restaura do S3 Glacier ou S3 Glacier Deep Archive, uma cópia temporária do objeto é
criada. O Amazon S3 exclui essa cópia após ExpirationInDays dias. Depois que essa cópia for
excluída, é preciso enviar uma solicitação de restauração adicional para acessá-la.
• Quando você restaura a partir dos níveis Acesso de arquivamento ou Acesso de arquivamento profundo
do S3 Intelligent-Tiering, o objeto faz a transição de volta para o nível Acesso frequente do S3 Intelligent-
Tiering. O objeto transita automaticamente para o nível de Acesso de arquivamento após um mínimo de
90 dias consecutivos sem acesso. Ele passa para o nível Acesso de arquivamento profundo após um
mínimo de 180 dias consecutivos sem acesso. Não especifique o argumento ExpirationInDays ao
restaurar objetos arquivados do S3 Intelligent-Tiering.
• Os trabalhos de Operações em lote podem operar em objetos de classe de armazenamento S3 Glacier e
S3 Glacier Deep Archive ou em objetos de nível de armazenamento Acesso de arquivamento e Acesso
de arquivamento profundo do S3 Intelligent-Tiering. Eles não podem operar em ambos os tipos no
mesmo trabalho. Para restaurar objetos de ambos os tipos, você deve criar trabalhos de Operações em
lote separados.

Para criar um trabalho Iniciar a restauração de um objeto do S3, os seguintes argumentos estão
disponíveis:

ExpirationInDays

Este argumento especifica por quanto tempo o objeto do S3 Glacier ou S3 Glacier Deep Archive
permanece disponível no Amazon S3. Os trabalhos Iniciar a restauração de um objeto que visam
objetos S3 Glacier e S3 Glacier Deep Archive exigem ExpirationInDays definido como 1 ou
superior.

Por outro lado, não defina ExpirationInDays ao criar trabalhos de operação Iniciar a restauração
de um objeto do S3 que visam objetos do nível Acesso de arquivamento e Acesso de arquivamento

Versão da API 2006-03-01


764
Amazon Simple Storage Service Guia do usuário
Operações

profundo do S3 Intelligent-Tiering. Os objetos nos níveis de acesso de arquivamento do S3 Intelligent-


Tiering não estão sujeitos à expiração da restauração, portanto, especificar ExpirationInDays
resulta na falha na solicitação de restauração.
GlacierJobTier

O Amazon S3 pode restaurar objetos usando um dos três níveis de recuperação diferentes:
EXPEDITED, STANDARD e BULK. No entanto, o recurso Operações em lote do S3 suporta apenas os
níveis de recuperação STANDARD e BULK. Para obter mais informações sobre as diferenças entre os
níveis de recuperação, consulte Opções de recuperação de arquivamento (p. 545). Para obter mais
informações sobre definição de preço para cada nível, consulte a seção Solicitações e recuperações
de dados na seção Definição de preço do Amazon S3.

Sobrepor restaurações
Se o trabalho Iniciar a restauração de um objeto do S3 tentar restaurar um objeto que já esteja em
processo de restauração, o comportamento das Operações em lote do S3 será o seguinte.

A operação de restauração será bem-sucedida para o objeto se uma das seguintes condições for
verdadeira:

• Quando comparado com a solicitação de restauração já em andamento, o ExpirationInDays deste


trabalho é o mesmo e GlacierJobTier é mais rápido.
• A solicitação de restauração anterior já foi concluída e o objeto está disponível no momento. Nesse
caso, as Operações em lote atualizam a data de expiração do objeto restaurado para corresponder ao
ExpirationInDays especificado na solicitação de restauração em andamento.

A operação apresenta falha para o objeto se uma das seguintes condições for verdadeira:

• A solicitação de restauração já em andamento ainda não foi concluída e a duração da restauração


para este trabalho (especificada por ExpirationInDays) é diferente da duração da restauração
especificada na solicitação de restauração em andamento.
• O nível de restauração para este trabalho (especificado por GlacierJobTier) é o mesmo ou é mais
lento do que o nível especificado na solicitação em andamento.

Limitações
Os trabalhos Iniciar a restauração de um objeto do S3 têm as seguintes limitações:

• Você deve criar o trabalho na mesma região que os objetos arquivados.


• As Operações em lote do S3 não são compatíveis com o nível de recuperação EXPEDITED.
• As Operações em lote do S3 não são compatíveis com a restauração de subconjuntos de objetos S3
Intelligent-Tiering ou S3 Glacier. Você deve chamar RestoreObject para este fim.

Para obter mais informações sobre a restauração de objetos, consulte Restaurar um objeto
arquivado (p. 547).

Retenção do Bloqueio de objetos do S3


É possível usar o bloqueio de objetos do S3 com datas de retenção para o objeto usando dois modos:
governança e conformidade. Esses modos de retenção aplicam níveis diferentes de proteção aos objetos.
É possível aplicar qualquer modo de retenção a qualquer versão de objeto. Datas de retenção, como
retenções legais, impedem que um objeto seja substituído ou excluído. O Amazon S3 armazena a opção
Retain Until Date (Reter até uma determinada data) especificada nos metadados do objeto e protege a
versão especificada da versão do objeto até que o período de retenção expire.

Versão da API 2006-03-01


765
Amazon Simple Storage Service Guia do usuário
Operações

É possível usar as operações em lote do S3 com bloqueio de objetos para gerenciar as datas de retenção
de muitos objetos do Amazon S3 de uma só vez. Especifique a lista de objetos de destino no manifesto
e envie-a para as operações em lote para conclusão. Para obter mais informações, consulte Bloqueio de
objetos do S3 the section called “Períodos de retenção” (p. 557).

As datas de retenção de trabalhos de operações em lote do S3 com datas de retenção é executado até
que a conclusão, o cancelamento ou um estado de falha seja atingido. Use as operações em lote do S3
e a retenção de bloqueio de objetos do S3 ao adicionar, alterar ou remover a data de retenção de muitos
objetos com uma única solicitação.

As operações em lote verificam se o bloqueio de objetos está habilitado no bucket antes de processar
qualquer chave no manifesto. Para executar as operações e a validação, as operações em lote precisam
das permissões s3:GetBucketObjectLockConfiguration e s3:PutObjectRetention em uma
função do IAM para permitir que as operações em lote chamem o bloqueio de objetos em seu nome.

Para obter informações sobre como usar essa operação com a API REST, consulte
S3PutObjectRetention na operação CreateJob na Referência da API do Amazon Simple Storage
Service.

Para obter um exemplo da interface da linha de comando da AWS de como usar essa operação, consulte
the section called “Usar operações em lote com retenção de bloqueio de objetos” (p. 789). Para obter um
exemplo do AWS SDK para Java, consulte the section called “Usar operações em lote com retenção de
bloqueio de objetos” (p. 789).

Restrições e limitações
• As operações em lote do S3 não fazem alterações em nível de bucket.
• O versionamento e o bloqueio de objetos do S3 devem ser configurados no bucket em que o trabalho é
executado.
• Todos os objetos listados no manifesto devem estar no mesmo bucket.
• A operação funciona na versão mais recente do objeto, a menos que uma versão seja explicitamente
especificada no manifesto.
• É necessária a permissão s3:PutObjectRetention na função do IAM para usar isso.
• A permissão s3:GetBucketObjectLockConfiguration do IAM é necessária para confirmar que o
bloqueio de objetos está habilitado para o bucket do S3.
• Só é possível estender o período de retenção de objetos com datas de retenção do modo COMPLIANCE
aplicadas, e não é possível reduzi-lo.

Retenção legal do Bloqueio de objetos do S3


O bloqueio de objetos do S3 também permite colocar uma retenção legal em uma versão do objeto.
Assim como a definição de um período de retenção, uma retenção legal evita que uma versão do objeto
seja substituída ou excluída. Porém, uma retenção legal não tem um período de retenção associado e
permanecerá em vigor até ser removida.

Você pode usar o Operações em lote do S3 com o Bloqueio de objetos para adicionar retenções legais
a muitos objetos do Amazon S3 de uma só vez. Você pode fazer isso listando os objetos de destino
no manifesto e enviando essa lista às operações em lote. O trabalho de operações em lote do S3 com
retenção legal de bloqueio de objetos é executado até a conclusão, até o cancelamento ou até que um
estado de falha seja atingido.

As operações em lote do S3 verificam se o bloqueio de objetos está habilitado no bucket do S3


antes de processar uma chave no manifesto. Para executar as operações de objeto e a validação
em nível de bucket, as Operações em lote do S3 precisam de s3:PutObjectLegalHold e
s3:GetBucketObjectLockConfiguration em uma função do IAM, que permitem que as Operações
em lote do S3 chamem o Bloqueio de objetos do S3 em seu nome.

Versão da API 2006-03-01


766
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Ao criar o trabalho de operações em lote do S3 para remover a retenção legal, é necessário especificar
Off (Desativado) como o status de retenção legal. Para obter mais informações, consulte the section called
“Gerenciar o bloqueio de objetos ” (p. 560).

Para obter informações sobre como usar essa operação com a API REST, consulte
S3PutObjectLegalHold na operação CreateJob na Referência da API do Amazon Simple Storage
Service.

Para obter um exemplo de uso desta operação, consulte Usar o AWS SDK Java (p. 800).

Restrições e limitações
• As operações em lote do S3 não fazem alterações em nível de bucket.
• Todos os objetos listados no manifesto devem estar no mesmo bucket.
• O versionamento e o bloqueio de objetos do S3 devem ser configurados no bucket em que o trabalho é
executado.
• A operação funciona na versão mais recente do objeto, a menos que uma versão seja explicitamente
especificada no manifesto.
• A permissão s3:PutObjectLegalHold é necessária na função do IAM para adicionar ou remover a
retenção legal de objetos.
• A permissão s3:GetBucketObjectLockConfiguration do IAM é necessária para confirmar se o
bloqueio de objetos do S3 está habilitado para o bucket do S3.

Gerenciar trabalhos de operações em lote do S3


O Amazon S3 oferece um conjunto de ferramentas robusto para ajudar a gerenciar trabalhos de operação
em lote após a criação deles. Esta seção descreve as operações que é possível usar para gerenciar
os trabalhos. Você pode executar todas as operações listadas nesta seção usando o Console de
Gerenciamento da AWS, a AWS CLI, os AWS SDKs ou as APIs REST.

Monitorar falhas nos trabalhos


Se uma operação em lote do S3 encontrar um problema que o impeça de ser executado com êxito, como
não ser capaz de ler o manifesto especificado, o trabalho falhará. Quando um trabalho falha, ele gera um
ou mais códigos de falha ou motivos de falha. As operações em lote do S3 armazenam os códigos e os
motivos da falha com o trabalho para que você possa visualizá-los solicitando os detalhes do trabalho.
Caso você tenha solicitado um relatório de conclusão para o trabalho, os códigos e os motivos de falha
também são exibidos.

Para evitar que trabalhos executem um grande número de operações malsucedidas, o Amazon S3 impõe
um limite de falhas por tarefa em cada trabalho de operações em lote. O Amazon S3 monitora a taxa de
falhas das tarefas depois que o trabalho executa pelo menos 1.000 tarefas. Se, a qualquer momento, a
taxa de falha (o número de tarefas que falharam em proporção ao número total de tarefas executadas)
exceder 50%, o trabalho vai falhar. Se o trabalho falhar porque excedeu o limite de falhas da tarefa, você
poderá identificar a causa das falhas. Por exemplo, você pode ter incluído por acidente alguns objetos
no manifesto que não existem no bucket especificado. Depois de corrigir os erros, você pode reenviar o
trabalho.
Note

As operações em lote do S3 funcionam de maneira assíncrona e não necessariamente executa


tarefas na ordem em que os objetos estão listados no manifesto. Portanto, não é possível usar
a ordem do manifesto para determinar quais tarefas dos objetos foram bem-sucedidas e quais
falharam. Em vez disso, examine o relatório de conclusão do trabalho (caso você tenha solicitado
um) ou exiba os logs de evento do AWS CloudTrail para ajudar a determinar a origem das falhas.

Versão da API 2006-03-01


767
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Notificações e registro em log


Além de solicitar relatórios de conclusão, você também pode capturar, revisar e auditar as atividades de
operações em lote usando o AWS CloudTrail. Como as operações em lote usam APIs do Amazon S3
existentes para realizar tarefas, essas tarefas também emitem os mesmos eventos que emitiriam se você
as chamasse diretamente. Por isso, você pode rastrear e registrar o andamento do trabalho e todas as
tarefas usando as mesmas ferramentas de notificação, registro em log e auditoria, além dos processos já
usados com o Amazon S3. Para obter mais informações, consulte Monitorar um trabalho do Operações em
lote do S3 no Amazon EventBridge por meio do AWS CloudTrail (p. 806).
Note

As Operações em lote do Amazon S3 geram eventos de gerenciamento e dados no CloudTrail


durante a execução do trabalho. O volume desses eventos é dimensionado com o número de
chaves no manifesto de cada trabalho. Consulte a página Definição de preço do CloudTrail para
obter detalhes, que inclui exemplos de como a definição de preço muda dependendo do número
de CloudTrails que você configurou em sua conta. Para saber como configurar e registrar em log
eventos para atender às suas necessidades, consulte Criar sua primeira trilha no Guia do usuário
do AWS CloudTrail.

Para obter mais informações sobre eventos do Amazon S3, consulte Notificações de eventos do Amazon
S3 (p. 869).

Relatórios de conclusão
Ao criar um trabalho, você solicita um relatório de conclusão. Desde que as operações em lote do S3
invoquem com êxito pelo menos uma tarefa, o Amazon S3 vai gerar um relatório de conclusão depois de
concluir a execução de tarefas, falhar ou ser cancelado. Configure o relatório de conclusão para incluir
todas as tarefas ou somente tarefas com falha.

O relatório de conclusão inclui a configuração do trabalho, o status e as informações de cada tarefa,


inclusive a chave e a versão do objeto, status, códigos de erro e descrições de eventuais erros. Os
relatórios de conclusão oferecem uma maneira fácil de visualizar os resultados das tarefas em um formato
consolidado, sem a necessidade de configurações adicionais. Para obter um exemplo de um relatório de
conclusão, consulte Relatórios de conclusão do Operações em lote do S3 (p. 809).

Mesmo que você não configure um relatório de conclusão, ainda poderá monitorar e auditar o trabalho
e suas tarefas usando o CloudTrail e o Amazon CloudWatch. Para obter mais informações, consulte the
section called “Monitorar um trabalho do Operações em lote” (p. 806).

Tópicos
• Gerenciar trabalhos do Operações em lote do S3 usando o console do S3 (p. 768)
• Listar trabalhos (p. 769)
• Visualizar detalhes do trabalho (p. 769)
• Atribuir prioridade aos trabalhos (p. 769)
• Monitorar status do trabalho (p. 771)

Gerenciar trabalhos do Operações em lote do S3 usando o


console do S3
O Amazon S3 oferece um conjunto de ferramentas para ajudar a gerenciar trabalhos de operações em lote
do S3 após a criação deles. Para obter mais informações sobre como gerenciar o Operações em lote do
S3, consulte Gerenciar trabalhos de operações em lote do S3 (p. 767).

Versão da API 2006-03-01


768
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Listar trabalhos
Você pode recuperar uma lista dos seus trabalhos de operações em lote do S3. Ela inclui os trabalhos
ainda não concluídos, bem como os concluídos nos últimos 90 dias. A lista inclui informações para cada
trabalho, como ID, descrição, prioridade, status atual e número de tarefas que foram bem-sucedidas e que
apresentaram falha. Você pode filtrar a lista por status. Ao recuperar uma lista pelo console, você também
pode pesquisar os trabalhos por descrição ou ID e filtrá-los por região da AWS.

Obter uma lista de trabalhos Ativos e Concluídos


O exemplo de CLI da AWS a seguir obtém uma lista de trabalhos Active e Complete.

aws s3control list-jobs \


--region us-west-2 \
--account-id acct-id \
--job-statuses '["Active","Complete"]' \
--max-results 20

Visualizar detalhes do trabalho


Se quiser mais informações sobre um trabalho do que puder recuperar listando trabalhos, você poderá
exibir todos os detalhes de um único trabalho. Além das informações exibidas na lista, os detalhes de
cada trabalho trazem mais detalhes. Entre eles estão os parâmetros da operação, os detalhes sobre o
manifesto, as informações sobre o relatório de conclusão (se você tiver configurado um quando criou o
trabalho) e o nome de recurso da Amazon (ARN) da função do usuário atribuído para executar o trabalho.
Exibindo os detalhes de um trabalho individual, você acessa toda a configuração de um trabalho.

Obter a descrição de um trabalho de operações em lote do S3


O exemplo a seguir obtém a descrição de um trabalho de operações em lote do S3 usando a CLI da AWS.

aws s3control describe-job \


--region us-west-2 \
--account-id acct-id \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c

Atribuir prioridade aos trabalhos


Você pode atribuir uma prioridade numérica a cada trabalho, que pode ser qualquer inteiro positivo. As
operações em lote do S3 priorizam trabalhos de acordo com a prioridade atribuída. Os trabalhos com
prioridade mais alta (ou um valor inteiro mais alto para o parâmetro de prioridade) são avaliados primeiro.
A prioridade é determinada em ordem decrescente. Por exemplo, uma fila de trabalhos com um valor
de prioridade 10 tem preferência de programação com relação a uma fila de trabalhos com um valor de
prioridade 1.

Você pode alterar a prioridade do trabalho enquanto ele está sendo executado. Se você enviar um novo
trabalho com uma prioridade mais alta enquanto um trabalho estiver em execução, o trabalho de menor
prioridade poderá ser pausado para permitir a execução do trabalho de maior prioridade.
Note

As operações em lote do S3 respeitam as prioridades de trabalho com o melhor esforço.


Embora os trabalhos com prioridades mais altas normalmente tenham precedência sobre os de
prioridades mais baixas, o Amazon S3 não garante a classificação rígida dos trabalhos.

Versão da API 2006-03-01


769
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Usar a CLI da AWS


O exemplo a seguir atualiza a prioridade do trabalho usando a CLI da AWS. Um número maior indica uma
prioridade de execução mais alta.

aws s3control update-job-priority \


--region us-west-2 \
--account-id acct-id \
--priority 98 \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c

Usar o AWS SDK para Java


O exemplo a seguir atualiza a prioridade de um trabalho de operações em lote do S3 usando o AWS SDK
para Java.

Para obter mais informações sobre prioridade de trabalhos, consulte Atribuir prioridade aos
trabalhos (p. 769).

Example

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.UpdateJobPriorityRequest;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class UpdateJobPriority {


public static void main(String[] args) {
String accountId = "Account ID";
String jobId = "00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c";

try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.updateJobPriority(new UpdateJobPriorityRequest()
.withAccountId(accountId)
.withJobId(jobId)
.withPriority(98));

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Versão da API 2006-03-01


770
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Monitorar status do trabalho


Depois de criar um trabalho, ele passa por diversos status. A tabela a seguir descreve os status existentes
e as transições possíveis entre eles.

Status Descrição Transições

New Ao ser criado, o trabalho ganha o Um trabalho passa


status New. automaticamente para o estado
Preparing quando o Amazon
S3 começa a processar o objeto
do manifesto.

Preparing O Amazon S3 está processando O trabalho passa


o objeto do manifesto e outros automaticamente para o estado
parâmetros do trabalho para Ready depois que o Amazon S3
configurar e executar o trabalho. termina de processar o manifesto
e outros parâmetros. Então,
está tudo pronto para começar a
executar a operação nos objetos
listados no manifesto.

Se o trabalho exigir confirmação


antes da execução, como ao
criar um trabalho usando o
console do Amazon S3, ele
passará do estado Preparing
para Suspended. Ele permanece
no estado Suspended até
que você confirme que deseja
executá-lo.

Suspended O trabalho exige confirmação, Depois de confirmar que deseja


mas você ainda não confirmou executar o trabalho, o status
que deseja executá-lo. muda para Ready.
Somente os trabalhos criados
pelo console do Amazon
S3 exigem confirmação. Os
trabalhos criados pelo console
entram no estado Suspended
imediatamente depois de
Preparing. Depois de confirmar
que deseja executar o trabalho
e ele entra no estado Ready, ele
não retorna mais a Suspended.

Ready O Amazon S3 está pronto para Um trabalho passa


executar as operações do objeto automaticamente para Active
solicitadas. quando o Amazon S3 começa
a executá-lo. O tempo que o
trabalho permanece no estado
Ready depende do fato de outros
trabalhos de maior prioridade
estarem sendo executados e do
tempo necessários para conclui-
los.

Versão da API 2006-03-01


771
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Status Descrição Transições

Active O Amazon S3 está executando a O trabalho deixa o estado


operação solicitada nos objetos Active quando para de
listados no manifesto. Enquanto executar operações nos
um trabalho está Active, é objetos. Isso pode acontecer
possível monitorar seu progresso automaticamente, como quando
usando o console do Amazon S3 um trabalho é concluído com
ou a operação DescribeJob êxito ou apresenta falha.
por meio da API REST, AWS CLI Também pode ocorrer como
ou AWS SDKs. resultado da ação do usuário, por
exemplo, quando ele cancela o
trabalho. O estado que o trabalho
passa a apresentar depende do
motivo da transição.

Pausing O trabalho está passando de O trabalho passa


outro estado para Paused. automaticamente para Paused
quando o estado Pausing é
concluído.

Paused O trabalho pode assumir O trabalho Paused volta


o estado Paused se você automaticamente para Active
enviar outro trabalho de maior depois que os trabalhos de
prioridade enquanto o atual está prioridade mais alta que estavam
sendo executado. bloqueando sua execução
são concluídos, suspensos ou
falham.

Complete O trabalho terminou a execução Complete é um estado terminal.


da operação solicitada em todos Quando o trabalho atinge
os objetos do manifesto. A Complete, ele não muda mais
operação pode ter sido concluída de estado.
com êxito ou ter apresentado
falha para cada objeto. Se você
configurar a criação do relatório
de conclusão, o relatório estará
disponível assim que o trabalho
estiver em Complete.

Cancelling O trabalho está passando para o O trabalho passa


estado Cancelled. automaticamente para
Cancelled quando o estado
Cancelling é concluído.

Cancelled Você solicitou que o Cancelled é um estado


trabalho fosse cancelado e o terminal. Quando o trabalho
Operações em lote do S3 fez atinge Cancelled, ele não
o cancelamento com sucesso. muda mais de estado.
O trabalho não enviará novas
solicitações ao Amazon S3.

Failing O trabalho está passando para o O trabalho passa


estado Failed. automaticamente para Failed
quando o estado Failing é
concluído.

Versão da API 2006-03-01


772
Amazon Simple Storage Service Guia do usuário
Gerenciar trabalhos

Status Descrição Transições

Failed O trabalho apresentou falha e Failed é um estado terminal.


não está mais em execução. Quando o trabalho atinge
Para obter mais informações Failed, ele não muda mais de
sobre falhas em trabalhos, estado.
consulte Monitorar falhas nos
trabalhos (p. 767).

Atualizar o status do trabalho


Esses exemplos mostram como atualizar o status de um trabalho do Operações em lote usando a CLI da
AWS e o SDK para Java. Para obter mais informações sobre como usar o console do S3 para gerenciar
trabalhos do Operações em lote, consulte Gerenciar trabalhos do Operações em lote do S3 usando o
console do S3 (p. 768)

Usar a CLI da AWS

• Se você não tiver especificado o parâmetro --no-confirmation-required no exemplo create-


job anterior, o trabalho permanecerá em um estado suspenso até você confirmar o trabalho definindo o
status dele como Ready. O Amazon S3 torna o trabalho qualificado para execução.

aws s3control update-job-status \


--region us-west-2 \
--account-id 181572960644 \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
--requested-job-status 'Ready'

• Para cancelar o trabalho, defina o status do trabalho como Cancelled.

aws s3control update-job-status \


--region us-west-2 \
--account-id 181572960644 \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
--status-update-reason "No longer needed" \
--requested-job-status Cancelled

Usar o trabalho do AWS SDK Java

O exemplo a seguir atualiza o status de um trabalho de operações em lote do S3 usando o AWS SDK para
Java.

Para obter mais informações sobre o status de trabalhos, consulte Monitorar status do trabalho (p. 771).

Example

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;

Versão da API 2006-03-01


773
Amazon Simple Storage Service Guia do usuário
Usar tags

import com.amazonaws.services.s3control.model.UpdateJobStatusRequest;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class UpdateJobStatus {


public static void main(String[] args) {
String accountId = "Account ID";
String jobId = "00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c";

try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.updateJobStatus(new UpdateJobStatusRequest()
.withAccountId(accountId)
.withJobId(jobId)
.withRequestedJobStatus("Ready"));

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Controlar o acesso e rotular trabalhos usando tags


Você pode rotular e controlar o acesso aos trabalhos de operações em lote do S3 adicionando tags. As
tags podem ser usadas para identificar quem é responsável por um trabalho de operações em lote. A
presença de marcações de trabalho pode conceder ou limitar a capacidade do usuário de cancelar um
trabalho, ativar um trabalho no estado de confirmação ou alterar o nível de prioridade de um trabalho. Você
pode criar trabalhos com tags anexadas a eles e pode adicionar tags aos trabalhos depois que eles são
criados. Cada tag é um par de chave-valor que pode ser incluído quando você cria o trabalho ou atualizado
posteriormente.
Warning

As tags de trabalho não devem conter informações confidenciais ou dados pessoais.

Considere o seguinte exemplo de marcação: suponha que você deseja que seu departamento financeiro
crie um trabalho de operações em lote. Você pode escrever uma política do AWS Identity and Access
Management (IAM) que permita que um usuário invoque CreateJob, desde que o trabalho seja criado
com a tag Department atribuída ao valor Finance. Além disso, você pode anexar essa política a todos
os usuários que são membros do departamento de Finanças.

Continuando com este exemplo, você pode escrever uma política que permita que um usuário atualize
a prioridade de qualquer trabalho que tenha as tags desejadas ou cancele qualquer trabalho que tenha
essas tags. Para obter mais informações, consulte the section called “Controlar permissões” (p. 780).

Você pode adicionar tags a novos trabalhos de operações em lote do S3 ao criá-los ou adicionar tags a
trabalhos existentes.

Observe as seguintes restrições de tag:

Versão da API 2006-03-01


774
Amazon Simple Storage Service Guia do usuário
Usar tags

• Você pode associar até 50 tags a um trabalho, desde que elas tenham chaves de tag exclusivas.
• Um chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até 256 caracteres
Unicode.
• As chaves e os valores diferenciam letras maiúsculas de minúsculas.

Para obter mais informações sobre restrições de tags, consulte Restrições de tags definidas pelo usuário
no Guia do usuário do AWS Billing and Cost Management.

Operações de API relacionadas à marcação de trabalhos de


operações em lote do S3
O Amazon S3 oferece suporte às seguintes operações de API específicas para a marcação de trabalhos
de operações em lote do S3:

• GetJobTagging — retorna o conjunto de tags associado a um trabalho de operações em lote.


• PutJobTagging — substitui o conjunto de tags associado a um trabalho. Há dois cenários distintos de
gerenciamento de tags de trabalho de operações em lote do S3 usando essa ação de API:
• O trabalho não tem tags — você pode adicionar um conjunto de tags a um trabalho (o trabalho não
tem tags anteriores).
• O trabalho tem um conjunto de tags existentes — para modificar o conjunto de tags existente, é
possível substituir completamente o conjunto de tags existente ou fazer alterações nele recuperando o
conjunto de tags existente usando GetJobTagging, modificar esse conjunto de tags e usar essa ação
de API para substituir a tag definida pela que você modificou.
Note

Se você enviar essa solicitação com o conjunto de tags vazio, o Operações em lote do S3
excluirá o conjunto de tags existente no objeto. Se você usar esse método, será cobrado por
uma solicitação de nível 1 (PUT). Para obter mais informações, consulte Definição de preço
do Amazon S3.
Para excluir tags existentes do trabalho de Operações em lote, a ação DeleteJobTagging
é preferida porque ela obtém o mesmo resultado sem incorrer em encargos.
• DeleteJobTagging — exclui o conjunto de tags associado a um trabalho de Operações em lote.

Criar um trabalho do Operações em lote com tags de trabalho


usadas para rotulagem
Você pode rotular e controlar o acesso aos trabalhos de operações em lote do S3 adicionando tags. As
tags podem ser usadas para identificar quem é responsável por um trabalho de operações em lote. Você
pode criar trabalhos com tags anexadas a eles e pode adicionar tags aos trabalhos depois que eles são
criados. Para obter mais informações, consulte the section called “Usar tags” (p. 774).

Usar a CLI da AWS

O exemplo de CLI da AWS a seguir cria um trabalho S3PutObjectCopy de operações em lote do S3


usando tags de trabalho como rótulos para o trabalho.

1. Selecione a ação ou OPERATION que deseja que o trabalho de operações em lote execute e escolha
TargetResource.

read -d '' OPERATION <<EOF


{
"S3PutObjectCopy": {

Versão da API 2006-03-01


775
Amazon Simple Storage Service Guia do usuário
Usar tags

"TargetResource": "arn:aws:s3:::destination-bucket"
}
}
EOF

2. Identifique as TAGS que você deseja para o trabalho. Nesse caso, você aplica duas tags,
department e FiscalYear, com os valores Marketing e 2020, respectivamente.

read -d '' TAGS <<EOF


[
{
"Key": "department",
"Value": "Marketing"
},
{
"Key": "FiscalYear",
"Value": "2020"
}
]
EOF

3. Especifique o MANIFEST para o trabalho de operações em lote.

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "EXAMPLE_S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::example-bucket/example_manifest.csv",
"ETag": "example-5dc7a8bfb90808fc5d546218"
}
}
EOF

4. Configure o REPORT para o trabalho de operações em lote.

read -d '' REPORT <<EOF


{
"Bucket": "arn:aws:s3:::example-report-bucket",
"Format": "Example_Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/copy-with-replace-metadata",
"ReportScope": "AllTasks"
}
EOF

5. Execute a ação create-job para criar o trabalho de operações em lote com entradas definidas nas
etapas anteriores.

aws \
s3control create-job \
--account-id 123456789012 \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \
--priority 10 \
--role-arn arn:aws:iam::123456789012:role/batch-operations-role \
--tags "${TAGS//$'\n'/}" \

Versão da API 2006-03-01


776
Amazon Simple Storage Service Guia do usuário
Usar tags

--client-request-token "$(uuidgen)" \
--region us-west-2 \
--description "Copy with Replace Metadata";

Usar o AWS SDK Java

Example

O exemplo a seguir cria um trabalho de operações em lote do S3 com tags usando o AWS SDK para Java.

public String createJob(final AWSS3ControlClient awss3ControlClient) {


final String manifestObjectArn = "arn:aws:s3:::example-manifest-bucket/
manifests/10_manifest.csv";
final String manifestObjectVersionId = "example-5dc7a8bfb90808fc5d546218";

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new
JobManifestSpec().withFormat(JobManifestFormat.S3InventoryReport_CSV_20161130);

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::example-report-bucket";


final String jobReportPrefix = "example-job-reports";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

final String lambdaFunctionArn = "arn:aws:lambda:us-


west-2:123456789012:function:example-function";

final JobOperation jobOperation = new JobOperation()


.withLambdaInvoke(new
LambdaInvokeOperation().withFunctionArn(lambdaFunctionArn));

final S3Tag departmentTag = new S3Tag().withKey("department").withValue("Marketing");


final S3Tag fiscalYearTag = new S3Tag().withKey("FiscalYear").withValue("2020");

final String roleArn = "arn:aws:iam::123456789012:role/example-batch-operations-role";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Test lambda job")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withTags(departmentTag, fiscalYearTag)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

Versão da API 2006-03-01


777
Amazon Simple Storage Service Guia do usuário
Usar tags

return result.getJobId();
}

Excluir as tags de um trabalho do Operações em lote do S3


Você pode usar esses exemplos para excluir as tags de um trabalho do Operações em lote.

Usar a CLI da AWS

O exemplo a seguir exclui as tags de um trabalho de operações em lote usando a CLI da AWS.

aws \
s3control delete-job-tagging \
--account-id 123456789012 \
--job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
--region us-east-1;

Excluir as tags de um trabalho de operações em lote

Example

O exemplo a seguir exclui as tags de um trabalho de operações em lote do S3 usando o AWS SDK para
Java.

public void deleteJobTagging(final AWSS3ControlClient awss3ControlClient,


final String jobId) {
final DeleteJobTaggingRequest deleteJobTaggingRequest = new DeleteJobTaggingRequest()
.withJobId(jobId);

final DeleteJobTaggingResult deleteJobTaggingResult =


awss3ControlClient.deleteJobTagging(deleteJobTaggingRequest);
}

Colocar tags de trabalho para um trabalho existente do


Operações em lote do S3
Você pode usar PutJobTagging para adicionar tags de trabalho ao Operações em lote do S3 existente.
Para obter mais informações, consulte os exemplos abaixo.

Usar a CLI da AWS

Veja a seguir um exemplo de uso de s3control put-job-tagging para adicionar tags ao trabalho de
operações em lote do S3 usando a CLI da AWS.
Note

Se você enviar essa solicitação com o conjunto de tags vazio, o Operações em lote do S3 excluirá
o conjunto de tags existente no objeto. Além disso, se você usar esse método, será cobrado por
uma solicitação de nível 1 (PUT). Para obter mais informações, consulte Definição de preço do
Amazon S3.
Para excluir tags existentes do trabalho de Operações em lote, a ação DeleteJobTagging é
preferida porque ela obtém o mesmo resultado sem incorrer em encargos.

1. Identifique as TAGS que você deseja para o trabalho. Nesse caso, você aplica duas tags,
department e FiscalYear, com os valores Marketing e 2020, respectivamente.

Versão da API 2006-03-01


778
Amazon Simple Storage Service Guia do usuário
Usar tags

read -d '' TAGS <<EOF


[
{
"Key": "department",
"Value": "Marketing"
},
{
"Key": "FiscalYear",
"Value": "2020"
}
]
EOF

2. Execute a ação put-job-tagging com os parâmetros necessários.

aws \
s3control put-job-tagging \
--account-id 123456789012 \
--tags "${TAGS//$'\n'/}" \
--job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
--region us-east-1;

Usar o AWS SDK Java

Example

O exemplo a seguir coloca as tags de um trabalho de operações em lote do S3 usando o AWS SDK para
Java.

public void putJobTagging(final AWSS3ControlClient awss3ControlClient,


final String jobId) {
final S3Tag departmentTag = new S3Tag().withKey("department").withValue("Marketing");
final S3Tag fiscalYearTag = new S3Tag().withKey("FiscalYear").withValue("2020");

final PutJobTaggingRequest putJobTaggingRequest = new PutJobTaggingRequest()


.withJobId(jobId)
.withTags(departmentTag, fiscalYearTag);

final PutJobTaggingResult putJobTaggingResult =


awss3ControlClient.putJobTagging(putJobTaggingRequest);
}

Obter as tags de um trabalho do Operações em lote S3


Você pode usar GetJobTagging para retornar as tags de um trabalho do Operações em lote do S3. Para
obter mais informações, consulte os exemplos abaixo.

Usar a CLI da AWS

O exemplo a seguir obtém as tags de um trabalho de operações em lote usando a CLI da AWS.

aws \
s3control get-job-tagging \
--account-id 123456789012 \
--job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
--region us-east-1;

Versão da API 2006-03-01


779
Amazon Simple Storage Service Guia do usuário
Usar tags

Usar o AWS SDK Java

Example

O exemplo a seguir obtém as tags de um trabalho de operações em lote do S3 usando o AWS SDK para
Java.

public List<S3Tag> getJobTagging(final AWSS3ControlClient awss3ControlClient,


final String jobId) {
final GetJobTaggingRequest getJobTaggingRequest = new GetJobTaggingRequest()
.withJobId(jobId);

final GetJobTaggingResult getJobTaggingResult =


awss3ControlClient.getJobTagging(getJobTaggingRequest);

final List<S3Tag> tags = getJobTaggingResult.getTags();

return tags;
}

Controlar permissões para o recurso Operações em lote do S3


usando tags de trabalho
Para ajudá-lo a gerenciar seus trabalhos de operações em lote do S3, você pode adicionar tags de
trabalho. Com tags de trabalho, você pode controlar o acesso aos seus trabalhos de operações em lote e
impor que as tags sejam aplicadas quando qualquer trabalho for criado.

Você pode aplicar até 50 tags de trabalho a cada trabalho de operações em lote. Isso permite que você
defina políticas muito granulares restringindo o conjunto de usuários que podem editar o trabalho. As
tags de trabalho podem conceder ou limitar a capacidade do usuário de cancelar um trabalho, ativar um
trabalho no estado de confirmação ou alterar o nível de prioridade de um trabalho. Além disso, você pode
impor que as tags sejam aplicadas a todos os novos trabalhos e especificar os pares de chave-valor
permitidos para as tags. Você pode expressar todas essas condições usando a mesma linguagem de
política do IAM. Para obter mais informações, consulte Ações, recursos e chaves de condição do Amazon
S3 (p. 288).

O exemplo a seguir mostra como você pode usar tags de trabalho de operações em lote do S3
para conceder aos usuários permissão para criar e editar somente os trabalhos executados em um
departamento específico (por exemplo, o departamento Finanças ou Conformidade). Você também pode
atribuir trabalhos com base no estágio de desenvolvimento ao qual eles estão relacionados, como QA ou
Produção.

Neste exemplo, você usa tags de trabalho de operações em lote do S3 nas políticas do AWS Identity
and Access Management (IAM) para conceder aos usuários permissão para criar e editar apenas os
trabalhos que estão sendo executados em seu departamento. Você atribui trabalhos com base no estágio
de desenvolvimento ao qual eles estão relacionados, como QA ou Produção.

Este exemplo usa os seguintes departamentos, com cada um usando operações em lote de maneiras
diferentes:

• Finanças
• Conformidade
• Business Intelligence
• Engenharia

Tópicos

Versão da API 2006-03-01


780
Amazon Simple Storage Service Guia do usuário
Usar tags

• Controlar o acesso atribuindo tags a usuários e recursos (p. 781)


• Marcar trabalhos de operações em lote por estágio e impor limites na prioridade do trabalho (p. 782)

Controlar o acesso atribuindo tags a usuários e recursos


Nesse cenário, os administradores estão usando o controle de acesso baseado em atributos (ABAC).
ABAC é uma estratégia de autorização do IAM que define permissões anexando tags a usuários do IAM e
recursos da AWS.

Os usuários e os trabalhos recebem uma das seguintes tags de departamento:

Chave: valor

• department : Finance
• department : Compliance
• department : BusinessIntelligence
• department : Engineering
Note

As chaves e os valores de tags de trabalho diferenciam maiúsculas de minúsculas.

Usando a estratégia de controle de acesso ABAC, você concede a um usuário no departamento de


Finanças permissão para criar e gerenciar trabalhos de operações em lote do S3 em seu departamento
associando a tag department=Finance ao usuário do IAM.

Além disso, você pode anexar uma política gerenciada ao usuário do IAM que permite que qualquer
usuário em sua empresa crie ou modifique trabalhos de operações em lote do S3 dentro de seus
respectivos departamentos.

A política neste exemplo inclui três instruções de política:

• A primeira instrução na política permite que o usuário crie um trabalho de operações em lote desde
que a solicitação de criação de trabalho inclua uma tag de trabalho que corresponda ao respectivo
departamento. Isso é expresso usando a sintaxe "${aws:PrincipalTag/department}",
que é substituída pela tag de departamento do usuário do IAM no momento da avaliação da
política. A condição é satisfeita quando o valor fornecido para a tag de departamento na solicitação
("aws:RequestTag/department") corresponde ao departamento do usuário.
• A segunda instrução na política permite que os usuários alterem a prioridade dos trabalhos ou
atualizem o status de um trabalho, desde que o trabalho que o usuário está atualizando corresponda ao
departamento do usuário.
• A terceira instrução permite que um usuário atualize as tags de um trabalho de operações em lote
a qualquer momento por meio de uma solicitação PutJobTagging, desde que (1) sua tag de
departamento seja preservada e (2) o trabalho que está atualizando esteja dentro de seu departamento.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:CreateJob",
"Resource": "*",
"Condition": {
"StringEquals": {

Versão da API 2006-03-01


781
Amazon Simple Storage Service Guia do usuário
Usar tags

"aws:RequestTag/department": "${aws:PrincipalTag/department}"

}
}
},
{
"Effect": "Allow",
"Action": [
"s3:UpdateJobPriority",
"s3:UpdateJobStatus"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/department": "${aws:PrincipalTag/
department}"
}
}
},
{
"Effect": "Allow",
"Action": "s3:PutJobTagging",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/department": "${aws:PrincipalTag/
department}",
"aws:ResourceTag/department": "${aws:PrincipalTag/
department}"
}
}
}
]
}

Marcar trabalhos de operações em lote por estágio e impor limites na prioridade


do trabalho

Todos os trabalhos de operações em lote do S3 têm uma prioridade numérica, que o Amazon S3 usa para
decidir em que ordem executar os trabalhos. Para este exemplo, você restringe a prioridade máxima que a
maioria dos usuários pode atribuir a trabalhos, com intervalos de prioridade mais altos reservados para um
conjunto limitado de usuários privilegiados, da seguinte forma:

• Intervalo de prioridade do estágio de QA (baixa): 1–100


• Intervalo de prioridade do estágio de produção (alta): 1–300

Para fazer isso, introduza um novo conjunto de tags representando o estágio do trabalho:

Chave : Valor

• stage : QA
• stage : Production

Criar e atualizar trabalhos de baixa prioridade em um departamento

Esta política introduz duas novas restrições à criação e atualização de trabalhos de operações em lote do
S3, além da restrição baseada em departamento:

Versão da API 2006-03-01


782
Amazon Simple Storage Service Guia do usuário
Usar tags

• Ele permite que os usuários criem ou atualizem trabalhos em seu departamento com uma nova condição
que requer que o trabalho inclua a tag stage=QA.
• Ele permite que os usuários criem ou atualizem a prioridade de um trabalho até uma nova prioridade
máxima de 100.

{
        "Version": "2012-10-17",
        "Statement": [
        {
        "Effect": "Allow",
        "Action": "s3:CreateJob",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:UpdateJobStatus"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:UpdateJobPriority",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:ResourceTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:PutJobTagging",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department" : "${aws:PrincipalTag/department}",
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA",
                "aws:ResourceTag/stage": "QA"
            }
        }
    },
    {
        "Effect": "Allow",

Versão da API 2006-03-01


783
Amazon Simple Storage Service Guia do usuário
Usar tags

        "Action": "s3:GetJobTagging",
        "Resource": "*"
    }
    ]
}

Criar e atualizar trabalhos de alta prioridade em um departamento

Um pequeno número de usuários pode exigir a capacidade de criar trabalhos de alta prioridade em QA
ou Produção. Para dar suporte a essa necessidade, crie uma política gerenciada adaptada da política de
baixa prioridade na seção anterior.

Essa política faz o seguinte:

• Permite que os usuários criem ou atualizem trabalhos em seu departamento com a tag stage=QA ou
stage=Production.
• Permite que os usuários criem ou atualizem a prioridade de um trabalho até um máximo de 300.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:CreateJob",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:RequestTag/stage": [
"QA",
"Production"
]
},
"StringEquals": {
"aws:RequestTag/department": "${aws:PrincipalTag/department}"

},
"NumericLessThanEquals": {
"s3:RequestJobPriority": 300
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:UpdateJobStatus"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/department": "${aws:PrincipalTag/department}"

}
}
},
{
"Effect": "Allow",
"Action": "s3:UpdateJobPriority",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:ResourceTag/stage": [

Versão da API 2006-03-01


784
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

"QA",
"Production"
]
},
"StringEquals": {
"aws:ResourceTag/department": "${aws:PrincipalTag/department}"

},
"NumericLessThanEquals": {
"s3:RequestJobPriority": 300
}
}
},
{
"Effect": "Allow",
"Action": "s3:PutJobTagging",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/department": "${aws:PrincipalTag/department}",
"aws:ResourceTag/department": "${aws:PrincipalTag/department}"

},
"ForAnyValue:StringEquals": {
"aws:RequestTag/stage": [
"QA",
"Production"
],
"aws:ResourceTag/stage": [
"QA",
"Production"
]
}
}
}
]
}

Gerenciar o Bloqueio de objetos do S3 usando o


Operações em lote do S3
O bloqueio de objetos do S3 também permite colocar uma retenção legal em uma versão do objeto.
Assim como a definição de um período de retenção, uma retenção legal evita que uma versão do objeto
seja substituída ou excluída. Porém, uma retenção legal não tem um período de retenção associado e
permanecerá em vigor até ser removida.

Você pode usar o Operações em lote do S3 com o Bloqueio de objetos para adicionar retenções legais a
muitos objetos do Amazon S3 de uma só vez.

Para obter mais informações, consulte Retenção legal do Bloqueio de objetos do S3 (p. 766).

Tópicos
• Habilitar o Bloqueio de objetos do S3 usando o Operações em lote do S3 (p. 786)
• Definir a retenção do Bloqueio de objetos usando o Operações em lote (p. 789)
• Usar operações em lote do S3 com o modo de conformidade de retenção de bloqueio de objetos do
S3 (p. 790)
• Usar operações em lote do S3 com modo de governança de retenção de bloqueio de objetos do
S3 (p. 794)
• Usar operações em lote do S3 para desativar a retenção legal do bloqueio de objetos do S3 (p. 798)

Versão da API 2006-03-01


785
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

Habilitar o Bloqueio de objetos do S3 usando o Operações em


lote do S3
Você pode usar operações em lote do S3 com bloqueio de objeto do S3 para gerenciar a retenção ou
habilitar uma retenção legal para muitos objetos do Amazon S3 de uma só vez. Especifique a lista de
objetos de destino no manifesto e envie-a para as operações em lote para conclusão. Para obter mais
informações, consulte the section called “Retenção do Bloqueio de objetos” (p. 765) e the section called
“Retenção legal do Bloqueio de objetos” (p. 766).

Os exemplos a seguir mostram como criar uma função do IAM com permissões do Operações em lote
do S3 e atualizar as permissões de função para criar trabalhos que habilitem o Bloqueio de objetos. Nos
exemplos, substitua todos os valores de variável por valores adequados às suas necessidades. Você
também deve ter um manifesto CSV identificando os objetos para o trabalho de operações em lote do S3.
Para obter mais informações, consulte the section called “Especificar um manifesto” (p. 748).

Usar a CLI da AWS

1. Crie uma função do IAM e atribua permissões de operações em lote do S3 para executar.

Esta etapa é necessária para todos os trabalhos de operações em lote do S3.

export AWS_PROFILE='aws-user'

read -d '' bops_trust_policy <<EOF


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"batchoperations.s3.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
EOF
aws iam create-role --role-name bops-objectlock --assume-role-policy-document
"${bops_trust_policy}"

2. Configure operações em lote do S3 com bloqueio de objeto do S3 para executar.

Nesta etapa, permita que a função faça o seguinte:

a. Execute o bloqueio de objeto no bucket do S3 que contém os objetos de destino nos quais você
deseja que as operações em lote sejam executadas.
b. Leia o bucket do S3 no qual estão localizados o arquivo CSV de manifesto e os objetos.
c. Grave os resultados do trabalho de operações em lote do S3 no bucket de relatórios.

read -d '' bops_permissions <<EOF


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [

Versão da API 2006-03-01


786
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

"arn:aws:s3:::{{ManifestBucket}}"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::{{ReportBucket}}/*"
]
}
]
}
EOF

aws iam put-role-policy --role-name bops-objectlock --policy-name object-lock-


permissions --policy-document "${bops_permissions}"

Usar o AWS SDK Java


Os exemplos a seguir mostram como criar uma função do IAM com permissões de operações em lote do
S3 e atualizar as permissões de função para criar trabalhos que habilitem o bloqueio de objeto usando
o AWS SDK para Java. No código, substitua todos os valores de variável por valores adequados às
suas necessidades. Você também deve ter um manifesto CSV identificando os objetos para o trabalho
de operações em lote do S3. Para obter mais informações, consulte the section called “Especificar um
manifesto” (p. 748).

Você executa as seguintes etapas:

1. Crie uma função do IAM e atribua permissões de operações em lote do S3 para executar. Esta etapa
é necessária para todos os trabalhos de operações em lote do S3.
2. Configure operações em lote do S3 com bloqueio de objeto do S3 para executar.

Permita que a função faça o seguinte:

1. Execute o bloqueio de objeto no bucket do S3 que contém os objetos de destino nos quais você
deseja que as operações em lote sejam executadas.
2. Leia o bucket do S3 no qual estão localizados o arquivo CSV de manifesto e os objetos.
3. Grave os resultados do trabalho de operações em lote do S3 no bucket de relatórios.

public void createObjectLockRole() {


final String roleName = "bops-object-lock";

final String trustPolicy = "{" +


" \"Version\": \"2012-10-17\", " +
" \"Statement\": [ " +
" { " +

Versão da API 2006-03-01


787
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

" \"Effect\": \"Allow\", " +


" \"Principal\": { " +
" \"Service\": [" +
" \"batchoperations.s3.amazonaws.com\"" +
" ]" +
" }, " +
" \"Action\": \"sts:AssumeRole\" " +
" } " +
" ]" +
"}";

final String bopsPermissions = "{" +


" \"Version\": \"2012-10-17\"," +
" \"Statement\": [" +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": \"s3:GetBucketObjectLockConfiguration\"," +
" \"Resource\": [" +
" \"arn:aws:s3:::ManifestBucket\"" +
" ]" +
" }," +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": [" +
" \"s3:GetObject\"," +
" \"s3:GetObjectVersion\"," +
" \"s3:GetBucketLocation\"" +
" ]," +
" \"Resource\": [" +
" \"arn:aws:s3:::ManifestBucket/*\"" +
" ]" +
" }," +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": [" +
" \"s3:PutObject\"," +
" \"s3:GetBucketLocation\"" +
" ]," +
" \"Resource\": [" +
" \"arn:aws:s3:::ReportBucket/*\"" +
" ]" +
" }" +
" ]" +
"}";

final AmazonIdentityManagement iam =


AmazonIdentityManagementClientBuilder.defaultClient();

final CreateRoleRequest createRoleRequest = new CreateRoleRequest()


.withAssumeRolePolicyDocument(bopsPermissions)
.withRoleName(roleName);

final CreateRoleResult createRoleResult = iam.createRole(createRoleRequest);

final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest()


.withPolicyDocument(bopsPermissions)
.withPolicyName("bops-permissions")
.withRoleName(roleName);

final PutRolePolicyResult putRolePolicyResult =


iam.putRolePolicy(putRolePolicyRequest);
}

Versão da API 2006-03-01


788
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

Definir a retenção do Bloqueio de objetos usando o Operações


em lote
O exemplo a seguir permite que a regra defina a retenção de bloqueio de objetos do S3 para seus objetos
no bucket de manifestos.

Atualize a função para incluir permissões s3:PutObjectRetention para que você possa executar a
retenção de bloqueio de objetos nos objetos no bucket.

Usar a CLI da AWS

export AWS_PROFILE='aws-user'

read -d '' retention_permissions <<EOF


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectRetention"
],
"Resource": [
"arn:aws:s3:::{{ManifestBucket}}/*"
]
}
]
}
EOF

aws iam put-role-policy --role-name bops-objectlock --policy-name retention-permissions --


policy-document "${retention_permissions}"

Usar o AWS SDK Java

public void allowPutObjectRetention() {


final String roleName = "bops-object-lock";

final String retentionPermissions = "{" +


" \"Version\": \"2012-10-17\"," +
" \"Statement\": [" +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": [" +
" \"s3:PutObjectRetention\"" +
" ]," +
" \"Resource\": [" +
" \"arn:aws:s3:::ManifestBucket*\"" +
" ]" +
" }" +
" ]" +
"}";

final AmazonIdentityManagement iam =


AmazonIdentityManagementClientBuilder.defaultClient();

final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest()


.withPolicyDocument(retentionPermissions)
.withPolicyName("retention-permissions")
.withRoleName(roleName);

Versão da API 2006-03-01


789
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

final PutRolePolicyResult putRolePolicyResult =


iam.putRolePolicy(putRolePolicyRequest);
}

Usar operações em lote do S3 com o modo de conformidade de


retenção de bloqueio de objetos do S3
O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração do Operações em lote do S3 e Bloqueio de objetos do S3 em
seus objetos. Este exemplo define o modo de retenção como COMPLIANCE e retain until date como
1º de janeiro de 2020. Ele cria um trabalho que visa objetos no bucket de manifesto e relata os resultados
no bucket de relatórios identificado.

Usar a CLI da AWS

Example Definir conformidade com menções em vários objetos

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/bops-objectlock'

read -d '' OPERATION <<EOF


{
"S3PutObjectRetention": {
"Retention": {
"RetainUntilDate":"2025-01-01T00:00:00",
"Mode":"COMPLIANCE"
}
}
}
EOF

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::ManifestBucket/compliance-objects-manifest.csv",
"ETag": "Your-manifest-ETag"
}
}
EOF

read -d '' REPORT <<EOF


{
"Bucket": "arn:aws:s3:::ReportBucket",
"Format": "Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/compliance-objects-bops",
"ReportScope": "AllTasks"
}
EOF

aws \
s3control create-job \

Versão da API 2006-03-01


790
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

--account-id "${ACCOUNT_ID}" \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \
--priority 10 \
--role-arn "${ROLE_ARN}" \
--client-request-token "$(uuidgen)" \
--region "${AWS_DEFAULT_REGION}" \
--description "Set compliance retain-until to 1 Jul 2030";

Example Estender a retain until date do modo COMPLIANCE para 15 de janeiro de 2020

O exemplo a seguir estende retain until date do modo COMPLIANCE para 15 de janeiro de 2025.

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/bops-objectlock'

read -d '' OPERATION <<EOF


{
"S3PutObjectRetention": {
"Retention": {
"RetainUntilDate":"2025-01-15T00:00:00",
"Mode":"COMPLIANCE"
}
}
}
EOF

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::ManifestBucket/compliance-objects-manifest.csv",
"ETag": "Your-manifest-ETag"
}
}
EOF

read -d '' REPORT <<EOF


{
"Bucket": "arn:aws:s3:::ReportBucket",
"Format": "Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/compliance-objects-bops",
"ReportScope": "AllTasks"
}
EOF

aws \
s3control create-job \
--account-id "${ACCOUNT_ID}" \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \
--priority 10 \
--role-arn "${ROLE_ARN}" \

Versão da API 2006-03-01


791
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

--client-request-token "$(uuidgen)" \
--region "${AWS_DEFAULT_REGION}" \
--description "Extend compliance retention to 15 Jan 2020";

Usar o AWS SDK Java

Example Defina o modo de retenção como COMPLIANCE e a retenção até à data de 1º de janeiro
de 2020.

public String createComplianceRetentionJob(final AWSS3ControlClient awss3ControlClient)


throws ParseException {
final String manifestObjectArn = "arn:aws:s3:::ManifestBucket/compliance-objects-
manifest.csv";
final String manifestObjectVersionId = "your-object-version-Id";

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new JobManifestSpec()
.withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820)
.withFields("Bucket", "Key");

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::ReportBucket";


final String jobReportPrefix = "reports/compliance-objects-bops";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");


final Date janFirst = format.parse("01/01/2020");

final JobOperation jobOperation = new JobOperation()


.withS3PutObjectRetention(new S3SetObjectRetentionOperation()
.withRetention(new S3Retention()
.withMode(S3ObjectLockRetentionMode.COMPLIANCE)
.withRetainUntilDate(janFirst)));

final String roleArn = "arn:aws:iam::123456789012:role/bops-object-lock";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Set compliance retain-until to 1 Jan 2020")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

return result.getJobId();

Versão da API 2006-03-01


792
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

Example Estender a retain until date do modo COMPLIANCE

O exemplo a seguir estende a retain until date do modo COMPLIANCE para 15 de janeiro de 2020.

public String createExtendComplianceRetentionJob(final AWSS3ControlClient


awss3ControlClient) throws ParseException {
final String manifestObjectArn = "arn:aws:s3:::ManifestBucket/compliance-objects-
manifest.csv";
final String manifestObjectVersionId = "15ad5ba069e6bbc465c77bf83d541385";

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new JobManifestSpec()
.withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820)
.withFields("Bucket", "Key");

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::ReportBucket";


final String jobReportPrefix = "reports/compliance-objects-bops";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");


final Date jan15th = format.parse("15/01/2020");

final JobOperation jobOperation = new JobOperation()


.withS3PutObjectRetention(new S3SetObjectRetentionOperation()
.withRetention(new S3Retention()
.withMode(S3ObjectLockRetentionMode.COMPLIANCE)
.withRetainUntilDate(jan15th)));

final String roleArn = "arn:aws:iam::123456789012:role/bops-object-lock";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Extend compliance retention to 15 Jan 2020")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

return result.getJobId();
}

Versão da API 2006-03-01


793
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

Usar operações em lote do S3 com modo de governança de


retenção de bloqueio de objetos do S3
O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele
mostra como aplicar a governança de retenção do Bloqueio de objetos do S3 com a retain until
date de 30 de janeiro de 2025, em vários objetos. Ele cria um trabalho de operações em lote que usa o
bucket de manifesto e relata os resultados no bucket de relatórios.

Usar a CLI da AWS

Example Aplicar a governança de retenção do Bloqueio de objetos do S3 em vários objetos com a


retenção até a data de 30 de janeiro de 2020

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/bops-objectlock'

read -d '' OPERATION <<EOF


{
"S3PutObjectRetention": {
"Retention": {
"RetainUntilDate":"2025-01-30T00:00:00",
"Mode":"GOVERNANCE"
}
}
}
EOF

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::ManifestBucket/governance-objects-manifest.csv",
"ETag": "Your-manifest-ETag"
}
}
EOF

read -d '' REPORT <<EOF


{
"Bucket": "arn:aws:s3:::ReportBucketT",
"Format": "Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/governance-objects",
"ReportScope": "AllTasks"
}
EOF

aws \
s3control create-job \
--account-id "${ACCOUNT_ID}" \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \

Versão da API 2006-03-01


794
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

--priority 10 \
--role-arn "${ROLE_ARN}" \
--client-request-token "$(uuidgen)" \
--region "${AWS_DEFAULT_REGION}" \
--description "Put governance retention";

Example Ignorar a governança de retenção em vários objetos

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele
mostra como ignorar a governança de retenção em vários objetos e cria um trabalho de operações em lote
que usa o bucket de manifestos e relata os resultados no bucket de relatórios.

export AWS_PROFILE='aws-user'

read -d '' bypass_governance_permissions <<EOF


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:BypassGovernanceRetention"
],
"Resource": [
"arn:aws:s3:::ManifestBucket/*"
]
}
]
}
EOF

aws iam put-role-policy --role-name bops-objectlock --policy-name bypass-governance-


permissions --policy-document "${bypass_governance_permissions}"

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/bops-objectlock'

read -d '' OPERATION <<EOF


{
"S3PutObjectRetention": {
"BypassGovernanceRetention": true,
"Retention": {
}
}
}
EOF

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::ManifestBucket/governance-objects-manifest.csv",
"ETag": "Your-manifest-ETag"
}
}

Versão da API 2006-03-01


795
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

EOF

read -d '' REPORT <<EOF


{
"Bucket": "arn:aws:s3:::REPORT_BUCKET",
"Format": "Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/bops-governance",
"ReportScope": "AllTasks"
}
EOF

aws \
s3control create-job \
--account-id "${ACCOUNT_ID}" \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \
--priority 10 \
--role-arn "${ROLE_ARN}" \
--client-request-token "$(uuidgen)" \
--region "${AWS_DEFAULT_REGION}" \
--description "Remove governance retention";

Usar o AWS SDK Java

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele
mostra como aplicar a governança de retenção de bloqueio de objetos do S3 com o retain until date
definido como 30 de janeiro de 2020 em vários objetos. Ele cria um trabalho de operações em lote que usa
o bucket de manifesto e relata os resultados no bucket de relatórios.

Example Aplicar a governança de retenção do Bloqueio de objetos do S3 em vários objetos com a


retenção até a data de 30 de janeiro de 2020

public String createGovernanceRetentionJob(final AWSS3ControlClient awss3ControlClient)


throws ParseException {
final String manifestObjectArn = "arn:aws:s3:::ManifestBucket/governance-objects-
manifest.csv";
final String manifestObjectVersionId = "15ad5ba069e6bbc465c77bf83d541385";

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new JobManifestSpec()
.withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820)
.withFields("Bucket", "Key");

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::ReportBucket";


final String jobReportPrefix = "reports/governance-objects";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

Versão da API 2006-03-01


796
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");


final Date jan30th = format.parse("30/01/2020");

final JobOperation jobOperation = new JobOperation()


.withS3PutObjectRetention(new S3SetObjectRetentionOperation()
.withRetention(new S3Retention()
.withMode(S3ObjectLockRetentionMode.GOVERNANCE)
.withRetainUntilDate(jan30th)));

final String roleArn = "arn:aws:iam::123456789012:role/bops-object-lock";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Put governance retention")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

return result.getJobId();
}

Example Ignorar a governança de retenção em vários objetos

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele
mostra como ignorar a governança de retenção em vários objetos e cria um trabalho de operações em lote
que usa o bucket de manifestos e relata os resultados no bucket de relatórios.

public void allowBypassGovernance() {


final String roleName = "bops-object-lock";

final String bypassGovernancePermissions = "{" +


" \"Version\": \"2012-10-17\"," +
" \"Statement\": [" +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": [" +
" \"s3:BypassGovernanceRetention\"" +
" ]," +
" \"Resource\": [" +
" \"arn:aws:s3:::ManifestBucket/*\"" +
" ]" +
" }" +
" ]" +
"}";

final AmazonIdentityManagement iam =


AmazonIdentityManagementClientBuilder.defaultClient();

final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest()


.withPolicyDocument(bypassGovernancePermissions)
.withPolicyName("bypass-governance-permissions")
.withRoleName(roleName);

final PutRolePolicyResult putRolePolicyResult =


iam.putRolePolicy(putRolePolicyRequest);

Versão da API 2006-03-01


797
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

}
public String createRemoveGovernanceRetentionJob(final AWSS3ControlClient
awss3ControlClient) {
final String manifestObjectArn = "arn:aws:s3:::ManifestBucket/governance-objects-
manifest.csv";
final String manifestObjectVersionId = "15ad5ba069e6bbc465c77bf83d541385";

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new JobManifestSpec()
.withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820)
.withFields("Bucket", "Key");

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::ReportBucket";


final String jobReportPrefix = "reports/bops-governance";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

final JobOperation jobOperation = new JobOperation()


.withS3PutObjectRetention(new S3SetObjectRetentionOperation()
.withRetention(new S3Retention()));

final String roleArn = "arn:aws:iam::123456789012:role/bops-object-lock";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Remove governance retention")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

return result.getJobId();
}

Usar operações em lote do S3 para desativar a retenção legal do


bloqueio de objetos do S3
O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na
definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele
mostra como desativar a retenção legal de bloqueio de objetos em objetos usando operações em lote.

O exemplo primeiro atualiza a função para conceder permissões s3:PutObjectLegalHold, cria um


trabalho de operações em lote que desativa (remove) a retenção legal dos objetos identificados no
manifesto e, depois, cria um relatório.

Versão da API 2006-03-01


798
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

Usar a CLI da AWS

Example Atualiza a função para conceder permissões s3:PutObjectLegalHold

export AWS_PROFILE='aws-user'

read -d '' legal_hold_permissions <<EOF


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectLegalHold"
],
"Resource": [
"arn:aws:s3:::ManifestBucket/*"
]
}
]

EOF

aws iam put-role-policy --role-name bops-objectlock --policy-name legal-hold-permissions --


policy-document "${legal_hold_permissions}"

Example Desativar retenção legal

O exemplo a seguir desativa a retenção legal.

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/bops-objectlock'

read -d '' OPERATION <<EOF


{
"S3PutObjectLegalHold": {
"LegalHold": {
"Status":"OFF"
}
}
}
EOF

read -d '' MANIFEST <<EOF


{
"Spec": {
"Format": "S3BatchOperations_CSV_20180820",
"Fields": [
"Bucket",
"Key"
]
},
"Location": {
"ObjectArn": "arn:aws:s3:::ManifestBucket/legalhold-object-manifest.csv",
"ETag": "Your-manifest-ETag"
}
}
EOF

read -d '' REPORT <<EOF


{

Versão da API 2006-03-01


799
Amazon Simple Storage Service Guia do usuário
Gerenciar o Bloqueio de objetos do S3

"Bucket": "arn:aws:s3:::ReportBucket",
"Format": "Report_CSV_20180820",
"Enabled": true,
"Prefix": "reports/legalhold-objects-bops",
"ReportScope": "AllTasks"
}
EOF

aws \
s3control create-job \
--account-id "${ACCOUNT_ID}" \
--manifest "${MANIFEST//$'\n'}" \
--operation "${OPERATION//$'\n'/}" \
--report "${REPORT//$'\n'}" \
--priority 10 \
--role-arn "${ROLE_ARN}" \
--client-request-token "$(uuidgen)" \
--region "${AWS_DEFAULT_REGION}" \
--description "Turn off legal hold";

Usar o AWS SDK Java

Example Atualiza a função para conceder permissões s3:PutObjectLegalHold

public void allowPutObjectLegalHold() {


final String roleName = "bops-object-lock";

final String legalHoldPermissions = "{" +


" \"Version\": \"2012-10-17\"," +
" \"Statement\": [" +
" {" +
" \"Effect\": \"Allow\"," +
" \"Action\": [" +
" \"s3:PutObjectLegalHold\"" +
" ]," +
" \"Resource\": [" +
" \"arn:aws:s3:::ManifestBucket/*\"" +
" ]" +
" }" +
" ]" +
"}";

final AmazonIdentityManagement iam =


AmazonIdentityManagementClientBuilder.defaultClient();

final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest()


.withPolicyDocument(legalHoldPermissions)
.withPolicyName("legal-hold-permissions")
.withRoleName(roleName);

final PutRolePolicyResult putRolePolicyResult =


iam.putRolePolicy(putRolePolicyRequest);
}

Example Desativar retenção legal

Use o exemplo abaixo se quiser desativar a retenção legal.

public String createLegalHoldOffJob(final AWSS3ControlClient awss3ControlClient) {


final String manifestObjectArn = "arn:aws:s3:::ManifestBucket/legalhold-object-
manifest.csv";
final String manifestObjectVersionId = "15ad5ba069e6bbc465c77bf83d541385";

Versão da API 2006-03-01


800
Amazon Simple Storage Service Guia do usuário
Copiar objetos em contas da AWS

final JobManifestLocation manifestLocation = new JobManifestLocation()


.withObjectArn(manifestObjectArn)
.withETag(manifestObjectVersionId);

final JobManifestSpec manifestSpec =


new JobManifestSpec()
.withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820)
.withFields("Bucket", "Key");

final JobManifest manifestToPublicApi = new JobManifest()


.withLocation(manifestLocation)
.withSpec(manifestSpec);

final String jobReportBucketArn = "arn:aws:s3:::ReportBucket";


final String jobReportPrefix = "reports/legalhold-objects-bops";

final JobReport jobReport = new JobReport()


.withEnabled(true)
.withReportScope(JobReportScope.AllTasks)
.withBucket(jobReportBucketArn)
.withPrefix(jobReportPrefix)
.withFormat(JobReportFormat.Report_CSV_20180820);

final JobOperation jobOperation = new JobOperation()


.withS3PutObjectLegalHold(new S3SetObjectLegalHoldOperation()
.withLegalHold(new S3ObjectLockLegalHold()
.withStatus(S3ObjectLockLegalHoldStatus.OFF)));

final String roleArn = "arn:aws:iam::123456789012:role/bops-object-lock";


final Boolean requiresConfirmation = true;
final int priority = 10;

final CreateJobRequest request = new CreateJobRequest()


.withAccountId("123456789012")
.withDescription("Turn off legal hold")
.withManifest(manifestToPublicApi)
.withOperation(jobOperation)
.withPriority(priority)
.withRoleArn(roleArn)
.withReport(jobReport)
.withConfirmationRequired(requiresConfirmation);

final CreateJobResult result = awss3ControlClient.createJob(request);

return result.getJobId();
}

Copiar objetos em contas da AWS usando o


Operações em lote do S3
É possível usar operações em lote do S3 para criar uma tarefa de cópia PUT para copiar objetos para
outra conta da AWS (a conta de destino). As seções a seguir explicam como armazenar e usar um
manifesto que está em uma conta diferente da AWS. Na primeira seção, é possível usar o inventário
do Amazon S3 para entregar o relatório do inventário à conta de destino para uso durante a criação do
trabalho ou usar um manifesto de valores separados por vírgula (CSV) na conta de origem ou de destino,
conforme mostrado na segunda seção.

Tópicos
• Usar um relatório de inventário entregue à conta de destino para copiar objetos entre contas da
AWS (p. 802)

Versão da API 2006-03-01


801
Amazon Simple Storage Service Guia do usuário
Copiar objetos em contas da AWS

• Usar um manifesto CSV armazenado na conta de origem para copiar objetos entre contas da
AWS (p. 804)

Usar um relatório de inventário entregue à conta de destino para


copiar objetos entre contas da AWS

Você pode usar o inventário do Amazon S3 para entregar o relatório de inventário à conta de destino para
uso durante a criação do trabalho. Para usar um manifesto CSV na conta de origem ou destino, consulte
the section called “Usar um manifesto CSV armazenado na conta de origem para copiar objetos entre
contas da AWS” (p. 804).

O inventário do Amazon S3 gera inventários dos objetos em um bucket. A lista resultante é publicada em
um arquivo de saída. O bucket do qual foi feito o inventário é chamado de bucket de origem e o bucket no
qual o relatório de inventário é armazenado é chamado de bucket de destino.

O relatório de inventário do Amazon S3 pode ser configurado para ser entregue a outra conta da AWS.
Isso permite que as operações em lote do S3 leiam o relatório de inventário quando a tarefa é criada na
conta de destino da AWS.

Para obter mais informações sobre os buckets de origem e destino do inventário do Amazon S3, consulte
Buckets de origem e destino (p. 605).

A maneira mais fácil de configurar um inventário é usando o Console de Gerenciamento da AWS, mas
você também pode usar a API REST, a interface da linha de comando da AWS (CLI da AWS) ou AWS
SDKs.

O procedimento de console a seguir contém as etapas de alto nível para configurar permissões para um
trabalho de operações em lote do S3. Neste procedimento, você copia objetos de uma conta de origem
para uma conta de destino, com o relatório de inventário armazenado na conta da AWS de destino.

Como configurar o inventário do Amazon S3 para buckets de origem e de destino que são de
propriedade de diferentes contas

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Escolha um bucket de destino no qual armazenar o relatório de inventário.

Escolha um bucket de manifesto de destino para armazenar o relatório de inventário. Neste


procedimento, a conta de destino é a conta que possui tanto o bucket de manifesto de destino como o
bucket no qual os objetos são copiados.
3. Configure um inventário para relacionar objetos em um bucket de origem e publicar a lista em um
bucket de manifesto de destino.

Configure uma lista de inventário para um bucket de origem. Ao fazer isso, você especifica o bucket
de destino no qual deseja que a lista seja armazenada. O relatório de inventário para o bucket de
origem é publicado no bucket de destino. Neste procedimento, a conta de origem é a conta que possui
o bucket de origem.

Para obter informações sobre como usar o console para configurar um inventário, consulte
Configuração do inventário do Amazon S3 (p. 607).

Selecione CSV para o formato de saída.

Ao inserir informações para o bucket de destino, selecione Buckets in another account (Buckets em
outra conta). Em seguida, insira o nome do bucket do manifesto de destino. Se preferir, você poderá
inserir o ID da conta de destino.

Versão da API 2006-03-01


802
Amazon Simple Storage Service Guia do usuário
Copiar objetos em contas da AWS

Após salvar a configuração do inventário, o console exibirá uma mensagem semelhante à seguinte:

O Amazon S3 não conseguiu criar uma política de bucket no bucket de destino. Peça para o
proprietário do bucket de destino adicionar a política de bucket a seguir a fim de permitir que o
Amazon S3 insira dados nele.

O console exibirá, então, uma política de bucket que pode ser usada para o bucket de destino.
4. Copie a política do bucket de destino que aparece no console.
5. Na conta de destino, adicione a política de bucket copiada ao bucket do manifesto de destino no qual
o relatório de inventário está armazenado.
6. Crie uma função na conta de destino baseada na política de confiança do recurso Operações
em lote do S3. Para obter mais informações sobre a política de confiança, consulte Política de
confiança (p. 741).

Para obter mais informações sobre como criar uma função, consulte Criar uma função para delegar
permissões a um serviço da AWS no Guia do usuário do IAM.

Insira um nome para a função (o função do exemplo usa o nome


BatchOperationsDestinationRoleCOPY). Escolha o serviço S3 e selecione o caso de uso S3
bucket Batch Operations (Operações em lote do bucket do S3), que aplica a política de confiança à
função.

Em seguida, selecione Create policy (Criar política) para anexar a política a seguir à função.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBatchOperationsDestinationObjectCOPY",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectVersionAcl",
"s3:PutObjectAcl",
"s3:PutObjectVersionTagging",
"s3:PutObjectTagging",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::ObjectDestinationBucket/*",
"arn:aws:s3:::ObjectSourceBucket/*",
"arn:aws:s3:::ObjectDestinationManifestBucket/*"
]
}
]
}

A função usa a política para conceder ao batchoperations.s3.amazonaws.com permissão


para ler o manifesto no bucket de destino. Ela também concede permissões a objetos GET, listas de
controle de acesso (ACLs), tags e vesões no bucket do objeto de origem. Além disso, ela concede
permissões a objetos PUT, ACLs, tags e versões no bucket do objeto de destino.
7. Na conta de origem, crie uma política de bucket para o bucket de origem que concede a função que
você criou na etapa anterior para objetos GET, ACLs, tags e versões no bucket de origem. Esta etapa

Versão da API 2006-03-01


803
Amazon Simple Storage Service Guia do usuário
Copiar objetos em contas da AWS

permite que as operações em lote do S3 obtenham objetos do bucket de origem por meio da função
de confiança.

Veja a seguir um exemplo da política de bucket para a conta de origem.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBatchOperationsSourceObjectCOPY",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::DestinationAccountNumber:role/
BatchOperationsDestinationRoleCOPY"
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": "arn:aws:s3:::ObjectSourceBucket/*"
}
]
}

8. Depois que o relatório de inventário estiver disponível, crie uma tarefa de cópia do objeto PUT de
operações em lote do S3 na conta de destino escolhendo o relatório de inventário no bucket do
manifesto de destino. Você precisa do ARN para a função que criou na conta de destino.

Para obter informações gerais sobre como criar uma tarefa, consulte Criar um trabalho de operações
em lote do S3 (p. 746).

Para obter informações sobre a criação de um trabalho usando o console, consulte Criar um trabalho
de operações em lote do S3 (p. 746).

Usar um manifesto CSV armazenado na conta de origem para


copiar objetos entre contas da AWS
Você pode usar um arquivo CSV que está armazenado em outra conta da AWS como um manifesto para
uma tarefa de operações em lote do S3. Para usar um relatório de inventário do S3, consulte the section
called “Usar um relatório de inventário entregue à conta de destino para copiar objetos entre contas da
AWS” (p. 802).

O procedimento a seguir mostra como configurar permissões ao usar uma tarefa de operações em lote do
S3 para copiar objetos de uma conta de origem para uma conta de destino com arquivo de manifesto CSV
armazenado na conta de origem.

Para configurar um manifesto CSV armazenado em outra conta da AWS

1. Crie uma função na conta de destino baseada na política de confiança do recurso Operações em lote
do S3. Neste procedimento, a conta de destino é a conta para a qual os objetos estão sendo copiados.

Para obter mais informações sobre a política de confiança, consulte Política de confiança (p. 741).

Para obter mais informações sobre como criar uma função, consulte Criar uma função para delegar
permissões a um serviço da AWS no Guia do usuário do IAM.
Versão da API 2006-03-01
804
Amazon Simple Storage Service Guia do usuário
Copiar objetos em contas da AWS

Se você criar a função usando o console, insira um nome para a função (a função do exemplo usa o
nome BatchOperationsDestinationRoleCOPY). Escolha o serviço S3 e selecione o caso de uso
S3 bucket Batch Operations (Operações em lote do bucket do S3), que aplica a política de confiança à
função.

Em seguida, selecione Create policy (Criar política) para anexar a política a seguir à função.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBatchOperationsDestinationObjectCOPY",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectVersionAcl",
"s3:PutObjectAcl",
"s3:PutObjectVersionTagging",
"s3:PutObjectTagging",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::ObjectDestinationBucket/*",
"arn:aws:s3:::ObjectSourceBucket/*",
"arn:aws:s3:::ObjectSourceManifestBucket/*"
]
}
]
}

Com o uso da política, a função concede permissão ao batchoperations.s3.amazonaws.com


para ler o manifesto no bucket do manifesto de origem. Ela concede permissões a objetos GET, ACLs,
tags e vesões no bucket do objeto de origem. Ela também concede permissões a objetos PUT, ACLs,
tags e versões no bucket do objeto de destino.
2. Na conta de origem, crie uma política de bucket para o bucket que contém o manifesto para conceder
a função que você criou na etapa anterior para objetos GET e versões no bucket do manifesto de
origem.

Esta etapa permite que as operações em lote do S3 leiam o manifesto usando a função confiável.
Aplique a política de bucket ao bucket que contém o manifesto.

Veja a seguir um exemplo da política de bucket para ser aplicada ao bucket do manifesto de origem.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBatchOperationsSourceManfiestRead",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::DestinationAccountNumber:user/
ConsoleUserCreatingJob",
"arn:aws:iam::DestinationAccountNumber:role/
BatchOperationsDestinationRoleCOPY"

Versão da API 2006-03-01


805
Amazon Simple Storage Service Guia do usuário
Monitorar um trabalho do Operações em lote

]
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::ObjectSourceManifestBucket/*"
}
]
}

Esta poítica também concede ao usuário de um console que está criando uma tarefa na conta de
destino as mesmas permissões no bucket do manifesto de origem por meio da mesma política de
bucket.
3. Na conta de origem, crie uma política de bucket para o bucket de origem que concede a função que
você criou para objetos GET, ACLs, tags e versões no bucket de origem. O Operações em lote do S3
pode então obter objetos do bucket de origem por meio da função confiável.

Veja a seguir um exemplo da política de bucket para o bucket que contém os objetos de origem.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBatchOperationsSourceObjectCOPY",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::DestinationAccountNumber:role/
BatchOperationsDestinationRoleCOPY"
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": "arn:aws:s3:::ObjectSourceBucket/*"
}
]
}

4. Crie um trabalho de operações em lote do S3 na conta de destino. Você precisa do nome de recurso
da Amazon (ARN) para a função que criou na conta de destino.

Para obter informações gerais sobre como criar uma tarefa, consulte Criar um trabalho de operações
em lote do S3 (p. 746).

Para obter informações sobre a criação de um trabalho usando o console, consulte Criar um trabalho
de operações em lote do S3 (p. 746).

Monitorar um trabalho do Operações em lote do S3 no


Amazon EventBridge por meio do AWS CloudTrail
A atividade de trabalho de operações em lote do Amazon S3 é registrada como eventos no AWS
CloudTrail. Você pode criar uma regra personalizada no Amazon EventBridge e enviar esses eventos para

Versão da API 2006-03-01


806
Amazon Simple Storage Service Guia do usuário
Monitorar um trabalho do Operações em lote

o recurso de notificação de destino de sua escolha, como o Amazon Simple Notification Service (Amazon
SNS).
Note

O Amazon EventBridge é a maneira preferida de gerenciar seus eventos. O Amazon CloudWatch


Events e o EventBridge são o mesmo serviço subjacente e API, mas o EventBridge oferece mais
recursos. As alterações feitas no CloudWatch ou no EventBridge aparecem em cada console.
Para obter mais informações, consulte o Guia do usuário do Amazon EventBridge.

Tópicos
• Eventos de operações em lote do S3 emitidos para o CloudTrail (p. 807)
• Usar uma regra do EventBridge para rastrear eventos de trabalho de operações em lote do
S3 (p. 808)

Eventos de operações em lote do S3 emitidos para o CloudTrail

Quando um trabalho de operações em lote é criado, ele é gravado como um evento JobCreated no
CloudTrail. À medida que o trabalho é executado, ele muda de estado durante o processamento e outros
eventos JobStatusChanged são registrados no CloudTrail. Você pode visualizar esses eventos no
console do CloudTrail. Para obter mais informações sobre o CloudTrail, consulte o Guia do usuário do
AWS CloudTrail.
Note

Somente eventos status-change de trabalho de operações em lote do S3 são registrados no


CloudTrail.

Example — evento de conclusão de trabalho de operações em lote do S3 registrado pelo


CloudTrail

{
"eventVersion": "1.05",
"userIdentity": {
"accountId": "123456789012",
"invokedBy": "s3.amazonaws.com"
},
"eventTime": "2020-02-05T18:25:30Z",
"eventSource": "s3.amazonaws.com",
"eventName": "JobStatusChanged",
"awsRegion": "us-west-2",
"sourceIPAddress": "s3.amazonaws.com",
"userAgent": "s3.amazonaws.com",
"requestParameters": null,
"responseElements": null,
"eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
"readOnly": false,
"eventType": "AwsServiceEvent",
"recipientAccountId": "123412341234",
"serviceEventDetails": {
"jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
"jobArn": "arn:aws:s3:us-west-2:181572960644:job/
d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
"status": "Complete",
"jobEventId": "b268784cf0a66749f1a05bce259804f5",
"failureCodes": [],
"statusChangeReason": []
}
}

Versão da API 2006-03-01


807
Amazon Simple Storage Service Guia do usuário
Monitorar um trabalho do Operações em lote

Usar uma regra do EventBridge para rastrear eventos de trabalho


de operações em lote do S3
O exemplo a seguir mostra como criar uma regra no Amazon EventBridge para capturar eventos de
operações em lote do S3 registrados pelo AWS CloudTrail para um destino de sua escolha.

Para fazer isso, você cria uma regra seguindo todas as etapas em Criar uma regra do EventBridge
acionada em uma chamada de API da AWS usando o CloudTrail. Cole a política de padrão de evento
personalizada de operações em lote do S3, quando aplicável, e selecione o serviço de destino de sua
escolha.

Política de padrão de evento personalizado de operações em lote do S3

{
"source": [
"aws.s3"
],
"detail-type": [
"AWS Service Event via CloudTrail"
],
"detail": {
"eventSource": [
"s3.amazonaws.com"
],
"eventName": [
"JobCreated",
"JobStatusChanged"
]
}
}

Os exemplos a seguir são dois eventos de operações em lote que foram enviados para o Amazon Simple
Queue Service (Amazon SQS) a partir de uma regra de evento do EventBridge. Um trabalho de operações
em lote passa por vários estados diferentes durante o processamento (New, Preparing, Active etc.),
portanto, você pode esperar receber várias mensagens para cada trabalho.

Example - Evento de exemplo JobCreated

{
"version": "0",
"id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
"detail-type": "AWS Service Event via CloudTrail",
"source": "aws.s3",
"account": "123456789012",
"time": "2020-02-27T15:25:49Z",
"region": "us-east-1",
"resources": [],
"detail": {
"eventVersion": "1.05",
"userIdentity": {
"accountId": "11112223334444",
"invokedBy": "s3.amazonaws.com"
},
"eventTime": "2020-02-27T15:25:49Z",
"eventSource": "s3.amazonaws.com",
"eventName": "JobCreated",
"awsRegion": "us-east-1",
"sourceIPAddress": "s3.amazonaws.com",
"userAgent": "s3.amazonaws.com",
"eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",

Versão da API 2006-03-01


808
Amazon Simple Storage Service Guia do usuário
Relatórios de conclusão

"readOnly": false,
"eventType": "AwsServiceEvent",
"serviceEventDetails": {
"jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
"jobArn": "arn:aws:s3:us-east-1:181572960644:job/
e849b567-5232-44be-9a0c-40988f14e80c",
"status": "New",
"jobEventId": "f177ff24f1f097b69768e327038f30ac",
"failureCodes": [],
"statusChangeReason": []
}
}
}

Example - Evento de exemplo JobStatusChanged para quando um trabalho é concluído

{
"version": "0",
"id": "c8791abf-2af8-c754-0435-fd869ce25233",
"detail-type": "AWS Service Event via CloudTrail",
"source": "aws.s3",
"account": "123456789012",
"time": "2020-02-27T15:26:42Z",
"region": "us-east-1",
"resources": [],
"detail": {
"eventVersion": "1.05",
"userIdentity": {
"accountId": "1111222233334444",
"invokedBy": "s3.amazonaws.com"
},
"eventTime": "2020-02-27T15:26:42Z",
"eventSource": "s3.amazonaws.com",
"eventName": "JobStatusChanged",
"awsRegion": "us-east-1",
"sourceIPAddress": "s3.amazonaws.com",
"userAgent": "s3.amazonaws.com",
"eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
"readOnly": false,
"eventType": "AwsServiceEvent",
"serviceEventDetails": {
"jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
"jobArn": "arn:aws:s3:us-east-1:181572960644:job/
e849b567-5232-44be-9a0c-40988f14e80c",
"status": "Complete",
"jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
"failureCodes": [],
"statusChangeReason": []
}
}
}

Relatórios de conclusão do Operações em lote do S3


Ao criar uma trabalho de operações em lote do S3, você pode solicitar um relatório de conclusão para
todas as tarefas ou somente para aquelas que apresentaram falha. Contanto que pelo menos uma tarefa
tenha sido invocada com êxito, as operações em lote do S3 geram um relatório para tarefas que foram
concluídas, que falharam ou que foram canceladas.

O relatório de conclusão contém informações adicionais de cada tarefa, inclusive a chave e a versão do
objeto, status, códigos de erro e descrições de qualquer erro. A descrição dos erros para cada tarefa com
falha pode ser usada para diagnosticar problemas durante a criação de trabalhos, como permissões.

Versão da API 2006-03-01


809
Amazon Simple Storage Service Guia do usuário
Relatórios de conclusão

Example - arquivo de resultado do manifesto de nível superior


O arquivo manifest.json de nível superior contém os locais de cada relatório bem-sucedido e (se a
tarefa apresentou qualquer falha) o local de relatórios com falha, conforme mostrado no exemplo a seguir.

{
"Format": "Report_CSV_20180820",
"ReportCreationDate": "2019-04-05T17:48:39.725Z",
"Results": [
{
"TaskExecutionStatus": "succeeded",
"Bucket": "my-job-reports",
"MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
"Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/
results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
},
{
"TaskExecutionStatus": "failed",
"Bucket": "my-job-reports",
"MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
"Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/
b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
}
],
"ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode,
ResultMessage"
}

Example - relatórios de tarefas com falha


Relatórios de tarefas com falha contêm as seguintes informações para todas as tarefas com falha:

• Bucket
• Key
• VersionId
• TaskStatus
• ErrorCode
• HTTPStatusCode
• ResultMessage

O exemplo de relatório a seguir mostra um caso no qual a função do AWS Lambda atingiu o tempo
limite, fazendo com que as falhas excedessem o limite de falhas. Ela foi então marcado como um
PermanentFailure.

awsexamplebucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error:


{""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task
timed out after 3.00 seconds""}"
awsexamplebucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error:
{""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task
timed out after 3.00 seconds""}"
awsexamplebucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error:
{""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task
timed out after 3.00 seconds""}"
awsexamplebucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error:
{""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task
timed out after 3.00 seconds""}"
awsexamplebucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error:
{""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task
timed out after 3.00 seconds""}"

Versão da API 2006-03-01


810
Amazon Simple Storage Service Guia do usuário
Relatórios de conclusão

awsexamplebucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error:


{""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task
timed out after 3.00 seconds""}"

Example - relatório de tarefas bem-sucedidas

Os relatórios de tarefas bem-sucedidas contêm o seguinte para as tarefas concluídas:

• Bucket
• Key
• VersionId
• TaskStatus
• ErrorCode
• HTTPStatusCode
• ResultMessage

No exemplo a seguir, a função do Lambda copiou com êxito o objeto do Amazon S3 para outro bucket.
A resposta retornada do Amazon S3 é passada de volta para operações em lote do S3 e, em seguida, é
gravada no relatório de conclusão final.

awsexamplebucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId':
'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified':
datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag':
'""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode':
200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/
iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders':
{'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/
iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id':
'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id':
'3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/
xml'}}}"
awsexamplebucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId':
'6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified':
datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()),
u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata':
{'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/
Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId':
'1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/
Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-
version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id':
'1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/
xml'}}}"
awsexamplebucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId':
'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified':
datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag':
'""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode':
200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir
+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders':
{'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir
+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id':
'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id':
'8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/
xml'}}}"

Versão da API 2006-03-01


811
Amazon Simple Storage Service Guia do usuário
Ferramentas de monitoramento

Monitorar o Amazon S3
O monitoramento é uma parte importante para manter a confiabilidade, a disponibilidade e a performance
do Amazon S3 e das soluções da AWS. Você deve coletar dados de monitoramento de todas as partes da
solução da AWS para que possa depurar com mais facilidade uma falha de vários pontos, caso ela ocorra.
Antes de começar a monitorar o Amazon S3, crie um plano de monitoramento que inclua as respostas para
as seguintes perguntas:

• Quais são seus objetivos de monitoramento?


• Quais recursos você vai monitorar?
• Com que frequência você vai monitorar esses recursos?
• Quais ferramentas de monitoramento você usará?
• Quem realizará o monitoramento das tarefas?
• Quem deve ser notificado quando algo der errado?

Para obter mais informações sobre registro em log e monitoramento no Amazon S3, consulte os tópicos a
seguir.

Tópicos
• Ferramentas de monitoramento (p. 812)
• Opções de registro em log para o Amazon S3 (p. 813)
• Registrar em log chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815)
• Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833)
• Monitoramento de métricas com o Amazon CloudWatch (p. 855)
• Notificações de eventos do Amazon S3 (p. 869)

Ferramentas de monitoramento
A AWS fornece várias ferramentas que você pode usar para monitorar o Amazon S3. Você pode configurar
algumas dessas ferramentas para fazer o monitoramento em seu lugar, e, ao mesmo tempo, algumas
das ferramentas exigem intervenção manual. Recomendamos que as tarefas de monitoramento sejam
automatizadas ao máximo possível.

Ferramentas de monitoramento automatizadas


É possível usar as seguintes ferramentas automatizadas de monitoramento para supervisionar o Amazon
S3 e gerar relatórios quando algo estiver errado:

• Amazon CloudWatch Alarms (Alarmes do Amazon CloudWatch): observe uma única métrica ao longo de
um período que você especificar e realize uma ou mais ações com base no valor da métrica em relação
a um determinado limite ao longo de vários períodos. A ação é uma notificação enviada para um tópico
do Amazon Simple Notification Service (Amazon SNS) ou uma política do Amazon EC2 Auto Scaling. Os
alarmes do CloudWatch não invocam ações só porque estão em um determinado estado. O estado deve
ter sido alterado e mantido por uma quantidade especificada de períodos. Para obter mais informações,
consulte Monitoramento de métricas com o Amazon CloudWatch (p. 855).

Versão da API 2006-03-01


812
Amazon Simple Storage Service Guia do usuário
Ferramentas manuais

• AWS CloudTrail Log Monitoring (Monitoramento de log do AWS CloudTrail): compartilhe arquivos de log
entre contas, monitore os arquivos de log do CloudTrail em tempo real enviando-os para o CloudWatch
Logs, escreva aplicações de processamento de logs em Java e confirme se os arquivos de log não
foram alterados após a entrega pelo CloudTrail. Para obter mais informações, consulte Registrar em log
chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815).

Ferramentas de monitoramento manual


Outra parte importante do monitoramento do Amazon S3 é o monitoramento manual dos itens que os
alarmes do CloudWatch não abrangem. O Amazon S3, o CloudWatch, o Trusted Advisor e outros painéis
do Console de Gerenciamento da AWS fornecem uma visão rápida do estado do seu ambiente da AWS.
Você pode permitir o registro em log de acesso ao servidor, que acompanha as solicitações de acesso
ao seu bucket. Cada registro de log de acesso fornece detalhes sobre uma única solicitação de acesso,
como solicitante, nome do bucket, horário da solicitação, ação da solicitação, status de resposta e código
de erro, se houver. Para obter mais informações, consulte Registrar em log as solicitações com registro em
log de acesso ao servidor (p. 833).

• O painel do Amazon S3 mostra o seguinte:


• Seus buckets, objetos e propriedades que contêm
• A página inicial do CloudWatch mostra o seguinte:
• Alertas e status atual
• Gráficos de alertas e recursos
• Estado de integridade do serviço

Além disso, é possível usar o CloudWatch para fazer o seguinte:


• Criar painéis personalizados para monitorar os serviços com os quais você se preocupa.
• Colocar em gráfico dados de métrica para solucionar problemas e descobrir tendências.
• Pesquisar e procurar todas as métricas de recursos da AWS.
• Criar e editar alarmes para ser notificado sobre problemas.
• O AWS Trusted Advisor pode ajudar a monitorar os recursos da AWS para melhorar o desempenho, a
confiabilidade, a segurança e a economia. Quatro verificações do Trusted Advisor estão disponíveis a
todos os usuários; mais de 50 verificações estão disponíveis para usuários com um plano de suporte
Business ou Enterprise. Para obter mais informações, consulte AWS Trusted Advisor.

O Trusted Advisor tem essas verificações relacionadas ao Amazon S3:


• Verificações da configuração de registro em log dos buckets do Amazon S3.
• Verificações de segurança para buckets do Amazon S3 que têm permissões de acesso livre.
• Verificações de tolerância a falhas para buckets do Amazon S3 que não têm versionamento habilitado
ou têm versionamento suspenso.

Opções de registro em log para o Amazon S3


É possível registrar as ações que são realizadas por usuários, funções ou serviços da AWS em recursos
do Amazon S3 e manter registros de log para fins de auditoria e conformidade. Para fazer isso, você
pode usar o registro em log de acesso ao servidor do AWS CloudTrail ou uma combinação de ambos.
Recomendamos que você use o AWS CloudTrail para registrar em log ações no nível de bucket e objeto
para seus recursos do Amazon S3. Para obter mais informações sobre cada opção, consulte as seguintes
seções:

• Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833)
• Registrar em log chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815)

Versão da API 2006-03-01


813
Amazon Simple Storage Service Guia do usuário
Opções de registro em log

A tabela a seguir lista as principais propriedades dos logs do AWS CloudTrail e dos logs de acesso ao
servidor do Amazon S3. Analise a tabela e as observações para garantir que o AWS CloudTrail atenda aos
seus requisitos de segurança.

Propriedades de log AWS CloudTrail Logs do servidor do Amazon S3

Pode ser encaminhado para Sim


outros sistemas (CloudWatch
Logs, CloudWatch Events)

Entregue logs para mais de um Sim


destino (por exemplo, envie os
mesmos logs para dois buckets
diferentes)

Ative logs para um subconjunto Sim


de objetos (prefixo)

Entrega de logs entre contas Sim


(bucket de origem e de destino
pertencentes a contas diferentes)

Validação de integridade do Sim


arquivo de log usando assinatura
digital/hashing

Padrão/opção de criptografia Sim


para arquivos de log

Operações de objeto (usando Sim Sim


APIs do Amazon S3)

Operações de bucket (usando Sim Sim


APIs do Amazon S3)

UI pesquisável para logs Sim

Campos para parâmetros Sim


de bloqueio de objetos,
propriedades selecionadas do
Amazon S3 para registros de log

Campos de Object Size, Sim


Total Time, Turn-Around
Time e HTTP Referer para
registros de log

Transições, expirações e Sim


restaurações do ciclo de vida

Registro de chaves em uma Sim


operação de exclusão em lote
1
Falhas de autenticação Sim
2
Contas em que logs são Proprietário do bucket e Somente proprietário do bucket
entregues solicitante

Performance and Cost AWS CloudTrail Amazon S3 Server Logs

Versão da API 2006-03-01


814
Amazon Simple Storage Service Guia do usuário
Registrar em log com o CloudTrail

Propriedades de log AWS CloudTrail Logs do servidor do Amazon S3

Preço Os eventos de gerenciamento Nenhum custo adicional além do


(primeira entrega) são gratuitos. armazenamento de logs
Os eventos de dados incorrem
em uma taxa, além do
armazenamento de logs

Velocidade da entrega de logs Eventos de dados a cada Em algumas horas


5 minutos. Eventos de
gerenciamento a cada 15
minutos

Formato do log JSON Arquivo de log com registros


delimitados por novas linhas e
separados por espaços

Observações:

1. O CloudTrail não entrega logs para solicitações com falha de autenticação (nas quais as credenciais
fornecidas não são válidas). No entanto, ele inclui logs para solicitações nas quais a autorização falha
(AccessDenied) e as solicitações são feitas por usuários anônimos.
2. O proprietário do bucket do S3 recebe logs do CloudTrail somente se o conta possuir ou tiver acesso
total ao objeto na solicitação. Para obter mais informações, consulte Ações do nível de objetos em
cenários entre contas (p. 820).

Registrar em log chamadas de API do Amazon S3


usando o AWS CloudTrail
O Amazon S3 é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas
por um usuário, uma função ou um serviço da AWS no Amazon S3. O CloudTrail captura um subconjunto
de chamadas de API para o Amazon S3 como eventos, incluindo chamadas do console do Amazon S3 e
chamadas de código para as APIs do Amazon S3.

Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail para um bucket
do Amazon S3, incluindo eventos para o Amazon S3. Se você não configurar uma trilha, ainda poderá
visualizar os eventos mais recentes no console do CloudTrail em Event history (Histórico de eventos).
Usando as informações coletadas pelo CloudTrail, é possível determinar a solicitação feita para o Amazon
S3, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes
adicionais.

Para saber mais sobre o CloudTrail, incluindo como configurá-lo e ativá-lo, consulte o Guia do usuário do
AWS CloudTrail.

Usar logs do CloudTrail com logs de acesso ao


servidor do Amazon S3 e CloudWatch Logs
Os logs do AWS CloudTrail fornecem os registros das ações tomadas por um usuário, uma função ou um
serviço da AWS no Amazon S3, enquanto os logs de acesso do servidor do Amazon S3 oferecem registros
das solicitações feitas a um bucket do S3. Para obter mais informações sobre como os diferentes registros
funcionam e as propriedades, a performance e os custos deles, consulte the section called “Opções de
registro em log” (p. 813).

Versão da API 2006-03-01


815
Amazon Simple Storage Service Guia do usuário
Rastreamento do CloudTrail com
chamadas de API SOAP do Amazon S3

Você pode usar logs do AWS CloudTrail junto com logs de acesso ao servidor para o Amazon S3. Os logs
do CloudTrail fornecem rastreamento detalhado de API para operações no nível de bucket e objeto do
Amazon S3. Os logs de acesso ao servidor do Amazon S3 fornecem visibilidade em operações no nível
de objeto em seus dados no Amazon S3. Para obter mais informações sobre logs de acesso ao servidor,
consulte Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833).

Você também pode usar logs do CloudTrail junto com o CloudWatch para Amazon S3. A integração do
CloudTrail com o CloudWatch Logs entrega as atividades de API no nível do bucket do S3 capturadas pelo
CloudTrail a um stream de logs do CloudWatch no grupo de logs do CloudWatch especificado. Você pode
criar alarmes do CloudWatch para monitoramento de atividade específica de API e receber notificações
por e-mail quando a atividade específica de API ocorrer. Para obter mais informações sobre alarmes do
CloudWatch para monitorar atividades específicas da API, consulte o Guia do usuário do AWS CloudTrail.
Para obter mais informações sobre como usar o CloudWatch com o Amazon S3, consulte Monitoramento
de métricas com o Amazon CloudWatch (p. 855).

Rastreamento do CloudTrail com chamadas de API


SOAP do Amazon S3
O CloudTrail rastreia as chamadas de API SOAP do Amazon S3. O suporte de SOAP via HTTP do
Amazon S3 está obsoleto, mas continua disponível via HTTPS. Para obter mais informações sobre o
suporte SOAP do Amazon S3, consulte Apêndice A: Usar a API SOAP (p. 1055).
Important

Os novos recursos do Amazon S3 não são compatíveis com o SOAP. Recomendamos que você
use a API REST ou os AWS SDKs.

Ações SOAP do Amazon S3 rastreadas pelo registro em log do CloudTrail

Nome da API SOAP Nome do evento da API usado no log do CloudTrail

ListAllMyBuckets ListBuckets

CreateBucket CreateBucket

DeleteBucket DeleteBucket

GetBucketAccessControlPolicy GetBucketAcl

SetBucketAccessControlPolicy PutBucketAcl

GetBucketLoggingStatus GetBucketLogging

SetBucketLoggingStatus PutBucketLogging

Para obter mais informações sobre o CloudTrail e o Amazon S3, consulte os seguintes tópicos:

Tópicos
• Eventos do CloudTrail no Amazon S3 (p. 817)
• Entradas de arquivo de log do CloudTrail para Amazon S3 e Amazon S3 no Outposts (p. 821)
• Habilitar o log de eventos do CloudTrail para buckets e objetos do S3 (p. 825)
• Identificar solicitações do Amazon S3 usando o CloudTrail (p. 826)

Versão da API 2006-03-01


816
Amazon Simple Storage Service Guia do usuário
CloudTrail events

Eventos do CloudTrail no Amazon S3


O CloudTrail é habilitado em sua conta da AWS quando ela é criada. Quando a atividade do evento
compatível ocorrer no Amazon S3, ela será registrada em um evento do CloudTrail juntamente com outros
eventos de serviços da AWS no Event history (Histórico de eventos). Você pode visualizar, pesquisar
e fazer download de eventos recentes em sua conta da AWS. Para obter mais informações, consulte
Visualizar eventos com o histórico de eventos do CloudTrail.

Para obter um registro de eventos em andamento na sua conta da AWS, incluindo eventos do Amazon S3,
crie uma trilha. Uma trilha permite que o CloudTrail entregue arquivos de log para um bucket do Amazon
S3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as regiões. A trilha registra
em log os eventos de todas as regiões na partição da AWS e entrega os arquivos de log ao bucket do
Amazon S3 especificado por você. Além disso, você pode configurar outros serviços da AWS para analisar
mais profundamente e agir sobre os dados de eventos coletados nos logs do CloudTrail. Para obter mais
informações, consulte:

• Criar uma trilha para a conta da AWS


• Integrações de serviços da AWS com logs do CloudTrail
• Configuração de notificações do Amazon SNS para o CloudTrail
• Recebimento de arquivos de log do CloudTrail de várias regiões
• Recebimento de arquivos de log do CloudTrail de várias contas

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de
identidade ajudam a determinar:

• Se a solicitação foi feita com credenciais de usuário raiz ou do IAM.


• Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuário
federado.
• Se a solicitação foi feita por outro serviço da AWS.

Para mais informações, consulte o Elemento userIdentity do CloudTrail.

Você pode armazenar arquivos de log no bucket pelo tempo que desejar, mas também pode definir regras
do ciclo de vida do Amazon S3 para arquivar ou excluir os arquivos de log automaticamente. Por padrão,
os arquivos de log são criptografados usando-se Server-Side Encryption (SSE - Criptografia do lado do
servidor) do Amazon S3.

Como o CloudTrail captura solicitações feitas para o Amazon S3


Por padrão, o CloudTrail registra chamadas de API no nível de buckets do S3 que foram feitas nos últimos
90 dias, mas não registra solicitações feitas a objetos. As chamadas no nível de buckets incluem eventos
como CreateBucket, DeleteBucket, PutBucketLifeCycle, PutBucketPolicy, etc. Você pode
ver eventos no nível do bucket no console do CloudTrail. No entanto, não é possível visualizar eventos
de dados (chamadas no nível do objeto do Amazon S3). Você deve analisar ou consultar os logs do
CloudTrail para eles.

Para obter informações sobre quais chamadas de API do Amazon S3 são capturadas pelo CloudTrail,
consulte Eventos do CloudTrail no Amazon S3 (p. 817).

Versão da API 2006-03-01


817
Amazon Simple Storage Service Guia do usuário
CloudTrail events

Ações no nível da conta do Amazon S3 rastreadas pelo registro


em log do CloudTrail
O CloudTrail registra ações no nível da conta. Os registros do Amazon S3 são gravados com outros
registros de serviço da AWS em um arquivo de log. O CloudTrail determina quando criar e gravar em um
novo arquivo de acordo com o período e o tamanho do arquivo.

As tabelas nesta seção listam as ações no nível da conta do Amazon S3 que são compatíveis com o
registro do CloudTrail.

Ações de API no nível da conta do Amazon S3 rastreadas pelo registro em log do CloudTrail aparecem
como os seguintes nomes de eventos:

• DeletePublicAccessBlock
• GetPublicAccessBlock
• PutPublicAccessBlock

Ações no nível do bucket do Amazon S3 rastreadas pelo registro


em log do CloudTrail
Por padrão, o CloudTrail registra ações no nível do bucket. Os registros do Amazon S3 são gravados com
outros registros de serviço da AWS em um arquivo de log. O CloudTrail determina quando criar e gravar
em um novo arquivo de acordo com o período e o tamanho do arquivo.

As tabelas nesta seção listam as ações do nível do bucket do Amazon S3 que são compatíveis com o
registro em log do CloudTrail.

Ações de API no nível do bucket do Amazon S3 rastreadas pelo registro em log do CloudTrail aparecerão
como os seguintes nomes de eventos:

• CreateBucket
• DeleteBucket
• DeleteBucketCors
• DeleteBucketEncryption
• DeleteBucketLifecycle
• DeleteBucketPolicy
• DeleteBucketReplication
• DeleteBucketTagging
• DeletePublicAccessBlock
• GetBucketCors
• GetBucketEncryption
• GetBucketLifecycle
• GetBucketLocation
• GetBucketLogging
• GetBucketNotification
• GetBucketPolicy
• GetBucketReplication
• GetBucketRequestPayment
• GetBucketTagging
• GetBucketVersioning

Versão da API 2006-03-01


818
Amazon Simple Storage Service Guia do usuário
CloudTrail events

• GetBucketWebsite
• GetPublicAccessBlock
• ListBuckets
• PutBucketAcl
• PutBucketCors
• PutBucketEncryption
• PutBucketLifecycle
• PutBucketLogging
• PutBucketNotification
• PutBucketPolicy
• PutBucketReplication
• PutBucketRequestPayment
• PutBucketTagging
• PutBucketVersioning
• PutBucketWebsite
• PutPublicAccessBlock

Além dessas operações de API, também é possível usar a ação OPTIONS object do nível do objeto. Essa
ação é tratada como uma ação do nível do bucket no registro do CloudTrail, pois verifica a configuração
cors de um bucket.

Ações no nível do objeto do Amazon S3 rastreadas pelo registro


em log do AWS CloudTrail
Você também pode obter logs do CloudTrail para ações do Amazon S3 no nível do objeto. Para fazer isso,
ative eventos de dados para o bucket do S3 ou todos os buckets em sua conta. Quando uma ação do nível
do objeto ocorre em sua conta, o CloudTrail avalia suas configurações de trilha. Se o evento corresponder
ao objeto que você especificou em uma trilha, o evento será registrado. Para obter mais informações,
consulte Habilitar o log de eventos do CloudTrail para buckets e objetos do S3 (p. 825) e Registrar em
log eventos de dados para trilhas no Guia do usuário do AWS CloudTrail.

As seguintes ações de API no nível do objeto são registradas como eventos do CloudTrail:

• AbortMultipartUpload
• CompleteMultipartUpload
• DeleteObjects
• DeleteObject
• GetObject
• GetObjectAcl
• GetObjectTagging
• GetObjectTorrent
• HeadObject
• CreateMultipartUpload
• ListParts
• PostObject
• RestoreObject
• PutObject

Versão da API 2006-03-01


819
Amazon Simple Storage Service Guia do usuário
CloudTrail events

• PutObjectAcl
• PutObjectTagging
• CopyObject
• UploadPart
• UploadPartCopy

Além dessas operações, você pode usar as seguintes operações do nível do bucket para obter logs do
CloudTrail como ações do nível do objeto do Amazon S3 sob certas condições:

• GET Bucket Object (List Objects) (GET Bucket Object (Listar objetos) Versão 2: selecione um prefixo
especificado na trilha.
• GET Bucket Object Versions (List Object Versions (GET Bucket Object Versions (Listar versões do
objeto)): selecione um prefixo especificado na trilha.
• Bucket HEAD: especifique um bucket e um prefixo vazio.
• Excluir vários objetos: especifique um bucket e um prefixo vazio.
Note

O CloudTrail não registra nomes de chaves para as chaves excluídas usando a operação
Excluir vários objetos.

Ações do nível de objetos em cenários entre contas


Os seguintes são casos de uso especiais que envolvem chamadas de API do nível do objeto em cenários
entre contas e como os logs do CloudTrail são relatados. O CloudTrail entrega sempre logs ao solicitante
(quem fez a chamada da API). Para estabelecer acesso entre contas, considere os exemplos nesta seção.
Note

Os exemplos supõem que os logs do CloudTrail estejam configurados adequadamente.

Exemplo 1: O CloudTrail entrega logs de acesso ao proprietário do bucket

O CloudTrail só entrega os logs de acesso ao proprietário do bucket se o proprietário do bucket tiver


permissão para a mesma API de objeto. Considere o seguinte cenário entre contas:

• A conta A possui o bucket.


• A Conta-B (o solicitante) tenta acessar um objeto nesse bucket.

O CloudTrail entrega sempre os logs de acesso da API do nível do objeto ao solicitante. Além disso, o
CloudTrail também entrega os mesmo logs ao proprietário do bucket somente se o proprietário do bucket
tiver permissões para as mesmas ações da API sobre esse objeto.
Note

Se o proprietário do bucket também for o proprietário do objeto, o proprietário do bucket obtém


os logs de acesso do objeto. Caso contrário, o proprietário do bucket deve obter permissões, por
meio da ACL do objeto, para a mesma API do objeto para obter os logs da API de acesso aos
objetos.

Exemplo 2: O CloudTrail não prolifera os endereços de e-mail usados nas configurações das
ACLs de objeto

Considere o seguinte cenário entre contas:

• A conta A possui o bucket.

Versão da API 2006-03-01


820
Amazon Simple Storage Service Guia do usuário
Exemplos de arquivos de log

• A Conta-B (solicitante) envia uma solicitação para definir uma concessão de ACL de objeto usando um
endereço de e-mail. Para obter informações sobre ACLs, consulte Visão geral da lista de controle de
acesso (ACL) (p. 440).

A solicitação obtém os logs junto com as informações do e-mail. Contudo, o proprietário do bucket - se
for qualificado para receber logs como no exemplo 1 - recebe o log do CloudTrail que relata o evento.
Contudo, o proprietário do bucket não obtém as informações de configuração da ACL, especificamente
o e-mail do favorecido e a concessão. A única informação que o log dá ao proprietário do bucket é que a
chamada da API da ACL foi feita pela Conta-B.

Entradas de arquivo de log do CloudTrail para


Amazon S3 e Amazon S3 no Outposts
Uma trilha é uma configuração que permite a entrega de eventos como registros de log a um bucket do
Amazon S3 especificado. Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Um
evento representa uma solicitação única de qualquer fonte. Isso inclui informações sobre a ação solicitada,
a data e hora da ação, os parâmetros de solicitação, e assim por diante. Os arquivos de log do CloudTrail
não são um rastreamento de pilha ordenada das chamadas de API pública. Dessa forma, eles não são
exibidos em uma ordem específica.

Para obter mais informações, veja os exemplos a seguir:

Tópicos
• Exemplo: entrada de arquivo de log do CloudTrail para o Amazon S3 (p. 821)
• Exemplo: entradas de arquivo de log do Amazon S3 no Outposts (p. 823)

Exemplo: entrada de arquivo de log do CloudTrail para o Amazon


S3
O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra as ações Serviço GET, ACL
de PUT Bucket e Versionamento de GET Bucket.

{
"Records": [
{
"eventVersion": "1.03",
"userIdentity": {
"type": "IAMUser",
"principalId": "111122223333",
"arn": "arn:aws:iam::111122223333:user/myUserName",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "myUserName"
},
"eventTime": "2019-02-01T03:18:19Z",
"eventSource": "s3.amazonaws.com",
"eventName": "ListBuckets",
"awsRegion": "us-west-2",
"sourceIPAddress": "127.0.0.1",
"userAgent": "[]",
"requestParameters": {
"host": [
"s3.us-west-2.amazonaws.com"
]
},
"responseElements": null,

Versão da API 2006-03-01


821
Amazon Simple Storage Service Guia do usuário
Exemplos de arquivos de log

"additionalEventData": {
"SignatureVersion": "SigV2",
"AuthenticationMethod": "QueryString"
},
"requestID": "47B8E8D397DCE7A6",
"eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8",
"eventType": "AwsApiCall",
"recipientAccountId": "111122223333"
},
{
"eventVersion": "1.03",
"userIdentity": {
"type": "IAMUser",
"principalId": "111122223333",
"arn": "arn:aws:iam::111122223333:user/myUserName",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "myUserName"
},
"eventTime": "2019-02-01T03:22:33Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutBucketAcl",
"awsRegion": "us-west-2",
"sourceIPAddress": "",
"userAgent": "[]",
"requestParameters": {
"bucketName": "",
"AccessControlPolicy": {
"AccessControlList": {
"Grant": {
"Grantee": {
"xsi:type": "CanonicalUser",
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"ID":
"d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
},
"Permission": "FULL_CONTROL"
}
},
"xmlns": "http://s3.amazonaws.com/doc/2006-03-01/",
"Owner": {
"ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
}
}
"host": [
"s3.us-west-2.amazonaws.com"
],
"acl": [
""
]
},
"responseElements": null,
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "ECDHE-RSA-AES128-SHA",
"AuthenticationMethod": "AuthHeader"
},
"requestID": "BD8798EACDD16751",
"eventID": "607b9532-1423-41c7-b048-ec2641693c47",
"eventType": "AwsApiCall",
"recipientAccountId": "111122223333"
},
{
"eventVersion": "1.03",
"userIdentity": {
"type": "IAMUser",

Versão da API 2006-03-01


822
Amazon Simple Storage Service Guia do usuário
Exemplos de arquivos de log

"principalId": "111122223333",
"arn": "arn:aws:iam::111122223333:user/myUserName",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "myUserName"
},
"eventTime": "2019-02-01T03:26:37Z",
"eventSource": "s3.amazonaws.com",
"eventName": "GetBucketVersioning",
"awsRegion": "us-west-2",
"sourceIPAddress": "",
"userAgent": "[]",
"requestParameters": {
"host": [
"s3.us-west-2.amazonaws.com"
],
"bucketName": "DOC-EXAMPLE-BUCKET1",
"versioning": [
""
]
},
"responseElements": null,
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "ECDHE-RSA-AES128-SHA",
"AuthenticationMethod": "AuthHeader",
},
"requestID": "07D681279BD94AED",
"eventID": "f2b287f3-0df1-4961-a2f4-c4bdfed47657",
"eventType": "AwsApiCall",
"recipientAccountId": "111122223333"
}
]
}

Exemplo: entradas de arquivo de log do Amazon S3 no Outposts


Os eventos de gerenciamento do Amazon S3 no Outposts estão disponíveis por meio do AWS CloudTrail.
Para obter mais informações, consulte Registrar em log chamadas de API do Amazon S3 usando o AWS
CloudTrail (p. 815). Além disso, você pode habilitar opcionalmente o log para eventos de dados no AWS
CloudTrail.

Uma trilha é uma configuração que permite a entrega de eventos como registros de log a um bucket do S3
em uma região que você especifica. Os logs do CloudTrail para os intervalos Outposts incluem um novo
campo edgeDeviceDetails, que identifica o Outpost em que o bucket especificado está localizado.

Campos de log adicionais incluem a ação solicitada, a data e a hora da ação e os parâmetros de
solicitação. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada das chamadas
de API pública. Dessa forma, eles não são exibidos em uma ordem específica.

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação PutObject em s3-
outposts.

{
"eventVersion": "1.08",
"userIdentity": {
"type": "IAMUser",
"principalId": "111122223333",
"arn": "arn:aws:iam::111122223333:user/yourUserName",
"accountId": "222222222222",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "yourUserName"

Versão da API 2006-03-01


823
Amazon Simple Storage Service Guia do usuário
Exemplos de arquivos de log

},
"eventTime": "2020-11-30T15:44:33Z",
"eventSource": "s3-outposts.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "us-east-1",
"sourceIPAddress": "26.29.66.20",
"userAgent": "aws-cli/1.18.39 Python/3.4.10 Darwin/18.7.0 botocore/1.15.39",
"requestParameters": {
"expires": "Wed, 21 Oct 2020 07:28:00 GMT",
"Content-Language": "english",
"x-amz-server-side-encryption-customer-key-MD5": "wJalrXUtnFEMI/K7MDENG/
bPxRfiCYEXAMPLEKEY",
"ObjectCannedACL": "BucketOwnerFullControl",
"x-amz-server-side-encryption": "Aes256",
"Content-Encoding": "gzip",
"Content-Length": "10",
"Cache-Control": "no-cache",
"Content-Type": "text/html; charset=UTF-8",
"Content-Disposition": "attachment",
"Content-MD5": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
"x-amz-storage-class": "Outposts",
"x-amz-server-side-encryption-customer-algorithm": "Aes256",
"bucketName": "DOC-EXAMPLE-BUCKET1",
"Key": "path/upload.sh"
},
"responseElements": {
"x-amz-server-side-encryption-customer-key-MD5": "wJalrXUtnFEMI/K7MDENG/
bPxRfiCYEXAMPLEKEY",
"x-amz-server-side-encryption": "Aes256",
"x-amz-version-id": "001",
"x-amz-server-side-encryption-customer-algorithm": "Aes256",
"ETag": "d41d8cd98f00b204e9800998ecf8427f"
},
"additionalEventData": {
"CipherSuite": "ECDHE-RSA-AES128-SHA",
"bytesTransferredIn": 10,
"x-amz-id-2": "29xXQBV2O+xOHKItvzY1suLv1i6A52E0zOX159fpfsItYd58JhXwKxXAXI4IQkp6",
"SignatureVersion": "SigV4",
"bytesTransferredOut": 20,
"AuthenticationMethod": "AuthHeader"
},
"requestID": "8E96D972160306FA",
"eventID": "ee3b4e0c-ab12-459b-9998-0a5a6f2e4015",
"readOnly": false,
"resources": [
{
"accountId": "222222222222",
"type": "AWS::S3Outposts::Object",
"ARN": "arn:aws:s3-outposts:us-east-1:YYY:outpost/op-01ac5d28a6a232904/bucket/
path/upload.sh"
},
{
"accountId": "222222222222",
"type": "AWS::S3Outposts::Bucket",
"ARN": "arn:aws:s3-outposts:us-east-1:YYY:outpost/op-01ac5d28a6a232904/bucket/"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "444455556666",
"sharedEventID": "02759a4c-c040-4758-b84b-7cbaaf17747a",
"edgeDeviceDetails": {
"type": "outposts",
"deviceID": "op-01ac5d28a6a232904"
},
"eventCategory": "Data"

Versão da API 2006-03-01


824
Amazon Simple Storage Service Guia do usuário
Habilitar o CloudTrail

Habilitar o log de eventos do CloudTrail para buckets e


objetos do S3
Você pode usar eventos de dados do CloudTrail para obter informações sobre solicitações no nível do
bucket e do objeto no Amazon S3. Para habilitar eventos de dados do CloudTrail para todos os seus
buckets ou para uma lista de buckets específicos, você deve criar uma trilha manualmente no CloudTrail.
Note

• A configuração padrão para o CloudTrail é encontrar somente eventos de gerenciamento.


Verifique se os eventos de dados estão habilitados para sua conta.
• Com um bucket do S3 que está gerando uma alta carga de trabalho, você poderia rapidamente
gerar milhares de logs em um curto período. Esteja atento a quanto tempo você escolhe para
habilitar eventos de dados do CloudTrail para um bucket ocupado.

O CloudTrail armazena logs de eventos de dados do Amazon S3 em um bucket do S3 de sua escolha.


Considere o uso de um bucket em uma conta da AWS separada para organizar melhor eventos de
vários buckets que talvez tenha em um local central para facilitar a consulta e a análise. O AWS
Organizations facilita a criação de uma conta da AWS vinculada à conta proprietária do bucket que você
está monitorando. Para obter mais informações, consulte O que é o AWS Organizations no Guia do
usuário do AWS Organizations.

Ao criar uma trilha no CloudTrail, na seção de eventos de dados, você pode marcar a caixa de seleção
Select all S3 buckets in your account (Selecionar todos os buckets do S3 em sua conta) para registrar
todos os eventos no nível de objetos.
Note

• É uma melhor prática criar uma política de ciclo de vida para o bucket de eventos de dados do
AWS CloudTrail. Configure a política de ciclo de vida para remover periodicamente arquivos de
log após o período que você acredita ser necessário auditá-los. Fazer isso reduz a quantidade
de dados que o Athena analisa para cada consulta. Para obter mais informações, consulte
Definir a configuração do ciclo de vida em um bucket (p. 575).
• Para obter informações sobre o formato do registro em log, consulte Registrar em log
chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815).
• Para obter exemplos de como consultar logs do CloudTrail, consulte a publicação do Blog sobre
big data da AWS Analyze Security, Compliance, and Operational Activity Using AWS CloudTrail
and Amazon Athena.

Habilitar o registro em log de objetos em um bucket usando o


console
Você pode usar o console do Amazon S3 para habilitar uma trilha do AWS CloudTrail para registrar
eventos de dados de objetos em um bucket do S3. O CloudTrail oferece suporte ao registro em log de
operações de API no nível do objeto do Amazon S3, como GetObject, DeleteObject e PutObject.
Esses eventos são chamados de eventos de dados.

Por padrão, as trilhas do CloudTrail não registram em log eventos de dados, mas você pode configurar as
trilhas para registrar eventos de dados para buckets do S3 que você especificar, ou para registrar eventos
de dados para todos os buckets do Amazon S3 em sua conta da AWS. Para obter mais informações,
consulte Registrar em log chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815).

Versão da API 2006-03-01


825
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

O CloudTrail não preenche eventos de dados no histórico de eventos do CloudTrail. Além disso, nem
todas as ações no nível do bucket são preenchidas no histórico de eventos do CloudTrail. Para obter mais
informações, consulte o artigo do Centro de conhecimento da AWS que fala sobre como usar padrões de
filtro do Amazon CloudWatch Logs e o Amazon Athena para consultar logs do CloudTrail.

Para configurar uma trilha para registrar eventos de dados para um bucket do S3, você pode usar o
console do AWS CloudTrail ou o console do Amazon S3. Se você estiver configurando uma trilha para
registrar eventos de dados para todos os buckets do Amazon S3 na sua conta da AWS, é mais fácil usar
o console do CloudTrail. Para obter informações sobre como usar o console do CloudTrail para configurar
uma trilha para registrar eventos de dados do S3, consulte Eventos de dados no Guia do usuário do AWS
CloudTrail.
Important

Há cobranças adicionais para eventos de dados. Para obter mais informações, consulte Definição
de preço do AWS CloudTrail.

O procedimento a seguir mostra como usar o console do Amazon S3 para habilitar uma trilha do CloudTrail
para registrar eventos de dados para um bucket do S3.

Para habilitar registro de eventos de dados do CloudTrail para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket.
3. Escolha Propriedades.
4. Em AWS CloudTrail data events (Eventos de dados do AWS CloudTrail), escolha Configure in
CloudTrail (Configurar no CloudTrail).

Para obter informações sobre como criar trilhas no console do CloudTrail, consulte Criar e atualizar
uma trilha com o console no Guia do usuário do AWS CloudTrail.
5. Para desabilitar o registro em log no nível do objeto para o bucket, abra o console do CloudTrail e
remova o nome do bucket de Data events (Eventos de dados) da trilha.
Note

Se você usar o console do CloudTrail ou o console do Amazon S3 para configurar uma trilha
para registro de eventos de dados para um bucket do S3, o console do Amazon S3 mostra
que o registro está habilitado no nível do objeto para o bucket.

Para obter informações sobre como habilitar o registro no nível do objeto ao criar um bucket do S3,
consulte Criação de um bucket (p. 31).

Para obter mais informações sobre o registro em log do CloudTrail com buckets do S3, consulte os
seguintes tópicos:

• Visualização das propriedades de um bucket do S3 (p. 35)


• Registrar em log chamadas de API do Amazon S3 usando o AWS CloudTrail (p. 815)
• Trabalhar com arquivos de registro do CloudTrail no Guia do usuário do AWS CloudTrail

Identificar solicitações do Amazon S3 usando o


CloudTrail
No Amazon S3, você pode identificar solicitações usando um log de eventos do AWS CloudTrail. O AWS
CloudTrail é a maneira preferida de identificar solicitações do Amazon S3. No entanto, se você estiver

Versão da API 2006-03-01


826
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

usando logs de acesso ao servidor do Amazon S3, consulte the section called “Identificar solicitações do
S3” (p. 851).

Tópicos
• Identificar solicitações feitas ao Amazon S3 em um log do CloudTrail (p. 827)
• Identificar solicitações do Amazon S3 Signature versão 2 usando o CloudTrail (p. 828)
• Identificar o acesso a objetos do S3 usando o CloudTrail (p. 831)

Identificar solicitações feitas ao Amazon S3 em um log do


CloudTrail
Eventos registrados pelo CloudTrail são armazenados como objetos JSON compactados no formato gzip
no bucket do S3. Para encontrar solicitações com eficiência, você deve usar um serviço como o Amazon
Athena para indexar e consultar os logs do CloudTrail. Para obter mais informações sobre o CloudTrail e o
Athena, consulte Consulta de logs do AWS CloudTrail no Guia do usuário do Amazon Athena.

Usar o Athena com logs do CloudTrail


Após configurar o CloudTrail para entregar eventos a um bucket, você deve começar a ver objetos irem
para seu bucket de destino no console do Amazon S3. Eles são formatados da seguinte maneira:

s3://<myawsexamplebucket1>/AWSLogs/<111122223333>/CloudTrail/<Region>/<yyyy>/
<mm>/<dd>

Example : Use o Athena para consultar logs de eventos do CloudTrail para solicitações
específicas

Localize seus logs de eventos do CloudTrail:

s3://myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/us-east-2/2019/04/14

Com os logs de eventos do CloudTrail, agora você pode criar um banco de dados e uma tabela do Athena
para consultá-los da seguinte forma:

1. Abra o console do Athena em https://console.aws.amazon.com/athena/.


2. Altere a região da AWS para que seja a mesma do bucket do S3 de destino do CloudTrail.
3. Na janela de consulta, crie um banco de dados do Athena para seus eventos do CloudTrail.

CREATE DATABASE s3_cloudtrail_events_db

4. Use a consulta a seguir para criar uma tabela para todos os eventos do CloudTrail no bucket.
Certifique-se de alterar o nome do bucket de <CloudTrail_myawsexamplebucket1> para o nome
do seu bucket. Além disso, forneça o AWS_account_ID do CloudTrail que é usado no bucket.

CREATE EXTERNAL TABLE s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table(


eventversion STRING,
useridentity STRUCT<
type:STRING,
principalid:STRING,
arn:STRING,
accountid:STRING,
invokedby:STRING,
accesskeyid:STRING,
userName:STRING,
sessioncontext:STRUCT<

Versão da API 2006-03-01


827
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

attributes:STRUCT<
mfaauthenticated:STRING,
creationdate:STRING>,
sessionissuer:STRUCT<
type:STRING,
principalId:STRING,
arn:STRING,
accountId:STRING,
userName:STRING>
>
>,
eventtime STRING,
eventsource STRING,
eventname STRING,
awsregion STRING,
sourceipaddress STRING,
useragent STRING,
errorcode STRING,
errormessage STRING,
requestparameters STRING,
responseelements STRING,
additionaleventdata STRING,
requestid STRING,
eventid STRING,
resources ARRAY<STRUCT<
ARN:STRING,
accountId:STRING,
type:STRING>>,
eventtype STRING,
apiversion STRING,
readonly STRING,
recipientaccountid STRING,
serviceeventdetails STRING,
sharedeventid STRING,
vpcendpointid STRING
)
ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://<myawsexamplebucket1>/AWSLogs/<111122223333>/';

5. Teste o Athena para garantir que a consulta funcione.

SELECT * FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table


WHERE eventsource='s3.amazonaws.com'
LIMIT 2;

Identificar solicitações do Amazon S3 Signature versão 2 usando


o CloudTrail
Você pode usar um log de eventos do CloudTrail para identificar qual versão de assinatura de API foi
usada para assinar uma solicitação no Amazon S3. Esse recurso é importante, pois o suporte ao Signature
versão 2 será desativado (suspenso). Depois disso, o Amazon S3 não aceitará mais solicitações que usam
o Signature versão 2 e todas as solicitações deverão usar assinaturas do Signature versão 4.

É altamente recomendável que você use o CloudTrail para ajudar a determinar se algum dos seus fluxos
de trabalho está usando o Signature versão 2. Corrija-os atualizando suas bibliotecas e o código para usar
o Signature versão 4 para evitar qualquer impacto em seus negócios.

Versão da API 2006-03-01


828
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

Para obter mais informações, consulte Anúncio: o AWS CloudTrail para Amazon S3 adiciona novos
campos para auditoria de maior segurança nos fóruns de discussão da AWS.
Note

Os eventos do CloudTrail para o Amazon S3 incluem a versão do Signature nos detalhes da


solicitação sob o nome de chave de “additionalEventData”. Para encontrar a versão da
assinatura em solicitações feitas para objetos no Amazon S3, como GETs, PUTs e DELETEs,
você deve habilitar a opção de eventos de dados do CloudTrail (que fica desativada por padrão).

O AWS CloudTrail é o método preferencial para identificar solicitações do Signature versão 2. Se você
estiver usando logs de acesso ao servidor do Amazon S3, consulte Identificar solicitações do Signature
versão 2 usando logs de acesso do Amazon S3 (p. 853).

Tópicos
• Exemplos de consulta do Athena para identificar solicitações do Amazon S3 Signature versão
2 (p. 829)
• Particionar dados do Signature versão 2 (p. 829)

Exemplos de consulta do Athena para identificar solicitações do Amazon S3


Signature versão 2

Example : Selecione todos os eventos do Signature versão 2 e imprima apenas EventTime, S3


action, Request_Parameters, Region, SourceIP e UserAgent

Na consulta do Athena a seguir, substitua


<s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table> pelos detalhes do
Athena e aumente ou remova o limite, conforme necessário.

SELECT EventTime, EventName as S3_Action, requestParameters as Request_Parameters,


awsregion as AWS_Region, sourceipaddress as Source_IP, useragent as User_Agent
FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
LIMIT 10;

Example : Selecione todos os solicitantes que estão enviando tráfego do Signature versão 2

SELECT useridentity.arn, Count(requestid) as RequestCount


FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table
WHERE eventsource='s3.amazonaws.com'
and json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
Group by useridentity.arn

Particionar dados do Signature versão 2


Se você tiver uma grande quantidade de dados para consultar, poderá reduzir os custos e o tempo de
execução do Athena criando uma tabela particionada.

Para fazer isso, crie uma tabela com partições conforme indicado a seguir.

Versão da API 2006-03-01


829
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

CREATE EXTERNAL TABLE


s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table_partitioned(
eventversion STRING,
userIdentity STRUCT<
type:STRING,
principalid:STRING,
arn:STRING,
accountid:STRING,
invokedby:STRING,
accesskeyid:STRING,
userName:STRING,
sessioncontext:STRUCT<
attributes:STRUCT<
mfaauthenticated:STRING,
creationdate:STRING>,
sessionIssuer:STRUCT<
type:STRING,
principalId:STRING,
arn:STRING,
accountId:STRING,
userName:STRING>
>
>,
eventTime STRING,
eventSource STRING,
eventName STRING,
awsRegion STRING,
sourceIpAddress STRING,
userAgent STRING,
errorCode STRING,
errorMessage STRING,
requestParameters STRING,
responseElements STRING,
additionalEventData STRING,
requestId STRING,
eventId STRING,
resources ARRAY<STRUCT<ARN:STRING,accountId: STRING,type:STRING>>,
eventType STRING,
apiVersion STRING,
readOnly STRING,
recipientAccountId STRING,
serviceEventDetails STRING,
sharedEventID STRING,
vpcEndpointId STRING
)
PARTITIONED BY (region string, year string, month string, day string)
ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://myawsexamplebucket1/AWSLogs/111122223333/';

Em seguida, crie as partições individualmente. Não é possível obter resultados de datas que não foram
criadas.

ALTER TABLE s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table_partitioned ADD


PARTITION (region= 'us-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://
myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/us-east-1/2019/02/19/'
PARTITION (region= 'us-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://
myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/us-west-1/2019/02/19/'
PARTITION (region= 'us-west-2', year= '2019', month= '02', day= '19') LOCATION 's3://
myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/us-west-2/2019/02/19/'

Versão da API 2006-03-01


830
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

PARTITION (region= 'ap-southeast-1', year= '2019', month= '02', day= '19') LOCATION
's3://myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/ap-southeast-1/2019/02/19/'
PARTITION (region= 'ap-southeast-2', year= '2019', month= '02', day= '19') LOCATION
's3://myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/ap-southeast-2/2019/02/19/'
PARTITION (region= 'ap-northeast-1', year= '2019', month= '02', day= '19') LOCATION
's3://myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/ap-northeast-1/2019/02/19/'
PARTITION (region= 'eu-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://
myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/eu-west-1/2019/02/19/'
PARTITION (region= 'sa-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://
myawsexamplebucket1/AWSLogs/111122223333/CloudTrail/sa-east-1/2019/02/19/';

Você pode, então, fazer a solicitação com base nessas partições e não é preciso carregar todo o bucket.

SELECT useridentity.arn,
Count(requestid) AS RequestCount
FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table_partitioned
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
AND region='us-east-1'
AND year='2019'
AND month='02'
AND day='19'
Group by useridentity.arn

Identificar o acesso a objetos do S3 usando o CloudTrail


Você pode usar seu log de eventos do AWS CloudTrail para identificar solicitações de acesso a objetos
do Amazon S3 para eventos de dados como GetObject, DeleteObject e PutObject e descobrir
informações adicionais sobre essas solicitações.

O exemplo a seguir mostra como obter todas as solicitações de objeto PUT para o Amazon S3 a partir do
log de eventos do AWS CloudTrail.

Tópicos
• Exemplos de consulta do Athena para identificar solicitações de acesso a objetos do Amazon
S3 (p. 831)

Exemplos de consulta do Athena para identificar solicitações de acesso a objetos


do Amazon S3
Nos exemplos de consultas do Athena a seguir, substitua
<s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table> pelos detalhes do
Athena e modifique o intervalo de datas conforme necessário.

Example : Selecione todos os eventos que têm solicitações de acesso ao objeto PUT e imprima
somente EventTime, EventSource, SourceIP, UserAgent, BucketName, object, e UserARN

SELECT
eventTime,
eventName,
eventSource,
sourceIpAddress,
userAgent,
json_extract_scalar(requestParameters, '$.bucketName') as bucketName,

Versão da API 2006-03-01


831
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

json_extract_scalar(requestParameters, '$.key') as object,


userIdentity.arn as userArn
FROM
s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket_table
WHERE
eventName = 'PutObject'
AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'

Example : Selecione todos os eventos que têm solicitações de acesso ao objeto GET e imprima
somente EventTime, EventSource, SourceIP, UserAgent, BucketName, object e UserARN

SELECT
eventTime,
eventName,
eventSource,
sourceIpAddress,
userAgent,
json_extract_scalar(requestParameters, '$.bucketName') as bucketName,
json_extract_scalar(requestParameters, '$.key') as object,
userIdentity.arn as userArn
FROM
s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket_table
WHERE
eventName = 'GetObject'
AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'

Example : Selecione todos os eventos de solicitantes anônimos a um bucket em um período


específico e imprima somente EventTime, EventSource, SourceIP, UserAgent, BucketName,
UserIdentity e UserARN

SELECT
eventTime,
eventName,
eventSource,
sourceIpAddress,
userAgent,
json_extract_scalar(requestParameters, '$.bucketName') as bucketName,
userIdentity.arn as userArn,
userIdentity.principalId
FROM
s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket_table
WHERE
userIdentity.principalId='ANONYMOUS_PRINCIPAL'
AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'

Note

• Esses exemplos de consulta também podem ser úteis para o monitoramento de segurança.
Você pode ver os resultados de chamadas PutObject ou GetObject de solicitantes/
endereços IP inesperados ou não autorizados e identificar solicitações anônimas ao seu bucket.
• Essa consulta recupera somente informações do momento no qual o registro estava habilitado.

Se você estiver usando logs de acesso ao servidor do Amazon S3, consulte Identificar solicitações de
acesso a objetos usando logs de acesso do Amazon S3 (p. 854).

Versão da API 2006-03-01


832
Amazon Simple Storage Service Guia do usuário
Registrando acesso ao servidor

Registrar em log as solicitações com registro em


log de acesso ao servidor
O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket.
Os logs de acesso ao servidor são úteis para muitos aplicativos. Por exemplo, as informações do log de
acesso podem ser úteis em auditorias de segurança e acesso. Isso também pode ajudá-lo a conhecer sua
base de clientes e entender a conta do Amazon S3.
Note
Os logs de acesso ao servidor não registram informações sobre erros de redirecionamento a
regiões erradas para regiões lançadas após 20 de março de 2019. Erros de redirecionamento
para regiões erradas ocorrem quando uma solicitação para um objeto ou bucket é feita fora da
região em que o bucket existe.

Como faço para habilitar a entrega de logs?


Para habilitar a entrega de logs, execute as seguintes etapas básicas. Para obter mais detalhes, consulte
Habilitar registro em log de acesso ao servidor do Amazon S3 (p. 835).

1. Forneça o nome do bucket de destino. Esse bucket é onde você deseja que o Amazon S3 salve os logs
de acesso como objetos. Os buckets de origem e de destino devem estar na mesma região da AWS e
ser de propriedade da mesma conta.

Os logs podem ser entregues a qualquer bucket que você possui e que esteja na mesma região que
o bucket de origem, incluindo o próprio bucket de origem. No entanto, para um gerenciamento de logs
mais simples, recomendamos que você salve logs de acesso em um bucket diferente.

Quando o bucket de origem e o bucket de destino são os mesmos, logs adicionais são criados para
os logs que forem gravados no bucket. Isso pode não ser ideal porque pode resultar em um pequeno
aumento na cobrança do armazenamento. Além disso, com os logs adicionais sobre logs, pode ser mais
difícil encontrar o log que você está procurando. Se você optar por salvar os logs de acesso no bucket
de origem, recomendamos que você especifique um prefixo para todas as chaves de objeto do log, para
que os nomes do objeto comecem com uma string em comum e seja fácil identificar esses objetos.

Prefixos de chaves também são úteis para distinguir entre buckets de origem quando vários buckets são
registrados em log no mesmo bucket de origem.
2. (Opcional) Atribua um prefixo a todas as chaves de objeto de log do Amazon S3. O prefixo facilita a
localização de objetos de log. Por exemplo, se você especificar o valor do prefixo logs/, cada objeto de
log criado pelo Amazon S3 começará com o prefixo logs/ em sua chave.

logs/2013-11-01-21-32-16-E568B2907131C0C0

O prefixo de chaves também ajuda ao excluir os logs. Por exemplo, defina uma regra de configuração
do ciclo de vida para que o Amazon S3 exclua objetos com um prefixo de chave específico. Para obter
mais informações, consulte Exclusão de arquivos de log do Amazon S3 (p. 850).
3. (Opcional) Defina permissões para que outros possam acessar os logs gerados. Por padrão, somente
o proprietário do bucket sempre tem acesso completo aos objetos de log. Para obter mais informações,
consulte Identity and Access Management no Amazon S3 (p. 252).

Formato da chave de objeto de log


O Amazon S3 usa o seguinte formato de chave de objeto para os objetos de log carregados no bucket de
destino:

Versão da API 2006-03-01


833
Amazon Simple Storage Service Guia do usuário
Como os logs são entregues?

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString/

Na chave, YYYY, mm, DD, HH, MM e SS são os dígitos do ano, mês, dia, hora, minuto e segundos
(respectivamente) quando o arquivo de log foi entregue. Essas datas e horas estão em Tempo Universal
Coordenado (UTC).

Um arquivo de log entregue em um horário específico pode conter registros gravados a qualquer momento
até aquele horário. Não há como saber se todos os logs de um certo intervalo de tempo foram entregues
ou não.

O componente UniqueString da chave existe para impedir que arquivos sejam substituídos por outros.
Ele não tem significado, e o software de processamento de logs deve ignorá-lo.

A barra à direita / é necessária para denotar o fim do prefixo.

Como os logs são entregues?


O Amazon S3 coleta periodicamente os registros de log de acessos, consolida-os em arquivos de log e,
em seguida, faz o upload desses arquivos no bucket de destino como objetos de log. Caso o registro em
log esteja habilitado em diversos buckets de origem que identifiquem o mesmo bucket de destino, ele terá
logs de acesso de todos os buckets de origem. No entanto, cada objeto de log relata registros de log para
um bucket de origem específico.

O Amazon S3 usa uma conta especial de entrega de logs, chamada de grupo de Entrega de logs, para
gravar logs de acessos. Essas gravações estão sujeitas a restrições usuais de controle de acesso. Você
deve conceder ao grupo de Entrega de logs a permissão para gravação no bucket de destino adicionando
uma entrada de concessão na lista de controle de acesso (ACL) do bucket.

Se você usar o console do Amazon S3 para habilitar o registro em log em um bucket, o console habilitará
o registro em log no bucket de origem e atualizará a ACL no bucket de destino para conceder a permissão
para gravação ao grupo de Entrega de logs. Para obter mais informações, consulte Visão geral da lista de
controle de acesso (ACL) (p. 440).

Entrega de logs do servidor de melhor esforço


Os registros de log de acessos do servidor são entregues com base no melhor esforço. A maioria das
solicitações para um bucket configurado corretamente para registro em log tem como resultado um registro
do log entregue. A maioria dos registros de log é entregue dentro de algumas horas após o tempo em que
forem registrados, mas eles podem ser entregues com mais frequência.

A integralidade e a pontualidade do registro em log do servidor não são garantidas. O registro de log de
uma solicitação específica pode ser entregue muito depois de a solicitação ter sido realmente processada
ou pode nem ser entregue. A finalidade dos logs do servidor é proporcionar uma ideia da natureza do
tráfego no bucket. É raro perder registros de log, mas o log dos servidores não tem como objetivo ser uma
contabilidade completa de todas as solicitações.

Levando em conta a natureza de melhor esforço do recurso de registro em log do servidor, os relatórios
de uso disponíveis no portal da AWS (relatórios do Gerenciamento de custos e faturamento no Console de
Gerenciamento da AWS) podem incluir uma ou mais solicitações de acesso que não aparecem em um log
do servidor entregue.

As alterações do status do registro de bucket em logs


entram em vigor ao longo do tempo
As alterações no status do log de um bucket levam tempo para realmente afetar a entrega de arquivos
de log. Por exemplo, se você habilitar o log para um bucket, algumas solicitações feitas na hora seguinte
podem ser registradas, enquanto outras não. Se você alterar o bucket de destino para log do bucket A para

Versão da API 2006-03-01


834
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

o B, alguns logs podem continuar sendo entregues ao bucket A durante a próxima hora, enquanto outros
serão entregues ao novo bucket de destino B. Em todo caso, as novas configurações entrarão em vigor
posteriormente, sem a necessidade de ações adicionais.

Para obter mais informações sobre registro em log e arquivos de log, consulte as seguintes seções:

Tópicos
• Habilitar registro em log de acesso ao servidor do Amazon S3 (p. 835)
• Formato dos logs de acesso ao servidor do Amazon S3 (p. 841)
• Exclusão de arquivos de log do Amazon S3 (p. 850)
• Uso de logs de acesso do Amazon S3 para identificar solicitações (p. 851)

Habilitar registro em log de acesso ao servidor do


Amazon S3
O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket
do S3. Os logs de acesso ao servidor são úteis para muitos aplicativos. Por exemplo, as informações
do log de acesso podem ser úteis em auditorias de segurança e acesso. Isso também pode ajudá-lo a
conhecer sua base de clientes e entender a conta do Amazon S3.

Por padrão, o Amazon S3 não coleta logs de acesso ao servidor. Quando você habilita o registro em log,
o Amazon S3 entrega logs de acesso a um bucket de origem ou de destino de sua escolha. O bucket de
destino deve estar na mesma região da AWS que o bucket de origem e não deve ter uma configuração de
período de retenção.

Um registro do log de acesso contém detalhes sobre as solicitações feitas a um bucket. Essa informação
pode incluir o tipo de solicitação, os recursos que foram especificados na solicitação e a hora e data em
que a solicitação foi processada. Para obter mais informações sobre noções básicas de registro em log,
consulte Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833).
Important
Não há custo adicional para a ativação de registro de acesso ao servidor em um bucket do
Amazon S3. No entanto, todos os arquivos de log que o sistema fornece acumularão as
cobranças normais de armazenamento. Você pode excluir os arquivos de registro a qualquer
momento. Não computamos custo pela transferência de dados na entrega de arquivos de registro,
mas cobramos a taxa normal de transferência de dados pelo acesso aos arquivos de registro.

Você pode habilitar ou desabilitar o registro em log de acesso ao servidor usando o console do Amazon
S3, a API do Amazon S3, a Interface de Linhas de Comando da AWS (AWS CLI) ou os AWS SDKs.

Antes de habilitar o registro em log de acesso ao servidor, considere o seguinte:

• No Amazon S3, você pode conceder permissão para entregar logs de acesso por meio de listas de
controle de acesso (ACLs) de bucket, mas não por meio da política de bucket.
• Adicionar condições de negação a uma política de bucket pode impedir que o Amazon S3 entregue logs
de acesso.
• Você pode usar a criptografia de bucket padrão no bucket de destino somente se a opção AES256
(SSE-S3) estiver selecionada. A criptografia SSE-KMS não é compatível.
• Não é possível habilitar o Bloqueio de objetos do S3 no bucket de destino.

Usar o console do S3
1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.

Versão da API 2006-03-01


835
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar o log de acesso ao
servidor.
3. Escolha Propriedades.
4. Na seção Server access logging (Registro de acesso ao servidor) escolha Edit (Editar).
5. Em Server access logging (Registro de acesso ao servidor), selecione Enable (Ativar).
6. Em Target bucket (Bucket de destino), insira o nome do bucket que você deseja que receba os objetos
de registro em log.

O bucket de destino deve estar na mesma região do bucket de origem e não deve ter uma
configuração de período de retenção.
7. Selecione Save changes.

Ao habilitar o registro em log em um bucket, o console habilita o log no bucket de origem e adiciona
uma concessão na lista de controle de acesso (ACL) do bucket de destino, concedendo ao grupo de
Entrega de logs a permissão para gravação.

Você pode visualizar os logs no bucket de destino. Depois de habilitar o registro em log de acesso
ao servidor, pode demorar algumas horas antes que os logs sejam entregues no bucket de destino.
Para obter mais informações sobre como e quando os logs são entregues, consulte Como os logs são
entregues? (p. 834).

Para obter mais informações, consulte Visualização das propriedades de um bucket do S3 (p. 35).

Uso dos REST API


Para habilitar o registro em log, envie uma solicitação PUT Bucket logging para adicionar a configuração
de registro em log no bucket de origem. A solicitação especifica o bucket de destino e, opcionalmente, o
prefixo a ser usado por todas as chaves de objeto dos logs.

O exemplo a seguir identifica logbucket como o bucket de destino e logs/ como o prefixo.

<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
<LoggingEnabled>
<TargetBucket>logbucket</TargetBucket>
<TargetPrefix>logs/</TargetPrefix>
</LoggingEnabled>
</BucketLoggingStatus>

Os objetos de log são gravados e pertencem à conta de Entrega de logs. O proprietário do bucket tem
permissões totais aos objetos de log. Além disso, você tem a opção de conceder permissões a outros
usuários para que eles possam acessar os logs. Para obter mais informações, consulte PUT Bucket
Logging (Registro em log de PUT Bucket).

O Amazon S3 também fornece a API GET Bucket logging (Registro em log de GET Bucket) para recuperar
a configuração de log em um bucket. Para excluir a configuração de registro, envie a solicitação de registro
em log do PUT Bucket com um BucketLoggingStatus vazio.

<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
</BucketLoggingStatus>

Use a API do Amazon S3 ou as bibliotecas wrapper do SDK da AWS para habilitar o log em um bucket.

Versão da API 2006-03-01


836
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

Uso dos AWS SDKs


.NET

O exemplo C# a seguir habilita o log em um bucket. Você deve criar dois buckets, um de origem e um
de destino. Primeiro, o exemplo concede as permissões necessárias ao grupo de Entrega de logs para
gravação de logs no bucket de destino e, em seguida, habilita o registro em log no bucket de origem.

Example

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class ServerAccesLoggingTest
{
private const string bucketName = "*** bucket name for which to enable logging
***";
private const string targetBucketName = "*** bucket name where you want access logs
stored ***";
private const string logObjectKeyPrefix = "Logs";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
EnableLoggingAsync().Wait();
}

private static async Task EnableLoggingAsync()


{
try
{
// Step 1 - Grant Log Delivery group permission to write log to the target
bucket.
await GrantPermissionsToWriteLogsAsync();
// Step 2 - Enable logging on the source bucket.
await EnableDisableLoggingAsync();
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when writing
an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

private static async Task GrantPermissionsToWriteLogsAsync()


{
var bucketACL = new S3AccessControlList();
var aclResponse = client.GetACL(new GetACLRequest { BucketName =
targetBucketName });
bucketACL = aclResponse.AccessControlList;

Versão da API 2006-03-01


837
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

bucketACL.AddGrant(new S3Grantee { URI = "http://acs.amazonaws.com/groups/s3/


LogDelivery" }, S3Permission.WRITE);
bucketACL.AddGrant(new S3Grantee { URI = "http://acs.amazonaws.com/groups/s3/
LogDelivery" }, S3Permission.READ_ACP);
var setACLRequest = new PutACLRequest
{
AccessControlList = bucketACL,
BucketName = targetBucketName
};
await client.PutACLAsync(setACLRequest);
}

private static async Task EnableDisableLoggingAsync()


{
var loggingConfig = new S3BucketLoggingConfig
{
TargetBucketName = targetBucketName,
TargetPrefix = logObjectKeyPrefix
};

// Send request.
var putBucketLoggingRequest = new PutBucketLoggingRequest
{
BucketName = bucketName,
LoggingConfig = loggingConfig
};
await client.PutBucketLoggingAsync(putBucketLoggingRequest);
}
}
}

Usar a CLI da AWS


Recomendamos que você crie um bucket de registro dedicado em cada região da AWS nas quais você
tem buckets do S3. Depois, faça com que o Amazon S3 acesse o log entregue a esse bucket do S3. Para
obter mais informações e exemplos, consulte put-bucket-logging na Referência da AWS CLI.

Example : Habilite logs de acesso com cinco buckets em duas regiões


Neste exemplo, você tem estes cinco buckets:

• 1-awsexamplebucket1-us-east-1
• 2-awsexamplebucket1-us-east-1
• 3-awsexamplebucket1-us-east-1
• 1-awsexamplebucket1-us-west-2
• 2-awsexamplebucket1-us-west-2

1. Crie dois buckets de registro nas seguintes regiões:

• awsexamplebucket1-logs-us-east-1
• awsexamplebucket1-logs-us-west-2
2. Depois, ative os logs de acesso do Amazon S3 da seguinte forma:

• 1-awsexamplebucket1-us-east-1 é registrado em log no bucket do S3


awsexamplebucket1-logs-us-east-1 com prefixo 1-awsexamplebucket1-us-east-1
• 2-awsexamplebucket1-us-east-1 é registrado em log no bucket do S3
awsexamplebucket1-logs-us-east-1 com prefixo 2-awsexamplebucket1-us-east-1
• 3-awsexamplebucket1-us-east-1 é registrado em log no bucket do S3
awsexamplebucket1-logs-us-east-1 com prefixo 3-awsexamplebucket1-us-east-1

Versão da API 2006-03-01


838
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

• 1-awsexamplebucket1-us-west-2 é registrado em log no bucket do S3


awsexamplebucket1-logs-us-west-2 com prefixo 1-awsexamplebucket1-us-west-2
• 2-awsexamplebucket1-us-west-2 é registrado em log no bucket do S3
awsexamplebucket1-logs-us-west-2 com prefixo 2-awsexamplebucket1-us-west-2
3. Você pode, então, habilitar os logs de acesso do Amazon S3 usando os seguintes métodos:

• Usar o Habilitar registro em log de acesso ao servidor do Amazon S3 (p. 835) ou,
• Uso do comando put-bucket-logging da AWS CLI para habilitar programaticamente os logs de
acesso em um bucket usando os seguintes comandos:

a. Primeiro, conceda permissão ao Amazon S3 usando put-bucket-acl.

aws s3api put-bucket-acl --bucket awsexamplebucket1-logs --grant-write


URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://
acs.amazonaws.com/groups/s3/LogDelivery

b. Em seguida, aplique a política de registro em log:

aws s3api put-bucket-logging --bucket awsexamplebucket1 --bucket-logging-status


file://logging.json

Logging.json é um documento JSON na pasta atual que contém a política de registro em log:

{
"LoggingEnabled": {
"TargetBucket": "awsexamplebucket1-logs",
"TargetPrefix": "awsexamplebucket1/",
"TargetGrants": [
{
"Grantee": {
"Type": "AmazonCustomerByEmail",
"EmailAddress": "[email protected]"
},
"Permission": "FULL_CONTROL"
}
]
}
}

Note

O comando put-bucket-acl é necessário para conceder as permissões necessárias


ao sistema de entrega de log do Amazon S3 (permissões de ACP de leitura e gravação).
c. Use um script bash para acessar o registro em log de todos os buckets em sua conta:

loggingBucket='awsexamplebucket1-logs'
region='us-west-2'

# Create Logging bucket


aws s3 mb s3://$loggingBucket --region $region
Versão da API 2006-03-01
839
Amazon Simple Storage Service Guia do usuário
Habilitar o log de acesso ao servidor

aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://


acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://
acs.amazonaws.com/groups/s3/LogDelivery

# List buckets in this account


buckets="$(aws s3 ls | awk '{print $3}')"

# Put bucket logging on each bucket


for bucket in $buckets
do printf '{
"LoggingEnabled": {
"TargetBucket": "%s",
"TargetPrefix": "%s/"
}
}' "$loggingBucket" "$bucket" > logging.json
aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://
logging.json
echo "$bucket done"
done

rm logging.json

echo "Complete"

Note

Isso somente funcionará se todos os buckets estiverem na mesma região. Se você tiver
buckets em várias regiões, deverá ajustar o script.

Permissões WRITE e READ_ACP para o grupo de entrega de log


do Amazon S3
O Amazon S3 grava os arquivos de log no bucket de destino como um membro do grupo predefinido de
Entrega de logs do Amazon S3. Essas gravações estão sujeitas a restrições usuais de controle de acesso.

Se você habilitar o log de acesso ao servidor usando o console do S3, o S3 atualizará automaticamente
sua ACL do bucket para conceder acesso ao Grupo de entrega de log do S3. Você não precisa conceder
manualmente permissões da ACL. Para obter informações sobre ACLs, consulte Visão geral da lista de
controle de acesso (ACL) (p. 440).

Os exemplos da AWS CLI e do AWS SDK nesta página incluem etapas para conceder permissões da ACL
ao Grupo de entrega de log do S3. Se você usar esses exemplos, não precisará conceder manualmente
permissões da ACL ao Grupo de entrega de log.

Se você habilitar o log de acesso ao servidor programaticamente e não especificar permissões da ACL,
você deverá conceder as permissões s3:GetObjectAcl e s3:PutObject para este grupo adicionando
as concessões WRITE e READ_ACP à lista de controle de acesso (ACL) do bucket de destino. O grupo de
Entrega de logs é representado pelo seguinte URL.

http://acs.amazonaws.com/groups/s3/LogDelivery

Para conceder as permissões WRITE e READ_ACP (leitura da ACL), adicione as seguintes concessões à
ACL do bucket de destino.

<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>

Versão da API 2006-03-01


840
Amazon Simple Storage Service Guia do usuário
Formato do log

</Grantee>
<Permission>WRITE</Permission>
</Grant>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>
</Grantee>
<Permission>READ_ACP</Permission>
</Grant>

Para obter exemplos de adição de concessões da ACL de forma programada, consulte Configurar
ACLs (p. 448).

Formato dos logs de acesso ao servidor do Amazon


S3
O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket
do S3. Você pode usar logs de acesso ao servidor para auditorias de segurança e acesso, saber mais
sobre sua base de clientes ou entender sua fatura do Amazon S3. Esta seção descreve o formato e outros
detalhes sobre os arquivos de log de acesso ao servidor do Amazon S3.

Os arquivos de log de acesso ao servidor consistem em uma sequência de registros de log delimitados
por novas linhas. Cada registro do log representa uma solicitação e consiste em campos delimitados por
espaço.

Veja a seguir o exemplo de um log que consiste em cinco registros de log.

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
awsexamplebucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE
REST.GET.VERSIONING - "GET /awsexamplebucket1?versioning HTTP/1.1" 200 - 113 - 7 -
"-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/
XV/VLi31234= SigV2 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader awsexamplebucket1.s3.us-
west-1.amazonaws.com TLSV1.1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
awsexamplebucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE
REST.GET.LOGGING_STATUS - "GET /awsexamplebucket1?logging HTTP/1.1" 200 - 242
- 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf
+7tpT6sxDwDty4LHBUOZJG96N1234= SigV2 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader
awsexamplebucket1.s3.us-west-1.amazonaws.com TLSV1.1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
awsexamplebucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE
REST.GET.BUCKETPOLICY - "GET /awsexamplebucket1?policy HTTP/1.1" 404
NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt
+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV2 ECDHE-RSA-AES128-GCM-SHA256
AuthHeader awsexamplebucket1.s3.us-west-1.amazonaws.com TLSV1.1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
awsexamplebucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE
REST.GET.VERSIONING - "GET /awsexamplebucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-"
"S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/
u7ME1234= SigV2 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader awsexamplebucket1.s3.us-
west-1.amazonaws.com TLSV1.1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
awsexamplebucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /awsexamplebucket1/
s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" -

Versão da API 2006-03-01


841
Amazon Simple Storage Service Guia do usuário
Formato do log

10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-


RSA-AES128-SHA AuthHeader awsexamplebucket1.s3.us-west-1.amazonaws.com TLSV1.1

Note

Qualquer campo pode ser definido como - para indicar que os dados eram desconhecidos ou
estavam indisponíveis ou que o campo não era aplicável para essa solicitação.

Tópicos
• Campos de registro de log (p. 842)
• Registro em log adicional para operações de cópia (p. 846)
• Informações personalizadas do log de acesso (p. 850)
• Considerações de programação para o formato do log de acesso ao servidor extensível (p. 850)

Campos de registro de log


A lista a seguir descreve os campos dos registros em log.

Proprietário do bucket

O ID canônico do usuário do proprietário do bucket de origem. O ID de usuário canônico é uma outra


forma do ID da conta da AWS. Para obter mais informações sobre IDs de usuário canônico, consulte
Identificadores de conta da AWS na Referência geral da AWS. Para obter informações sobre como
encontrar o ID de usuário canônico da conta, consulte Como encontrar o ID de usuário canônico da
conta da AWS.

Exemplo de registro

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

Bucket

O nome do bucket no qual a solicitação foi processada. Se o sistema receber uma solicitação
malformada e não puder determinar o bucket, a solicitação não aparecerá em nenhum log de acesso
ao servidor.

Exemplo de registro

awsexamplebucket1

Tempo

O horário em que a solicitação foi recebida. As datas e horas estão em Tempo Universal Coordenado
(UTC). O formato que usa a terminologia strftime() é o seguinte: [%d/%b/%Y:%H:%M:%S %z]

Exemplo de registro

[06/Feb/2019:00:00:38 +0000]

IP remoto

O endereço de internet aparente do solicitante. Os proxies e os firewalls intermediários podem


obscurecer o endereço real da máquina que faz a solicitação.

Exemplo de registro

Versão da API 2006-03-01


842
Amazon Simple Storage Service Guia do usuário
Formato do log

192.0.2.3

Solicitante

O ID canônico do usuário do solicitante ou um - para solicitações não autenticadas. Se o solicitante


for um usuário do IAM, esse campo retorna o nome do usuário do IAM do solicitante junto com a
conta raiz da AWS à qual o usuário do IAM pertence. Esse identificador é o mesmo usado para fins de
controle de acesso.

Exemplo de registro

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

ID da solicitação

Uma string gerada pelo Amazon S3 para identificar exclusivamente cada solicitação.

Exemplo de registro

3E57427F33A59F07

Operação

A operação listada aqui é declarada como SOAP.operation,


REST.HTTP_method.resource_type, WEBSITE.HTTP_method.resource_type ou
BATCH.DELETE.OBJECT, ou S3.action.resource_type para Ciclo de vida e registro em
log (p. 587).

Exemplo de registro

REST.PUT.OBJECT

Chave

A parte “chave” da solicitação, codificada pela URL ou “-”, se a operação não usar um parâmetro de
chave.

Exemplo de registro

/photos/2019/08/puppy.jpg

Request-URI

A parte de Request-URI da mensagem de solicitação HTTP.

Entrada de exemplo

"GET /awsexamplebucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"

Status HTTP

O código numérico do status do HTTP da resposta.

Exemplo de registro

Versão da API 2006-03-01


843
Amazon Simple Storage Service Guia do usuário
Formato do log

200

Código de erro

O Amazon S3 Código de erro (p. 1053) ou “-”, se nenhum erro ocorreu.

Exemplo de registro

NoSuchBucket

Bytes enviados

O número de bytes de resposta enviados excluindo a sobrecarga do protocolo HTTP ou “-”, se zero.

Exemplo de registro

2662992

Tamanho do objeto

O tamanho total do objeto em questão.

Exemplo de registro

3462992

Tempo total

O número de milissegundos em que a solicitação esteve em andamento da perspectiva do servidor.


Esse valor é medido do momento do recebimento da solicitação até o momento em que o último byte
da resposta é enviado. As medidas feitas da perspectiva do cliente podem ser mais longas devido à
latência da rede.

Exemplo de registro

70

Tempo de retorno

O número de milissegundos que o Amazon S3 gastou processando a solicitação. Esse valor é medido
do momento do recebimento do último byte da solicitação até o momento em que o primeiro byte da
resposta foi enviado.

Exemplo de registro

10

Referer

O valor do cabeçalho do indicador HTTP, se presente. Os agentes do usuário HTTP (por exemplo,
navegadores) normalmente definem esse cabeçalho como o URL da página de vinculação ou
incorporação ao fazer uma solicitação.

Exemplo de registro

"http://www.amazon.com/webservices"

Versão da API 2006-03-01


844
Amazon Simple Storage Service Guia do usuário
Formato do log

Agente de usuário

O valor do cabeçalho do agente de usuário do HTTP.

Exemplo de registro

"curl/7.15.1"

Id da versão

O ID da versão na solicitação ou “-”, se a operação não usar um parâmetro versionId.

Exemplo de registro

3HL4kqtJvjVBH40Nrjfkd

ID do host

O ID de solicitação estendida x-amz-id-2 ou Amazon S3.

Exemplo de registro

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=

Versão do Signature

A versão do Signature, SigV2 ou SigV4, que foi usada para autenticar a solicitação ou - para
solicitações não autenticadas.

Exemplo de registro

SigV2

Pacote de criptografia

A codificação Secure Sockets Layer (SSL) que foi negociada para a solicitação HTTPS ou - para
HTTP.

Exemplo de registro

ECDHE-RSA-AES128-GCM-SHA256

Tipo de autenticação

O tipo da autenticação de solicitação usado, AuthHeader para cabeçalhos de autenticação,


QueryString para string de consulta (pre-signed URL) ou - para solicitações não autenticadas.

Exemplo de registro

AuthHeader

Cabeçalho de host

O endpoint usado para conectar-se ao Amazon S3.

Exemplo de registro

Versão da API 2006-03-01


845
Amazon Simple Storage Service Guia do usuário
Formato do log

s3.us-west-2.amazonaws.com

Algumas regiões mais antigas oferecem suporte a endpoints legados. Você poderá ver esses
endpoints nos logs de acesso ao servidor ou nos logs do AWS CloudTrail. Para obter mais
informações, consulte Endpoints legados (p. 1030). Para obter uma lista completa de regiões e
endpoints do Amazon S3, consulte Endpoints e cotas do Amazon S3 na Referência geral da AWS.
Versão do TLS

A versão do Transport Layer Security (TLS) negociada pelo cliente. O valor é um dos seguintes:
TLSv1, TLSv1.1, TLSv1.2 ou - se o TLS não foi usado.

Exemplo de registro

TLSv1.2

Registro em log adicional para operações de cópia


Uma operação de cópia envolve um GET e um PUT. Por esse motivo, registramos dois registros em log
ao executar uma operação de cópia. A seção anterior descreve os campos relacionados à parte PUT da
operação. A lista a seguir descreve os campos no registro que se relacionam à parte GET da operação de
cópia.

Proprietário do bucket

O ID canônico do usuário do bucket que armazena o objeto que está sendo copiado. O ID de usuário
canônico é uma outra forma do ID da conta da AWS. Para obter mais informações sobre IDs de
usuário canônico, consulte Identificadores de conta da AWS na Referência geral da AWS. Para obter
informações sobre como encontrar o ID de usuário canônico da conta, consulte Como encontrar o ID
de usuário canônico da conta da AWS.

Exemplo de registro

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

Bucket

O nome do bucket que armazena o objeto que está sendo copiado.

Exemplo de registro

awsexamplebucket1

Tempo

O horário em que a solicitação foi recebida. As datas e horas estão em Tempo Universal Coordenado
(UTC). O formato que usa a terminologia strftime() é o seguinte: [%d/%B/%Y:%H:%M:%S %z]

Exemplo de registro

[06/Feb/2019:00:00:38 +0000]

IP remoto

O endereço de internet aparente do solicitante. Os proxies e os firewalls intermediários podem


obscurecer o endereço real da máquina que faz a solicitação.

Versão da API 2006-03-01


846
Amazon Simple Storage Service Guia do usuário
Formato do log

Exemplo de registro

192.0.2.3

Solicitante

O ID canônico do usuário do solicitante ou um - para solicitações não autenticadas. Se o solicitante


for um usuário do IAM, esse campo retornará o nome do usuário do IAM do solicitante junto com a
conta raiz da AWS à qual o usuário do IAM pertence. Esse identificador é o mesmo usado para fins de
controle de acesso.

Exemplo de registro

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

ID da solicitação

Uma string gerada pelo Amazon S3 para identificar exclusivamente cada solicitação.

Exemplo de registro

3E57427F33A59F07

Operação

A operação listada aqui é declarada como SOAP.operation,


REST.HTTP_method.resource_type, WEBSITE.HTTP_method.resource_type ou
BATCH.DELETE.OBJECT.

Exemplo de registro

REST.COPY.OBJECT_GET

Chave

A “chave” do objeto que está sendo copiado ou “-”, se a operação não usar um parâmetro de chave.

Exemplo de registro

/photos/2019/08/puppy.jpg

Request-URI

A parte de Request-URI da mensagem de solicitação HTTP.

Exemplo de registro

"GET /awsexamplebucket1/photos/2019/08/puppy.jpg?x-foo=bar"

Status HTTP

O código numérico do status do HTTP da parte GET da operação de cópia.

Exemplo de registro

Versão da API 2006-03-01


847
Amazon Simple Storage Service Guia do usuário
Formato do log

200

Código de erro

O Código de erro (p. 1053) do Amazon S3, da parte GET da operação de cópia ou “-”, se nenhum erro
tiver ocorrido.

Exemplo de registro

NoSuchBucket

Bytes enviados

O número de bytes de resposta enviados excluindo a sobrecarga do protocolo HTTP ou “-”, se zero.

Exemplo de registro

2662992

Tamanho do objeto

O tamanho total do objeto em questão.

Exemplo de registro

3462992

Tempo total

O número de milissegundos em que a solicitação esteve em andamento da perspectiva do servidor.


Esse valor é medido do momento do recebimento da solicitação até o momento em que o último byte
da resposta é enviado. As medidas feitas da perspectiva do cliente podem ser mais longas devido à
latência da rede.

Exemplo de registro

70

Tempo de retorno

O número de milissegundos que o Amazon S3 gastou processando a solicitação. Esse valor é medido
do momento do recebimento do último byte da solicitação até o momento em que o primeiro byte da
resposta foi enviado.

Exemplo de registro

10

Referer

O valor do cabeçalho do indicador HTTP, se presente. Os agentes do usuário HTTP (por exemplo,
navegadores) normalmente definem esse cabeçalho como o URL da página de vinculação ou
incorporação ao fazer uma solicitação.

Exemplo de registro

Versão da API 2006-03-01


848
Amazon Simple Storage Service Guia do usuário
Formato do log

"http://www.amazon.com/webservices"

Agente de usuário

O valor do cabeçalho do agente de usuário do HTTP.

Exemplo de registro

"curl/7.15.1"

Id da versão

O ID da versão do objeto que está sendo copiado ou "-", se o cabeçalho x-amz-copy-source não
especificou um parâmetro versionId como parte da origem da cópia.

Entrada de exemplo

3HL4kqtJvjVBH40Nrjfkd

ID do host

O ID de solicitação estendida x-amz-id-2 ou Amazon S3.

Exemplo de registro

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=

Versão do Signature

A versão do Signature, SigV2 ou SigV4, que foi usada para autenticar a solicitação ou - para
solicitações não autenticadas.

Exemplo de registro

SigV2

Pacote de criptografia

A codificação Secure Sockets Layer (SSL) que foi negociada para a solicitação HTTPS ou - para
HTTP.

Exemplo de registro

ECDHE-RSA-AES128-GCM-SHA256

Tipo de autenticação

O tipo de autenticação de solicitação usada,AuthHeader para cabeçalhos de autenticação,


QueryString para string de consulta (pre-signed URL) ou um - para solicitações não autenticadas.

Exemplo de registro

AuthHeader

Versão da API 2006-03-01


849
Amazon Simple Storage Service Guia do usuário
Excluir arquivos de log

Cabeçalho de host

O endpoint usado para conectar-se ao Amazon S3.

Exemplo de registro

s3.us-west-2.amazonaws.com

Algumas regiões mais antigas oferecem suporte a endpoints legados. Você pode ver esses endpoints
nos logs de acesso ao servidor ou em logs do CloudTrail. Para obter mais informações, consulte
Endpoints legados (p. 1030). Para obter uma lista completa de regiões e endpoints do Amazon S3,
consulte Endpoints e cotas do Amazon S3 na Referência geral da AWS.
Versão do TLS

A versão do Transport Layer Security (TLS) negociada pelo cliente. O valor é um dos seguintes:
TLSv1, TLSv1.1, TLSv1.2 ou - se o TLS não foi usado.

Exemplo de registro

TLSv1.2

Informações personalizadas do log de acesso


Você pode incluir informações personalizadas a serem armazenadas no registro de log de acesso de
uma solicitação. Para fazer isso, adicione um parâmetro de string de consulta personalizado à URL da
solicitação. O Amazon S3 ignora os parâmetros query-string que começam com “x-”, mas inclui esses
parâmetros no registro do log de acesso da solicitação, como parte do campo Request-URI do registro
do log.

Por exemplo, uma solicitação GET para "s3.amazonaws.com/awsexamplebucket1/


photos/2019/08/puppy.jpg?x-user=johndoe" funciona da mesma forma que a solicitação para
"s3.amazonaws.com/awsexamplebucket1/photos/2019/08/puppy.jpg", exceto pelo fato de que
a string "x-user=johndoe" está incluída no campo Request-URI do registro de log associado. Essa
funcionalidade está disponível apenas na interface REST.

Considerações de programação para o formato do log de acesso


ao servidor extensível
Ocasionalmente, podemos estender o formato de registro de log de acesso adicionando novos campos ao
final de cada linha. Portanto, você deve escrever qualquer código que analise logs de acesso ao servidor
para lidar com os campos finais que ele possa não entender.

Exclusão de arquivos de log do Amazon S3


Um bucket do Amazon S3 com registro em log de acesso ao servidor habilitado pode acumular muitos
objetos de log do servidor ao longo do tempo. Seu aplicativo pode precisar desses logs de acesso por
um período específico após sua criação e, depois disso, você poderá excluí-los. Você pode usar a
configuração de ciclo de vida do Amazon S3 para definir regras para que o S3 coloque esses objetos
automaticamente na fila para exclusão ao final de seus ciclos de vida.

Você pode definir uma configuração de ciclo de vida para um subconjunto de objetos no seu bucket do S3
usando um prefixo compartilhado (ou seja, objetos com nomes que começam com uma string em comum).
Se você especificou um prefixo na sua configuração do registro em log de acesso ao servidor, defina uma
regra de configuração do ciclo de vida para excluir objetos de log com esse prefixo.

Versão da API 2006-03-01


850
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

Por exemplo, se os seus objetos de log têm o prefixo logs/, você pode definir uma regra de configuração
do ciclo de vida para excluir todos os objetos no bucket com o prefixo /logs após um período
especificado.

Para obter mais informações sobre a configuração do ciclo de vida, consulte Gerenciando seu ciclo de vida
de armazenamento (p. 569).

Para obter mais informações sobre o registro em log de acesso ao servidor, consulte Registrar em log as
solicitações com registro em log de acesso ao servidor (p. 833).

Uso de logs de acesso do Amazon S3 para identificar


solicitações
Você pode identificar solicitações do Amazon S3 usando logs de acesso do Amazon S3.
Note

• Recomendamos que você use eventos de dados do AWS CloudTrail em vez de logs de acesso
do Amazon S3. Os eventos de dados do CloudTrail são mais fáceis de configurar e contêm
mais informações. Para obter mais informações, consulte Identificar solicitações do Amazon S3
usando o CloudTrail (p. 826).
• Dependendo de quantas solicitações de acesso você receber, poderá ser necessário mais
recursos ou tempo para analisar seus logs.

Tópicos
• Consultar logs de acesso para solicitações usando o Amazon Athena (p. 851)
• Identificar solicitações do Signature versão 2 usando logs de acesso do Amazon S3 (p. 853)
• Identificar solicitações de acesso a objetos usando logs de acesso do Amazon S3 (p. 854)

Consultar logs de acesso para solicitações usando o Amazon


Athena
Você pode identificar solicitações do Amazon S3 com logs de acesso do Amazon S3 usando o Amazon
Athena.

O Amazon S3 armazena logs de acesso ao servidor como objetos em um bucket do S3. Muitas vezes, é
mais fácil usar uma ferramenta que possa analisar os logs no Amazon S3. O Athena oferece suporte à
análise de objetos do S3 e pode ser usado para consultar logs de acesso do Amazon S3.

Example
O exemplo a seguir mostra como você pode consultar os logs de acesso ao servidor do Amazon S3 no
Amazon Athena.
Note

Para especificar um local do Amazon S3 em uma consulta do Athena, é necessário formatar o


nome do bucket de destino e o prefixo de destino onde os logs são entregues como um URI do
S3, da seguinte forma: s3://DOC-EXAMPLE-BUCKET1-logs/prefix/

1. Abra o console do Athena em https://console.aws.amazon.com/athena/.


2. No Query Editor, execute um comando semelhante ao seguinte:

create database s3_access_logs_db

Versão da API 2006-03-01


851
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

Note

É uma prática recomendada criar o banco de dados na mesma região da AWS que a do
bucket do S3.
3. No Query Editor, execute um comando semelhante ao seguinte para criar um esquema de tabela
no banco de dados criado na etapa 2. Os valores de tipo de dados STRING e BIGINT são as
propriedades do log de acesso. É possível consultar essas propriedades no Athena. Para LOCATION,
insira o bucket do S3 e o caminho do prefixo conforme indicado anteriormente.

CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`(


`bucketowner` STRING,
`bucket_name` STRING,
`requestdatetime` STRING,
`remoteip` STRING,
`requester` STRING,
`requestid` STRING,
`operation` STRING,
`key` STRING,
`request_uri` STRING,
`httpstatus` STRING,
`errorcode` STRING,
`bytessent` BIGINT,
`objectsize` BIGINT,
`totaltime` STRING,
`turnaroundtime` STRING,
`referrer` STRING,
`useragent` STRING,
`versionid` STRING,
`hostid` STRING,
`sigv` STRING,
`ciphersuite` STRING,
`authtype` STRING,
`endpoint` STRING,
`tlsversion` STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)
(\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*
\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://awsexamplebucket1-logs/prefix/'

4. No painel de navegação, em Database (Banco de dados), escolha o banco de dados.


5. Em Tables (Tabelas), selecione Preview table (Visualizar tabela) ao lado do nome da tabela.

No painel Results (Resultados), você deve ver dados dos logs de acesso ao servidor, como
bucketowner, bucket, requestdatetime e assim por diante. Isso significa que você criou a tabela
do Athena com êxito. Agora você pode consultar os logs de acesso ao servidor do Amazon S3.

Example : Mostre quem excluiu um objeto e quando (timestamp, endereço IP e usuário IAM)

SELECT RequestDateTime, RemoteIP, Requester, Key


FROM s3_access_logs_db.mybucket_logs
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';

Versão da API 2006-03-01


852
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

Example : Mostre todas as operações que foram realizadas por um usuário do IAM

SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE requester='arn:aws:iam::123456789123:user/user_name';

Example : mostrar todas as operações que foram realizadas em um objeto em um determinado


período

SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE Key='prefix/images/picture.jpg'
AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');

Example : mostrar a quantidade de dados transferidos por um endereço IP específico em um


determinado período

SELECT SUM(bytessent) AS uploadTotal,


SUM(objectsize) AS downloadTotal,
SUM(bytessent + objectsize) AS Total
FROM s3_access_logs_db.mybucket_logs
WHERE RemoteIP='1.2.3.4'
AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-06-01','yyyy-MM-dd')
AND parse_datetime('2017-07-01','yyyy-MM-dd');

Note

Para reduzir o tempo de retenção do log, você pode criar uma política de ciclo de vida do Amazon
S3 para o bucket de logs de acesso ao servidor. Configure a política de ciclo de vida para remover
os arquivos de log periodicamente. Fazer isso reduz a quantidade de dados que o Athena analisa
para cada consulta. Para obter mais informações, consulte Definir a configuração do ciclo de vida
em um bucket (p. 575).

Identificar solicitações do Signature versão 2 usando logs de


acesso do Amazon S3
O suporte do Amazon S3 para o Signature versão 2 será desativado (defasado). Depois disso, o Amazon
S3 não aceitará mais solicitações que usam o Signature versão 2 e todas as solicitações deverão usar
assinaturas do Signature versão 4. É possível identificar solicitações de acesso do Signature versão 2
usando logs de acesso do Amazon S3
Note

• Recomendamos que você use eventos de dados do AWS CloudTrail em vez de logs de acesso
do Amazon S3. Os eventos de dados do CloudTrail são mais fáceis de configurar e contêm
mais informações. Para obter mais informações, consulte Identificar solicitações do Amazon S3
Signature versão 2 usando o CloudTrail (p. 828).

Versão da API 2006-03-01


853
Amazon Simple Storage Service Guia do usuário
Identificar solicitações do S3

Example : mostrar todos os solicitantes que estão enviando tráfego do Signature versão 2

SELECT requester, Sigv, Count(Sigv) as SigCount


FROM s3_access_logs_db.mybucket_logs
GROUP BY requester, Sigv;

Identificar solicitações de acesso a objetos usando logs de


acesso do Amazon S3
É possível usar consultas em logs de acesso ao servidor do Amazon S3 para identificar solicitações
de acesso ao objeto do Amazon S3, para operações, como GET, PUT e DELETE, e descobrir mais
informações sobre essas solicitações.

O exemplo de consulta do Amazon Athena a seguir mostra como obter todas as solicitações de objeto PUT
para o Amazon S3 a partir do log de acesso ao servidor.

Example : mostrar todos os solicitantes que estão enviando solicitações de objeto PUT em um
determinado período

SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime


FROM s3_access_logs_db
WHERE Operation='REST.PUT.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')

O exemplo de consulta do Amazon Athena a seguir mostra como obter todas as solicitações de objeto
GET para o Amazon S3 a partir do log de acesso ao servidor.

Example : mostrar todos os solicitantes que estão enviando solicitações de objeto GET em um
determinado período

SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime


FROM s3_access_logs_db
WHERE Operation='REST.GET.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')

O exemplo de consulta do Amazon Athena a seguir mostra como obter todas as solicitações anônimas ao
seu bucket do S3 do log de acesso ao servidor.

Example : mostrar todos os solicitantes anônimos que estão fazendo solicitações a um bucket em
um determinado período

SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime


FROM s3_access_logs_db.mybucket_logs
WHERE Requester IS NULL AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')

Versão da API 2006-03-01


854
Amazon Simple Storage Service Guia do usuário
Monitoramento de métricas com o CloudWatch

Note

• É possível modificar o intervalo de datas conforme necessário para atender às suas


necessidades.
• Esses exemplos de consulta também podem ser úteis para o monitoramento de segurança.
Você pode ver os resultados de chamadas PutObject ou GetObject de solicitantes/
endereços IP inesperados ou não autorizados e identificar solicitações anônimas ao seu bucket.
• Essa consulta recupera somente informações do momento no qual o registro estava habilitado.
• Se você estiver usando logs do AWS CloudTrail do Amazon S3, consulte Identificar o acesso a
objetos do S3 usando o CloudTrail (p. 831).

Monitoramento de métricas com o Amazon


CloudWatch
As métricas do Amazon CloudWatch para Amazon S3 podem ajudar você a entender e melhorar o
desempenho das aplicações que usam o Amazon S3. Existem várias maneiras de usar o CloudWatch com
o Amazon S3.

• Métricas de armazenamento diárias para buckets: monitore o armazenamento do bucket usando o


CloudWatch, que coleta e processa dados de armazenamento do Amazon S3 para gerar métricas
legíveis diárias. Essas métricas de armazenamento para o Amazon S3 são relatadas uma vez por dia e
fornecidas a todos os clientes sem qualquer custo adicional.
• Métricas de solicitações: monitore as solicitações do Amazon S3 para identificar e atuar rapidamente
em problemas operacionais. As métricas estão disponíveis em intervalos de 1 minuto após alguma
latência para processar. Essas métricas do CloudWatch são cobradas na mesma taxa que as métricas
personalizadas do Amazon CloudWatch. Para obter mais informações sobre a definição de preço do
CloudWatch, consulte Definição de preço do Amazon CloudWatch. Para saber como optar por obter
essas métricas, consulte Configurações de métricas do CloudWatch (p. 864).

Quando ativadas, as métricas de solicitações são relatadas para todas as operações de objeto. Por
padrão, essas métricas de 1 minuto estão disponíveis no nível do bucket do Amazon S3. Também é
possível definir um filtro para as métricas coletadas usando um prefixo compartilhado ou uma tag de
objeto. Isso permite que você alinhe filtros de métricas para aplicativos de negócios, fluxos de trabalho
ou organizações internas específicos.
• Métricas de replicação: monitore o número total de operações de API do S3 que estão pendentes de
replicação, o tamanho total de objetos com replicação pendente e o tempo máximo de replicação para
a região de destino. As regras de replicação com Controle de tempo de replicação do S3 (S3 RTC) ou
métricas de replicação do S3 habilitadas publicarão as métricas de replicação.

Para obter mais informações, consulte Monitoramento do progresso com métricas de replicação e
notificações de eventos do Amazon S3 (p. 663) ou Atendimento aos requisitos de conformidade usando
o Controle do tempo de replicação do S3 (S3 RTC) (p. 665).

Todas as estatísticas do CloudWatch ficam retidas por um período de 15 meses, para que você possa
acessar informações históricas e obter uma perspectiva melhor sobre como o serviço ou o aplicação Web
estão se saindo. Para obter mais informações, consulte O que é o Amazon CloudWatch? no Guia do
usuário do Amazon CloudWatch.

Para obter mais informações, consulte os tópicos abaixo.

Tópicos

Versão da API 2006-03-01


855
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

• Métricas e dimensões (p. 856)


• Acessar métricas do CloudWatch (p. 863)
• Configurações de métricas do CloudWatch (p. 864)

Métricas e dimensões
As métricas e dimensões de armazenamento que o Amazon S3 envia para o CloudWatch estão listadas
abaixo.

Tópicos
• Métricas de armazenamento diárias do Amazon S3 CloudWatch para buckets (p. 856)
• Métricas de solicitação do Amazon S3 CloudWatch (p. 857)
• Métricas de replicação do Amazon S3 CloudWatch (p. 859)
• Métricas do Amazon S3 em Outposts CloudWatch (p. 860)
• Dimensões do Amazon S3 CloudWatch (p. 861)

Métricas de armazenamento diárias do Amazon S3 CloudWatch


para buckets
O namespace AWS/S3 inclui as métricas de armazenamento diário a seguir para buckets.

Métrica Descrição

BucketSizeBytes A quantidade de dados em bytes armazenados em um bucket nas classes de


armazenamento STANDARD, INTELLIGENT_TIERING, Standard-Infrequent
Access (STANDARD_IA), OneZone-Infrequent Access (ONEZONE_IA),
Reduced Redundancy Storage (RRS), Deep Archive Storage (S3 Glacier
Deep Archive) ou Glacier (GLACIER). O valor é calculado somando o
tamanho de todos os objetos do bucket (objetos atuais e não atuais), incluindo
o tamanho de todas as partes de todos os multipart uploads incompletos do
bucket.

Filtros de tipo de armazenamento válidos: StandardStorage,


IntelligentTieringFAStorage, IntelligentTieringIAStorage,
IntelligentTieringAAStorage, IntelligentTieringDAAStorage,
StandardIAStorage, StandardIASizeOverhead,
StandardIAObjectOverhead, OneZoneIAStorage,
OneZoneIASizeOverhead, ReducedRedundancyStorage,
GlacierStorage, GlacierStagingStorage,
GlacierObjectOverhead, GlacierS3ObjectOverhead,
DeepArchiveStorage, DeepArchiveObjectOverhead,
DeepArchiveS3ObjectOverhead e DeepArchiveStagingStorage
(consulte a dimensão StorageType)

Unidade: bytes

Estatística válida: média

NumberOfObjects O número total de objetos armazenados em um bucket para todas as classes


de armazenamento O valor é calculado contando todos os objetos do bucket
(objetos atuais e não atuais) e o número total de partes de todos os multipart
uploads incompletos do bucket.

Versão da API 2006-03-01


856
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Métrica Descrição
Filtros de tipo de armazenamento válidos: AllStorageTypes (consulte a
dimensão StorageType)

Unidade: contagem

Estatística válida: média

Métricas de solicitação do Amazon S3 CloudWatch


O namespace AWS/S3 inclui as métricas de solicitação a seguir.

Métrica Descrição

AllRequests O número total de solicitações HTTP feitas em um bucket do Amazon S3,


independentemente do tipo. Se você estiver usando uma configuração de
métricas com um filtro, então essa métrica só retornará as solicitações HTTP
feitas para os objetos no bucket que atendam aos requisitos do filtro.

Unidade: contagem

Estatística válida: soma

GetRequests O número de solicitações HTTP GET feitas para objetos em um bucket do


Amazon S3. Isso não inclui operações de lista.

Unidade: contagem

Estatística válida: soma


Note

Solicitações paginadas orientadas a listas, como Listar multipart


uploads, Listar partes, Obter versões de objetos do bucket e outras,
não estão incluídas nessa métrica.

PutRequests O número de solicitações HTTP PUT feitas para objetos em um bucket do


Amazon S3.

Unidade: contagem

Estatística válida: soma

DeleteRequests O número de solicitações HTTP DELETE feitas para objetos em um bucket


do Amazon S3. Isso também inclui solicitações Excluir vários objetos. Essa
métrica exibe o número de solicitações, não o número de objetos excluídos.

Unidade: contagem

Estatística válida: soma

HeadRequests O número de solicitações HTTP HEAD feitas para um bucket do Amazon S3.

Unidade: contagem

Estatística válida: soma

PostRequests O número de solicitações HTTP POST feitas para um bucket do Amazon S3.

Versão da API 2006-03-01


857
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Métrica Descrição
Unidade: contagem

Estatística válida: soma


Note

As solicitações Excluir vários objetos e Conteúdo de objetos do


SELECT não estão incluídas nessa métrica.

SelectRequests O número de solicitações Conteúdo de objetos do SELECT do Amazon S3


feitas para os objetos em um bucket do Amazon S3.

Unidade: contagem

Estatística válida: soma

SelectBytesScanned Número de bytes de dados verificados com solicitações Conteúdo de objetos


do SELECT do Amazon S3 feitas em um bucket do Amazon S3.

Unidade: bytes

Estatísticas válidas: média (bytes por solicitação), soma (bytes por período),
contagem de amostras, mín., máx. (o mesmo que p100), qualquer percentil
entre p0,0 e p99,9

SelectBytesReturned Número de bytes de dados retornados com solicitações Conteúdo de objetos


do SELECT do Amazon S3 feitas em um bucket do Amazon S3.

Unidade: bytes

Estatísticas válidas: média (bytes por solicitação), soma (bytes por período),
contagem de amostras, mín., máx. (o mesmo que p100), qualquer percentil
entre p0,0 e p99,9

ListRequests O número de solicitações HTTP que listam o conteúdo de um bucket.

Unidade: contagem

Estatística válida: soma

BytesDownloaded O número de bytes baixados para solicitações feitas para um bucket do


Amazon S3, em que a resposta inclui um corpo.

Unidade: bytes

Estatísticas válidas: média (bytes por solicitação), soma (bytes por período),
contagem de amostras, mín., máx. (o mesmo que p100), qualquer percentil
entre p0,0 e p99,9

BytesUploaded O número de bytes que contêm um corpo de solicitação, carregados para um


bucket do Amazon S3.

Unidade: bytes

Estatísticas válidas: média (bytes por solicitação), soma (bytes por período),
contagem de amostras, mín., máx. (o mesmo que p100), qualquer percentil
entre p0,0 e p99,9

Versão da API 2006-03-01


858
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Métrica Descrição

4xxErrors O número de solicitações de código de status de erro do cliente HTTP 4xx


feitas para um bucket do Amazon S3 com um valor de 0 ou 1. A estatística
average mostra a taxa de erros, e a estatística sum mostra a contagem
desse tipo de erro, durante cada período.

Unidade: contagem

Estatísticas válidas: média (relatórios por solicitação), soma (relatórios por


período), mín., máx., contagem de amostras

5xxErrors O número de solicitações de código de status de erro do servidor HTTP 5xx


feitas para um bucket do Amazon S3 com um valor de 0 ou 1. A estatística
average mostra a taxa de erros, e a estatística sum mostra a contagem
desse tipo de erro, durante cada período.

Unidade: contagens

Estatísticas válidas: média (relatórios por solicitação), soma (relatórios por


período), mín., máx., contagem de amostras

FirstByteLatency O tempo por solicitação desde o recebimento da solicitação completa por


um bucket do Amazon S3 até o momento em que a resposta começa a ser
retornada.

Unidade: milissegundos

Estatísticas válidas: média, soma, mín., máx. (o mesmo que p100), contagem
de amostras, qualquer percentil entre p0,0 e p100

TotalRequestLatency O tempo por solicitação decorrido do primeiro byte recebido até o último byte
enviado para um bucket do Amazon S3. Isso inclui o tempo necessário para
receber o corpo da solicitação e enviar o corpo da resposta, que não está
incluído em FirstByteLatency.

Unidade: milissegundos

Estatísticas válidas: média, soma, mín., máx. (o mesmo que p100), contagem
de amostras, qualquer percentil entre p0,0 e p100

Métricas de replicação do Amazon S3 CloudWatch


Você pode monitorar o progresso da replicação com métricas de replicação do S3 rastreando bytes
pendentes, operações pendentes e latência de replicação. Para obter mais informações, consulte
Monitoramento do progresso com métricas de replicação.
Note

Você pode habilitar alarmes para suas métricas de replicação no Amazon CloudWatch. Quando
você configurar alarmes para as métricas de replicação, defina o campo Missing data treatment
(Tratamento de dados ausentes) como Treat missing data as ignore (maintain the alarm state)
(Ignorar dados ausentes [manter o estado de alarme]).

Versão da API 2006-03-01


859
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Métrica Descrição

ReplicationLatency O número máximo de segundos em que a região de destino da replicação


está atrás da região de origem de uma determinada regra de replicação.

Unidade: segundos

Estatísticas válidas: Max

O número total de bytes de objetos com replicação pendente para uma


BytesPendingReplication
determinada regra de replicação.

Unidade: bytes

Estatísticas válidas: Max

O número de operações com replicação pendente para uma determinada


OperationsPendingReplication
regra de replicação.

Unidade: contagens

Estatísticas válidas: Max

Métricas do Amazon S3 em Outposts CloudWatch


O namespace S3Outposts inclui as seguintes métricas para buckets do Amazon S3 em Outposts. É
possível monitorar o número total de bytes provisionados do S3 em Outposts, o total de bytes livres
disponíveis para objetos e o tamanho total de todos os objetos de determinado bucket.
Note

O S3 on Outposts apenas é compatível com as métricas do Amazon S3 a seguir.


Como o S3 on Outposts tem capacidade limitada, é possível criar alertas do CloudWatch que
alertam quando a utilização do armazenamento exceder um limite.

Métrica Descrição

OutpostTotalBytes A capacidade provisionada total em bytes para um Outpost.

Unidade: bytes

Período: 5 minutos

OutpostFreeBytes A contagem de bytes livres disponíveis em Outposts para armazenar dados


de clientes.

Unidade: bytes

Período: 5 minutos

BucketUsedBytes O tamanho total de todos os objetos de determinado bucket.

Unidade: contagens

Período: 5 minutos

Versão da API 2006-03-01


860
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Dimensões do Amazon S3 CloudWatch


As seguintes dimensões são usadas para filtrar as métricas do Amazon S3.

Dimensão Descrição

BucketName Essa dimensão filtra os dados que você solicita somente para o
bucket identificado.

StorageType Essa dimensão filtra os dados que você armazenou em um bucket


pelos seguintes tipos de armazenamento:

• StandardStorage – o número de bytes usados para objetos na


classe de armazenamento STANDARD.
• IntelligentTieringAAStorage - o número de bytes usados
para objetos no nível Acesso de arquivamento da classe de
armazenamento INTELLIGENT_TIERING.
• IntelligentTieringDAAStorage - o número de bytes usados
para objetos no nível Acesso de arquivamento profundo da classe
de armazenamento INTELLIGENT_TIERING.
• IntelligentTieringFAStorage – o número de bytes
usados para objetos no nível de acesso frequente da classe de
armazenamento INTELLIGENT_TIERING.
• IntelligentTieringIAStorage – o número de bytes
usados para objetos no nível de acesso infrequente da classe de
armazenamento INTELLIGENT_TIERING.
• StandardIAStorage: o número de bytes usados para objetos
na classe de armazenamento Standard-Infrequent Access
(STANDARD_IA). Esses dados extras são necessários para
identificar e recuperar seu objeto. Você é cobrado pelas taxas do
GLACIER por esse armazenamento adicional.
• StandardIASizeOverhead – o número de bytes usados
para objetos menores de 128 KB na classe de armazenamento
STANDARD_IA.
• IntAAObjectOverhead - para cada objeto na classe de
armazenamento INTELLIGENT_TIERING no nível Acesso de
arquivamento, o GLACIER adiciona 32 KB de armazenamento
para o índice e metadados relacionados. Esses dados extras
são necessários para identificar e recuperar seu objeto. Você
é cobrado pelas taxas do GLACIER por esse armazenamento
adicional.
• IntAAS3ObjectOverhead - para cada objeto na classe de
armazenamento INTELLIGENT_TIERING no nível Acesso ao
arquivamento, o Amazon S3 usa 8 KB de armazenamento para o
nome do objeto e outros metadados. Você é cobrado pelas taxas
de STANDARD nesse armazenamento adicional.
• IntDAAObjectOverhead - para cada objeto na classe de
armazenamento INTELLIGENT_TIERING no nível Acesso
de arquivamento profundo, o GLACIER adiciona 32 KB de
armazenamento para índice e metadados relacionados. Esses
dados extras são necessários para identificar e recuperar seu
objeto. Você é cobrado pelas taxas do S3 Glacier Deep Archive
nesse armazenamento adicional.

Versão da API 2006-03-01


861
Amazon Simple Storage Service Guia do usuário
Métricas e dimensões

Dimensão Descrição
• IntDAAS3ObjectOverhead - para cada objeto na classe
de armazenamento INTELLIGENT_TIERING no nível Acesso
de arquivamento profundo, o Amazon S3 adiciona 8 KB de
armazenamento para índice e metadados relacionados. Esses
dados extras são necessários para identificar e recuperar seu
objeto. Você é cobrado pelas taxas de STANDARD nesse
armazenamento adicional.
• OneZoneIAStorage: o número de bytes usados para objetos
na classe de armazenamento OneZone-Infrequent Access
(ONEZONE_IA).
• OneZoneIASizeOverhead – o número de bytes usados para
objetos menores de 128 KB na classe de armazenamento
ONEZONE_IA.
• ReducedRedundancyStorage – o número de bytes usados para
objetos na classe Reduced Redundancy Storage (RRS).
• GlacierStorage – o número de bytes usados para objetos na
classe de armazenamento GLACIER.
• GlacierStagingStorage - O número de bytes usados
para partes de objetos Multipart antes de a solicitação
CompleteMultipartUpload seja realizada em objetos na classe de
armazenamento GLACIER.
• GlacierObjectOverhead - Para cada objet arquivado, o
GLACIER adiciona 32 KB de armazenamento para o índice e
metadados relacionados. Esses dados extras são necessários
para identificar e recuperar seu objeto. Você é cobrado pelas taxas
do GLACIER por esse armazenamento adicional.
• GlacierS3ObjectOverhead - Para cada objeto arquivado no
GLACIER, o Amazon S3 usa 8 KB de armazenamento para o
nome do objeto e outros metadados. Você é cobrado pelas taxas
de STANDARD nesse armazenamento adicional.
• DeepArchiveStorage: o número de bytes usados para objetos
na classe de armazenamento S3 Glacier Deep Archive.
• DeepArchiveObjectOverhead: para cada objeto arquivado,
o S3 Glacier Deep Archive adiciona 32 KB de armazenamento
para o índice e metadados relacionados. Esses dados extras
são necessários para identificar e recuperar seu objeto. Você
é cobrado pelas taxas do S3 Glacier Deep Archive nesse
armazenamento adicional.
• DeepArchiveS3ObjectOverhead: para cada objeto arquivado
no S3 Glacier Deep Archive, o Amazon S3 usa 8 KB de
armazenamento para o nome do objeto e outros metadados. Você
é cobrado pelas taxas de STANDARD nesse armazenamento
adicional.
• DeepArchiveStagingStorage: o número de bytes usados
para partes de objetos Multipart antes de a solicitação
CompleteMultipartUpload seja realizada em objetos na classe de
armazenamento S3 Glacier Deep Archive.

Versão da API 2006-03-01


862
Amazon Simple Storage Service Guia do usuário
Acessar métricas do CloudWatch

Dimensão Descrição

FilterId Esta dimensão filtra as configurações de métricas que você


especifica para métricas de solicitação em um bucket, por exemplo,
um prefixo ou uma tag. Você especifica um ID de filtro ao criar uma
configuração de métricas. Para obter mais informações, consulte
Criar uma configuração de métricas.

Acessar métricas do CloudWatch


Você pode usar os procedimentos a seguir para visualizar as métricas de armazenamento para o Amazon
S3. Para obter as métricas do Amazon S3 envolvidas, é necessário definir um timestamp de início e de
término. Para métricas para qualquer período de 24 horas, configure o período para 86400 segundos,
o número de segundos em um dia. Além disso, lembre de configurar as dimensões BucketName e
StorageType.

Usar a CLI da AWS


Por exemplo, se você usa a CLI da AWS para obter a média do tamanho de um bucket específico, em
bytes, você pode usar o seguinte comando:

aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --namespace AWS/S3


--start-time 2016-10-19T00:00:00Z --end-time 2016-10-20T00:00:00Z --statistics Average
--unit Bytes --region us-west-2 --dimensions Name=BucketName,Value=ExampleBucket
Name=StorageType,Value=StandardStorage --period 86400 --output json

Este exemplo gera a saída a seguir.

{
"Datapoints": [
{
"Timestamp": "2016-10-19T00:00:00Z",
"Average": 1025328.0,
"Unit": "Bytes"
}
],
"Label": "BucketSizeBytes"
}

Usar o console do S3
Como exibir métricas usando o console do CloudWatch

1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.


2. No painel de navegação, selecione Metrics (Métricas).
3. Selecione o namespace S3.
4. (Opcional) Para visualizar uma métrica, insira o nome da métrica na caixa de pesquisa.
5. (Opcional) Para filtrar pela dimensão StorageType, insira o nome de classe de armazenamento na
caixa de pesquisa.

Ver uma lista de métricas válidas armazenadas para sua conta da AWS usando a CLI da AWS

• Em um prompt de comando, use o comando a seguir.

Versão da API 2006-03-01


863
Amazon Simple Storage Service Guia do usuário
Configurações de métricas do CloudWatch

aws cloudwatch list-metrics --namespace "AWS/S3"

Configurações de métricas do CloudWatch


Com as métricas de solicitação do Amazon CloudWatch para o Amazon S3, você pode receber métricas
do CloudWatch de 1 minuto, definir alarmes do CloudWatch e acessar painéis do CloudWatch para
visualizar operações quase em tempo real e desempenho do armazenamento do Amazon S3. Para
aplicativos que dependem do armazenamento em nuvem, essas métricas permitem que você identifique
rapidamente os problemas operacionais e aja em relação a eles. Quando ativadas, essas métricas de 1
minuto estão disponíveis por padrão no nível do bucket do Amazon S3.

Se quiser obter as métricas de solicitações do CloudWatch para objetos em um bucket, será necessário
criar uma configuração de métricas para o bucket. Para obter mais informações, consulte Criar uma
configuração de métricas do CloudWatch para todos os objetos em seu bucket (p. 865).

Também é possível definir um filtro para as métricas coletadas usando um prefixo compartilhado ou tags
de objeto. Isso permite que você alinhe filtros de métricas para aplicativos de negócios, fluxos de trabalho
ou organizações internas específicos. Para obter mais informações, consulte Criar uma configuração de
métricas que filtre por prefixo ou tag de nome de chave de objeto (p. 867).

Para obter mais informações sobre as métricas do CloudWatch que estão disponíveis e as diferenças entre
métricas de armazenamento e métricas de solicitação, consulte Monitoramento de métricas com o Amazon
CloudWatch (p. 855).

Tenha o seguinte em mente ao usar as configurações de métricas:

• Você pode ter um máximo de 1.000 configurações de métricas por bucket.


• Você pode escolher que objetos em um bucket serão incluídos nas configurações de métricas, utilizando
filtros. Filtrar com um prefixo compartilhado ou tag de objeto permite que você alinhe filtros de métricas
para aplicativos de negócios, fluxos de trabalho ou organizações internas específicos. Para métricas de
solicitação para todo o bucket, crie uma configuração de métricas sem um filtro.
• As configurações de métricas são necessárias apenas para permitir métricas de solicitação. As
métricas diárias de armazenamento ao nível do bucket- estão sempre ativadas e são fornecidas sem
nenhum custo adicional. Atualmente, não é possível obter métricas diárias de armazenamento para um
subconjunto filtrado de objetos.
• Cada configuração de métricas permite o conjunto completo de métricas de solicitações
disponíveis (p. 857). As métricas específicas de operações (como PostRequests) serão relatadas
somente se houver solicitações daquele tipo para o bucket ou filtro.
• As métricas de solicitações são relatadas para todas as operações no nível de objeto. Elas também
são relatadas para operações que listam o conteúdo do bucket, como GET Bucket (Listar objetos), GET
versões de objetos do bucket e Listar multipart uploads, mas não são relatadas para outras operações
em buckets.
• As métricas de solicitações oferecem suporte à filtragem por prefixos, mas as métricas de
armazenamento não.

Entrega de métricas do CloudWatch com o melhor esforço


As métricas do CloudWatch são entregues com base em melhor esforço. A maioria de solicitações para
um objeto do Amazon S3 que tenha métricas de solicitações resulta no envio de um ponto de dados ao
CloudWatch.

A integridade e pontualidade das métricas não são garantidas. O ponto de dados para uma solicitação
específica pode ser retornado com um timestamp posterior à solicitação processada. O ponto de dados de

Versão da API 2006-03-01


864
Amazon Simple Storage Service Guia do usuário
Configurações de métricas do CloudWatch

um minuto pode ser atrasado antes de ser disponibilizado pelo CloudWatch ou pode nem ser entregue. As
métricas de solicitação do CloudWatch lhe dão uma ideia da natureza do tráfego em seu bucket em tempo
quase real. Não se trata de uma contabilidade completa de todas as solicitações.

Devido à natureza de melhor esforço deste recurso, os relatórios disponíveis no Painel de faturamento
e de gerenciamento de custo podem incluir uma ou mais solicitações de acesso que não aparecem nas
métricas do bucket.

Para obter mais informações sobre como trabalhar com métricas do CloudWatch no Amazon S3, consulte
os tópicos a seguir.

Tópicos
• Criar uma configuração de métricas do CloudWatch para todos os objetos em seu bucket (p. 865)
• Criar uma configuração de métricas que filtre por prefixo ou tag de nome de chave de objeto (p. 867)
• Excluir um filtro de métricas (p. 868)

Criar uma configuração de métricas do CloudWatch para todos


os objetos em seu bucket
Ao configurar métricas de solicitação, você pode criar uma configuração de métricas do CloudWatch para
todos os objetos no bucket ou filtrar por prefixo ou tag de objeto.

Os procedimentos neste tópico mostram como criar uma configuração para todos os objetos em seu
bucket. Para criar uma configuração que filtre por tag de objeto ou prefixo, consulte Criar uma configuração
de métricas que filtre por prefixo ou tag de nome de chave de objeto (p. 867).

Existem três tipos de métricas do Amazon CloudWatch para o Amazon S3: métricas de armazenamento,
métricas de solicitação e métricas de replicação. As métricas de armazenamento são relatadas uma vez
por dia e fornecidas para todos os clientes sem qualquer custo adicional. As métricas de solicitação estão
disponíveis em intervalos de um minuto após alguma latência para processar. As métricas de solicitação
são cobradas na taxa padrão do CloudWatch. Você deve optar por métricas de solicitação configurando-as
no console ou usando a API do Amazon S3.

Para obter mais informações sobre métricas do CloudWatch para o Amazon S3, consulte Monitoramento
de métricas com o Amazon CloudWatch (p. 855).

Você pode adicionar configurações de métricas a um bucket usando o console do Amazon S3, a Interface
de Linhas de Comando da AWS (AWS CLI) ou a API REST do Amazon S3.

Usar o console do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, selecione o nome do bucket que contém os objetos para os quais você deseja
solicitar métricas.
3. Escolha a guia Metrics.
4. Em Bucket metrics (Métricas de bucket), escolha View additional charts (Exibir gráficos adicionais).
5. Escolha a guia Request metrics (Solicitar métricas) .
6. Escolha Create Filter (Criar filtro).
7. Na caixa Filter name (Nome do filtro) insira o nome do filtro.

Nomes podem conter apenas letras, números, pontos, traços e sublinhados. Recomendamos usar o
nome EntireBucket para um filtro que se aplica a todos os objetos.

Versão da API 2006-03-01


865
Amazon Simple Storage Service Guia do usuário
Configurações de métricas do CloudWatch

8. Em Choose a filter scope (Escolher um escopo de filtro), escolha This filter applies to all objects in the
bucket (Este filtro se aplica a todos os objetos no bucket).

Você também pode definir um filtro para que as métricas sejam coletadas e relatadas apenas em um
subconjunto de objetos no bucket. Para obter mais informações, consulte Criar uma configuração de
métricas que filtre por prefixo ou tag de nome de chave de objeto (p. 867).
9. Escolha Create Filter (Criar filtro).
10. Na guia Request metrics (métricas de solicitação), em Filters (Filtros), escolha o filtro que você acabou
de criar.

Após cerca de 15 minutos, o CloudWatch começa a rastrear essas métricas de solicitação. Você pode
vê-las na guia Request metrics (Métricas de solicitação) . Você pode ver gráficos para as métricas no
console do Amazon S3 ou do CloudWatch. As métricas de solicitação são cobradas na taxa padrão do
CloudWatch. Para obter mais informações, consulte Definição de preços do Amazon CloudWatch.

Usar a CLI da AWS

1. Instale e configure a CLI da AWS. Para obter instruções, consulte Instalar, atualizar e desinstalar a
AWS CLI no Guia do usuário da Interface de Linhas de Comando da AWS.
2. Abra um terminal.
3. Execute o comando a seguir para adicionar uma configuração de métricas.

aws s3api put-bucket-metrics-configuration --endpoint https://s3.us-


west-2.amazonaws.com --bucket bucket-name --id metrics-config-id --metrics-
configuration '{"Id":"metrics-config-id","Filter":{"Prefix":"prefix1"}}'

4. Para verificar se a configuração foi adicionada, execute o comando a seguir.

aws s3api get-bucket-metrics-configuration --endpoint https://s3.us-


west-2.amazonaws.com --bucket bucket-name --id metrics-config-id

Isso retorna a resposta a seguir.

{
"MetricsConfiguration": {
"Filter": {
"Prefix": "prefix1"
},
"Id": "metrics-config-id"
}
}

Uso dos REST API

Você também pode adicionar configurações de métricas de maneira programática com a API REST
do Amazon S3. Para obter mais informações sobre como adicionar e trabalhar com configurações de
métricas, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage Service:

• Configuração de métrica PUT Bucket


• Configuração de métrica GET Bucket
• Configuração de métrica List Bucket
• Configuração de métrica DELETE Bucket

Versão da API 2006-03-01


866
Amazon Simple Storage Service Guia do usuário
Configurações de métricas do CloudWatch

Criar uma configuração de métricas que filtre por prefixo ou tag


de nome de chave de objeto
Existem três tipos de métricas do Amazon CloudWatch para o Amazon S3: métricas de armazenamento,
métricas de solicitação e métricas de replicação. As métricas de armazenamento são relatadas uma vez
por dia e fornecidas para todos os clientes sem qualquer custo adicional. As métricas de solicitação estão
disponíveis em intervalos de um minuto após alguma latência para processar. As métricas de solicitação
são cobradas na taxa padrão do CloudWatch. Você deve optar por métricas de solicitação configurando-as
no console ou usando a API do Amazon S3.

Para obter mais informações sobre métricas do CloudWatch para o Amazon S3, consulte Monitoramento
de métricas com o Amazon CloudWatch (p. 855).

Ao configurar métricas do CloudWatch, você pode criar um filtro para todos os objetos em seu bucket ou
filtrar a configuração em grupos de objetos relacionados em um único bucket. Você pode filtrar objetos
em um bucket para inclusão em uma configuração de métricas baseada em um ou mais dos seguintes
elementos:

• Prefixo de nome de chave de objeto: embora o modelo de dados do Amazon S3 seja uma estrutura
plana, você pode inferir a hierarquia usando um prefixo. O console do Amazon S3 oferece suporte a
esses prefixos com o conceito de pastas. Se você filtrar por prefixo, os objetos com mesmo prefixo serão
incluídos na configuração de métricas.
• Tag: você pode adicionar tags, que são pares de nome chave-valor, aos objetos. As tags ajudam
a encontrar e organizar objetos com facilidade. Você também pode usar tags como um filtro para
configurações de métricas.

Se você especificar um filtro, somente solicitações que operem em objetos únicos podem corresponder ao
filtro e serem incluídas nas métricas relatadas. As solicitações como Excluir vários objetos e solicitações de
List não retornam nenhuma métrica para configurações com filtros.

Para solicitar uma filtragem mais complexa, escolha dois ou mais elementos. Somente os objetos que têm
todos esses elementos são incluídos na configuração de métricas. Se você não definir filtros, todos os
objetos no bucket estão incluídos na configuração de métricas.

Usar o console do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, selecione o nome do bucket que contém os objetos para os quais você deseja
solicitar métricas.
3. Escolha a guia Metrics.
4. Em Bucket metrics (Métricas de bucket), escolha View additional charts (Exibir gráficos adicionais).
5. Escolha a guia Request metrics (Solicitar métricas) .
6. Escolha Create Filter (Criar filtro).
7. Na caixa Filter name (Nome do filtro) insira o nome do filtro.

Nomes podem conter apenas letras, números, pontos, traços e sublinhados.


8. Em Choose a filter scope (Escolher um escopo de filtro), escolha Limit the scope of this filter using
prefix and tags (Limitar o escopo deste filtro usando prefixo e tags).
9. (Opcional) Na caixa Prefix (Prefixo) insira um prefixo para limitar o escopo do filtro a um único
caminho.
10. (Opcional) Em Tags, insira uma tag Key (Chave) e Value (Valor).
11. Escolha Create Filter (Criar filtro).

Versão da API 2006-03-01


867
Amazon Simple Storage Service Guia do usuário
Configurações de métricas do CloudWatch

O Amazon S3 cria um filtro que usa as tags ou prefixos especificados.


12. Na guia Request metrics (métricas de solicitação), em Filters (Filtros), escolha o filtro que você acabou
de criar.

Agora você criou um filtro que limita o escopo de métricas de solicitação por tags e prefixos do objeto.
Cerca de 15 minutos após o CloudWatch começar a rastrear essas métricas de solicitação, você
pode ver gráficos para as métricas nos consoles do Amazon S3 e do CloudWatch. As métricas de
solicitação são cobradas na taxa padrão do CloudWatch. Para obter mais informações, consulte
Definição de preços do Amazon CloudWatch.

Você também pode configurar métricas de solicitação no nível de bucket. Para obter mais
informações, consulte Criar uma configuração de métricas do CloudWatch para todos os objetos em
seu bucket (p. 865).

Uso dos REST API

Você também pode adicionar configurações de métricas de maneira programática com a API REST
do Amazon S3. Para obter mais informações sobre como adicionar e trabalhar com configurações de
métricas, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage Service:

• Configuração de métrica PUT Bucket


• Configuração de métrica GET Bucket
• Configuração de métrica List Bucket
• Configuração de métrica DELETE Bucket

Excluir um filtro de métricas


Você pode excluir um filtro de métricas de solicitação do Amazon CloudWatch se não precisar mais
dele. Ao excluir um filtro, você não será mais cobrado pelas métricas de solicitação que usam esse filtro
específico. No entanto, você continuará a ser cobrado por qualquer outra configuração de filtro existente.

Ao excluir um filtro, você não poderá mais usar o filtro para métricas de solicitação. A exclusão de um filtro
não pode ser desfeita.

Para obter informações sobre como criar um filtro de métricas de solicitação, consulte os seguintes tópicos:

• Criar uma configuração de métricas do CloudWatch para todos os objetos em seu bucket (p. 865)
• Criar uma configuração de métricas que filtre por prefixo ou tag de nome de chave de objeto (p. 867)

Usar o console do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket.
3. Escolha a guia Metrics.
4. Em Bucket metrics (Métricas de bucket), escolha View additional charts (Exibir gráficos adicionais).
5. Escolha a guia Request metrics (Solicitar métricas) .
6. Escolha Manage filters (Gerenciar filtros).
7. Escolha o seu filtro.
Important

A exclusão de um filtro não pode ser desfeita.

Versão da API 2006-03-01


868
Amazon Simple Storage Service Guia do usuário
Notificações de eventos do Amazon S3

8. Escolha Delete (Excluir).

O Amazon S3 exclui seu filtro.

Uso dos REST API


Você também pode adicionar configurações de métricas de maneira programática com a API REST
do Amazon S3. Para obter mais informações sobre como adicionar e trabalhar com configurações de
métricas, consulte os tópicos a seguir na Referência da API do Amazon Simple Storage Service:

• Configuração de métrica PUT Bucket


• Configuração de métrica GET Bucket
• Configuração de métrica List Bucket
• Configuração de métrica DELETE Bucket

Notificações de eventos do Amazon S3


Você pode usar o recurso Notificações de eventos do Amazon S3 para receber notificações quando
determinados eventos acontecerem no bucket do S3. Para habilitar notificações, primeiro adicione uma
configuração de notificação que identifique os eventos que você deseja que o Amazon S3 publique, e os
destinos para os quais deseja que o Amazon S3 envie as notificações. Você armazena essa configuração
no sub-recurso notificação associado a um bucket. Para obter mais informações, consulte Opções de
configuração do bucket (p. 28). O Amazon S3 fornece uma API para gerenciamento desse sub-recurso.
Important
As notificações de eventos do Amazon S3 são projetadas para serem entregues pelo menos uma
vez. Em geral, as notificações de eventos são entregues em segundos, mas, às vezes, podem
levar um minuto ou mais.

Visão geral das notificações de eventos do Amazon


S3
Atualmente, o Amazon S3 pode publicar notificações para os seguintes eventos:

• Evento de criação de um objeto: o Amazon S3 é compatível com várias APIs para criação de
objetos. Você pode solicitar notificação quando apenas uma API específica for usada (por
exemplo, s3:ObjectCreated:Put). Você também pode usar um caractere curinga (por exemplo,
s3:ObjectCreated:*) para solicitar notificação quando um objeto é criado, independentemente da
API usada.
• Eventos de remoção de objetos: o Amazon S3 é compatível com exclusões de objetos com e sem
versionamento. Para obter mais informações, consulte Usando o controle de versão em buckets do
S3 (p. 516).

Você pode solicitar uma notificação quando um objeto não versionado for excluído
ou quando um objeto com versionamento for excluído permanentemente usando o
tipo de evento s3:ObjectRemoved:Delete. Ou você pode solicitar uma notificação
quando um marcador de exclusão for criado para um objeto com versionamento usando
s3:ObjectRemoved:DeleteMarkerCreated. Você também pode usar um caractere curinga
s3:ObjectRemoved:* para solicitar uma notificação sempre que um objeto for excluído. Para obter
informações sobre como excluir objetos com versionamento, consulte Excluir versões de objetos de um
bucket com versionamento habilitado (p. 534).
• Eventos de restauração de objetos: o Amazon S3 é compatível com a restauração de objetos arquivados
na classe de armazenamento S3 Glacier. Você solicita ser notificado da conclusão da restauração do

Versão da API 2006-03-01


869
Amazon Simple Storage Service Guia do usuário
Visão geral

objeto usando s3:ObjectRestore:Completed. Você usa s3:ObjectRestore:Post para solicitar a


notificação do início de uma restauração.
• Eventos de perda de objetos de Reduced Redundancy Storage (RRS): o Amazon S3 envia uma
mensagem de notificação quando detecta que um objeto da classe de armazenamento RRS foi perdido.
• Eventos de replicação: o Amazon S3 envia notificações de eventos para configurações de replicação
que têm métricas de replicação S3 ou Controle do tempo de replicação do S3 (S3 RTC) habilitado. Você
pode monitorar o progresso minuto a minuto da replicação, rastreando bytes pendentes, operações
pendentes e latência de replicação. Para obter informações sobre métricas de replicação, consulte
Monitoramento do progresso com métricas de replicação e notificações de eventos do Amazon
S3 (p. 663).

Para obter uma lista dos tipos de evento com suporte, consulte Tipos de evento compatíveis (p. 871).

O Amazon S3 é compatível com os seguintes destinos onde pode publicar eventos:

• Amazon Simple Notification Service (Amazon SNS)

O Amazon SNS é um serviço de mensagens por push flexível e totalmente gerenciado. Usando esse
serviço, você pode enviar mensagens por push a dispositivos móveis ou serviços distribuídos. Com o
SNS você pode publicar uma mensagem uma vez e entregá-la uma ou mais vezes. Atualmente, o SNS
padrão só é permitido como um destino de notificação de eventos do S3, ao passo que o SNS FIFO não
é permitido. Para obter mais informações sobre o SNS, consulte o Amazon SNS.
• Fila do Amazon Simple Queue Service (Amazon SQS)

O Amazon SQS é um serviço de fila de mensagens confiável, escalável e totalmente gerenciado. Você
pode usar o SQS para transmitir qualquer volume de dados sem exigir que outros serviços estejam
sempre disponíveis. Na configuração de notificação você pode solicitar que o Amazon S3 publique
eventos em uma fila do SQS.

No momento, a fila padrão do SQS só é permitida como um destino de notificação de evento do Amazon
S3, enquanto a fila FIFO do SQS não é permitida. Para obter mais informações sobre o Amazon SQS,
consulte Amazon SQS.
• AWS Lambda

O AWS Lambda é um serviço de computação que facilita a criação de aplicações que respondam
rapidamente a novas informações. O AWS Lambda executa seu código em resposta a eventos, como
uploads de imagens, atividades no aplicativo, cliques em sites ou saídas de dispositivos conectados.

Você pode usar o AWS Lambda para estender outros serviços da AWS com lógica personalizada ou
criar seu próprio back-end que opere na escala, performance e segurança da AWS. Com o Lambda, é
possível criar facilmente aplicações distintas orientadas por eventos que são executadas apenas quando
necessário e escalam automaticamente de algumas solicitações por dia a milhares por segundo.

O Lambda pode executar código personalizado em resposta a eventos do bucket do Amazon S3. Você
faz upload do código personalizado no Lambda e cria o que é chamado de função Lambda Quando o
Amazon S3 detecta um evento de um tipo específico (por exemplo, um evento de criação de objeto),
ele pode publicar o evento no AWS Lambda e invocar sua função no Lambda. Em resposta, o Lambda
executa a função.

Warning

Se a notificação for gravada no mesmo bucket que aciona a notificação, isso poderá causar um
loop de execução. Por exemplo, se o bucket acionar uma função do Lambda toda vez que houver
um upload de objeto, e a função fizer upload de um objeto no bucket, a função será acionada
indiretamente. Para evitar isso, use dois buckets ou configure o trigger para só se aplicar a um
prefixo usado em objetos recebidos.

Versão da API 2006-03-01


870
Amazon Simple Storage Service Guia do usuário
Tipos e destinos de notificações

Para obter mais informações e um exemplo de uso de notificações do Amazon S3 com o AWS
Lambda, consulte Usar o AWS Lambda com o Amazon S3 no Guia do desenvolvedor do AWS
Lambda.

Para obter mais informações sobre notificações de eventos do S3, consulte as seguintes seções:

Tópicos
• Tipos e destinos de notificações de evento (p. 871)
• Conceder permissões para publicar mensagens de notificação de vento a um destino (p. 874)
• Habilitar notificações de eventos (p. 876)
• Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS) (p. 879)
• Configurar notificações de eventos usando filtragem de nomes de chave de objeto (p. 884)
• Estrutura de mensagens de evento (p. 889)

Tipos e destinos de notificações de evento


O Amazon S3 oferece suporte a vários tipos de notificação de eventos e destinos nos quais as notificações
podem ser publicadas. Você pode especificar o tipo de evento e o destino ao configurar suas notificações
de eventos.

Tópicos
• Tipos de evento compatíveis (p. 871)
• Destinos de eventos suportados (p. 872)

Tipos de evento compatíveis


O Amazon S3 pode publicar eventos dos seguintes tipos. Você especifica esses tipos de evento na
configuração de notificação.

Tipos de evento Descrição

s3:TestEvent Quando uma notificação é habilitada, o Amazon S3 publica uma


notificação de teste para garantir que o tópico exista e que o
proprietário do bucket tenha permissão para publicar o tópico
especificado.

Se a ativação da notificação falhar, você não receberá uma


notificação de teste.

s3:ObjectCreated:* As APIs do Amazon S3, como PUT, POST e COPY,


podem criar um objeto. Com esses tipos de evento, você
s3:ObjectCreated:Put pode habilitar notificações quando um objeto é criado
usando uma API específica. Ou você pode usar o tipo
s3:ObjectCreated:Post de evento s3:ObjectCreated: * para solicitar notificação,
independentemente da API usada para criar um objeto.
s3:ObjectCreated:Copy
Você não recebe notificações de eventos de operações que
s3:ObjectCreated:CompleteMultipartUpload
falharam.

s3:ObjectRemoved:* Usando os tipos de evento ObjectRemoved, você pode habilitar


a notificação quando um objeto ou um lote de objetos é
s3:ObjectRemoved:Delete removido de um bucket.

s3:ObjectRemoved:DeleteMarkerCreated

Versão da API 2006-03-01


871
Amazon Simple Storage Service Guia do usuário
Tipos e destinos de notificações

Tipos de evento Descrição


Você pode solicitar uma notificação quando um objeto
for excluído ou quando um objeto com versionamento
for excluído permanentemente usando o tipo de evento
s3:ObjectRemoved:Delete. Ou você pode solicitar
uma notificação quando um marcador de exclusão
for criado para um objeto com versionamento usando
s3:ObjectRemoved:DeleteMarkerCreated. Para obter
informações sobre como excluir objetos com versionamento,
consulte Excluir versões de objetos de um bucket com
versionamento habilitado (p. 534). Você também pode usar um
caractere curinga s3:ObjectRemoved:* para solicitar uma
notificação sempre que um objeto for excluído.

Você não recebe notificações de eventos de exclusões


automáticas de políticas de ciclo de vida ou de operações que
falharam.

s3:ObjectRestore:Post Com os tipos de evento de objeto de restauração, você pode


receber notificações de iniciação e conclusão ao restaurar
s3:ObjectRestore:Completed objetos da classe de armazenamento S3 Glacier.

Você pode usar o s3:ObjectRestore:Post para solicitar


uma notificação do início da restauração do objeto. Você pode
usar o s3:ObjectRestore:Completed para solicitar uma
notificação da conclusão de restauração.

s3:ReducedRedundancyLostObject Você pode usar esse tipo de evento para solicitar uma
mensagem de notificação quando o Amazon S3 detectar que
um objeto da classe de armazenamento RRS foi perdido.

s3:Replication:OperationFailedReplicationVocê recebe esse evento de notificação quando um objeto


qualificado para replicação usando o S3 Replication Time
Control falhar ao replicar.

s3:Replication:OperationMissedThresholdVocê recebe esse evento de notificação quando um objeto


qualificado para replicação usando o S3 Replication Time
Control excede o limite de 15 minutos para replicação.

s3:Replication:OperationReplicatedAfterThreshold
Você recebe esse evento de notificação quando um objeto
qualificado para replicação usando o S3 Replication Time
Control replica após o limite de 15 minutos.

s3:Replication:OperationNotTracked Você recebe esse evento de notificação para um objeto


qualificado para replicação usando o S3 Replication Time
Control, mas que não é mais rastreado pelas métricas de
replicação.

Destinos de eventos suportados


O Amazon S3 pode enviar mensagens de notificação de eventos aos seguintes destinos. Você especifica o
valor do nome de recurso da Amazon (ARN) desses destinos na configuração de notificação.

• Amazon Simple Notification Service (Amazon SNS) topics


• Filas do Amazon Simple Queue Service (Amazon SQS)
• Função do AWS Lambda

Versão da API 2006-03-01


872
Amazon Simple Storage Service Guia do usuário
Tipos e destinos de notificações

Você deve conceder ao Amazon S3 permissões para postar mensagens em um tópico do Amazon SNS ou
em uma fila do Amazon SQS. Você também deve conceder permissão ao Amazon S3 para invocar uma
função do AWS Lambda em seu nome. Para obter informações sobre como conceder essas permissões,
consulte Conceder permissões para publicar mensagens de notificação de vento a um destino (p. 874).

Tópico do Amazon SNS


O Amazon SNS coordena e gerencia a entrega ou o envio de mensagens a endpoints ou clientes
assinantes. Você pode usar o console do Amazon SNS para criar um tópico do Amazon SNS para o qual
suas notificações podem ser enviadas.

O tópico deve estar na mesma região da AWS que o bucket do Amazon S3. Para obter informações
sobre como criar um tópico do Amazon SNS, consulte Conceitos básicos do Amazon SNS no Guia do
desenvolvedor do Amazon Simple Notification Service e nas Perguntas frequentes sobre o Amazon SNS.

Antes de poder usar o tópico do Amazon SNS criado como um destino de notificação de evento, você
precisa do seguinte:

• O ARN para o tópico do Amazon SNS


• Uma assinatura válida de tópico do Amazon SNS (os assinantes de tópico são notificados quando uma
mensagem é publicada para seu tópico do Amazon SNS)

Fila do Amazon SQS


O Amazon SQS oferece filas hospedadas confiáveis e escaláveis para o armazenamento de mensagens à
medida que transitam entre computadores. Você pode usar o console do Amazon SQS para criar uma fila
do Amazon SQS para a qual suas notificações podem ser enviadas.

A fila do Amazon SQS deve estar na mesma região que o bucket do Amazon S3. Para obter informações
sobre como criar uma fila do Amazon SQS, consulte O que é o Amazon Simple Queue Service e Conceitos
básicos do Amazon SQS no Guia do desenvolvedor do Amazon Simple Queue Service.

Antes de poder usar a fila do Amazon SQS como um destino de notificação de evento, você precisa do
seguinte:

• O ARN para o tópico do Amazon SQS

Função Lambda
Você pode usar o console do AWS Lambda para criar uma função do Lambda que use a infraestrutura
da AWS para executar o código em seu nome. A função do Lambda deve estar na mesma região que
seu bucket do S3. Você também deve ter o nome ou o ARN de uma função do Lambda para configurar a
função do Lambda como um destino de notificação de evento.
Warning

Se a notificação for gravada no mesmo bucket que aciona a notificação, isso poderá causar um
loop de execução. Por exemplo, se o bucket acionar uma função do Lambda toda vez que houver
um upload de objeto, e a função fizer upload de um objeto no bucket, a função será acionada
indiretamente. Para evitar isso, use dois buckets ou configure o trigger para só se aplicar a um
prefixo usado em objetos recebidos.
Para obter mais informações e um exemplo de uso de notificações do Amazon S3 com o AWS
Lambda, consulte Usar o AWS Lambda com o Amazon S3 no Guia do desenvolvedor do AWS
Lambda.

Versão da API 2006-03-01


873
Amazon Simple Storage Service Guia do usuário
Conceder permissões

Conceder permissões para publicar mensagens de


notificação de vento a um destino
Para que o Amazon S3 possa publicar mensagens de notificação de eventos em um destino, conceda ao
principal do Amazon S3 as permissões necessárias para chamar a API relevante para publicar mensagens
em um tópico do SNS, uma fila do SQS ou uma função do Lambda.

Tópicos
• Conceder permissões para invocar uma função do AWS Lambda (p. 874)
• Conceder permissões para publicar mensagens em um tópico do SNS ou em uma fila do
SQS (p. 874)

Conceder permissões para invocar uma função do AWS Lambda


O Amazon S3 publica mensagens de eventos no AWS Lambda invocando uma função do Lambda e
fornecendo a mensagem de evento como um argumento.

Ao usar o console do Amazon S3 para configurar notificações de eventos em um bucket do Amazon S3


para uma função do Lambda, o console configurará as permissões necessárias na função do Lambda para
que o Amazon S3 tenha as permissões para invocar a função no bucket. Para obter mais informações,
consulte Habilitar e configurar notificações de eventos usando o console do Amazon S3 (p. 877).

Você também pode conceder permissões do Amazon S3 do AWS Lambda para invocar a função do
Lambda. Para obter mais informações, consulte oTutorial: Usar o AWS Lambda com o Amazon S3 no Guia
do desenvolvedor do AWS Lambda.

Conceder permissões para publicar mensagens em um tópico do


SNS ou em uma fila do SQS
Para conceder permissões do Amazon S3 para publicar mensagens no tópico SNS ou na fila do SQS,
anexe uma política do AWS Identity and Access Management (IAM) ao tópico SNS de destino ou à fila do
SQS.

Para obter um exemplo de como anexar uma política a um tópico do SNS ou a uma fila do SQS, consulte
Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS) (p. 879). Para
obter mais informações sobre permissões, consulte os tópicos a seguir:

• Exemplos de casos de controle de acesso do Amazon SNS no Guia do desenvolvedor do Amazon


Simple Notification Service
• Gerenciamento de identidade e acesso no Amazon SQS no Guia do desenvolvedor do Amazon Simple
Queue Service

Política do IAM para um tópico do SNS de destino


Veja a seguir um exemplo de uma política do AWS Identity and Access Management (IAM) que você
anexa ao tópico do SNS de destino.

{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",

Versão da API 2006-03-01


874
Amazon Simple Storage Service Guia do usuário
Conceder permissões

"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SNS:Publish"
],
"Resource": "arn:aws:sns:Region:account-id:topic-name",
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::awsexamplebucket1" },
"StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" }
}
}
]
}

Política do IAM para uma fila do SQS de destino


Veja a seguir um exemplo de uma política do IAM anexada à fila do SQS de destino.

{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SQS:SendMessage"
],
"Resource": "arn:aws:sqs:Region:account-id:queue-name",
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" },
"StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" }
}
}
]
}

Observe que para as políticas do IAM do Amazon SNS e do Amazon SQS, você pode especificar a
condição StringLike na política, em vez da condição ArnLike.

"Condition": {       
"StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }
}

Política de chaves do AWS KMS


Se a fila do SQS ou os tópicos do SNS forem criptografados com uma chave mestra do cliente (CMK)
gerenciada pelo cliente do AWS Key Management Service (AWS KMS), conceda ao Amazon S3
permissão para que o principal de serviço trabalhe com os tópicos criptografados ou a fila. Para conceder
a permissão ao principal de serviço do Amazon S3, adicione a instrução a seguir à política de chave para a
CMK gerenciada pelo cliente.

{
"Version": "2012-10-17",
"Id": "example-ID",

Versão da API 2006-03-01


875
Amazon Simple Storage Service Guia do usuário
Habilitar notificações de eventos

"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}

Para obter mais informações sobre políticas de chaves do AWS KMS, consulte Usar políticas de chaves no
AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para obter mais informações sobre como usar a criptografia no lado do servidor com o AWS KMS para o
Amazon SQS e o Amazon SNS, consulte:

• Gerenciamento de chaves no Guia do desenvolvedor do Amazon Simple Notification Service.


• Gerenciamento de chaves no Guia do desenvolvedor do Amazon Simple Queue Service.
• Encrypting messages published to Amazon SNS with AWS KMS no AWS Compute Blog.

Habilitar notificações de eventos


A habilitação de notificações é uma operação no nível do bucket. Você armazena informações de
configuração de notificação no sub-recurso de notificação associado a um bucket. Depois de criar ou
alterar a configuração de notificação de bucket, normalmente, é necessário aguardar cinco minutos
para que as alterações entrem em vigor. Um s3:TestEvent ocorre quando a notificação é habilitada
pela primeira vez. Você pode usar qualquer um dos métodos a seguir para gerenciar a configuração de
notificação:

• Usar o console do Amazon S3: a interface de usuário do console permite que você defina uma
configuração de notificação em um bucket sem ter que escrever nenhum código. Para obter mais
informações, consulte Habilitar e configurar notificações de eventos usando o console do Amazon
S3 (p. 877).
• Usar os AWS SDKs de forma programática: internamente, tanto o console quanto os SDKs chamam a
API REST do Amazon S3 para gerenciar sub-recursos de notificação associados ao bucket. Para obter
a configuração de notificação usando exemplos do AWS SDK, consulte Demonstração: configurar um
bucket para notificações (tópico do SNS ou fila do SQS) (p. 879).
Note

Você também pode fazer chamadas de API REST do Amazon S3 diretamente do seu código.
Contudo, isso pode ser complicado, porque exige que você grave código para autenticar suas
solicitações.

Independentemente do método usado, o Amazon S3 armazena a configuração de notificação como XML


no sub-recurso notificação associado a um bucket. Para obter informações sobre sub-recursos de bucket,
consulte Opções de configuração do bucket (p. 28).

Tópicos
• Habilitar e configurar notificações de eventos usando o console do Amazon S3 (p. 877)
• Configuração de notificações de eventos de forma programática (p. 878)

Versão da API 2006-03-01


876
Amazon Simple Storage Service Guia do usuário
Habilitar notificações de eventos

Habilitar e configurar notificações de eventos usando o console


do Amazon S3
Você pode habilitar certos eventos de bucket do Amazon S3 para enviar uma mensagem de notificação
para um destino sempre que ocorrer um evento. Esta seção explica como usar o console do Amazon S3
para habilitar notificações de evento. Para obter informações sobre como usar notificações de eventos com
os AWS SDKs e as APIs REST do Amazon S3, consulte Configuração de notificações de eventos de forma
programática (p. 878).

Pré-requisitos: antes de habilitar as notificações de eventos para o intervalo, você deve configurar um dos
tipos de destino e, em seguida, configurar permissões. Para obter mais informações, consulte Destinos de
eventos suportados (p. 872) e Conceder permissões para publicar mensagens de notificação de vento a
um destino (p. 874).

Para habilitar e configurar notificações de evento para um bucket do S3

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar eventos.
3. Escolha Propriedades.
4. Navegue até a seção Event Notifications (Notificações de eventos) e escolha Create event notification
(Criar notificação de evento).
5. Na seção General configuration (Configuração geral), especifique o nome do evento descritivo para
sua notificação de evento. Opcionalmente, você também pode especificar um prefixo e um sufixo para
limitar as notificações a objetos com chaves terminando nos caracteres especificados.

a. Insira uma descrição para o Event name (Nome do evento).

Se você não inserir um nome, um identificador exclusivo global (GUID) será gerado e usado para
o nome.
b. Para filtrar opcionalmente notificações de eventos por prefixo, insira um Prefix (Prefixo).

Por exemplo, é possível configurar um filtro de prefixo para receber notificações somente quando
os arquivos são adicionados a uma pasta específica (por exemplo, images/).
c. Para filtrar opcionalmente notificações de eventos por sufixo, insira um Suffix (Sufixo).

Para obter mais informações, consulte Configurar notificações de eventos usando filtragem de
nomes de chave de objeto (p. 884).
6. Na seção Event types (Tipos de evento), selecione um ou mais tipos de eventos para os quais você
deseja receber notificações.

Para obter uma lista dos tipos de evento, consulte Tipos de evento compatíveis (p. 871).
7. Na seção Destination (Destino), escolha o destino da notificação de evento.
Note

Antes de publicar notificações de eventos, você deve conceder ao principal do Amazon S3


as permissões necessárias para chamar a API relevante para publicar notificações em uma
função do Lambda, tópico do SNS ou fila do SQS.

a. Selecione o tipo de destino: Lambda Function (Função do Lambda), SNS Topic (Tópico do SNS)
ou SQS Queue (Fila do SQS).
b. Depois de escolher o tipo de destino, escolha uma função, um tópico ou uma fila na lista.
c. Como alternativa, se você preferir especificar um nome de recurso da Amazon (ARN), selecione
Enter ARN (Inserir ARN) e insira o ARN.
Versão da API 2006-03-01
877
Amazon Simple Storage Service Guia do usuário
Habilitar notificações de eventos

Para obter mais informações, consulte Destinos de eventos suportados (p. 872).
8. Escolha Save changes (Salvar alterações) e o Amazon S3 enviará uma mensagem de teste para o
destino de notificação de evento.

Configuração de notificações de eventos de forma programática


Por padrão, a notificações não estão habilitadas para nenhum tipo de evento. Portanto, no início, o sub-
recurso notificação armazena uma configuração vazia.

<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
</NotificationConfiguration>

Para habilitar notificações para eventos de tipos específicos, você substitui o XML pela configuração
apropriada que identifica os tipos de evento que deseja que o Amazon S3 publique e o destino
onde deseja que os eventos sejam publicados. Para cada destino, você adiciona uma configuração
correspondente de XML.

Para publicar mensagens de eventos em uma fila do SQS

Para definir uma fila do SQS como o destino de notificação para um ou mais tipos de evento, adicione o
QueueConfiguration.

<NotificationConfiguration>
<QueueConfiguration>
<Id>optional-id-string</Id>
<Queue>sqs-queue-arn</Queue>
<Event>event-type</Event>
<Event>event-type</Event>
...
</QueueConfiguration>
...
</NotificationConfiguration>

Para publicar mensagens de eventos em um tópico do SNS

Para definir um tópico do SNS como o destino de notificação para tipos de eventos específicos, adicione o
TopicConfiguration.

<NotificationConfiguration>
<TopicConfiguration>
<Id>optional-id-string</Id>
<Topic>sns-topic-arn</Topic>
<Event>event-type</Event>
<Event>event-type</Event>
...
</TopicConfiguration>
...
</NotificationConfiguration>

Para invocar a função do AWS Lambda e fornecer uma mensagem de evento como um argumento

Para definir uma função do Lambda como o destino de notificação para tipos de evento específicos,
adicione o CloudFunctionConfiguration.

<NotificationConfiguration>
<CloudFunctionConfiguration>   
<Id>optional-id-string</Id>   

Versão da API 2006-03-01


878
Amazon Simple Storage Service Guia do usuário
Demonstração: Configuração de SNS ou SQS

<CloudFunction>cloud-function-arn</CloudFunction>        
<Event>event-type</Event>      
<Event>event-type</Event>      
...  
</CloudFunctionConfiguration>
...
</NotificationConfiguration>

Para remover todas as notificações configuradas em um intervalo

Para remover todas as notificações configuradas em um bucket, salve um elemento


<NotificationConfiguration/> vazio no sub-recurso notificação.

Quando o Amazon S3 detecta um evento do tipo específico, ele publica uma mensagem com
as informações do evento. Para obter mais informações, consulte Estrutura de mensagens de
evento (p. 889).

Para obter mais informações sobre como configurar notificações de eventos, consulte os seguintes tópicos:

• Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS) (p. 879).
• Configurar notificações de eventos usando filtragem de nomes de chave de objeto (p. 884)

Demonstração: configurar um bucket para notificações


(tópico do SNS ou fila do SQS)
Você pode receber notificações do Amazon S3 usando o Amazon Simple Notification Service (Amazon
SNS) ou o Amazon Simple Queue Service (Amazon SQS). Nesta demonstração, você adiciona uma
configuração de notificação ao seu intervalo usando um tópico do Amazon SNS e uma fila do Amazon
SQS.

Tópicos
• Resumo da demonstração (p. 879)
• Etapa 1: Criar uma fila do Amazon SQS (p. 880)
• Etapa 2: Criar um tópico do Amazon SNS (p. 881)
• Etapa 3: Adicionar a configuração de notificação para o bucket (p. 882)
• Etapa 4: Testar a configuração (p. 884)

Resumo da demonstração
Esta demonstração ajuda você a fazer o seguinte:

• Publicar eventos do tipo s3:ObjectCreated:* em uma fila do Amazon SQS.


• Publicar eventos do tipo s3:ReducedRedundancyLostObject em um tópico do Amazon SNS.

Para obter informações sobre configuração de notificação, consulte Habilitar notificações de


eventos (p. 876).

Você pode executar todas essas etapas usando o console, sem escrever nenhum código. Além disso,
exemplos de código, que usam os AWS SDKs para Java e .NET também são fornecidos para ajudar a
adicionar configurações de notificação de maneira programática.

Este procedimento inclui as seguintes etapas:

1. Crie uma fila do Amazon SQS.

Versão da API 2006-03-01


879
Amazon Simple Storage Service Guia do usuário
Demonstração: Configuração de SNS ou SQS

Usando o console do Amazon SQS, crie uma fila do SQS. É possível acessar todas as mensagens
que o Amazon S3 envia à fila de forma programática. Porém, para esta demonstração, verifique as
mensagens de notificação no console.

Anexe uma política de acesso à fila para conceder ao Amazon S3 permissão para postar mensagens.
2. Crie um tópico do Amazon SNS.

Usando o console do Amazon SNS, crie um tópico do SNS e cadastre-se no tópico para que todos
os eventos postados nele sejam entregues a você. Especifique o e-mail como o protocolo de
comunicações. Depois de criar um tópico, o Amazon SNS envia um e-mail. Você deve usar o link no e-
mail para confirmar a assinatura do tópico.

Anexe uma política de acesso ao tópico para conceder ao Amazon S3 permissão para postar
mensagens.
3. Adicione a configuração de notificação a um bucket.

Etapa 1: Criar uma fila do Amazon SQS


Siga as etapas para criar e assinar uma fila do Amazon Simple Queue Service (Amazon SQS).

1. Usando o console do Amazon SQS, crie uma fila. Para obter instruções, consulte Conceitos básicos
do Amazon SQS no Guia do desenvolvedor do Amazon Simple Queue Service.
2. Substitua a política de acesso anexada à fila pela política a seguir. No console do Amazon SQS,
selecione a fila e, na guia Permissions (Permissões), escolha Edit Policy Document (Advanced) (Editar
documento de política (Avançado).

{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SQS:SendMessage"
],
"Resource": "SQS-queue-ARN",
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" },
"StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" }
}
}
]
}

3. (Opcional) Se a fila do Amazon SQS ou o tópico do Amazon SNS estiverem habilitados para
criptografia no lado do servidor com o AWS Key Management Service (AWS KMS), adicione a
seguinte política à CMK do AWS KMS gerenciada pelo cliente simétrico associado.

Adicione a política a uma CMK gerenciada pelo cliente porque você não pode modificar a CMK
gerenciada pela AWS para o Amazon SQS ou o Amazon SNS.

{
"Version": "2012-10-17",
"Id": "example-ID",

Versão da API 2006-03-01


880
Amazon Simple Storage Service Guia do usuário
Demonstração: Configuração de SNS ou SQS

"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}

Para obter mais informações sobre como usar o SSE para o Amazon SQS e o Amazon SNS com o
AWS KMS, consulte:

• Gerenciamento de chaves no Guia do desenvolvedor do Amazon Simple Notification Service.


• Gerenciamento de chaves no Guia do desenvolvedor do Amazon Simple Queue Service.
4. Anotar o ARN da fila.

A fila do SQS que você criou é outro recurso em sua conta da AWS e tem um Nome de recurso
da Amazon (ARN) exclusivo. Você precisará desse ARN na próxima etapa. O ARN terá o seguinte
formato:

arn:aws:sqs:aws-region:account-id:queue-name

Etapa 2: Criar um tópico do Amazon SNS


Siga as etapas para criar e assinar um tópico do Amazon SNS.

1. Usando o console do Amazon SNS, crie um tópico. Para obter instruções, consulte Criação de um
tópico do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.
2. Inscreva-se no tópico. Neste exercício, use o e-mail como o protocolo de comunicação. Para obter
instruções, consulte Assinatura de um tópico do Amazon SNS no Guia do desenvolvedor do Amazon
Simple Notification Service.

Você receberá um e-mail solicitando que confirme sua assinatura no tópico. Confirme a assinatura.
3. Substitua a política de acesso anexada ao tópico pela seguinte política. Você deve atualizar a política,
fornecendo o ARN do tópico do SNS, o nome do bucket e o ID da conta do proprietário do bucket.

{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SNS:Publish"
],
"Resource": "SNS-topic-ARN",
"Condition": {

Versão da API 2006-03-01


881
Amazon Simple Storage Service Guia do usuário
Demonstração: Configuração de SNS ou SQS

"ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" },


"StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" }
}
}
]
}

4. Anote o ARN do tópico.

O tópico do SNS que você criou é outro recurso em sua conta da AWS e tem um ARN exclusivo. Você
precisará desse ARN na próxima etapa. O ARN terá o seguinte formato:

arn:aws:sns:aws-region:account-id:topic-name

Etapa 3: Adicionar a configuração de notificação para o bucket


Você pode habilitar notificações de bucket usando o console do Amazon S3 ou de forma programática
usando os AWS SDKs. Escolha qualquer uma das opções para configurar notificações no bucket. Esta
seção fornece exemplos de código que usam os AWS SDKs para Java e .NET.

Opção A: habilitar notificações em um bucket usando o console


Usando o console do Amazon S3, adicione uma configuração de notificação solicitando que o Amazon S3
faça o seguinte:

• Publique eventos do tipo Todos os eventos criados por objetos na fila do Amazon SQS.
• Publique eventos do tipo Objeto em RRS perdido no tópico do Amazon SNS.

Depois de salvar a configuração de notificação, o Amazon S3 posta uma mensagem de teste, que você
recebe via e-mail.

Para obter instruções, consulte Habilitar e configurar notificações de eventos usando o console do Amazon
S3 (p. 877).

Opção B: habilitar notificações em um bucket usando os AWS SDKs


.NET

O exemplo de código C# a seguir fornece uma lista completa de códigos que adicionam uma
configuração de notificação a um bucket. É necessário atualizar o código e fornecer o nome do bucket
e o ARN do tópico do SNS. Para obter informações sobre como criar e testar um exemplo funcional,
consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class EnableNotificationsTest
{
private const string bucketName = "*** bucket name ***";
private const string snsTopic = "*** SNS topic ARN ***";
private const string sqsQueue = "*** SQS topic ARN ***";
// Specify your bucket region (an example region is shown).

Versão da API 2006-03-01


882
Amazon Simple Storage Service Guia do usuário
Demonstração: Configuração de SNS ou SQS

private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;


private static IAmazonS3 client;

public static void Main()


{
client = new AmazonS3Client(bucketRegion);
EnableNotificationAsync().Wait();
}

static async Task EnableNotificationAsync()


{
try
{
PutBucketNotificationRequest request = new PutBucketNotificationRequest
{
BucketName = bucketName
};

TopicConfiguration c = new TopicConfiguration


{
Events = new List<EventType> { EventType.ObjectCreatedCopy },
Topic = snsTopic
};
request.TopicConfigurations = new List<TopicConfiguration>();
request.TopicConfigurations.Add(c);
request.QueueConfigurations = new List<QueueConfiguration>();
request.QueueConfigurations.Add(new QueueConfiguration()
{
Events = new List<EventType> { EventType.ObjectCreatedPut },
Queue = sqsQueue
});

PutBucketNotificationResponse response = await


client.PutBucketNotificationAsync(request);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' ",
e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown error encountered on server. Message:'{0}'
", e.Message);
}
}
}
}

Java

O seguinte exemplo mostra como adicionar uma configuração de notificação a um bucket. Para obter
instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código Java no
Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

Versão da API 2006-03-01


883
Amazon Simple Storage Service Guia do usuário
Configurar notificações usando
filtragem de nomes de chave de objeto

import java.io.IOException;
import java.util.EnumSet;

public class EnableNotificationOnABucket {

public static void main(String[] args) throws IOException {


String bucketName = "*** Bucket name ***";
Regions clientRegion = Regions.DEFAULT_REGION;
String snsTopicARN = "*** SNS Topic ARN ***";
String sqsQueueARN = "*** SQS Queue ARN ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
BucketNotificationConfiguration notificationConfiguration = new
BucketNotificationConfiguration();

// Add an SNS topic notification.


notificationConfiguration.addConfiguration("snsTopicConfig",
new TopicConfiguration(snsTopicARN,
EnumSet.of(S3Event.ObjectCreated)));

// Add an SQS queue notification.


notificationConfiguration.addConfiguration("sqsQueueConfig",
new QueueConfiguration(sqsQueueARN,
EnumSet.of(S3Event.ObjectCreated)));

// Create the notification configuration request and set the bucket


notification configuration.
SetBucketNotificationConfigurationRequest request = new
SetBucketNotificationConfigurationRequest(
bucketName, notificationConfiguration);
s3Client.setBucketNotificationConfiguration(request);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Etapa 4: Testar a configuração


Agora você pode testar a configuração fazendo upload de um objeto no bucket e verificando a notificação
de evento no console do Amazon SQS. Para obter instruções, consulte Receber uma mensagem na seção
“Conceitos básicos” do Guia do desenvolvedor do Amazon Simple Queue Service.

Configurar notificações de eventos usando filtragem


de nomes de chave de objeto
Ao configurar uma notificação de evento do Amazon S3, você deve especificar quais tipos de evento
suportados do Amazon S3 fazem com que o Amazon S3 envie a notificação. Se um tipo de evento que
você não especificou ocorrer no bucket do S3, o Amazon S3 não enviará a notificação.

Versão da API 2006-03-01


884
Amazon Simple Storage Service Guia do usuário
Configurar notificações usando
filtragem de nomes de chave de objeto

Você pode configurar as notificações para serem filtradas pelo prefixo e pelo sufixo do nome da chave de
objetos. Por exemplo, você pode definir uma configuração para que uma notificação seja enviada a você
apenas quando arquivos de imagem com uma extensão ".jpg" forem adicionados a um bucket. Ou ter
uma configuração que entregue uma notificação a um tópico do Amazon SNS quando um objeto com o
prefixo "images/" for adicionado ao bucket, e fazer com que notificações para objetos com um prefixo
"logs/" no mesmo bucket sejam entregues a uma função do AWS Lambda.

É possível definir configurações de notificação que usem filtragem de nomes de chaves de objetos
no console do Amazon S3 usando APIs do Amazon S3 por meio dos AWS SDKs ou das APIs REST
diretamente. Para obter informações sobre como usar a interface do usuário do console para definir uma
configuração de notificação em um bucket, consulte Habilitar e configurar notificações de eventos usando o
console do Amazon S3 (p. 877).

O Amazon S3 armazena a configuração de notificação como XML no sub-recurso notificação associado a


um bucket, conforme descrito em Habilitar notificações de eventos (p. 876). Você usa a estrutura XML do
Filter para definir regras para que as notificações sejam filtradas pelo prefixo e/ou pelo sufixo do nome
da chave de um objeto. Para obter informações sobre os detalhes da estrutura XML Filter, consulte
Notificação de PUT Bucket na Referência da API do Amazon Simple Storage Service.

Se uma notificação de evento do Amazon S3 estiver configurada para usar a filtragem de nomes de chave
de objeto, as notificações serão publicadas somente para objetos com um determinado prefixo ou sufixo
de nome de chave. Um caractere selvagem (“*”) não pode ser usado em filtros como um prefixo ou sufixo
para representar qualquer caractere. Se você usar quaisquer caracteres especiais no valor do prefixo ou
sufixo, deverá inseri-los no formato codificado em URL (codificado em porcentagem). Para obter mais
informações, consulte Diretrizes de nomeação de chave de objeto (p. 64).

Configurações de notificação que usam o Filter não podem definir regras de filtragem com prefixos
sobrepostos, sufixos sobrepostos ou prefixos e sufixos sobrepostos. As seções a seguir têm exemplos
de configurações de notificação válidas com filtragem de nome de chave de objeto. Elas também contêm
exemplos de configurações de notificação que não são válidas devido à sobreposição de prefixo/sufixo.

Tópicos
• Exemplos de configurações válidas de notificação com filtragem de nome de chave de objeto (p. 885)
• Exemplos de configurações de notificação com sobreposição inválida de prefixo/sufixo (p. 887)

Exemplos de configurações válidas de notificação com filtragem


de nome de chave de objeto
A configuração de notificação a seguir contém uma configuração de fila que identifica uma fila do Amazon
SQS para a qual o Amazon S3 publica eventos do tipo s3:ObjectCreated:Put. Os eventos serão
publicados sempre que um objeto que tenha um prefixo images/ e um sufixo jpg seja PUT em um
bucket.

<NotificationConfiguration>
<QueueConfiguration>
<Id>1</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images/</Value>
</FilterRule>
<FilterRule>
<Name>suffix</Name>
<Value>jpg</Value>
</FilterRule>
</S3Key>
</Filter>

Versão da API 2006-03-01


885
Amazon Simple Storage Service Guia do usuário
Configurar notificações usando
filtragem de nomes de chave de objeto

<Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
<Event>s3:ObjectCreated:Put</Event>
</QueueConfiguration>
</NotificationConfiguration>

A configuração de notificação a seguir tem vários prefixos não sobrepostos. A configuração define que
as notificações para solicitações PUT na pasta images/ vão para a fila A, enquanto as notificações para
solicitações PUT na pasta logs/ vão para a fila B.

<NotificationConfiguration>
<QueueConfiguration>
<Id>1</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images/</Value>
</FilterRule>
</S3Key>
</Filter>
<Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
<Event>s3:ObjectCreated:Put</Event>
</QueueConfiguration>
<QueueConfiguration>
<Id>2</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>logs/</Value>
</FilterRule>
</S3Key>
</Filter>
<Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
<Event>s3:ObjectCreated:Put</Event>
</QueueConfiguration>
</NotificationConfiguration>

A configuração de notificação a seguir tem vários sufixos não sobrepostos. A configuração define que
todas as imagens .jpg recém-adicionadas ao bucket sejam processadas pela função A de nuvem do
Lambda e que todas as imagens .png recém-adicionadas sejam processadas pela função B de nuvem.
Os sufixos .png e .jpg não estão sendo sobrepostos, embora tenham a mesma última letra. Dois sufixos
são considerados sobrepostos se uma determinada sequência puder terminar com ambos os sufixos. Uma
sequência não pode terminar com .png e com .jpg, portanto, os sufixos na configuração de exemplo não
são sufixos sobrepostos.

<NotificationConfiguration>
<CloudFunctionConfiguration>
<Id>1</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>suffix</Name>
<Value>.jpg</Value>
</FilterRule>
</S3Key>
</Filter>
<CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
<Event>s3:ObjectCreated:Put</Event>
</CloudFunctionConfiguration>
<CloudFunctionConfiguration>
<Id>2</Id>

Versão da API 2006-03-01


886
Amazon Simple Storage Service Guia do usuário
Configurar notificações usando
filtragem de nomes de chave de objeto

<Filter>
<S3Key>
<FilterRule>
<Name>suffix</Name>
<Value>.png</Value>
</FilterRule>
</S3Key>
</Filter>
<CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
<Event>s3:ObjectCreated:Put</Event>
</CloudFunctionConfiguration>
</NotificationConfiguration>

As configurações de notificação que usam o Filter não podem definir regras de filtragem com prefixos
sobrepostos para os mesmos tipos de evento, a menos que os prefixos sobrepostos sejam usados com
sufixos não sobrepostos. A configuração de exemplo a seguir mostra como objetos criados com um prefixo
comum, mas com sufixos não sobrepostos, podem ser entregues a destinos diferentes.

<NotificationConfiguration>
<CloudFunctionConfiguration>
<Id>1</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images</Value>
</FilterRule>
<FilterRule>
<Name>suffix</Name>
<Value>.jpg</Value>
</FilterRule>
</S3Key>
</Filter>
<CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
<Event>s3:ObjectCreated:Put</Event>
</CloudFunctionConfiguration>
<CloudFunctionConfiguration>
<Id>2</Id>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images</Value>
</FilterRule>
<FilterRule>
<Name>suffix</Name>
<Value>.png</Value>
</FilterRule>
</S3Key>
</Filter>
<CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
<Event>s3:ObjectCreated:Put</Event>
</CloudFunctionConfiguration>
</NotificationConfiguration>

Exemplos de configurações de notificação com sobreposição


inválida de prefixo/sufixo
Na maior parte das vezes, as configurações de notificação que usam Filter não podem definir regras
de filtragem com prefixos sobrepostos, sufixos sobrepostos ou combinações sobrepostas de prefixos e
sufixos para os mesmos tipos de evento. Você pode ter prefixos sobrepostos desde que os sufixos não

Versão da API 2006-03-01


887
Amazon Simple Storage Service Guia do usuário
Configurar notificações usando
filtragem de nomes de chave de objeto

se sobreponham. Para ver um exemplo, consulte Configurar notificações de eventos usando filtragem de
nomes de chave de objeto (p. 884).

Você pode usar filtros de nomes de chave de objetos sobrepostos com diferentes tipos de evento. Por
exemplo, você pode criar uma configuração de notificação que use o prefixo image/ para o tipo de evento
ObjectCreated:Put e o prefixo image/ para o tipo de evento ObjectRemoved:*.

Você receberá um erro se tentar salvar uma configuração de notificação que tenha filtros de nomes
sobrepostos inválidos para os mesmos tipos de evento ao usar o console ou a API do Amazon S3. Esta
seção mostra exemplos de configurações de notificação que são inválidas devido aos filtros de nomes
sobrepostos.

Presume-se que qualquer regra de configuração de notificação tenha um prefixo e um sufixo padrão que
correspondam a qualquer outro prefixo e um sufixo respectivamente. A configuração de notificação a
seguir é inválida porque tem prefixos sobrepostos, em que o prefixo raiz sobrepõe qualquer outro prefixo.
(O mesmo se aplicaria se você estivesse usando um sufixo em vez de um prefixo neste exemplo. O sufixo
raiz sobrepõe qualquer outro sufixo.)

<NotificationConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
<Event>s3:ObjectCreated:*</Event>
</TopicConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
<Event>s3:ObjectCreated:*</Event>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images</Value>
</FilterRule>
</S3Key>
</Filter>
</TopicConfiguration>
</NotificationConfiguration>

A configuração de notificação a seguir é inválida porque tem sufixos sobrepostos. Dois sufixos são
considerados sobrepostos se uma determinada sequência puder terminar com ambos os sufixos. Uma
string pode terminar com jpg e pg, portanto, os sufixos estão sobrepostos. (O mesmo vale para prefixos.
Dois prefixos são considerados sobrepostos se uma determinada string puder começar com ambos os
prefixos.)

<NotificationConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
<Event>s3:ObjectCreated:*</Event>
<Filter>
<S3Key>
<FilterRule>
<Name>suffix</Name>
<Value>jpg</Value>
</FilterRule>
</S3Key>
</Filter>
</TopicConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
<Event>s3:ObjectCreated:Put</Event>
<Filter>
<S3Key>

Versão da API 2006-03-01


888
Amazon Simple Storage Service Guia do usuário
Estrutura de mensagens de evento

<FilterRule>
<Name>suffix</Name>
<Value>pg</Value>
</FilterRule>
</S3Key>
</Filter>
</TopicConfiguration>
</NotificationConfiguration

A configuração de notificação a seguir é inválida porque tem prefixos e sufixos sobrepostos.

<NotificationConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
<Event>s3:ObjectCreated:*</Event>
<Filter>
<S3Key>
<FilterRule>
<Name>prefix</Name>
<Value>images</Value>
</FilterRule>
<FilterRule>
<Name>suffix</Name>
<Value>jpg</Value>
</FilterRule>
</S3Key>
</Filter>
</TopicConfiguration>
<TopicConfiguration>
<Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
<Event>s3:ObjectCreated:Put</Event>
<Filter>
<S3Key>
<FilterRule>
<Name>suffix</Name>
<Value>jpg</Value>
</FilterRule>
</S3Key>
</Filter>
</TopicConfiguration>
</NotificationConfiguration>

Estrutura de mensagens de evento


A mensagem de notificação que o Amazon S3 envia para publicar um evento tem o formato JSON.

Para obter informações gerais sobre como configurar notificações de eventos, consulte Notificações de
eventos do Amazon S3 (p. 869).

O exemplo a seguir mostra a estrutura da mensagem JSON. Este exemplo mostra a versão 2.2 da
estrutura JSON da mensagem de evento, que é a versão que o Amazon S3 usa atualmente.

{
"Records":[
{
"eventVersion":"2.2",
"eventSource":"aws:s3",
"awsRegion":"us-west-2",
"eventTime":"The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z,
when Amazon S3 finished processing the request",
"eventName":"event-type",

Versão da API 2006-03-01


889
Amazon Simple Storage Service Guia do usuário
Estrutura de mensagens de evento

"userIdentity":{
"principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event"
},
"requestParameters":{
"sourceIPAddress":"ip-address-where-request-came-from"
},
"responseElements":{
"x-amz-request-id":"Amazon S3 generated request ID",
"x-amz-id-2":"Amazon S3 host that processed the request"
},
"s3":{
"s3SchemaVersion":"1.0",
"configurationId":"ID found in the bucket notification configuration",
"bucket":{
"name":"bucket-name",
"ownerIdentity":{
"principalId":"Amazon-customer-ID-of-the-bucket-owner"
},
"arn":"bucket-ARN"
},
"object":{
"key":"object-key",
"size":"object-size",
"eTag":"object eTag",
"versionId":"object version if bucket is versioning-enabled, otherwise
null",
"sequencer": "a string representation of a hexadecimal value used to
determine event sequence, only used with PUTs and DELETEs"
}
},
"glacierEventData": {
"restoreEventData": {
"lifecycleRestorationExpiryTime": "The time, in ISO-8601 format, for
example, 1970-01-01T00:00:00.000Z, of Restore Expiry",
"lifecycleRestoreStorageClass": "Source storage class for restore"
}
}
}
]
}

Observe o seguinte sobre o exemplo anterior:

• O valor da chave eventVersion contém uma versão principal e secundária no formulário


<major>.<minor>.

A versão principal será incrementada se o Amazon S3 fizer uma alteração na estrutura do evento
que não é compatível com versões anteriores. Isso inclui a remoção de um campo JSON que já está
presente ou a alteração de como os conteúdos de um campo são representados (por exemplo, um
formato de data).

A versão secundária será incrementada se o Amazon S3 adicionar novos campos à estrutura do evento.
Isso pode ocorrer se novas informações forem fornecidas para alguns ou todos os eventos existentes
ou somente em tipos de evento recém-introduzidos. Os aplicativos devem ignorar novos campos para
permanecerem compatíveis com novas versões secundárias da estrutura do evento.

Se novos tipos de evento são introduzidos, mas a estrutura do evento não é modificada, a versão do
evento não muda.

Para garantir que seus aplicativos possam analisar a estrutura do evento corretamente, recomendamos
que você faça uma comparação "igual a" no número da versão principal. Para garantir que os campos
esperados pelo seu aplicativo estejam presentes, também recomendamos fazer uma comparação "maior
que ou igual a" na versão secundária.

Versão da API 2006-03-01


890
Amazon Simple Storage Service Guia do usuário
Estrutura de mensagens de evento

• O valor da chave responseElements será útil se você quiser rastrear uma solicitação com o
acompanhamento do AWS Support. Tanto o x-amz-request-id quanto o x-amz-id-2 ajudam o
Amazon S3 a rastrear uma solicitação individual. Esses valores são os mesmos que os retornados
pelo Amazon S3 na resposta à solicitação que inicia os eventos, para que possam ser usados para
corresponder o evento à solicitação.
• A chave s3 fornece informações sobre o bucket e o objeto envolvidos no evento. O valor do nome
da chave de objetos é codificado para URL. Por exemplo, "red flower.jpg" se torna "red+flower.jpg" (o
Amazon S3 retorna “application/x-www-form-urlencoded” como o tipo do conteúdo na
resposta).
• A chave sequencer fornece uma maneira de determinar a sequência de eventos. Não há garantia
de que as notificações de evento cheguem na ordem em que os eventos ocorreram. No entanto, as
notificações de eventos que criam objetos (PUTs) e excluem objetos contêm um sequencer que pode
ser usado para determinar a ordem dos eventos de uma determinada chave de objeto.

Se você comparar a sequências do sequencer nas duas notificações de evento na mesma chave
de objeto, a notificação de evento com o valor hexadecimal maior de sequencer será o evento que
ocorreu depois. Se estiver usando notificações de evento para manter um banco de dados ou um índice
separado dos objetos do Amazon S3, você provavelmente desejará comparar e armazenar os valores
de sequencer ao processar cada notificação de evento.

Observe o seguinte:
• Não é possível usar sequencer para determinar a ordem de eventos em chaves de objetos
diferentes.
• Os sequenciadores podem ter comprimentos diferentes. Portanto, para comparar esses valores,
primeiro você preenche zeros à esquerda do menor valor e, em seguida, faz uma comparação
lexicográfica.
• A chave glacierEventData só está visível para eventos s3:ObjectRestore:Completed.
• A chave restoreEventData contém atributos relacionados à solicitação de restauração.
• A chave replicationEventData só é visível para eventos de replicação.

O exemplo a seguir mostra a versão 2.0 da estrutura da mensagem do evento, que o Amazon S3 não usa
mais.

{
"Records":[
{
"eventVersion":"2.0",
"eventSource":"aws:s3",
"awsRegion":"us-west-2",
"eventTime":"The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z,
when S3 finished processing the request",
"eventName":"event-type",
"userIdentity":{
"principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event"
},
"requestParameters":{
"sourceIPAddress":"ip-address-where-request-came-from"
},
"responseElements":{
"x-amz-request-id":"Amazon S3 generated request ID",
"x-amz-id-2":"Amazon S3 host that processed the request"
},
"s3":{
"s3SchemaVersion":"1.0",
"configurationId":"ID found in the bucket notification configuration",
"bucket":{
"name":"bucket-name",
"ownerIdentity":{

Versão da API 2006-03-01


891
Amazon Simple Storage Service Guia do usuário
Estrutura de mensagens de evento

"principalId":"Amazon-customer-ID-of-the-bucket-owner"
},
"arn":"bucket-ARN"
},
"object":{
"key":"object-key",
"size":"object-size",
"eTag":"object eTag",
"versionId":"object version if bucket is versioning-enabled, otherwise
null",
"sequencer": "a string representation of a hexadecimal value used to
determine event sequence, only used with PUTs and DELETEs"
}
}
}
]
}

Exemplos de mensagens
Veja a seguir exemplos de mensagens de notificação de eventos do Amazon S3.

Mensagem de teste do Amazon S3

Quando você configura uma notificação de evento em um bucket, o Amazon S3 envia a mensagem de
teste a seguir.

{
"Service":"Amazon S3",
"Event":"s3:TestEvent",
"Time":"2014-10-13T15:57:02.089Z",
"Bucket":"bucketname",
"RequestId":"5582815E1AEA5ADF",
"HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
}

Mensagem de exemplo quando um objeto é criado usando uma solicitação PUT

A mensagem a seguir é um exemplo de mensagem que o Amazon S3 envia para publicar um evento
s3:ObjectCreated:Put.

{
"Records":[
{
"eventVersion":"2.1",
"eventSource":"aws:s3",
"awsRegion":"us-west-2",
"eventTime":"1970-01-01T00:00:00.000Z",
"eventName":"ObjectCreated:Put",
"userIdentity":{
"principalId":"AIDAJDPLRKLG7UEXAMPLE"
},
"requestParameters":{
"sourceIPAddress":"127.0.0.1"
},
"responseElements":{
"x-amz-request-id":"C3D13FE58DE4C810",
"x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
},
"s3":{
"s3SchemaVersion":"1.0",
"configurationId":"testConfigRule",

Versão da API 2006-03-01


892
Amazon Simple Storage Service Guia do usuário
Estrutura de mensagens de evento

"bucket":{
"name":"mybucket",
"ownerIdentity":{
"principalId":"A3NL1KOZZKExample"
},
"arn":"arn:aws:s3:::mybucket"
},
"object":{
"key":"HappyFace.jpg",
"size":1024,
"eTag":"d41d8cd98f00b204e9800998ecf8427e",
"versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
"sequencer":"0055AED6DCD90281E5"
}
}
}
]
}

Para obter uma definição de cada prefixo de identificação do IAM (AIDA, AROA, AGPA etc.), consulte
Identificadores do IAM no Guia do usuário do IAM.

Versão da API 2006-03-01


893
Amazon Simple Storage Service Guia do usuário
Análise de classe de armazenamento

Usar análises e insights


Você pode usar análises e insights no Amazon S3 para entender, analisar e otimizar o uso do
armazenamento. Para obter mais informações, consulte os tópicos abaixo.

Tópicos
• Análise do Amazon S3 – Análise de classe de armazenamento (p. 894)
• Avaliação de sua atividade de armazenamento e uso com o Amazon S3 Storage Lens (p. 900)
• Rastreamento de solicitações do Amazon S3 usando o AWS X-Ray (p. 943)

Análise do Amazon S3 – Análise de classe de


armazenamento
Usando a análise de classe de armazenamento do Amazon S3, você pode analisar padrões de acesso
de armazenamento para ajudar a decidir quando fazer a transição dos dados certos para a classe de
armazenamento certa. Esse novo recurso de análise do Amazon S3 observa padrões de acesso de dados
para ajudar a determinar quando fazer a transição do armazenamento STANDARD acessado menos
frequentemente para a classe de armazenamento STANDARD_IA (IA, para acesso raro). Para obter mais
informações sobre classes de armazenamento, consulte Uso de classes de armazenamento do Amazon
S3 (p. 563).

Depois que a análise de classe de armazenamento observa os padrões incomuns de acesso a um


conjunto filtrado de dados em um período, você pode usar os resultados da análise para ajudá-lo a
melhorar suas políticas de ciclo de vida. Você pode configurar a análise de classe de armazenamento para
analisar todos os objetos em um bucket. Se desejar, você pode configurar filtros para agrupar para objetos
para análise por prefixo comum (ou seja, objetos que têm nomes que começam com uma string comum),
por tags de objeto ou por prefixo e por tags. Você provavelmente achará que filtrar por grupos de objeto é
a melhor maneira de aproveitar a análise de classe de armazenamento.
Important

A análise da classe de armazenamento não fornece recomendações de transições para as


classes de armazenamento ONEZONE_IA ou S3 GLACIER.

Você pode ter vários filtros vários de análise de classe de armazenamento por bucket, até 1.000, e
receberá uma análise separada para cada filtro. As várias configurações de filtro permitem analisar grupos
específicos de objetos para melhorar suas políticas de ciclo de vida que faz a transição de objetos para
STANDARD_IA.

A análise de classe de armazenamento fornece visualizações de uso de armazenamento no console do


Amazon S3 que são atualizadas diariamente. Também é possível exportar esses dados de uso diário
para um bucket do S3 e visualizá-los em uma aplicação de planilha ou com ferramentas de business
intelligence, como o Amazon QuickSight.

Há custos associados à análise da classe de armazenamento. Para obter informações sobre preços,
consulte Gerenciamento e replicação Definição de preço do Amazon S3.

Tópicos
• Como configurar a análise de classe de armazenamento? (p. 895)
• Como usar a análise de classe de armazenamento? (p. 895)

Versão da API 2006-03-01


894
Amazon Simple Storage Service Guia do usuário
Como configurar a análise de classe de armazenamento

• Como exportar dados de análise de classe de armazenamento? (p. 897)


• Configurar análise de classe de armazenamento (p. 898)

Como configurar a análise de classe de


armazenamento?
Para configurar a análise de classe de armazenamento, configure os dados de objeto que você deseja
analisar. Você pode configurar a análise de classe de armazenamento para fazer o seguinte:

• Analisar o conteúdo completo de um bucket.

Você receberá uma análise para todos os objetos no bucket.


• Analisar objetos agrupados por prefixo e por tags.

Você pode configurar filtros que agrupam objetos para análise por prefixo, por tags de objeto ou por uma
combinação de prefixo e tags. Você recebe uma análise separada para cada filtro configurado. Você
pode ter várias configurações de filtro por bucket, até 1.000.
• Exportar dados de análise.

Quando você configura a análise de classe de armazenamento para um bucket ou filtro, pode optar por
exportar os dados de análise para um arquivo todo dia. A análise do dia é adicionada ao arquivo para
formar um registro histórico de análise para o filtro configurado. O arquivo é atualizado diariamente no
destino escolhido por você. Ao selecionar dados para exportar, especifique um bucket de destino e um
prefixo de destino opcional onde o arquivo é gravado.

Você pode usar o console do Amazon S3, a API REST, a AWS CLI ou os AWS SDKs para configurar a
análise de classe de armazenamento.

• Para obter informações sobre como configurar a análise de classe de armazenamento no console do
Amazon S3, consulte Configurar análise de classe de armazenamento (p. 898).
• Para usar a API do Amazon S3, use a API REST PutBucketAnalyticsConfiguration, ou equivalente, na
AWS CLI ou nos AWS SDKs.

Como usar a análise de classe de armazenamento?


Você usa a análise de classe de armazenamento para observar os padrões de acesso de dados ao
longo do tempo e coletar informações para ajudar a melhorar o gerenciamento de ciclo de vida do
armazenamento STANDARD_IA. Depois de configurar um filtro, você começará a ver a análise de
dados baseada no filtro no console do Amazon S3 entre 24 e 48 horas. Contudo, a análise de classe de
armazenamento observa os padrões de acesso de um conjunto de dados filtrado por 30 dias ou mais para
coletar informações para análise antes de oferecer um resultado. A análise continua sendo executada
após o resultado inicial e atualiza o resultado à medida que os padrões de acesso mudam

Quando você configura um filtro pela primeira vez, o console do Amazon S3 pode levar algum tempo para
analisar os seus dados.

A análise de classe de armazenamento observa os padrões de acesso de um conjunto de dados de objeto


filtrado por 30 dias ou mais para coletar informações suficientes para a análise. Após a análise de classe
de armazenamento coletar informações suficientes, você verá uma mensagem no console do Amazon S3
informando que a análise está incompleta.

Quando a análise de classe de armazenamento é executada em busca de objetos acessados raramente, o


conjunto filtrado de objetos agrupados com base na data de upload no Amazon S3 é observado. A análise

Versão da API 2006-03-01


895
Amazon Simple Storage Service Guia do usuário
Análise de classe de armazenamento

de classe de armazenamento determina se a faixa etária é acessada raramente observando os seguintes


fatores do conjunto de dados filtrado:

• Objetos na classe de armazenamento STANDARD que têm mais de 128 KB.


• Quanto armazenamento total médio você tem por faixa etária.
• Número médio de bytes transferidos para fora (não frequência) por faixa etária.
• Os dados de exportação de análise incluem somente solicitações com dados pertinentes para a análise
de classe de armazenamento. Isso pode causar diferenças no número de solicitações e nos bytes totais
de upload e solicitação em comparação com o que é mostrado nas métricas de armazenamento ou
rastreado por seus próprios sistemas internos.
• As solicitações GET e PUT com falha não são contadas para análise. Contudo, você verá as solicitações
com falha nas métricas de armazenamento.

Quanto armazenamento eu recuperei?

O console do Amazon S3 mostra em um gráfico quanto de armazenamento no conjunto de dados filtrado


foi recuperado durante o período de observação.

Que porcentagem do armazenamento eu recuperei?

O console do Amazon S3 também mostra em um gráfico que porcentagem do armazenamento no conjunto


de dados filtrado foi recuperado durante o período de observação.

Como mencionado anteriormente neste tópico, quando a análise de classe de armazenamento é


executada em busca de objetos acessados raramente, o conjunto filtrado de objetos agrupados com base
na data de upload no Amazon S3 é observado. A análise de classe de armazenamento usa as seguintes
faixas etárias de objeto predefinidas:

• Objetos do Amazon S3 com menos de 15 dias


• Objetos do Amazon S3 de 15 a 29 dias
• Objetos do Amazon S3 de 30 a 44 dias
• Objetos do Amazon S3 de 45 a 59 dias
• Objetos do Amazon S3 de 60 74 dias
• Objetos do Amazon S3 de 75 a 89 dias
• Objetos do Amazon S3 de 90 a 119 dias
• Objetos do Amazon S3 de 120 a 149 dias
• Objetos do Amazon S3 de 150 a 179 dias
• Objetos do Amazon S3 de 180 a 364 dias
• Objetos do Amazon S3 de 365 a 729 dias
• Objetos do Amazon S3 com 730 dias ou mais

Geralmente, leva cerca de 30 dias para observar os padrões de acesso e coletar informações suficientes
para gerar um resultado de análise. Pode levar mais de 30 dias, dependendo do padrão de acesso
exclusivo dos dados. No entanto, depois de configurar um filtro, você começará a ver a análise de dados
baseada no filtro no console do Amazon S3 entre 24 e 48 horas. Você pode visualizar a análise de acesso
do objeto diariamente dividida por faixa etária no console do Amazon S3.

Quanto do armazenamento é acessado raramente?

O console do Amazon S3 mostra os padrões de acesso agrupados pelos grupos etários de objetos
predefinidos. O texto Frequently accessed (Acessado com frequência) ou Infrequently accessed (Acessado
com pouca frequência) mostrado é uma ajuda visual para ajudá-lo no processo de criação do ciclo de vida.

Versão da API 2006-03-01


896
Amazon Simple Storage Service Guia do usuário
Como exportar dados de análise
de classe de armazenamento?

Como exportar dados de análise de classe de


armazenamento?
Você pode optar por exportar os relatórios de análise de classe de armazenamento para um arquivo
sem formatação de valores separados por vírgula (CSV). Os relatórios são atualizados diariamente e se
baseiam nos filtros de faixa etária de objeto que você configura. Ao usar o console do Amazon S3, você
pode escolher a opção de exportação de relatório quando cria um filtro. Ao selecionar dados para exportar,
especifique um bucket de destino e um prefixo de destino opcional onde o arquivo é gravado. Você pode
exportar os dados para um bucket de destino em uma conta diferente. O bucket de destino deve estar na
mesma região que o bucket que você configura para ser analisado.

Você deve criar uma política de bucket no bucket de destino para conceder permissões ao Amazon S3
para verificar se a conta da AWS é proprietária do bucket e para gravar objetos no bucket no local definido.
Para ver um exemplo de política, consulte Conceder permissões para inventário e análise do Amazon
S3 (p. 386).

Após configurar relatórios de análise de classe de armazenamento, você começará a receber o relatório
exportado diariamente após 24 horas. Depois disso, o Amazon S3 continuará monitorando e fornecendo
exportações diárias.

Você pode abrir o arquivo CSV em uma aplicação de planilha ou importar o arquivo para outras aplicações,
como o Amazon QuickSight. Para obter informações sobre como usar os arquivos do Amazon S3 com o
Amazon QuickSight, consulte Criar um conjunto de dados usando arquivos do Amazon S3 no Guia do
usuário do Amazon QuickSight.

Os dados no arquivo exportado são classificados por data na faixa etária de objeto conforme exibido nos
exemplos a seguir. Se a classe de armazenamento é STANDARD, a linha também contém dados para as
colunas ObjectAgeForSIATransition e RecommendedObjectAgeForSIATransition.

No final do relatório, a faixa etária de objeto é fornecida como ALL. As linhas ALL contêm totais
cumulativos, incluindo objetos menores que 128 KB, para todas as faixas etárias desse dia.

Versão da API 2006-03-01


897
Amazon Simple Storage Service Guia do usuário
Configurar análise de classe de armazenamento

A próxima seção descreve as colunas usadas no relatório.

Layout de arquivos exportados


A tabela a seguir descreve o layout do arquivo exportado.

Configurar análise de classe de armazenamento


Usando a ferramenta de análise de classe de armazenamento do Amazon S3, é possível analisar padrões
de acesso de armazenamento para ajudar a decidir quando fazer a transição dos dados certos para a
classe de armazenamento certa. A análise de classe de armazenamento observa padrões de acesso de
dados para ajudar você a determinar quando fazer a transição do armazenamento STANDARD, acessado
menos frequentemente, para a classe de armazenamento STANDARD_IA (IA, para acesso raro). Para
obter mais informações sobre STANDARD_IA, consulte as perguntas frequentes do Amazon S3 e Uso de
classes de armazenamento do Amazon S3 (p. 563).

Para configurar a análise de classe de armazenamento, configure os dados de objeto que você deseja
analisar. Você pode configurar a análise de classe de armazenamento para fazer o seguinte:

• Analisar o conteúdo completo de um bucket.

Você receberá uma análise para todos os objetos no bucket.


• Analisar objetos agrupados por prefixo e por tags.

Você pode configurar filtros que agrupam objetos para análise por prefixo, por tags de objeto ou por uma
combinação de prefixo e tags. Você recebe uma análise separada para cada filtro configurado. Você
pode ter várias configurações de filtro por bucket, até 1.000.
• Exportar dados de análise.

Quando você configura a análise de classe de armazenamento para um bucket ou filtro, pode optar por
exportar os dados de análise para um arquivo todo dia. A análise do dia é adicionada ao arquivo para
formar um registro histórico de análise para o filtro configurado. O arquivo é atualizado diariamente no
destino escolhido por você. Ao selecionar dados para exportar, especifique um bucket de destino e um
prefixo de destino opcional onde o arquivo é gravado.

Você pode usar o console do Amazon S3, a API REST, a AWS CLI ou os AWS SDKs para configurar a
análise de classe de armazenamento.
Important

A análise da classe de armazenamento não fornece recomendações de transições para as


classes de armazenamento ONEZONE_IA ou S3 GLACIER.

Versão da API 2006-03-01


898
Amazon Simple Storage Service Guia do usuário
Configurar análise de classe de armazenamento

Se você quiser configurar a análise de classe de armazenamento para exportar suas descobertas
como um arquivo.csv e o bucket de destino usar criptografia de bucket padrão com uma chave
mestra do cliente (CMK) do AWS KMS, atualize a política de chaves do AWS KMS para conceder
permissão ao Amazon S3 para criptografar o arquivo.csv. Para obter instruções, consulte
Conceder permissão para que o Amazon S3 use a CMK do AWS KMS para criptografia (p. 609).

Para obter mais informações sobre análises, consulte Análise do Amazon S3 – Análise de classe de
armazenamento (p. 894).

Usar o console do S3
Para configurar a análise de classe de armazenamento

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja configurar a análise de classe de
armazenamento.
3. Escolha a guia Metrics.
4. Em Storage Class Analysis (Análise de classe de armazenamento), escolha Create analytics
configuration (Criar configuração de análise).
5. Digite um nome para o filtro. Se você quiser analisar o bucket todo, deixe o campo Prefix (Prefixo)
vazio.
6. No campo Prefix (Prefixo) digite o texto para o prefixo para os objetos que você deseja analisar.
7. Para adicionar uma tag, escolha Add tag. Insira uma chave e um valor para a tag. Você pode inserir
um prefixo e várias tags.
8. Opcionalmente, você pode escolher Enable (Habilitar) em Export CSV (Exportar CSV) para exportar
relatórios de análise para um arquivo simples com valores separados por vírgula (.csv). Escolha um
bucket de destino onde o arquivo pode ser armazenado. Você pode digitar um prefixo para o bucket
de destino. O bucket de destino deve estar na mesma região da AWS que o bucket para o qual você
está configurando a análise. O bucket de destino pode estar em uma conta da AWS diferente.

Se o bucket de destino do arquivo.csv usar criptografia de bucket padrão com uma CMK do AWS
KMS, você deverá atualizar a política de chaves do AWS KMS para conceder permissão ao Amazon
S3 para criptografar o arquivo.csv. Para obter instruções, consulte Conceder permissão para que o
Amazon S3 use a CMK do AWS KMS para criptografia (p. 609).
9. Selecione Create Configuration (Criar configuração).

O Amazon S3 cria uma política de bucket no bucket de destino que concede ao Amazon S3 permissão
para gravação. Ela permite gravar os dados de exportação no bucket.

Se ocorrer um erro quando você tentar criar a política de bucket, serão fornecidas instruções sobre
como resolvê-lo. Por exemplo, se você escolher um bucket de destino em outra conta da AWS e não
tiver permissões para ler e gravar na política de bucket, verá a mensagem a seguir. Você deve pedir ao
proprietário do bucket de destino para adicionar a política de bucket exibida ao bucket de destino. Se a
política não for adicionada ao bucket de destino, você não terá os dados de exportação porque o Amazon
S3 não terá permissão para gravar no bucket de destino. Se o bucket de origem for de uma conta diferente
da conta do usuário atual, o ID de conta correto do bucket de origem deverá ser substituído na política.

Para obter informações sobre os dados exportados e como o filtro funciona, consulte Análise do Amazon
S3 – Análise de classe de armazenamento (p. 894).

Uso dos REST API


Para configurar a Análise de classe de armazenamento usando a API REST, use
PutBucketAnalyticsConfiguration. Você também pode usar a operação equivalente com a CLI da AWS ou
os SDKs da AWS.

Versão da API 2006-03-01


899
Amazon Simple Storage Service Guia do usuário
S3 Storage Lens

Você pode usar as seguintes APIs REST para trabalhar com a Análise de classe de armazenamento:

• Configuração de DELETE Bucket Analytics


• Configuração de GET Bucket Analytics
• Listar configuração de análise de bucket

Avaliação de sua atividade de armazenamento e


uso com o Amazon S3 Storage Lens
O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

O Amazon S3 Storage Lens oferece uma visão única do uso e da atividade em seu armazenamento
do Amazon S3. Com opções de drill-down para gerar insights no nível da organização, conta, bucket,
objeto ou até mesmo prefixo. O S3 Storage Lens analisa as métricas de armazenamento para fornecer
recomendações contextuais para ajudar a otimizar os custos de armazenamento e aplicar as práticas
recomendadas de proteção de dados.

No console do S3, o S3 Storage Lens fornece um painel padrão interativo que é atualizado diariamente.
Outros painéis podem ter escopo por conta (para usuários do AWS Organizations), regiões da AWS e
buckets do S3 para fornecer métricas de uso gratuitamente. Por um custo adicional, você pode atualizar
para receber métricas e recomendações avançadas. Isso inclui métricas de uso com agregação em nível
de prefixo, métricas de atividade agregadas por bucket e recomendações contextuais (disponíveis apenas
no painel). O S3 Storage Lens pode ser usado para obter um resumo das informações de armazenamento,
detectar discrepâncias, melhorar a proteção de dados e otimizar os custos de armazenamento. Para
obter mais informações, consulte Uso do Amazon S3 Storage Lens no console (p. 919). Para obter mais
informações sobre a definição de preço do S3 Storage Lens, consulte Definição de preço do Amazon S3

Além do painel no console do S3, é possível exportar métricas em formato CSV ou Parquet para um
bucket do S3 ou sua escolha para uso posterior. Para obter mais informações, consulte Exibição de
métricas de lente de armazenamento do Amazon S3 usando uma exportação de dados (p. 910).

Use o S3 Storage Lens para gerar insights resumidos, como descobrir quanto armazenamento você tem
em toda a organização ou quais são os buckets e prefixos que mais crescem. Identifique discrepâncias em
suas métricas de armazenamento e, em seguida, faça drill-down para investigar ainda mais a origem do
pico de uso ou atividade.

Você pode avaliar seu armazenamento com base nas práticas recomendadas de proteção de dados no
Amazon S3, como analisar a porcentagem de buckets com criptografia ou bloqueio de objeto habilitado.
Além disso, você pode identificar possíveis oportunidades de economia de custos, como, por exemplo,
analisando sua atividade de solicitação por bucket para encontrar buckets onde os objetos podem ser
transferidos para uma classe de armazenamento de menor custo.

Tópicos
• Noções básicas sobre o Amazon S3 Storage Lens (p. 901)
• Usando o Amazon S3 Storage Lens com o AWS Organizations (p. 905)
• Definição de permissões para usar o Amazon S3 Storage Lens (p. 907)
• Exibição de métricas de uso de armazenamento e atividade com o Amazon S3 Storage Lens (p. 909)
• Glossário de métricas de lente de armazenamento do Amazon S3 (p. 914)
• Exemplos e demonstração do console do Amazon S3 Storage Lens (p. 919)

Versão da API 2006-03-01


900
Amazon Simple Storage Service Guia do usuário
Noções básicas sobre o S3 Storage Lens

Noções básicas sobre o Amazon S3 Storage Lens


O Amazon S3 Storage Lens oferece uma visão única do uso e da atividade do armazenamento de objetos
em todo o armazenamento do Amazon S3. Ele inclui opções de drill-down para gerar insights no nível da
organização, conta, região, bucket ou até mesmo prefixo.

O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

Conceitos e terminologia do Amazon S3 Storage Lens


Esta seção contém a terminologia e os conceitos essenciais para entender e usar o Amazon S3 Storage
Lens com sucesso.

Tópicos
• Configuração (p. 901)
• Painel padrão (p. 901)
• Painéis (p. 902)
• Exportação de métricas (p. 902)
• Região inicial (p. 902)
• Período de retenção (p. 902)
• Tipos de métricas (p. 902)
• Recomendações (p. 903)
• Seleção de métricas (p. 904)
• S3 Storage Lens e AWS Organizations (p. 904)

Configuração
O Amazon S3 Storage Lens requer uma configuração que contém as propriedades usadas para agregar
métricas em seu nome para um único painel ou exportação. Isso inclui todas as seções ou parciais do
armazenamento da conta da organização, incluindo filtragem por região, bucket e escopo de nível de
prefixo (disponível somente com métricas avançadas). Ele inclui informações sobre se você escolheu
métricas gratuitas ou métricas e recomendações avançadas. Ele também inclui se uma exportação de
métricas é necessária e informações sobre onde colocar a exportação de métricas, se aplicável.

Painel padrão
O painel padrão do S3 Storage Lens no console é chamado default-account-dashboard. O S3 preconfigura
o painel para visualizar os insights resumidos e as tendências de uso agregado de armazenamento e
as métricas de atividade de armazenamento agregado de toda a sua conta e atualiza-as diariamente no
console do Amazon S3. Você não pode modificar o escopo de configuração do painel padrão, mas pode
atualizar a seleção de métricas de métricas gratuitas para as métricas e recomendações avançadas pagas.
Você também pode configurar a exportação de métricas opcionais ou até mesmo desabilitar o painel. No
entanto, você não pode excluir o painel padrão.
Note
Se você desabilitar seu painel padrão, ele não será mais atualizado e você não receberá mais
nenhuma nova métrica diária. Você ainda pode ver dados históricos até o período de expiração de
14 dias ou 15 meses se você estiver inscrito em métricas avançadas e recomendações para esse
painel. Você pode reativar o painel dentro do período de expiração para acessar esses dados.

Versão da API 2006-03-01


901
Amazon Simple Storage Service Guia do usuário
Noções básicas sobre o S3 Storage Lens

Painéis
Você também pode usar o Amazon S3 Storage Lens para configurar um painel que visualize insights
resumidos e tendências de uso de armazenamento agregado e métricas de atividade, atualizadas
diariamente no console do Amazon S3. Você pode criar e modificar painéis do S3 Storage Lens para
expressar todas as seções ou parciais do armazenamento da conta da sua organização. Você pode filtrar
por região, bucket e prefixo da AWS (disponível somente com métricas e recomendações avançadas).
Você também pode desativar ou excluir o painel.
Note

• Você pode usar o S3 Storage Lens para criar até 50 painéis por região inicial.
• Se você desabilitar um painel, ele não será mais atualizado e você não receberá mais nenhuma
nova métrica diária. Você ainda pode ver dados históricos até o período de expiração de 14
dias (ou 15 meses, se você se inscreveu em métricas avançadas e recomendações para esse
painel). Você pode reativar o painel dentro do período de expiração para acessar esses dados.
• Se você excluir seu painel, você perderá todas as configurações do painel. Você não receberá
mais nenhuma nova métrica diária e também perderá o acesso aos dados históricos associados
a esse painel. Se você quiser acessar os dados históricos de um painel excluído, você deve
criar outro painel com o mesmo nome na mesma região inicial.
• Os painéis de nível da organização só podem ser limitados a um escopo regional.

Exportação de métricas
Uma exportação de métricas do S3 Storage Lens é um arquivo que contém todas as métricas identificadas
na configuração do S3 Storage Lens. Essas informações são geradas diariamente no formato CSV ou
Parquet em um bucket do S3 de sua escolha para análise posterior. O bucket do S3 para a exportação
de métricas deve estar na mesma região da configuração do S3 Storage Lens. Você pode gerar uma
exportação de métricas do S3 Storage Lens a partir do console do S3 editando a configuração do painel ou
usando a AWS CLI e SDKs.

Região inicial
A região inicial é a região onde todas as métricas do Amazon S3 Storage Lens para um determinado painel
ou configuração são armazenadas. Você deve escolher uma região inicial ao criar o painel ou configuração
do Amazon S3 Storage Lens. Depois que uma região inicial for atribuída, ela não poderá ser alterada.
Note

A criação de uma região inicial não tem suporte para as seguintes regiões:

• África (Cidade do Cabo) (af-south-1)


• Ásia-Pacífico (Hong Kong) (ap-east-1)
• UE (Milão) (eu-south-1)
• Oriente Médio (Bahrein) (me-south-1)

Período de retenção
As métricas do Amazon S3 Storage Lens são mantidas para que você possa ver tendências históricas
e comparar diferenças no uso e na atividade do armazenamento ao longo do tempo. Os períodos de
retenção dependem da seleção de métricas e não podem ser modificados. As métricas gratuitas são
mantidas por um período de 14 dias e as métricas avançadas são mantidas por um período de 15 meses.

Tipos de métricas
O S3 Storage Lens oferece dois tipos de métricas de armazenamento: uso e atividade.

Versão da API 2006-03-01


902
Amazon Simple Storage Service Guia do usuário
Noções básicas sobre o S3 Storage Lens

• Métricas de uso

O S3 Storage Lens coleta métricas de uso para todos os painéis e configurações. As métricas de uso
descrevem o tamanho, a quantidade e as características do armazenamento. Isso inclui o total de bytes
armazenados, a contagem de objetos e o tamanho médio do objeto, além de métricas que descrevem a
utilização de recursos, como bytes criptografados ou excluem contagens de objetos de mercado. Para
obter mais informações sobre as métricas de uso agregadas pelo S3 Storage Lens, consulte Glossário
de métricas.
• Métricas de atividade

O S3 Storage Lens agrega métricas de atividade para todos os painéis e configurações que têm o tipo
de métricas avançadas e recomendações habilitado. As métricas de atividade descrevem os detalhes da
frequência com que seu armazenamento é solicitado. Isso inclui o número de solicitações por tipo, bytes
de upload e download e erros. Para obter mais informações sobre as métricas de atividade agregadas
pelo S3 Storage Lens, consulte Glossário de métricas.

Recomendações
O S3 Storage Lens fornece recomendações automatizadas para ajudá-lo a otimizar seu armazenamento.
As recomendações são colocadas contextualmente ao lado de métricas relevantes no painel do S3
Storage Lens. Os dados históricos não são elegíveis para recomendações porque as recomendações
são relevantes para o que está acontecendo no período mais recente. As recomendações só aparecem
quando são relevantes.

As recomendações do S3 Storage Lens vêm nos seguintes formulários:

• Sugestões

As sugestões alertam você sobre tendências de uso e atividade de armazenamento que podem indicar
uma oportunidade de otimização de custos de armazenamento ou uma prática recomendada de
proteção de dados. Você pode usar os tópicos sugeridos no Guia do usuário do Amazon S3 e no painel
do S3 Storage Lens para especificar mais detalhes sobre regiões, buckets ou prefixos específicos e
obter mais ajuda.
• Chamadas

Chamadas são recomendações que alertam você para anomalias interessantes dentro do uso e
atividade do armazenamento durante um período que pode precisar de mais atenção ou monitoramento.
• Chamadas discrepantes

O S3 Storage Lens fornece chamadas para métricas que são discrepantes, com base em sua
tendência recente de 30 dias. A discrepância é calculada usando uma pontuação padrão, também
conhecida como pontuação z. Nesta pontuação, a métrica do dia atual é subtraída da média dos
últimos 30 dias para essa métrica e, em seguida, dividida pelo desvio padrão para essa métrica nos
últimos 30 dias. A pontuação resultante geralmente é entre -3 e +3. Este número representa o número
de desvios padrão que a métrica do dia atual é da média.

O S3 Storage Lens considera métricas com uma pontuação >2 ou <-2 como discrepâncias porque são
maiores ou inferiores a 95% dos dados normalmente distribuídos.
• Chamadas de alterações significativas

A chamada de alteração significativa se aplica a métricas que devem ser alteradas com menos
frequência. Portanto, ela é definida para uma sensibilidade maior do que o cálculo de discrepância,
que geralmente é na faixa de +/- 20 por cento versus o dia anterior, semana ou mês.

Abordar chamadas em seu uso e atividade de armazenamento — se você receber uma chamada de
alteração significativa, não é necessariamente um problema e pode ser o resultado de uma alteração
antecipada no armazenamento. Por exemplo, você pode ter adicionado recentemente um grande
Versão da API 2006-03-01
903
Amazon Simple Storage Service Guia do usuário
Noções básicas sobre o S3 Storage Lens

número de novos objetos, excluído um grande número de objetos ou fez alterações planejadas
semelhantes.

Se você vir uma chamada de alteração significativa no seu painel, tome nota e determine se ela pode
ser explicada por circunstâncias recentes. Caso contrário, use o painel do S3 Storage Lens para fazer
drill-down a fim de obter mais detalhes para entender as regiões, buckets ou prefixos específicos que
estão gerando a flutuação.
• Lembretes

Os lembretes fornecem insights sobre como o Amazon S3 funciona. Eles podem ajudá-lo a aprender
mais sobre maneiras de usar os recursos do S3 para reduzir os custos de armazenamento ou aplicar as
práticas recomendadas de proteção de dados.

Seleção de métricas
O S3 Storage Lens oferece duas seleções de métricas que você pode escolher para seu painel e exportar:
métricas gratuitas e métricas e recomendações avançadas.

• Métricas gratuitas

O S3 Storage Lens oferece métricas gratuitas para todos os painéis e configurações. As métricas
gratuitas contêm métricas relevantes para o uso do armazenamento. Isso inclui o número de buckets,
os objetos em sua conta e em que estado eles estão. Todas as métricas gratuitas são coletadas
diariamente e mantidas por um período de retenção de 14 dias. Para obter mais informações sobre
quais métricas de uso são agregadas pelo S3 Storage Lens, consulte Glossário de métricas.
• Métricas e recomendações avançadas

O S3 Storage Lens oferece métricas gratuitas para todos os painéis e configurações e a opção de
atualizar para a opção de métricas e recomendações avançadas. As métricas avançadas contêm todas
as métricas de uso incluídas nas métricas gratuitas. Isso inclui o número de buckets, os objetos em sua
conta e em que estado eles estão.

Com métricas avançadas, você também pode coletar métricas de uso no nível de prefixo. Além disso,
métricas avançadas incluem métricas de atividade. Os dados de métricas de atividade são relevantes
para sua atividade de armazenamento. Isso inclui o número de solicitações, verificações e erros
em relação ao escopo de configuração e em que estado eles estão. Todas as métricas avançadas
são coletadas diariamente e mantidas por um período de retenção de 15 meses. Para obter mais
informações sobre as métricas de armazenamento agregadas pelo S3 Storage Lens, consulte Glossário
de métricas.

Essa seleção de métricas também fornece recomendações para ajudá-lo a otimizar seu
armazenamento. As recomendações são colocadas contextualmente ao lado de métricas relevantes no
painel. Aplicam-se cobranças adicionais. Para obter mais informações, consulte Definição de preço do
Amazon S3.
Note

As recomendações só estão disponíveis quando você usa o painel do S3 Storage Lens no


console do Amazon S3 e não por meio da AWS CLI e SDKs.

S3 Storage Lens e AWS Organizations


O AWS Organizations é um serviço da AWS que ajuda você a agregar todas as suas contas da AWS em
uma hierarquia de organização. O Amazon S3 Storage Lens funciona com o AWS Organizations para
fornecer uma visão única do uso e da atividade do armazenamento de objetos em seu armazenamento do
Amazon S3.
Versão da API 2006-03-01
904
Amazon Simple Storage Service Guia do usuário
Trabalhar com organizações

Para obter mais informações, consulte Usando o Amazon S3 Storage Lens com o AWS
Organizations (p. 905).

• Acesso confiável

Usando a conta de gerenciamento da sua organização, você deve habilitar o acesso confiável para o S3
Storage Lens para agregar métricas de armazenamento e dados de uso para todas as contas membros
da sua organização. Em seguida, você pode criar painéis ou exportações para sua organização
usando sua conta de gerenciamento ou dando acesso ao administrador delegado a outras contas da
organização.

Você pode desativar o acesso confiável para o S3 Storage Lens a qualquer momento, o que impede o
S3 Storage Lens de agregar métricas para sua organização.
• Administrador delegado

Você pode criar painéis e métricas para o S3 Storage Lens para sua organização usando sua conta de
gerenciamento do AWS Organizations ou dando acesso de administrador delegado a outras contas em
sua organização. Você pode cancelar o registro de administradores delegados a qualquer momento, o
que impede o S3 Storage Lens de coletar dados em nível de organização.

Para obter mais informações, consulte Amazon S3 Storage Lens e AWS Organizations no Guia do usuário
do AWS Organizations.

Funções vinculadas ao serviço do Amazon S3 Storage Lens

Juntamente com o acesso confiável do AWS Organizations, o Amazon S3 Storage Lens usa funções
vinculadas ao serviço do AWS Identity and Access Management (IAM). Uma função vinculada a serviço é
um tipo exclusivo de função do IAM vinculada diretamente ao S3 Storage Lens. As funções vinculadas a
serviços são predefinidas pelo S3 Storage Lens e incluem todas as permissões necessárias para coletar
métricas diárias de uso de armazenamento e atividade de contas de membros em sua organização.

Para obter mais informações, consulte Usar funções vinculadas de serviço ao Amazon S3 Storage Lens.

Usando o Amazon S3 Storage Lens com o AWS


Organizations
Você pode usar o Amazon S3 Storage Lens para coletar métricas de armazenamento e dados de uso de
todas as contas da AWS que fazem parte da hierarquia do AWS Organizations. Para fazer isso, você deve
usar o AWS Organizations e habilitar o acesso confiável do S3 Storage Lens usando o gerenciamento do
AWS Organizations.

Depois de habilitar o acesso confiável, você pode adicionar acesso de administrador delegado às contas
em sua organização. Essas contas podem criar painéis e configurações para toda a organização para o S3
Storage Lens.

Para obter mais informações sobre como habilitar o acesso confiável, consulte Amazon S3 Storage Lens e
AWS Organizations no Guia do usuário do AWS Organizations.

Tópicos
• Ativando acesso confiável para o S3 Storage Lens (p. 906)
• Desativação do acesso confiável para o S3 Storage Lens (p. 906)
• Registro de um administrador delegado para o S3 Storage Lens (p. 906)
• Cancelamento do registro de um administrador delegado para o S3 Storage Lens (p. 907)

Versão da API 2006-03-01


905
Amazon Simple Storage Service Guia do usuário
Trabalhar com organizações

Ativando acesso confiável para o S3 Storage Lens


Ao habilitar o acesso confiável, você permite que o Amazon S3 Storage Lens tenha acesso à hierarquia,
associação e estrutura do AWS Organizations por meio das APIs do AWS Organizations. O S3 Storage
Lens será um serviço confiável para toda a estrutura da sua organização.

Sempre que uma configuração de painel é criada, o S3 Storage Lens cria funções vinculadas a serviços
nas contas de gerenciamento ou administrador delegado da sua organização. A função vinculada ao
serviço concede permissões do S3 Storage Lens para descrever organizações, listar contas, verificar uma
lista de acesso de serviço para as organizações e obter administradores delegados para a organização. O
S3 Storage Lens pode coletar métricas de uso de armazenamento entre contas e atividades para painéis
dentro de contas em suas organizações. Para obter mais informações, consulte Usar funções vinculadas a
serviço do Amazon S3 Storage Lens.

Depois de habilitar o acesso confiável, você pode atribuir acesso de administrador delegado a contas em
sua organização. Quando uma conta é marcada como administrador delegado para um serviço, a conta
recebe autorização para acessar todas as APIs da organização somente leitura. Isso fornece visibilidade
aos membros e estruturas da sua organização para que eles possam criar painéis do S3 Storage Lens em
seu nome.
Note

Somente a conta de gerenciamento pode habilitar o acesso confiável para o Amazon S3 Storage
Lens.

Desativação do acesso confiável para o S3 Storage Lens


Ao desativar o acesso confiável, você limita o S3 Storage Lens a trabalhar apenas em nível de conta.
Além disso, cada titular da conta só pode ver os benefícios do S3 Storage Lens limitados ao escopo de
sua conta e não à organização inteira. Quaisquer painéis que requerem acesso confiável não são mais
atualizados, mas manterão seus dados históricos de acordo com seus respectivos períodos de retenção.

A remoção de uma conta como administrador delegado limitará o acesso às métricas do painel do S3
Storage Lens para funcionar apenas em nível de conta. Todos os painéis organizacionais criados não
são mais atualizados, mas manterão seus dados históricos de acordo com seus respectivos períodos de
retenção.
Note

• Essa ação também impede automaticamente todos os painéis no nível da organização de


coletar e agregar métricas de armazenamento.
• Suas contas de gerenciamento e administrador delegado ainda poderão ver os dados históricos
de seus painéis de nível de organização que saem de acordo com seus respectivos períodos de
retenção.

Registro de um administrador delegado para o S3 Storage Lens


Você pode criar painéis no nível da organização usando a conta de gerenciamento da sua organização
ou uma conta de administrador delegada. As contas de administrador delegado permitem que outras
contas além da sua conta de gerenciamento criem painéis no nível da organização. A conta mestre de
uma organização pode registrar e cancelar o registro de outras contas como administradores delegados da
organização.

Para registrar um administrador delegado usando o console do Amazon S3, consulte Registro de
administradores delegados para o S3 Storage Lens (p. 929).

Versão da API 2006-03-01


906
Amazon Simple Storage Service Guia do usuário
Configurar permissões

Você também pode registrar um administrador delegado usando a API REST do AWS Organizations,
AWS CLI ou SDKs da conta de gerenciamento. Para obter mais informações, consulte
RegisterDelegatedAdministrator na Referência da API do AWS Organizations.
Note

Antes de designar um administrador delegado usando a API REST do AWS Organizations, AWS
CLI ou SDKs, você deve chamar a operação EnableAwsOrganizationsAccess .

Cancelamento do registro de um administrador delegado para o


S3 Storage Lens
Você também pode cancelar o registro de uma conta de administrador delegado. As contas de
administrador delegado permitem que outras contas além da sua conta de gerenciamento criem painéis no
nível da organização. Somente a conta de gerenciamento de uma organização pode cancelar o registro de
contas como administradores delegados para a organização.

Para cancelar o registro de um administrador delegado usando o console do S3, consulte Cancelamento
do registro de administradores delegados para o S3 Storage Lens (p. 930).

Você também pode cancelar o registro de um administrador delegado usando a API REST do AWS
Organizations, AWS CLI ou SDKs da conta de gerenciamento. Para obter mais informações, consulte
DeRegisterDelegatedAdministrator na Referência da API do AWS Organizations.
Note

• Essa ação também impede automaticamente todos os painéis no nível da organização criados
por esse administrador delegado de agregar novas métricas de armazenamento.
• As contas de administrador delegado ainda poderão ver os dados históricos desses painéis de
acordo com seus respectivos períodos de retenção.

Definição de permissões para usar o Amazon S3


Storage Lens
O Amazon S3 Storage Lens requer novas permissões no AWS Identity and Access Management (IAM)
para autorizar o acesso às ações do S3 Storage Lens. Você pode anexar a política a usuários, grupos ou
funções do IAM para conceder a eles permissões para ativar ou desativar o S3 Storage Lens ou acessar
qualquer painel ou configuração do S3 Storage Lens.

O usuário ou função do IAM deve pertencer à conta que criou ou possui o painel ou a configuração, a
menos que sua conta seja membro do AWS Organizations, e você tenha acesso para criar painéis no nível
da organização por sua conta de gerenciamento como administrador delegado.
Note

• Você não pode usar as credenciais de usuário raiz da sua conta para visualizar os painéis do
Amazon S3 Storage Lens. Para acessar os painéis do S3 Storage Lens, você deve conceder as
permissões do IAM necessárias a um usuário do IAM novo ou existente. Em seguida, faça login
com essas credenciais de usuário para acessar os painéis do S3 Storage Lens. Para obter mais
informações, consulte Perguntas frequentes sobre o AWS Identity and Access Management.
• O uso do S3 Storage Lens no console do Amazon S3 pode exigir várias permissões. Por
exemplo; para editar um painel no console, você precisa das seguintes permissões:
• s3:ListStorageLensConfigurations
• s3:GetStorageLensConfiguration

Versão da API 2006-03-01


907
Amazon Simple Storage Service Guia do usuário
Configurar permissões

• s3:PutStorageLensConfiguration

Tópicos
• Definição de permissões de conta para usar o S3 Storage Lens (p. 908)
• Definir permissões para usar o S3 Storage Lens com o AWS Organizations (p. 909)

Definição de permissões de conta para usar o S3 Storage Lens


Permissões do IAM relacionadas ao Amazon S3 Storage Lens

Ação Permissões do IAM

Criar ou atualizar um painel do S3 Storage Lens no s3:ListStorageLensConfigurations


console do Amazon S3.
s3:GetStorageLensConfiguration

s3:GetStorageLensConfiguration

s3:PutStorageLensConfiguration

s3:PutStorageLensConfigurationTagging

Obtenha tags de um painel do S3 Storage Lens no s3:ListStorageLensConfigurations


console do Amazon S3.
s3:GetStorageLensConfigurationTagging

Veja um painel do S3 Storage Lens no console do s3:ListStorageLensConfigurations


Amazon S3.
s3:GetStorageLensConfiguration

s3:GetStorageLensDashboard

Exclua um painel do S3 Storage Lens no console s3:ListStorageLensConfigurations


do Amazon S3.
s3:GetStorageLensConfiguration

s3:DeleteStorageLensConfiguration

Crie ou atualize uma configuração do S3 Storage s3:PutStorageLensConfiguration


Lens na AWS CLI ou SDK.
s3:PutStorageLensConfigurationTagging

Obtenha tags de uma configuração do S3 Storage s3:GetStorageLensConfigurationTagging


Lens na AWS CLI ou SDK.

Veja uma configuração da lente de s3:GetStorageLensConfiguration


armazenamento do S3 na AWS CLI ou SDK.

Exclua uma configuração do S3 Storage Lens na s3:DeleteStorageLensConfiguration


AWS CLI ou SDK.

Note

• Você pode usar tags de recurso em uma política do IAM para gerenciar permissões.
• Um usuário/função do IAM com essas permissões pode ver métricas de buckets e prefixos dos
quais eles podem não ter permissão direta para ler ou listar objetos.

Versão da API 2006-03-01


908
Amazon Simple Storage Service Guia do usuário
Exibição de métricas de armazenamento

• Para configurações do S3 Storage Lens com métricas avançadas e recomendações agregadas


no nível do prefixo, se o prefixo selecionado corresponder às chaves de objeto, ele poderá
mostrar a chave do objeto como seu prefixo até o delimitador e a profundidade máxima
selecionada.
• Para as exportações de métricas, armazenadas em um bucket em sua conta, as permissões
são concedidas usando a permissão s3:GetObject existente na política do IAM. Da mesma
forma, para uma entidade do AWS Organizations, a conta de gerenciamento da organização ou
administrador delegado pode usar políticas do IAM para gerenciar permissões de acesso para
configurações e painéis no nível da organização.

Definir permissões para usar o S3 Storage Lens com o AWS


Organizations
Você pode usar o Amazon S3 Storage Lens para coletar métricas de armazenamento e dados de uso
de todas as contas que fazem parte da hierarquia do AWS Organizations. A seguir estão as ações e
permissões relacionadas ao uso do S3 Storage Lens com organizações.

Permissões do IAM relacionadas a AWS Organizations para usar o Amazon S3 Storage Lens

Ação Permissões do IAM

Habilite o acesso confiável para o S3 Storage Lens organizations:EnableAWSServiceAccess


para sua organização.

Desative o acesso confiável S3 Storage Lens para organizations:DisableAWSServiceAccess


sua organização.

Registre um administrador delegado para criar organizations:RegisterDelegatedAdministrator


painéis ou configurações do S3 Storage Lens para
sua organização.

Cancele o registro de um administrador delegado organizations:DeregisterDelegatedAdministrator


para criar painéis ou configurações do S3 Storage
Lens para sua organização.

Permissões adicionais para criar configurações organizations:DescribeOrganization


para toda a organização do S3 Storage Lens
organizations:ListAccounts

organizations:ListAWSServiceAccessForOrganization

organizations:ListDelegatedAdministrators

iam:CreateServiceLinkedRole

Exibição de métricas de uso de armazenamento e


atividade com o Amazon S3 Storage Lens
Por padrão, todos os painéis são configurados com métricas gratuitas, que incluem métricas de uso
agregadas até o nível do bucket com uma retenção de dados de 14 dias. Isso significa que você pode ver
todas as métricas de uso que o S3 Storage Lens agrega e seus dados estarão disponíveis 14 dias a partir
do dia em que foram agregados.

As métricas e recomendações avançadas incluem métricas de uso com agregação em nível de prefixo,
métricas de atividade agregadas por bucket e recomendações contextuais (disponíveis apenas no painel).

Versão da API 2006-03-01


909
Amazon Simple Storage Service Guia do usuário
Exibição de métricas de armazenamento

As métricas de atividade têm uma política de retenção de dados de 15 meses. Há cobranças adicionais
pelo uso do S3 Storage Lens com métricas avançadas. Para obter mais informações, consulte Definição
de preço do Amazon S3.

Tópicos
• Exibição das métricas da lente de armazenamento do S3 nos painéis (p. 910)
• Exibição de métricas de lente de armazenamento do Amazon S3 usando uma exportação de
dados (p. 910)

Exibição das métricas da lente de armazenamento do S3 nos


painéis
O S3 Storage Lens fornece um painel contendo métricas de uso sem custo adicional. Se você deseja
receber métricas e recomendações avançadas, incluindo métricas de uso e atividade, agregações de
prefixos e recomendações contextuais no painel, você deve selecioná-lo na página de configuração do
painel no console do Amazon S3.

O painel fornece uma visualização interativa para o uso do armazenamento e as métricas de atividade.
Você pode visualizar tendências em toda a organização ou ver tendências mais granulares por conta da
AWS, região da AWS, classe de armazenamento, bucket S3 ou prefixo.

Se sua conta for membro do AWS Organizations, você também poderá ver o uso e a atividade do
armazenamento para toda a sua organização em contas membro. Essas informações estão disponíveis
para você, desde que o S3 Storage Lens tenha recebido acesso confiável à sua organização e você seja
uma conta de gerenciamento autorizado ou administrador delegado.

Use o painel interativo para explorar suas tendências e insights de uso de armazenamento e atividades,
além de obter recomendações contextuais para práticas recomendadas para otimizar seu armazenamento.
Para obter mais informações, consulte Noções básicas do Amazon S3 Storage Lens.

O Amazon S3 preconfigura o painel padrão do S3 Storage Lens para ajudá-lo a visualizar insights
resumidos e tendências de uso agregado de armazenamento e métricas de atividade de toda a sua
conta (atualização opcional). Você não pode modificar o escopo de configuração padrão do painel, mas
a seleção de métricas pode ser atualizada de métricas gratuitas para as métricas e recomendações
avançadas pagas. Você pode configurar a exportação de métricas opcionais ou até mesmo desabilitar o
painel. No entanto, o painel padrão não pode ser excluído.

Além do painel padrão criado pelo Amazon S3, você também pode criar painéis personalizados com
escopo para as contas, regiões, buckets e prefixos da sua própria organização (somente no nível da
conta). Esses painéis personalizados podem ser editados, excluídos e desativados.
Note

O painel do Amazon S3 Storage Lens está disponível apenas no console do Amazon S3. Para
obter mais informações, consulte Exibição de um painel do Amazon S3 Storage Lens (p. 919).

Exibição de métricas de lente de armazenamento do Amazon S3


usando uma exportação de dados
As métricas do Amazon S3 Storage Lens são geradas diariamente em métricas formatadas CSV ou
Apache Parquet exporta arquivos e colocadas em um bucket do S3 em sua conta. A partir daí, você pode
ingerir as métricas exportadas para as ferramentas de análise de sua escolha, como o Amazon QuickSight
e o Amazon Athena, onde você pode analisar o uso do armazenamento e as tendências de atividades.

Tópicos
• Usando uma CMK do AWS KMS para criptografar suas exportações de métricas (p. 911)

Versão da API 2006-03-01


910
Amazon Simple Storage Service Guia do usuário
Exibição de métricas de armazenamento

• O que é um manifesto de exportação do S3 Storage Lens? (p. 911)


• Compreendendo o esquema de exportação do Amazon S3 Storage Lens (p. 913)

Usando uma CMK do AWS KMS para criptografar suas exportações de métricas
Para conceder ao Amazon S3 permissão para criptografar usando uma chave mestra de cliente (CMK)
gerenciada pelo cliente do AWS Key Management Service (AWS KMS), é necessário usar uma política
de chaves. Para atualizar sua política de chaves para que você possa usar uma CMK do AWS KMS para
criptografar as exportações de métricas do S3 Storage Lens, siga estas etapas.

Como conceder permissões de criptografia usando a CMK do AWS KMS

1. Usando a conta da AWS que tem a CMK gerenciada pelo cliente, faça login no Console de
Gerenciamento da AWS.
2. Abra o console do AWS KMS em https://console.aws.amazon.com/kms.
3. Para alterar a região da AWS, use o Region selector (Seletor de regiões) no canto superior direito da
página.
4. No painel de navegação, escolha Customer managed keys (Chaves gerenciadas de cliente).
5. Em Customer managed keys (Chaves gerenciadas pelo cliente), escolha a chave que você deseja
usar para criptografar o arquivo de inventário. As CMKs são específicas da região e devem estar na
mesma região que o bucket S3 de destino de exportação de métricas.
6. Em Key policy (Política de chave), escolha Switch to policy view ((Alternar para visualização de
política).
7. Para atualizar a política de chave, escolha Edit (Editar).
8. Em Edit key policy (Editar política de chave), adicione a seguinte política de chave à existente.

{
"Sid": "Allow Amazon S3 Storage Lens use of the CMK",
"Effect": "Allow",
"Principal": {
"Service": "storage-lens.s3.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey"
],
"Resource": "*"
}

9. Selecione Save changes (Salvar alterações).

Para obter mais informações sobre como criar CMKs gerenciadas pelo cliente do AWS KMS e usar
políticas de chaves, consulte os seguintes tópicos no Guia do desenvolvedor do AWS Key Management
Service:

• Conceitos básicos
• Usar políticas de chaves no AWS KMS

Você também pode usar a política de chaves PUT do AWS KMS (PutKeyPolicy) para copiar a política de
chaves para a CMK gerenciada pelo cliente que deseja usar para criptografar as exportações de métricas
usando a API REST, a AWS CLI e SDKs.

O que é um manifesto de exportação do S3 Storage Lens?


Dada a grande quantidade de dados agregados, uma exportação de métricas diárias do S3 Storage Lens
pode ser dividida em vários arquivos. O arquivo de manifesto manifest.json descreve onde as métricas

Versão da API 2006-03-01


911
Amazon Simple Storage Service Guia do usuário
Exibição de métricas de armazenamento

que exportam arquivos para esse dia estão localizadas. Sempre que uma nova exportação é entregue, ela
é acompanhada por um novo manifesto. Cada manifesto contido no manifest.json fornece metadados
e outras informações básicas sobre a exportação.

As informações do manifesto incluem as seguintes propriedades:

• sourceAccountId — O ID da conta do proprietário da configuração.


• configId – Um identificador exclusivo do painel.
• destinationBucket — O bucket de destino do Amazon Resource Name (ARN) no qual a exportação
das métricas é colocada.
• reportVersion — A versão da exportação.
• reportDate — A data do relatório.
• reportFormat – O formato do relatório.
• reportSchema — O esquema do relatório.
• reportFiles — A lista real dos arquivos de relatório de exportação que estão no bucket de destino.

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em formato


CSV.

{
"sourceAccountId":"123456789012",
"configId":"my-dashboard-configuration-id",
"destinationBucket":"arn:aws:s3:::destination-bucket",
"reportVersion":"V_1",
"reportDate":"2020-11-03",
"reportFormat":"CSV",

"reportSchema":"version_number,configuration_id,report_date,aws_account_number,aws_region,storage_clas
"reportFiles":[
{
"key":"DestinationPrefix/StorageLens/123456789012/my-dashboard-configuration-id/
V_1/reports/dt=2020-11-03/a38f6bc4-2e3d-4355-ac8a-e2fdcf3de158.csv",
"size":1603959,
"md5Checksum":"2177e775870def72b8d84febe1ad3574"
}
}

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em formato


Parquet.

{
"sourceAccountId":"123456789012",
"configId":"my-dashboard-configuration-id",
"destinationBucket":"arn:aws:s3:::destination-bucket",
"reportVersion":"V_1",
"reportDate":"2020-11-03",
"reportFormat":"Parquet",
"reportSchema":"message s3.storage.lens { required string version_number; required
string configuration_id; required string report_date; required string aws_account_number;
required string aws_region; required string storage_class; required string record_type;
required string record_value; required string bucket_name; required string metric_name;
required long metric_value; }",
"reportFiles":[
{
"key":"DestinationPrefix/StorageLens/123456789012/my-dashboard-configuration-id/
V_1/reports/dt=2020-11-03/bd23de7c-b46a-4cf4-bcc5-b21aac5be0f5.par",

Versão da API 2006-03-01


912
Amazon Simple Storage Service Guia do usuário
Exibição de métricas de armazenamento

"size":14714,
"md5Checksum":"b5c741ee0251cd99b90b3e8eff50b944"
}
}

Você pode configurar a exportação de métricas para serem geradas como parte da configuração do painel
no console do Amazon S3 ou usando a API REST do Amazon S3, a AWS CLI e os SDKs.

Compreendendo o esquema de exportação do Amazon S3 Storage Lens


A tabela a seguir contém o esquema da exportação de métricas do S3 Storage Lens.

Nome do atributo Tipo de dados Nome da coluna Descrição

VersionNumber String version_number A versão das métricas


do S3 Storage Lens que
está sendo usada.

ConfigurationId String configuration_id O nome da configuração


configuration_id do
seu S3 Storage Lens.

ReportDate String report_date A data em que as


métricas foram
rastreadas.

AwsAccountNumber String aws_account_number Número de sua conta


AWS.

AwsRegion String aws_region A região da AWS para a


qual as métricas estão
sendo rastreadas.

StorageClass String storage_class A classe de


armazenamento do
bucket em questão.

RecordType ENUM record_type O tipo de artefato que


está sendo relatado
(CONTA, BUCKET ou
PREFIXO).

RecordValue String record_value O valor do registro.


Este campo é
preenchido quando
o record_type é
PREFIXO.
Note

O valor do
registro
é apenas
codificado em
URL no formato
CSV

BucketName String bucket_name O nome do intervalo que


está sendo relatado.

Versão da API 2006-03-01


913
Amazon Simple Storage Service Guia do usuário
Glossário de métricas

Nome do atributo Tipo de dados Nome da coluna Descrição

MetricName String metric_name O nome da métrica que


está sendo relatada.

MetricValue Long metric_value O valor da métrica que


está sendo relatada.

Exemplo de exportação de métricas do S3 Storage Lens

Veja a seguir um exemplo de uma exportação de métricas do S3 Storage Lens com base nesse esquema.

Glossário de métricas de lente de armazenamento do


Amazon S3
Por padrão, todos os painéis são configurados com métricas gratuitas, que incluem métricas de uso
agregadas até o nível do bucket com uma retenção de dados de 14 dias. Isso significa que você pode ver
todas as métricas de uso que o S3 Storage Lens agrega e suas métricas estão disponíveis 14 dias a partir
do dia em que os dados foram agregados.

Métricas e recomendações avançadas incluem métricas de uso que podem ser agregadas por prefixo
e métricas de atividade . As métricas de atividade podem ser agregadas por bucket com uma política
de retenção de dados de 15 meses. Há cobranças adicionais quando você usa o S3 Storage Lens com
métricas e recomendações avançadas. Para obter mais informações, consulte Definição de preço do
Amazon S3.
Note

Os múltiplos de unidade métrica do S3 Storage Lens são escritos usando símbolos de prefixo
que são representados usando os símbolos do SI (Sistema Internacional de Unidades) que são
padronizados pelo BIPM (Bureau Internacional de Pesos e Medidas). Eles também são usados
no UCUM (Unified Code for Units of Measure). Para obter mais informações, consulte a Lista de
símbolos de prefixos do SI.

Versão da API 2006-03-01


914
Amazon Simple Storage Service Guia do usuário
Glossário de métricas

Nome da métrica Descrição Gratuito


Tipo Categoria DERIVADA
Fórmula da métrica
derivada

Armazenamento O armazenamento total Y Uso Resumo N


total

Contagem de A contagem total de Y Uso Resumo N


objetos objetos

Tamanho do objeto O tamanho médio do Y Uso Resumo Y Sum(StorageBytes)/


médio objeto sum(ObjectCount)

Nº de buckets ativos O número total de Y Uso Resumo Y DistinctCount[Bucketname]


buckets ativos

Número de contas O número de contas Y Uso Resumo Y DistinctCount[AccountID]


cujo armazenamento
está no escopo

Bytes de O número de bytes de Y Uso Proteção N


armazenamento de uma versão atual de dados,
versão eficiência de
custos

% bytes da versão A porcentagem de Y Uso Proteção Y Sum(CurrentVersion


atual bytes no escopo da de dados, Bytes) /
versão atual eficiência de sum(Storage
custos Bytes)

Contagem de O número de bytes da Y Uso Proteção N


objetos da versão versão não atual de dados,
atual eficiência de
custos

% objetos da versão A porcentagem de Y Uso Proteção Y Soma


atual objetos no escopo que de dados, (CurrentVersionObjects)/
são uma versão não eficiência de soma (ObjectCount)
atual custos

Bytes de O número de bytes Y Uso Proteção N


armazenamento de versionados não atuais de dados,
versão não atual eficiência de
custos

% bytes de versão A porcentagem de Y Uso Proteção Y Sum(NonCurrentVersionSto


não atual bytes no escopo que de dados, rageBytes)/
são da versão não eficiência de Sum(StorageBytes)
atual custos

Contagem de A contagem dos Y Uso Proteção N


objetos de versão objetos de versão não de dados,
não atual atual eficiência de
custos

% objetos de versão A porcentagem de Y Uso Proteção Y Sum(NonCurrentVersionObjectC


não atual objetos no escopo que de dados, Sum(ObjectCount)
são uma versão não eficiência de
atual custos

Versão da API 2006-03-01


915
Amazon Simple Storage Service Guia do usuário
Glossário de métricas

Nome da métrica Descrição Gratuito


Tipo Categoria DERIVADA
Fórmula da métrica
derivada

Contagem de O número total de Y Uso Custo da N


objetos do marcador objetos com um eficiência
de exclusão marcador de exclusão

% objetos de A porcentagem de Y Uso Custo da Y


marcador de objetos no escopo eficiência
exclusão com um marcador de
exclusão

Bytes de O número total de bytes Y Uso Proteção de N


armazenamento criptografados usando dados
criptografados criptografia do lado do
servidor do Amazon S3

% de bytes A porcentagem do total Y Uso Proteção de Y Sum(EncryptedStorageBytes)/


criptografados de bytes no escopo dados Sum(StorageBytes)
que são criptografados
usando criptografia no
lado do servidor do
Amazon S3

Contagem As contagens totais de Y Uso Proteção de N


de objetos objetos criptografadas dados
criptografados usando criptografia
no lado do servidor do
Amazon S3

% objetos A porcentagem de Y Uso Proteção de Y Sum(EncryptedStorageBytes)/


criptografados objetos no escopo que dados Sum(ObjectCount)
são criptografados
usando criptografia do
lado do servidor do
Amazon S3

Bytes de O número de bytes no Y Uso Proteção de Y Sum(StorageBytes)


armazenamento escopo que não são dados -
sem criptografia criptografados sum(EncryptedStorageBytes)

% de bytes não A porcentagem de Y Uso Proteção de Y Sum(UnencryptedStorageBytes)


criptografados bytes no escopo que dados Sum(StorageBytes)
não são criptografados

Contagem de A contagem dos Y Uso Proteção de Y Sum(ObjectCounts)


objetos não objetos que não são dados -
criptografados criptografados sum(EncryptedObjectCounts)

Objetos não A porcentagem Y Uso Proteção de Y Sum(UnencryptedStorageBytes)


criptografados. de objetos não dados Sum(ObjectCount)
criptografados

Bytes de O número total de bytes Y Uso Proteção de N


armazenamento no escopo que são dados
replicados replicados

Versão da API 2006-03-01


916
Amazon Simple Storage Service Guia do usuário
Glossário de métricas

Nome da métrica Descrição Gratuito


Tipo Categoria DERIVADA
Fórmula da métrica
derivada

% bytes replicados A porcentagem do total Y Uso Proteção de Y Sum(ReplicatedStorageBytes)/


de bytes no escopo que dados Sum(StorageBytes)
são replicados

Contagem de A contagem de objetos Y Uso Proteção de N


objetos replicados replicados dados

% objetos A porcentagem do total Y Uso Proteção de Y Sum(ReplicatedObjects)/


replicados de objetos que são dados Sum(ObjectCount)
replicados

Bytes de O número total de bytes Y Uso Proteção de N


armazenamento no escopo que têm o dados
habilitados para bloqueio de objetos
bloqueio de objetos ativado

% bytes de bloqueio A porcentagem do total Y Uso Proteção de Y Sum(ObjectLockBytes)/


de objetos de bytes no escopo dados Sum(StorageBytes)
que têm o bloqueio de
objetos ativado

Contagem de O número total de Y Uso Proteção de N


objetos com objetos no escopo que dados
bloqueio de objetos têm bloqueio de objetos
ativado ativado

% objetos com A porcentagem de Y Uso Proteção de Y Sum(ObjectLockObjects)/


bloqueio de objetos objetos no escopo que dados Sum(ObjectCount)
têm bloqueio de objetos
ativado

Bytes de O total de bytes no Y Uso Custo da N


armazenamento escopo com multipart eficiência
com multipart uploads incompletos
upload incompletos

% bytes MPU A porcentagem de Y Uso Custo da Y Sum(IncompleteMPUbytes)/


incompletos bytes no escopo que eficiência Sum(StorageBytes)
são resultados de
multipart uploads
incompletos

Contagem de O número de objetos Y Uso Custo da N


objetos de multipart no escopo com eficiência
upload incompleto multipart uploads
incompletos

% objetos MPU A porcentagem de Y Uso Custo da Y Sum(IncompleteMPUobjects )/


incompletos objetos no escopo eficiência Sum( ObjectCount)
com multipart uploads
incompletos

Todas as O número total de N Atividades


Resumo, N
solicitações solicitações feitas atividade

Versão da API 2006-03-01


917
Amazon Simple Storage Service Guia do usuário
Glossário de métricas

Nome da métrica Descrição Gratuito


Tipo Categoria DERIVADA
Fórmula da métrica
derivada

Solicitações GET O número total de N Atividades


Atividades N
solicitações GET feitas

Solicitações PUT O número total de N Atividades


Atividades N
solicitações PUT feitas

Solicitações de O número total N Atividades


Atividades N
cabeçalho de solicitações de
cabeçalho feitas

Solicitações de O número total N Atividades


Atividades N
exclusão de solicitações de
exclusão feitas

Solicitações de LIST O número total de N Atividades


Atividades N
solicitações de LIST
feitas

Solicitações de Post O número total de N Atividades


Atividades N
solicitações de post
feitas

Solicitações de O número total N Atividades


Atividades N
SELECT de solicitações de
SELECT

Bytes verificados O número de N Atividades


Atividades N
selecionados bytes verificados
selecionados

Bytes selecionados O número de bytes N Atividades


Atividades N
retornados selecionados
retornados

Bytes obtidos por O número de bytes N Atividades


Atividades N
download no escopo que foram
obtidos por download

% taxa de A porcentagem da taxa N Atividades


Atividade, Y Sum(BytesDownloaded)/
recuperação de recuperação eficiência de Sum(StorageBytes)
custo

Bytes enviados por O número de bytes N Atividades


Atividades N
upload enviados por upload

% relação de O número de bytes N Atividades


Atividade, Y Sum(BytesUploaded) /
consumo carregados como eficiência de Sum(Storage
uma porcentagem custo Bytes)
do total de bytes de
armazenamento no
escopo

Erros 4xx O total de erros 4xx no N Atividades


Atividades N
escopo

Erros 5xx O total de erros 5xx no N Atividades


Atividades N
escopo

Versão da API 2006-03-01


918
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

Nome da métrica Descrição Gratuito


Tipo Categoria DERIVADA
Fórmula da métrica
derivada

Total de erros A soma de todos os N Atividades


Atividades Y Sum(4xxErrors) +
erros (4xx) e (5xx) Sum(5xxErrors)

Taxa de erro 504 O total de erros como N Atividades


Atividades Y Sum(TotalErrors)/
uma porcentagem do Sum(TotalRequests)
total de solicitações

Exemplos e demonstração do console do Amazon S3


Storage Lens
O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

Esta seção contém exemplos de criação, atualização e exibição de configurações do S3 Storage Lens e
execução de operações relacionadas ao recurso. Se você estiver usando o S3 Storage Lens com o AWS
Organizations, esses exemplos também abordam esses casos de uso. Nos exemplos, substitua todos os
valores de variável por valores adequados às suas necessidades.

Tópicos
• Uso do Amazon S3 Storage Lens no console (p. 919)
• Exemplos de Amazon S3 Storage Lens usando a AWS CLI (p. 930)
• Exemplos do Amazon S3 Storage Lens usando o SDK para Java (p. 935)

Uso do Amazon S3 Storage Lens no console


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

Tópicos
• Exibição de um painel do Amazon S3 Storage Lens (p. 919)
• Criação e atualização dos painéis do Amazon S3 Storage Lens (p. 922)
• Desabilitar ou excluir painéis do Amazon S3 Storage Lens (p. 926)
• Como trabalhar com o AWS Organizations para criar painéis no nível da organização (p. 927)

Exibição de um painel do Amazon S3 Storage Lens


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as

Versão da API 2006-03-01


919
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

O painel padrão do Amazon S3 Storage Lens é o painel de conta-padrão. Esse painel é pré-configurado
pelo Amazon S3 para ajudá-lo a visualizar insights resumidos e tendências para o uso agregado de
armazenamento e as métricas de atividade de toda a sua conta no console. Você não pode modificar
seu escopo de configuração, mas pode atualizar a seleção de métricas das Métricas gratuitas para as
Métricas e recomendações avançadas pagas, configurar a exportação de métricas opcionais ou até
mesmo desativá-la. O painel padrão não pode ser excluído.

Você também pode criar painéis adicionais do S3 Storage Lens focados em regiões específicas da AWS,
buckets do S3 ou outras contas em suas organizações.

O painel do Amazon S3 fornece um recurso avançado de informações sobre seu escopo de


armazenamento que representa mais de 30 métricas. Essas métricas representam tendências e outras
informações, incluindo resumo do armazenamento, economia de custos, proteção de dados e atividade.

O painel sempre é carregado para a data mais recente para a qual as métricas estão disponíveis.

Para exibir um painel do S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens (Storage Lens), Dashboards (Painéis).
3. Na lista Dashboards (Painéis), escolha o painel que deseja visualizar.

No canto superior direito, você deve ver a data mais recente para a qual o S3 Storage Lens coletou
métricas de armazenamento. Você também tem acesso a filtros temporários para limitar ainda mais o
escopo dos dados do painel que você está exibindo. Há também uma opção de redefinição que você
pode usar para remover todos os filtros.

Seu painel sempre carrega a data mais recente para a qual as métricas estão disponíveis.
Note

Você não pode usar as credenciais de usuário raiz da sua conta para visualizar os painéis do
Amazon S3 Storage Lens. Para acessar os painéis do S3 Storage Lens, você deve conceder
as permissões do IAM necessárias a um usuário do IAM novo ou existente. Em seguida, faça
login com essas credenciais de usuário para acessar os painéis do S3 Storage Lens. Para
obter mais informações, consulte Definir permissões para usar o S3 Storage Lens.

Noções básicas sobre seu painel do S3 Storage Lens

O painel do S3 Storage Lens consiste em uma guia Overview (Visão geral) principal e até cinco guias
adicionais que representam cada nível de agregação:

• Account (Conta) (apenas para painéis no nível da organização)


• Região
• Classe de armazenamento
• Bucket
• Prefix (Prefixo) (somente se inscrito em métricas e recomendações avançadas)

Os dados do seu painel são agregados em três seções diferentes.

Snapshot
Versão da API 2006-03-01
920
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

A primeira seção é a seção Snapshot , que mostra as métricas que o S3 Storage Lens agregou para a
data anterior selecionada. Ela mostra dados agregados para as cinco métricas a seguir do escopo de
configuração do painel do S3 Storage Lens:

• Total de bytes de armazenamento


• Contagem total de objetos
• Tamanho médio do objeto
• Contas — esse valor é 1 , a menos que você esteja usando o AWS Organizations, e seu S3 Storage
Lens tenha acesso confiável com uma função vinculada a serviços válida. Para obter mais informações,
consulte Usar funções vinculadas ao serviço do S3 Storage Lens.
• Buckets
• Solicitações — Se você optar por usar métricas avançadas e recomendações para este painel.

A seção Metrics (Métricas) da seção Snapshot mostra dados agregados das métricas de uso de
armazenamento e atividade agrupadas nas seguintes categorias:

• Resumo
• Eficiência de custos
• Proteção de dados
• Atividades

Você pode exibir as propriedades relevantes para essas métricas, incluindo totais, % tendências de
alteração (dia/dia, semana/semana e mês/mês) e recomendações.

Tendências e distribuição

A segunda seção da guia Visão geral é Tendências e distribuição.

As tendências fornecem duas métricas que você pode optar por comparar em um intervalo de datas
de sua escolha agregado por um período de sua escolha. Ele ajuda você a ver a relação entre as duas
tendências de métricas em relação ao escopo de armazenamento do painel. Você pode ver a classe de
armazenamento e a distribuição de região entre as duas tendências que você está rastreando.

Com as três maneiras diferentes de comparar métricas, você pode obter mais informações sobre seu
armazenamento que podem ajudá-lo a otimizar seu uso ao longo do tempo.

Visão geral da top N

A terceira seção do painel S3 Storage Lens é a Top N overview (visão geral do Top N) (classificada em
ordem crescente ou decrescente). Isso permite que você veja suas métricas selecionadas nas contas topN
(se você habilitou o S3 Storage Lens para trabalhar com o AWS Organizations).

As guias Nível de dimensão fornecem uma exibição detalhada de todos os valores dentro de uma
determinada dimensão. Por exemplo, a guia Region (Região) mostra métricas para todas as regiões da
AWS e a guia Bucket mostra métricas para todos os buckets. Cada guia de dimensão contém um layout
idêntico composto por quatro seções:

• Um gráfico de tendências exibindo seus N itens principais dentro da dimensão nos últimos 30 dias para
a métrica selecionada. Por padrão, esse gráfico exibe os 10 principais itens, mas você pode aumentá-lo
para qualquer número desejado.
• Um gráfico de histograma mostra um gráfico de barras verticais para a data e a métrica selecionadas.
Talvez seja necessário rolar horizontalmente se tiver um número muito grande de itens a serem exibidos
neste gráfico.

Versão da API 2006-03-01


921
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

• O gráfico de análise de bolhas representa todos os itens dentro da dimensão representando a primeira
métrica no eixo x, uma segunda métrica no eixo y e uma terceira métrica representada pelo tamanho da
bolha.
• A exibição de grade de métrica contém cada item na dimensão listada em linhas. As colunas
representam cada métrica disponível, organizadas em guias de categoria de métricas para facilitar a
navegação.

Note
Para fornecer uma experiência fluida na condução de sua análise, o painel do S3 Storage Lens
fornece um menu de ação detalhar, que aparece quando você escolhe qualquer valor de gráfico.
Escolha qualquer valor de gráfico para ver os valores de métricas associados e escolha entre
duas opções:

• A ação detalhar aplica o valor selecionado como um filtro em todas as guias do painel. Você
pode então detalhar esse valor para uma análise mais profunda.
• A ação analisar por leva você à guia de dimensão selecionada no painel e aplica esse valor
como um filtro. Em seguida, você pode visualizar esse valor no contexto da nova dimensão
para uma análise mais profunda.

As ações detalhar e analisar talvez não apareçam se o resultado produzir resultados ilógicos ou
não tiver valor. As ações detalhar e analisar por resultam na aplicação de filtros sobre quaisquer
filtros existentes em todas as guias do painel. Se necessário, você pode remover os filtros ou usar
a opção de redefinição para remover todos os filtros.

Criação e atualização dos painéis do Amazon S3 Storage Lens


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

O painel padrão do Amazon S3 Storage Lens é o painel de conta-padrão. Esse painel é pré-configurado
pelo Amazon S3 para ajudá-lo a visualizar insights resumidos e tendências para o uso agregado de
armazenamento e as métricas de atividade de toda a sua conta no console. Você não pode modificar
seu escopo de configuração, mas pode atualizar a seleção de métricas das Métricas gratuitas para as
Métricas e recomendações avançadas pagas, configurar a exportação de métricas opcionais ou até
mesmo desativá-la. O painel padrão não pode ser excluído.

Você também pode criar painéis personalizados adicionais do S3 Storage Lens que podem ser escopo
para cobrir o AWS Organizations ou regiões ou buckets específicos em uma conta.

Tópicos
• Criação de um painel do Amazon S3 Storage Lens (p. 922)
• Atualização de um painel do Amazon S3 Storage Lens (p. 924)

Criação de um painel do Amazon S3 Storage Lens

Para criar um painel do S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha S3 Storage Lens.

Versão da API 2006-03-01


922
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

3. Escolha Create dashboard (Criar painel).


4. Na página Dashboard (Painel), na seção General (Geral), faça o seguinte:

a. Insira um nome de painel.

Os nomes do painel devem ter menos de 65 caracteres e não devem conter caracteres ou
espaços especiais.
Note

Não é possível alterar o nome do painel depois que o painel for criado.
b. Escolha a região inicial do seu painel. As métricas do painel para todas as regiões incluídas neste
escopo do painel são armazenadas centralmente nesta região inicial designada.
c. Opcionalmente, você pode optar por adicionar Tags ao seu painel. Você pode usar tags para
gerenciar permissões para seu painel e rastrear os custos para o S3 Storage Lens.

Para obter mais informações, consulte Controlando o acesso usando tags de recursos no Guia
do usuário do IAM e Tags de alocação de custos geradas pela AWS no Guia do usuário do AWS
Billing and Cost Management.
Note

Você pode adicionar até 50 tags à configuração do painel.


5. Na seção Dashboard scope (Escopo do painel), faça o seguinte:

a. Escolha as regiões e os buckets que deseja que o S3 Storage Lens inclua ou exclua no painel.
b. Escolha os buckets nas regiões selecionadas que deseja que o S3 Storage Lens inclua ou exclua.
Você pode incluir ou excluir buckets, mas não ambos. Essa opção não está disponível quando
você cria painéis no nível da organização.

Note

• Você pode incluir ou excluir regiões e buckets. Essa opção é limitada a regiões somente ao
criar painéis no nível da organização em contas de membro na sua organização.
• Você pode escolher até 50 buckets para incluir ou excluir.
6. Na seção Metrics selection (Seleção de métricas), escolha o tipo de métricas que você deseja agregar
para este painel.

• Escolha Free Metrics (Métricas gratuitas) para incluir métricas de uso agregadas no nível de bucket
com retenção de 14 dias.
• Para obter um custo adicional, escolha Métricas e recomendações avançadas. Essa opção inclui
métricas de uso agregadas no nível de prefixo e métricas de atividade agregadas por bucket,
retenção de dados de 15 meses e recomendações contextuais que ajudam você a otimizar ainda
mais os custos de armazenamento e aplicar as práticas recomendadas de proteção de dados. Para
obter mais informações, consulte Definição de preço do Amazon S3.

Se você habilitar Métricas e recomendações avançadas, poderá escolher opções adicionais da


seguinte forma:

a. A opção para habilitar métricas de atividade está incluída nas Métricas e recomendações
avançadas. Essa opção ajuda você a rastrear solicitações e erros de objetos no escopo do painel.
b. Escolha Ativar agregação de prefixos se quiser agregar suas métricas de uso no nível do prefixo
para que você possa receber insights detalhados para seus principais prefixos em cada bucket.
c. Se você optar por ativar aVersão
agregação de 2006-03-01
da API prefixos, você deve escolher o tamanho mínimo de limite
de prefixo que o S3 Storage Lens coletará
923 para este painel. Por exemplo, um limite de prefixo de
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

5% indica que os prefixos que compõem 5% ou mais em tamanho do armazenamento do bucket


serão agregados.
d. Escolha o nome do prefixo. Essa configuração indica o número máximo de níveis até os quais os
prefixos são avaliados. A profundidade do prefixo deve ser inferior a 10.
e. Insira um caractere delimitador de prefixo. Este é o valor usado para identificar cada nível de
prefixo. O valor padrão no Amazon S3 é o caractere /, mas sua estrutura de armazenamento pode
usar outros caracteres delimitadores.

Em seguida, você pode visualizar as métricas incluídas para este painel.

Para exibir métricas para o painel

1. Na seção Metrics Export (Exportação de métricas), escolha Enable (Ativar) para criar uma exportação
de métricas que será colocada diariamente em um bucket de destino de sua escolha.

A exportação de métricas está no formato CSV ou Apache Parquet. Ele representa o mesmo escopo
de dados que os dados do painel do S3 Storage Lens sem as recomendações.
2. Se ativado, escolha o formato de saída da exportação de métricas diárias. Você pode escolher
entre CSV ou Apache Parquet. Parquet é um formato de arquivo de código aberto para Hadoop que
armazena dados aninhados em um formato colunar plano.
3. Escolha o bucket do S3 de destino para sua exportação de métricas. Você pode escolher um bucket
na conta atual do painel do S3 Storage Lens. Ou você pode escolher outra conta da AWS se tiver as
permissões do bucket de destino e o ID da conta de proprietário do bucket de destino.
4. Escolha o destino (formato: s3://bucket/prefix) do bucket do S3 de destino. O endereço do
bucket deve estar no formato S3 na região inicial do painel de controle do S3 Storage Lens.
Note

• O Amazon S3 atualizará a política de permissões no bucket de destino para permitir que o


S3 coloque dados nesse bucket.
• O console do S3 mostrará a permissão explícita do bucket de destino que será adicionada
pelo Amazon S3 à política de bucket de destino na caixa de permissão do bucket de
destino.
• Se o bucket do S3 de destino de exportação de métricas já tiver a criptografia no lado do
servidor habilitada, todos os arquivos de exportação colocados lá também deverão ter a
criptografia do lado do servidor ativada.
5. Se você optar por ativar a criptografia do lado do servidor para seu painel, você deve escolher um tipo
de chave de criptografia. Você pode escolher entre uma chave do Amazon S3 (SSE-S3) e uma chave
do AWS Key Management Service (AWS KMS) (SSE-KMS).
6. Se você escolheu uma chave do AWS KMS, deverá escolher entre as chaves mestres do KMS ou
inserir uma chave mestre do Amazon Resource Name (ARN).

Atualização de um painel do Amazon S3 Storage Lens

Para atualizar um painel do S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha S3 Storage Lens.
3. Escolha o painel que deseja editar e escolha Edit (Editar) na parte superior da lista.
Note

Você não pode alterar o seguinte:


Versão da API 2006-03-01
924
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

• O nome do painel
• A região inicial
• O escopo do painel do painel padrão, que tem escopo para o armazenamento de toda a
sua conta.
4. Na página de configuração do painel, na seção General (Geral), você pode atualizar e adicionar tags
ao seu painel.

Você pode usar tags para gerenciar permissões para seu painel e rastrear os custos para o S3
Storage Lens. Para obter mais informações, consulte Controlando o acesso usando tags de recursos
no Guia do usuário do IAM e Tags de alocação de custos geradas pela AWS no Guia do usuário do
AWS Billing and Cost Management.
Note

Você pode adicionar até 50 tags à configuração do painel.


5. Na seção Dashboard scope (Escopo do painel), faça o seguinte:

• Atualize as regiões e os buckets que deseja que o S3 Storage Lens inclua ou exclua no painel.
Note

• Você pode incluir ou excluir regiões e buckets. Essa opção é limitada a regiões
somente ao criar painéis no nível da organização em contas de membro na sua
organização.
• Você pode escolher até 50 buckets para incluir ou excluir.

Atualize os buckets nas regiões selecionadas que deseja que o S3 Storage Lens inclua ou exclua.
Você pode incluir ou excluir buckets, mas não ambos. Esta opção não está presente ao criar
painéis no nível da organização.
6. Na seção Metrics selection(Seleção de métricas), atualize o tipo de métricas que você deseja agregar
para este painel.

Você pode escolher Métricas gratuitas para incluir métricas de uso agregadas no nível do bucket com
retenção de 14 dias.

Por um custo adicional, você pode escolher Métricas e recomendações avançadas. Isso inclui
métricas de uso agregadas no nível de prefixo, métricas de atividade agregadas por bucket, retenção
de dados de 15 meses e recomendações contextuais que ajudam você a otimizar ainda mais os
custos de armazenamento e aplicar as práticas recomendadas de proteção de dados. Para obter mais
informações, consulte Definição de preço do Amazon S3.

Se você optar por ativar Métricas e recomendações avançadas, poderá escolher opções adicionais da
seguinte forma:

a. A opção para habilitar métricas de atividade está incluída nas métricas e recomendações
avançadas. Essa opção ajuda você a rastrear solicitações e erros de objetos no escopo do painel.
b. Escolha Ativar agregação de prefixos se quiser agregar suas métricas de uso no nível do prefixo
para que você possa receber insights detalhados para seus principais prefixos em cada bucket.
c. Se você escolheu a agregação de prefixos, você deve escolher o tamanho mínimo de limite de
prefixo que o S3 Storage Lens coletará para este painel. Por exemplo, um limite de prefixo de
5% indica que os prefixos que compõem 5% ou mais em tamanho do armazenamento do bucket
serão agregados.
d. Você também deve escolher a profundidade do prefixo. Esta opção indica o número máximo de
níveis até os quais os prefixos são avaliados. A profundidade do prefixo deve ser inferior a 10.
Versão da API 2006-03-01
925
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

e. Insira um caractere delimitador de prefixo. Este é o valor que é usado para identificar cada
nível de prefixo. O valor padrão no Amazon S3 para isso é o caractere / , mas sua estrutura de
armazenamento pode usar outros caracteres delimitadores.

Em seguida, você pode visualizar as métricas incluídas para este painel.


7. Na seção Metrics Export (Exportação de métricas), faça o seguinte:

a. Escolha Enable (Ativar) se quiser criar uma exportação de métricas que será colocada
diariamente em um bucket de destino de sua escolha. A exportação de métricas está no formato
CSV ou Apache Parquet e representa o mesmo escopo de dados que os dados do painel do S3
Storage Lens, sem as recomendações.
b. Se ativado, escolha o formato de saída da exportação de métricas diárias. Você pode escolher
entre CSV ou Apache Parquet. Parquet é um formato de arquivo de código aberto para Hadoop
que armazena dados aninhados em um formato colunar plano.
c. Atualize o bucket do S3 de destino da exportação de métricas. Você pode escolher entre um
bucket na conta atual do painel do S3 Storage Lens ou escolher outra conta da AWS se tiver as
permissões do bucket de destino e o ID da conta de proprietário do bucket de destino.
d. Atualize o destino (formato: s3://bucket/prefix) do bucket do S3 de destino. O endereço do
bucket deve estar no formato S3 na região inicial do painel de controle do S3 Storage Lens.
Note

• O Amazon S3 atualizará a política de permissões no bucket de destino para permitir


que o S3 coloque dados nesse bucket.
• O console do S3 mostrará a permissão explícita do bucket de destino que será
adicionada pelo Amazon S3 à política de bucket de destino na caixa de permissão do
bucket de destino.
• Se o bucket do S3 de destino de exportação de métricas já tiver a criptografia no lado
do servidor habilitada, todos os arquivos de exportação colocados lá também devem
ter a criptografia do lado do servidor ativada.
e. Se você optar por ativar a criptografia do lado do servidor para seu painel, você deve escolher um
tipo de chave de criptografia. Você pode escolher entre uma chave do Amazon S3 (SSE-S3) e
uma chave do AWS Key Management Service (AWS KMS) (SSE-KMS).
f. Se você escolheu uma chave do AWS KMS, deverá escolher entre as chaves mestres do KMS ou
inserir uma chave mestre do Amazon Resource Name (ARN).

Desabilitar ou excluir painéis do Amazon S3 Storage Lens


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

O painel padrão do Amazon S3 Storage Lens é o painel de conta-padrão. Esse painel é pré-configurado
pelo Amazon S3 para ajudá-lo a visualizar insights resumidos e tendências para o uso agregado de
armazenamento e as métricas de atividade de toda a sua conta no console. Você não pode modificar
seu escopo de configuração, mas pode atualizar a seleção de métricas das Métricas gratuitas para as
Métricas e recomendações avançadas pagas, configurar a exportação de métricas opcionais ou até
mesmo desativá-la. O painel padrão não pode ser excluído.

Você pode excluir ou desativar um painel do Amazon S3 Storage Lens do console do Amazon S3.
Desativar ou excluir um painel impede que ele gere métricas no futuro. Um painel desativado ainda

Versão da API 2006-03-01


926
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

mantém suas informações de configuração, para que possa ser facilmente retomado quando reativado.
Um painel desativado retém seus dados históricos até que sua política de retenção expire.

As seleções de Dados para métricas livres são mantidas por 14 dias e os dados das seleções de Métricas
e Recomendações avançadas são mantidas por 15 meses.

Tópicos
• Desativação de um painel do Amazon S3 Storage Lens (p. 927)
• Exclusão de um painel do Amazon S3 Storage Lens (p. 927)

Desativação de um painel do Amazon S3 Storage Lens

Para desativar um painel do S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens (Storage Lens), Dashboards (Painéis).
3. Na lista Dashboards (Painéis), escolha o painel que deseja desativar e, em seguida, escolha Disable
(Desativar) na parte superior da lista.
4. Na página de confirmação, confirme se deseja desativar o painel digitando o nome do painel no
campo de texto e escolha Confirm (Confirmar).

Exclusão de um painel do Amazon S3 Storage Lens


Note

Antes de excluir um painel, considere o seguinte:

• Como alternativa à exclusão de um painel, você pode desativar o painel para que ele esteja
disponível para ser reativado no futuro. Para obter mais informações, consulte Desativação de
um painel do Amazon S3 Storage Lens (p. 927).
• A exclusão do painel excluirá todas as configurações associadas a ele.
• A exclusão de um painel tornará todos os dados de métricas históricas indisponíveis. Esses
dados históricos ainda são mantidos até que seu período de retenção expire (14 dias ou 15
meses, dependendo se é um painel de métricas gratuito ou avançado). Se você quiser acessar
esses dados novamente, crie um painel com o mesmo nome na mesma região inicial daquele
que foi excluído.

Para excluir um painel do S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens (Storage Lens), Dashboards (Painéis).
3. Na lista Dashboards (Painéis), escolha o painel que deseja excluir e escolha Delete (Excluir) na parte
superior da lista.
4. Na página Delete dashboards (Excluir painéis), confirme se deseja excluir o painel inserindo o nome
do painel no campo de texto. Depois, selecione Confirm (Confirmar).

Como trabalhar com o AWS Organizations para criar painéis no nível da


organização
O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode

Versão da API 2006-03-01


927
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console de
Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST.

O painel padrão do Amazon S3 Storage Lens é o painel de conta-padrão. Esse painel é pré-configurado
pelo Amazon S3 para ajudá-lo a visualizar insights resumidos e tendências para o uso agregado de
armazenamento e as métricas de atividade de toda a sua conta no console. Você não pode modificar
seu escopo de configuração, mas pode atualizar a seleção de métricas das Métricas gratuitas para as
Métricas e recomendações avançadas pagas, configurar a exportação de métricas opcionais ou até
mesmo desativá-la. O painel padrão não pode ser excluído.

Você também pode criar painéis adicionais do S3 Storage Lens focados em regiões específicas da AWS,
buckets do S3 ou outras contas da AWS em sua organização.

O painel do Amazon S3 fornece um rico recurso de informações sobre seu escopo de armazenamento,
representando mais de 30 métricas que representam tendências e informações, incluindo resumo de
armazenamento, economia de custos, proteção de dados e atividade.

O Amazon S3 Storage Lens pode ser usado para coletar métricas de armazenamento e dados de uso de
todas as contas que fazem parte da hierarquia do AWS Organizations. Para fazer isso, você deve usar o
AWS Organizations e habilitar o acesso confiável do S3 Storage Lens usando sua conta de gerenciamento
do AWS Organizations. 

Quando o acesso confiável estiver habilitado, você pode adicionar acesso de administrador delegado às
contas em sua organização. Essas contas podem criar painéis e configurações para toda a organização
para o S3 Storage Lens. Para obter mais informações sobre como habilitar o acesso confiável, consulte
Lens do Amazon S3 e AWS Organizations no Guia do usuário do AWS Organizations.

Os controles de console a seguir estão disponíveis apenas para as contas de gerenciamento do AWS
Organizations.

Tópicos
• Ativação do acesso confiável para o S3 Storage Lens em sua organização (p. 928)
• Desativação de acesso confiável do S3 Storage Lens em sua organização (p. 929)
• Registro de administradores delegados para o S3 Storage Lens (p. 929)
• Cancelamento do registro de administradores delegados para o S3 Storage Lens (p. 930)

Ativação do acesso confiável para o S3 Storage Lens em sua organização

A ativação do acesso confiável permite que o Amazon S3 Storage Lens acesse sua hierarquia, associação
e estrutura do AWS Organizations por meio de APIs da organização da AWS. O S3 Storage Lens se
torna um serviço confiável para toda a estrutura de sua organização. Ele pode criar funções vinculadas a
serviços nas contas de gerenciamento ou administrador delegado da sua organização sempre que uma
configuração de painel é criada.

A função vinculada ao serviço concede permissões do S3 Storage Lens para descrever organizações,
listar contas, verificar uma lista de acesso de serviço para as organizações e obter administradores
delegados para a organização. Isso permite que o S3 Storage Lens colete métricas de uso de
armazenamento entre contas e atividades para painéis dentro de contas em suas organizações.

Para obter mais informações, consulte Usar funções vinculadas de serviço ao Amazon S3 Storage Lens.
Note

• O acesso confiável só pode ser ativado pela conta de gerenciamento.


• Somente a conta de gerenciamento e os administradores delegados podem criar painéis ou
configurações do S3 Storage Lens para sua organização.

Versão da API 2006-03-01


928
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

Para permitir que o S3 Storage Lens tenha acesso confiável

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens, Organization settings (Configurações da
organização).
3. Em Organization access(Acesso às organizações), escolha Edit (Editar).

A página Organization access (Acesso à organização) é aberta. Aqui você pode Habilitar o acesso
confiável para o S3 Storage Lens. Isso permite que você e quaisquer outros titulares de conta que
você adicionar como administradores delegados criem painéis para todas as contas e armazenamento
em sua organização.

Desativação de acesso confiável do S3 Storage Lens em sua organização

A desativação do acesso confiável limitará o S3 Storage Lens a funcionar apenas em nível de conta. Cada
titular da conta só poderá ver os benefícios do S3 Storage Lens limitados ao escopo de sua conta e não
à sua organização. Quaisquer painéis que requerem acesso confiável não serão mais atualizados, mas
manterão seus dados históricos de acordo com seus respectivos períodos de retenção.

A remoção de uma conta como administrador delegado limita o acesso às métricas do painel do S3
Storage Lens para funcionar apenas em nível de conta. Todos os painéis organizacionais criados não
serão mais atualizados, mas manterão seus dados históricos de acordo com seus respectivos períodos de
retenção.
Note

• A desativação do acesso confiável também desativa automaticamente todos os painéis no


nível da organização, pois o S3 Storage Lens não terá mais acesso confiável às contas da
organização para coletar e agregar métricas de armazenamento.
• As contas de administrador de gerenciamento e delegado ainda podem ver os dados históricos
desses painéis desativados de acordo com seus respectivos períodos de retenção.

Para desativar o acesso confiável para o S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens, Organization settings (Configurações da
organização).
3. Em Organization access(Acesso às organizações), escolha Edit (Editar).

A página Organization access (Acesso à organização) é aberta. Aqui você pode desativar o acesso
confiável para o S3 Storage Lens.

Registro de administradores delegados para o S3 Storage Lens

Depois de habilitar o acesso confiável, você pode registrar o acesso de administrador delegado às contas
em sua organização. Quando uma conta é registrada como administrador delegado, a conta recebe
autorização para acessar todas as APIs do AWS Organizations somente leitura. Isso fornece visibilidade
aos membros e estruturas da sua organização para que eles possam criar painéis do S3 Storage Lens em
seu nome.

Para registrar administradores delegados para o S3 Storage Lens

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Versão da API 2006-03-01


929
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

2. No painel de navegação, escolha Storage Lens, Organization settings (Configurações da


organização).
3. Na seção delegated access (acesso delegado), em Accounts (Contas), escolha Add account
(Adicionar conta).

A página de Delegated admin access (Acesso admin delegado) é aberta. Aqui você pode adicionar
um ID de conta da AWS como administrador delegado para criar painéis de nível de organização para
todas as contas e armazenamento em sua organização.

Cancelamento do registro de administradores delegados para o S3 Storage Lens

Você pode cancelar o registro de acesso de administrador delegado a contas em sua organização.
Quando uma conta é cancelada de registro como administrador delegado, a conta perde a autorização
para acessar todas as APIs somente leitura do AWS Organizations que fornecem visibilidade aos membros
e estruturas de sua organização.
Note

• Cancelando o registro de um administrador delegado também desativa automaticamente todos


os painéis no nível da organização criados pelo administrador delegado.
• As contas de administrador delegado ainda podem ver os dados históricos desses painéis
desativados de acordo com seus respectivos períodos de retenção.

Para cancelar o registro de contas para acesso de administrador delegado

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Storage Lens, Organization settings (Configurações da
organização).
3. Na seção Accounts with delegated access(Contas com acesso delegado), escolha o ID da conta que
deseja cancelar o registro e escolha Remove (Remover).

Exemplos de Amazon S3 Storage Lens usando a AWS CLI


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console
de Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST. Para obter mais informações,
consulte Avaliação da atividade de armazenamento e uso com o Amazon S3 Storage Lens.

Os exemplos a seguir mostram como você pode usar o S3 Storage Lens com a interface da linha de
comando da AWS.

Tópicos
• Arquivos auxiliares para usar o Amazon S3 Storage Lens (p. 930)
• Usando configurações do Amazon S3 Storage Lens usando a AWS CLI (p. 932)
• Usando o Amazon S3 Storage Lens com o AWS Organizations usando a AWS CLI (p. 934)

Arquivos auxiliares para usar o Amazon S3 Storage Lens


Use os seguintes arquivos json para entradas de chave para seus exemplos.

Versão da API 2006-03-01


930
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

JSON de configuração de exemplo do S3 Storage Lens

Example config.json

Contém detalhes de uma configuração de métricas e recomendações avançadas no nível das


organizações do S3 Storage Lens.
Note

Aplicam-se cobranças adicionais para Métricas e recomendações avançadas. Para obter mais
informações, consulte Métricas e recomendações avançadas.

{
"Id": "SampleS3StorageLensConfiguration", //Use this property to identify S3 Storage
Lens configuration.
"AwsOrg": { //Use this property when enabling S3 Storage Lens for AWS Organizations
"Arn": "arn:aws:organizations::222222222222:organization/o-abcdefgh"
},
"AccountLevel": {
"ActivityMetrics": {
"IsEnabled":true
},
"BucketLevel": {
"ActivityMetrics": {
"IsEnabled":true //Mark this as false if you only want Free Metrics metrics.
},
"PrefixLevel":{
"StorageMetrics":{
"IsEnabled":true, //Mark this as false if you only want Free Metrics
metrics.
"SelectionCriteria":{
"MaxDepth":5,
"MinStorageBytesPercentage":1.25,
"Delimiter":"/"
}
}
}
}
},
"Exclude": { //Replace with include if you prefer to include regions.
"Regions": [
"eu-west-1"
],
"Buckets": [ //This attribute is not supported for Organizations-level
configurations.
"arn:aws:s3:::source_bucket1"
]
},
"IsEnabled": true, //Whether the configuration is enabled
"DataExport": { //Details about the metrics export
"S3BucketDestination": {
"OutputSchemaVersion": "V_1",
"Format": "CSV", //You can add "Parquet" if you prefer.
"AccountId": "ExampleAWSAccountNo8",
"Arn": "arn:aws:s3:::destination-bucket-name", // The destination bucket for
your metrics export must be in the same Region as your S3 Storage Lens configuration.
"Prefix": "prefix-for-your-export-destination",
"Encryption": {
"SSES3": {}
}
}
}
}

Versão da API 2006-03-01


931
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

Etiquetas de configuração de exemplo do S3 Storage Lens

Example tags.json

[
{
"Key": "key1",
"Value": "value1"
},
{
"Key": "key2",
"Value": "value2"
}
]

Permissões do IAM de configuração do S3 Storage Lens

Example permissions.json

Permissões do IAM S3 Storage Lens

{
"Version": "2012-10-17", "Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*",
"sts:AssumeRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action":
[
"s3:GetStorageLensConfiguration*",
"s3:DeleteStorageLensConfiguration*",
"s3:PutStorageLensConfiguration*"
],
"Condition": {
"StringEquals": {
"aws:ResourceTag/key1": "value1"
}
},
"Resource": "*"
}
]
}

Usando configurações do Amazon S3 Storage Lens usando a AWS CLI


Você pode usar a AWS CLI para listar, criar, obter e atualizar suas configurações do S3 Storage Lens. Os
exemplos a seguir usam os arquivos json auxiliares para entradas de chave.

Tópicos
• Colocar uma configuração do S3 Storage Lens (p. 933)
• Colocar uma configuração de S3 Storage Lens sem tags (p. 933)
• Obtém uma configuração do S3 Storage Lens (p. 933)
• Lista as configurações do S3 Storage Lens sem próximo token (p. 933)

Versão da API 2006-03-01


932
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

• Lista as configurações do S3 Storage Lens (p. 933)


• Excluir uma configuração do S3 Storage Lens (p. 933)
• Colocar tags em uma configuração do S3 Storage Lens (p. 934)
• Obter tags para uma configuração do S3 Storage Lens (p. 934)
• Excluir tags para uma configuração do S3 Storage Lens (p. 934)

Colocar uma configuração do S3 Storage Lens

Example Coloca uma configuração do S3 Storage Lens

aws s3control put-storage-lens-configuration --account-id=222222222222 --config-id=your-


configuration-id --region=us-east-1 --storage-lens-configuration=file://./config.json --
tags=file://./tags.json

Colocar uma configuração de S3 Storage Lens sem tags

Example Coloca uma configuração do S3 Storage Lens.

aws s3control put-storage-lens-configuration --account-id=222222222222 --config-id=your-


configuration-id --region=us-east-1 --storage-lens-configuration=file://./config.json

Obtém uma configuração do S3 Storage Lens

Example Obter uma configuração do S3 Storage Lens

aws s3control get-storage-lens-configuration --account-id=222222222222 --config-id=your-


configuration-id --region=us-east-1

Lista as configurações do S3 Storage Lens sem próximo token

Example Lista as configurações do S3 Storage Lens sem próximo token

aws s3control list-storage-lens-configurations --account-id=222222222222 --region=us-east-1

Lista as configurações do S3 Storage Lens

Example Lista as configurações do S3 Storage Lens

aws s3control list-storage-lens-configurations --account-id=222222222222 --region=us-east-1


--next-token=abcdefghij1234

Excluir uma configuração do S3 Storage Lens

Example Excluir uma configuração do S3 Storage Lens

aws s3control delete-storage-lens-configuration --account-id=222222222222 --region=us-


east-1 --config-id=your-configuration-id

Versão da API 2006-03-01


933
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

Colocar tags em uma configuração do S3 Storage Lens

Example Colocar tags em uma configuração do S3 Storage Lens

aws s3control put-storage-lens-configuration-tagging --account-id=222222222222 --region=us-


east-1 --config-id=your-configuration-id --tags=file://./tags.json

Obter tags para uma configuração do S3 Storage Lens

Example Obter tags para uma configuração do S3 Storage Lens

aws s3control get-storage-lens-configuration-tagging --account-id=222222222222 --region=us-


east-1 --config-id=your-configuration-id

Excluir tags para uma configuração do S3 Storage Lens

Example Excluir tags para uma configuração do S3 Storage Lens

aws s3control delete-storage-lens-configuration-tagging --account-id=222222222222 --


region=us-east-1 --config-id=your-configuration-id

Usando o Amazon S3 Storage Lens com o AWS Organizations usando a AWS


CLI
Use o Amazon S3 Storage Lens para coletar métricas de armazenamento e dados de uso de todas as
contas que fazem parte da hierarquia do AWS Organizations. Para obter mais informações, consulte
Usando o Amazon S3 Storage Lens com o AWS Organizations.

Tópicos
• Habilitar o acesso confiável das organizações para o S3 Storage Lens (p. 934)
• Desativar o acesso confiável das organizações para o S3 Storage Lens (p. 934)
• Registrar administradores delegados das Organizações para o S3 Storage Lens (p. 935)
• Cancele o registro de administradores delegados das Organizações para o S3 Storage Lens (p. 935)

Habilitar o acesso confiável das organizações para o S3 Storage Lens

Example Habilitar o acesso confiável das organizações para o S3 Storage Lens

aws organizations enable-aws-service-access --service-principal storage-


lens.s3.amazonaws.com

Desativar o acesso confiável das organizações para o S3 Storage Lens

Example Desativar o acesso confiável das organizações para o S3 Storage Lens

aws organizations disable-aws-service-access --service-principal storage-


lens.s3.amazonaws.com

Versão da API 2006-03-01


934
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

Registrar administradores delegados das Organizações para o S3 Storage Lens

Example Registrar administradores delegados das Organizações para o S3 Storage Lens

aws organizations register-delegated-administrator --service-principal storage-


lens.s3.amazonaws.com —account-id 123456789012

Cancele o registro de administradores delegados das Organizações para o S3 Storage Lens

Example Cancele o registro de administradores delegados das Organizações para o S3 Storage


Lens

aws organizations deregister-delegated-administrator --service-principal storage-


lens.s3.amazonaws.com —account-id 123456789012

Exemplos do Amazon S3 Storage Lens usando o SDK para Java


O Amazon S3 Storage Lens agrega suas métricas de uso e atividade e exibe as informações em um painel
interativo no console do Amazon S3 ou por meio de uma exportação de dados de métricas que pode
ser baixada no formato CSV ou Parquet. Você pode usar o painel para visualizar insights e tendências,
sinalizar discrepâncias e fornecer recomendações para otimizar os custos de armazenamento e aplicar as
práticas recomendadas de proteção de dados. É possível usar o S3 Storage Lens por meio do Console
de Gerenciamento da AWS, da AWS CLI, dos AWS SDKs ou da API REST. Para obter mais informações,
consulte Avaliação da atividade de armazenamento e uso com o Amazon S3 Storage Lens.

Os exemplos a seguir mostram como você pode usar o S3 Storage Lens com o AWS SDK para Java.

Usando configurações do Amazon S3 Storage Lens usando o SDK para Java


Você pode usar o SDK para Java para listar, criar, obter e atualizar suas configurações do S3 Storage
Lens. Os exemplos a seguir usam os arquivos json auxiliares para entradas de chave.

Tópicos
• Criar e atualizar uma configuração do S3 Storage Lens (p. 935)
• Excluir uma configuração do S3 Storage Lens (p. 937)
• Obtém uma configuração do S3 Storage Lens (p. 938)
• Lista as configurações do S3 Storage Lens (p. 939)
• Colocar tags em uma configuração do S3 Storage Lens (p. 939)
• Obter tags para uma configuração do S3 Storage Lens (p. 940)
• Excluir tags para uma configuração do S3 Storage Lens (p. 941)
• Atualizar a configuração padrão do S3 Storage Lens com Métricas e recomendações
avançadas (p. 942)

Criar e atualizar uma configuração do S3 Storage Lens

Example Criar e atualizar uma configuração do S3 Storage Lens

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;

Versão da API 2006-03-01


935
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.AccountLevel;
import com.amazonaws.services.s3control.model.ActivityMetrics;
import com.amazonaws.services.s3control.model.BucketLevel;
import com.amazonaws.services.s3control.model.Format;
import com.amazonaws.services.s3control.model.Include;
import com.amazonaws.services.s3control.model.OutputSchemaVersion;
import com.amazonaws.services.s3control.model.PrefixLevel;
import com.amazonaws.services.s3control.model.PrefixLevelStorageMetrics;
import com.amazonaws.services.s3control.model.PutStorageLensConfigurationRequest;
import com.amazonaws.services.s3control.model.S3BucketDestination;
import com.amazonaws.services.s3control.model.SSES3;
import com.amazonaws.services.s3control.model.SelectionCriteria;
import com.amazonaws.services.s3control.model.StorageLensAwsOrg;
import com.amazonaws.services.s3control.model.StorageLensConfiguration;
import com.amazonaws.services.s3control.model.StorageLensDataExport;
import com.amazonaws.services.s3control.model.StorageLensDataExportEncryption;
import com.amazonaws.services.s3control.model.StorageLensTag;

import java.util.Arrays;
import java.util.List;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class CreateAndUpdateDashboard {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";
String exportAccountId = "Destination Account ID";
String exportBucketArn = "arn:aws:s3:::destBucketName"; // The destination bucket
for your metrics export must be in the same Region as your S3 Storage Lens configuration.
String awsOrgARN = "arn:aws:organizations::222222222222:organization/o-abcdefgh";
Format exportFormat = Format.CSV;

try {
SelectionCriteria selectionCriteria = new SelectionCriteria()
.withDelimiter("/")
.withMaxDepth(5)
.withMinStorageBytesPercentage(10.0);
PrefixLevelStorageMetrics prefixStorageMetrics = new
PrefixLevelStorageMetrics()
.withIsEnabled(true)
.withSelectionCriteria(selectionCriteria);
BucketLevel bucketLevel = new BucketLevel()
.withActivityMetrics(new ActivityMetrics().withIsEnabled(true))
.withPrefixLevel(new
PrefixLevel().withStorageMetrics(prefixStorageMetrics));
AccountLevel accountLevel = new AccountLevel()
.withActivityMetrics(new ActivityMetrics().withIsEnabled(true))
.withBucketLevel(bucketLevel);

Include include = new Include()


.withBuckets(Arrays.asList("arn:aws:s3:::bucketName"))
.withRegions(Arrays.asList("us-west-2"));

StorageLensDataExportEncryption exportEncryption = new


StorageLensDataExportEncryption()
.withSSES3(new SSES3());
S3BucketDestination s3BucketDestination = new S3BucketDestination()
.withAccountId(exportAccountId)
.withArn(exportBucketArn)
.withEncryption(exportEncryption)
.withFormat(exportFormat)
.withOutputSchemaVersion(OutputSchemaVersion.V_1)
.withPrefix("Prefix");

Versão da API 2006-03-01


936
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

StorageLensDataExport dataExport = new StorageLensDataExport()


.withS3BucketDestination(s3BucketDestination);

StorageLensAwsOrg awsOrg = new StorageLensAwsOrg()


.withArn(awsOrgARN);

StorageLensConfiguration configuration = new StorageLensConfiguration()


.withId(configurationId)
.withAccountLevel(accountLevel)
.withInclude(include)
.withDataExport(dataExport)
.withAwsOrg(awsOrg)
.withIsEnabled(true);

List<StorageLensTag> tags = Arrays.asList(


new StorageLensTag().withKey("key-1").withValue("value-1"),
new StorageLensTag().withKey("key-2").withValue("value-2")
);

AWSS3Control s3ControlClient = AWSS3ControlClient.builder()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.putStorageLensConfiguration(new
PutStorageLensConfigurationRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
.withStorageLensConfiguration(configuration)
.withTags(tags)
);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Excluir uma configuração do S3 Storage Lens

Example Exclua uma configuração do S3 Storage Lens.

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.DeleteStorageLensConfigurationRequest;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class DeleteDashboard {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";

Versão da API 2006-03-01


937
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.deleteStorageLensConfiguration(new
DeleteStorageLensConfigurationRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Obtém uma configuração do S3 Storage Lens

Example Obter uma configuração do S3 Storage Lens

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.GetStorageLensConfigurationRequest;
import com.amazonaws.services.s3control.model.GetStorageLensConfigurationResult;
import com.amazonaws.services.s3control.model.StorageLensConfiguration;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class GetDashboard {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";

try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

final StorageLensConfiguration configuration =


s3ControlClient.getStorageLensConfiguration(new
GetStorageLensConfigurationRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
).getStorageLensConfiguration();

System.out.println(configuration.toString());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();

Versão da API 2006-03-01


938
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Lista as configurações do S3 Storage Lens

Example Lista as configurações do S3 Storage Lens

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.ListStorageLensConfigurationEntry;
import com.amazonaws.services.s3control.model.ListStorageLensConfigurationsRequest;

import java.util.List;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class ListDashboard {

public static void main(String[] args) {


String sourceAccountId = "Source Account ID";
String nextToken = "nextToken";

try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

final List<ListStorageLensConfigurationEntry> configurations =


s3ControlClient.listStorageLensConfigurations(new
ListStorageLensConfigurationsRequest()
.withAccountId(sourceAccountId)
.withNextToken(nextToken)
).getStorageLensConfigurationList();

System.out.println(configurations.toString());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Colocar tags em uma configuração do S3 Storage Lens

Example Colocar tags em uma configuração do S3 Storage Lens

package aws.example.s3control;

Versão da API 2006-03-01


939
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.PutStorageLensConfigurationTaggingRequest;
import com.amazonaws.services.s3control.model.StorageLensTag;

import java.util.Arrays;
import java.util.List;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class PutDashboardTagging {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";

try {
List<StorageLensTag> tags = Arrays.asList(
new StorageLensTag().withKey("key-1").withValue("value-1"),
new StorageLensTag().withKey("key-2").withValue("value-2")
);

AWSS3Control s3ControlClient = AWSS3ControlClient.builder()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.putStorageLensConfigurationTagging(new
PutStorageLensConfigurationTaggingRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
.withTags(tags)
);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Obter tags para uma configuração do S3 Storage Lens

Example Obter tags para uma configuração do S3 Storage Lens

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.DeleteStorageLensConfigurationRequest;
import com.amazonaws.services.s3control.model.GetStorageLensConfigurationTaggingRequest;
import com.amazonaws.services.s3control.model.StorageLensTag;

Versão da API 2006-03-01


940
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

import java.util.List;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class GetDashboardTagging {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";
try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

final List<StorageLensTag> s3Tags = s3ControlClient


.getStorageLensConfigurationTagging(new
GetStorageLensConfigurationTaggingRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
).getTags();

System.out.println(s3Tags.toString());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Excluir tags para uma configuração do S3 Storage Lens

Example Excluir tags para uma configuração do S3 Storage Lens

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.DeleteStorageLensConfigurationTaggingRequest;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class DeleteDashboardTagging {

public static void main(String[] args) {


String configurationId = "ConfigurationId";
String sourceAccountId = "Source Account ID";
try {
AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.deleteStorageLensConfigurationTagging(new
DeleteStorageLensConfigurationTaggingRequest()
.withAccountId(sourceAccountId)

Versão da API 2006-03-01


941
Amazon Simple Storage Service Guia do usuário
Exemplos e demonstração

.withConfigId(configurationId)
);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Atualizar a configuração padrão do S3 Storage Lens com Métricas e recomendações avançadas

Example Atualizar a configuração padrão do S3 Storage Lens com Métricas e recomendações


avançadas

package aws.example.s3control;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;
import com.amazonaws.services.s3control.model.AccountLevel;
import com.amazonaws.services.s3control.model.ActivityMetrics;
import com.amazonaws.services.s3control.model.BucketLevel;
import com.amazonaws.services.s3control.model.Format;
import com.amazonaws.services.s3control.model.Include;
import com.amazonaws.services.s3control.model.OutputSchemaVersion;
import com.amazonaws.services.s3control.model.PrefixLevel;
import com.amazonaws.services.s3control.model.PrefixLevelStorageMetrics;
import com.amazonaws.services.s3control.model.PutStorageLensConfigurationRequest;
import com.amazonaws.services.s3control.model.S3BucketDestination;
import com.amazonaws.services.s3control.model.SSES3;
import com.amazonaws.services.s3control.model.SelectionCriteria;
import com.amazonaws.services.s3control.model.StorageLensAwsOrg;
import com.amazonaws.services.s3control.model.StorageLensConfiguration;
import com.amazonaws.services.s3control.model.StorageLensDataExport;
import com.amazonaws.services.s3control.model.StorageLensDataExportEncryption;
import com.amazonaws.services.s3control.model.StorageLensTag;

import java.util.Arrays;
import java.util.List;

import static com.amazonaws.regions.Regions.US_WEST_2;

public class UpdateDefaultConfigWithPaidFeatures {

public static void main(String[] args) {


String configurationId = "default-account-dashboard"; // This configuration ID
cannot be modified
String sourceAccountId = "Source Account ID";

try {
SelectionCriteria selectionCriteria = new SelectionCriteria()
.withDelimiter("/")
.withMaxDepth(5)
.withMinStorageBytesPercentage(10.0);
PrefixLevelStorageMetrics prefixStorageMetrics = new
PrefixLevelStorageMetrics()
.withIsEnabled(true)

Versão da API 2006-03-01


942
Amazon Simple Storage Service Guia do usuário
Rastreamento de solicitações usando X-Ray

.withSelectionCriteria(selectionCriteria);
BucketLevel bucketLevel = new BucketLevel()
.withActivityMetrics(new ActivityMetrics().withIsEnabled(true))
.withPrefixLevel(new
PrefixLevel().withStorageMetrics(prefixStorageMetrics));
AccountLevel accountLevel = new AccountLevel()
.withActivityMetrics(new ActivityMetrics().withIsEnabled(true))
.withBucketLevel(bucketLevel);

StorageLensConfiguration configuration = new StorageLensConfiguration()


.withId(configurationId)
.withAccountLevel(accountLevel)
.withIsEnabled(true);

AWSS3Control s3ControlClient = AWSS3ControlClient.builder()


.withCredentials(new ProfileCredentialsProvider())
.withRegion(US_WEST_2)
.build();

s3ControlClient.putStorageLensConfiguration(new
PutStorageLensConfigurationRequest()
.withAccountId(sourceAccountId)
.withConfigId(configurationId)
.withStorageLensConfiguration(configuration)
);

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it and returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Note

Aplicam-se cobranças adicionais para Métricas e recomendações avançadas. Para obter mais
informações, consulte Métricas e recomendações avançadas.

Rastreamento de solicitações do Amazon S3


usando o AWS X-Ray
O AWS X-Ray coleta dados sobre solicitações que sua aplicação atende. Em seguida, você pode
visualizar e filtrar os dados para identificar e solucionar problemas de desempenho e erros em suas
aplicações distribuídas e arquitetura de microsserviços. Para qualquer solicitação rastreada para a
aplicação, é possível ver informações detalhadas sobre a solicitação, a resposta e as chamadas que a
aplicação faz para recursos, microsserviços, bancos de dados e APIs da web HTTP.

Para obter mais informações, consulte O que é o AWS X-Ray? no Guia do desenvolvedor do AWS X-Ray.

Tópicos
• Como o X-ray funciona com o Amazon S3 (p. 944)
• Regiões disponíveis (p. 944)

Versão da API 2006-03-01


943
Amazon Simple Storage Service Guia do usuário
Como o X-ray funciona com o Amazon S3

Como o X-ray funciona com o Amazon S3


O AWS X-Ray oferece suporte à propagação de contexto de rastreamento para o Amazon S3, para que
você possa visualizar solicitações completas à medida que elas percorrem toda a aplicação. O X-Ray
agrega os dados gerados pelos serviços individuais, como o Amazon S3, o AWS Lambda e o Amazon
EC2, e os muitos recursos que compõem sua aplicação. Ele fornece uma visão geral de como sua
aplicação está funcionando.

O Amazon S3 integra-se ao X-Ray para propagar o contexto de rastreamento e fornecer uma cadeia
de solicitações com nós upstream e downstream. Se um serviço upstream incluir um cabeçalho de
rastreamento formatado válido com sua solicitação do S3, o Amazon S3 passará o cabeçalho de
rastreamento ao entregar notificações de eventos para serviços downstream, como Lambda, Amazon SQS
e Amazon SNS. Se você tiver todos esses serviços ativamente integrados ao X-Ray, eles serão vinculados
em uma cadeia de solicitações para fornecer os detalhes completos de suas solicitações do Amazon S3.

Para enviar cabeçalhos de rastreamento de X-Ray por meio do Amazon S3, você deve incluir um Id de
rastreamento de X-Amzn formatado em suas solicitações. Você também pode instrumentar o cliente do
Amazon S3 usando os SDKs do AWS X-Ray. Para obter uma lista dos SDKs compatíveis, consulte a
documentação do AWS X-Ray.

Mapas de serviço
Os mapas de serviço do X-Ray mostram as relações entre o Amazon S3 e outros serviços e recursos da
AWS em sua aplicação em tempo quase real. Para ver as solicitações completas usando os mapas de
serviço X-Ray, você pode usar o console X-Ray para visualizar um mapa das conexões entre o Amazon
S3 e outros serviços que sua aplicação usa. Você pode detectar facilmente onde estão ocorrendo altas
latências, visualizar a distribuição de nós para esses serviços e, em seguida, detalhar os serviços e
caminhos específicos que afetam o desempenho da aplicação.

Análise de X-Ray
Você também pode usar o console Analytics (Análises) do X-Ray para analisar rastreamentos, visualizar
métricas como latência e taxas de falha e gerar Insights para ajudar a identificar e solucionar problemas.
Este console também mostra métricas como latência média e taxas de falha. Para obter mais informações,
consulte Console do AWS X-Ray no Guia do desenvolvedor do AWS X-Ray.

Regiões disponíveis
O suporte do AWS X-Ray para Amazon S3 está disponível em todas as regiões do AWS X-Ray. Para obter
mais informações, consulte Amazon S3 e AWS X-Ray no Guia do desenvolvedor do AWS X-Ray.

Versão da API 2006-03-01


944
Amazon Simple Storage Service Guia do usuário
Endpoints de site

Hospedagem de um site estático


usando o Amazon S3
Você pode usar o Amazon S3 para hospedar um site estático. Em um site estático, as páginas da Web
individuais incluem conteúdo estático. Elas também podem conter scripts do lado do cliente.

Em contrapartida, um site dinâmico usa processamento do servidor, incluindo scripts de servidor como
PHP, JSP ou ASP.NET. O Amazon S3 não oferece suporte a scripts no lado do servidor, mas a AWS tem
outros recursos para hospedar sites dinâmicos. Para saber mais sobre a hospedagem de sites na AWS,
consulte Hospedagem da Web.
Note
É possível usar o console do AWS Amplify para hospedar um aplicativo da web de página única.
O console do AWS Amplify oferece suporte a aplicativos de página única criados com estruturas
de trabalho de aplicativos de página única (por exemplo, React JS, Vue JS, Angular JS e Nuxt)
e geradores de sites estáticos (por exemplo, Gatsby JS, React-static, Jekyll e Hugo). Para obter
mais informações, consulte Conceitos básicos no Guia do usuário do console do AWS Amplify.

Para obter mais informações sobre como hospedar um site estático no Amazon S3, incluindo instruções e
demonstrações passo a passo, consulte os seguintes tópicos:

Tópicos
• Endpoints de site (p. 945)
• Habilitar a hospedagem de sites (p. 947)
• Configurar um documento de índice (p. 951)
• Configurar um documento de erro personalizado (p. 953)
• Definir permissões para acesso ao site (p. 956)
• (Opcional) Registrar em log o tráfego da web (p. 959)
• (Opcional) Configurar um redirecionamento de uma página da Web (p. 959)
• Demonstrações: hospedar sites no Amazon S3 (p. 967)

Endpoints de site
Quando você configura seu bucket como um site estático, o site fica disponível no endpoint de site
específico da região da AWS do bucket. Os endpoints de site são diferentes dos endpoints para onde você
envia solicitações de API REST. Para obter mais informações sobre as diferenças entre os endpoints,
consulte Principais diferenças entre um endpoint de site e um endpoint de API REST (p. 947).

Dependendo da Região, os endpoints de site do Amazon S3 seguem um destes dois formatos.

• Região s3-website dash (-) ‐ http://bucket-name.s3-website-Region.amazonaws.com


• s3-website ponto (.) Região ‐ http://bucket-name.s3-website.Region.amazonaws.com

Esses URLs retornam o documento de indexação padrão configurado para o site. Para obter uma lista
completa dos endpoints do site do Amazon S3, consulte Endpoints de site do Amazon S3.

Para que seus clientes acessem o conteúdo no endpoint de site, é necessário fazer com que seu conteúdo
seja publicamente legível. Para fazer isso, edite as configurações de bloqueio de acesso público do S3 do
bucket. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon

Versão da API 2006-03-01


945
Amazon Simple Storage Service Guia do usuário
Exemplos de endpoint de site

S3 (p. 469). Depois, use uma política de bucket ou uma lista de controle de acesso (ACL) em um objeto
para conceder as permissões necessárias. Para obter mais informações, consulte Definir permissões para
acesso ao site (p. 956).
Important

Os endpoints de site do Amazon S3 não são compatíveis com HTTPS. Para obter informações
sobre o uso de HTTPS com um bucket do Amazon S3, consulte o seguinte:

• Como uso o CloudFront para atender a solicitações HTTPS para meu bucket do Amazon S3?
• Exigir HTTPS para comunicação entre visualizadores e CloudFront

Os buckets de pagamento pelo solicitante não permitem acesso pelo endpoint do site.
Qualquer solicitação para tal bucket recebe uma resposta 403 Acesso negado. Para obter mais
informações, consulte Configuração de buckets de Pagamento pelo solicitante para transferências
de armazenamento e uso (p. 56).

Tópicos
• Exemplos de endpoint de site (p. 946)
• Adicionar um registro DNS CNAME (p. 946)
• Usar um domínio personalizado com o Route 53 (p. 947)
• Principais diferenças entre um endpoint de site e um endpoint de API REST (p. 947)

Exemplos de endpoint de site


Os exemplos a seguir mostram como você pode acessar um bucket do Amazon S3 configurado como um
site estático.

Example - solicitação de um objeto no nível raiz


Para solicitar um objeto específico que é armazenado no nível raiz do bucket, use a seguinte estrutura de
URL.

http://bucket-name.s3-website.Region.amazonaws.com/object-name

Por exemplo, o URL a seguir solicita o objeto photo.jpg que está armazenado no nível raiz do bucket.

http://example-bucket.s3-website.us-west-2.amazonaws.com/photo.jpg

Example - solicitação de um objeto em um prefixo


Para solicitar um objeto armazenado em uma pasta em seu bucket, use a seguinte estrutura de URL.

http://bucket-name.s3-website.Region.amazonaws.com/folder-name/object-name

O URL a seguir solicita o objeto docs/doc1.html em seu bucket.

http://example-bucket.s3-website.us-west-2.amazonaws.com/docs/doc1.html

Adicionar um registro DNS CNAME


Se você tiver um domínio registrado, poderá adicionar uma entrada DNS CNAME para apontar para o
endpoint de site do Amazon S3. Por exemplo, se você registrou o domínio www.example-bucket.com,

Versão da API 2006-03-01


946
Amazon Simple Storage Service Guia do usuário
Usar um domínio personalizado com o Route 53

pode criar um bucket www.example-bucket.com e adicionar um registro DNS CNAME que aponte
para www.example-bucket.com.s3-website.Region.amazonaws.com. Todas as solicitações
a http://www.example-bucket.com são redirecionadas para www.example-bucket.com.s3-
website.Region.amazonaws.com.

Para obter mais informações, consulte Personalizar URLs do Amazon S3 com CNAMEs (p. 1028).

Usar um domínio personalizado com o Route 53


Em vez de acessar o site usando um endpoint de site do Amazon S3, você pode usar seu próprio domínio
registrado com Amazon Route 53 para veicular conteúdo, por exemplo, example.com. Você pode usar o
Amazon S3 com o Route 53 para hospedar um site no domínio raiz. Por exemplo, se você tiver o domínio
raiz example.com e quiser hospedar seu site no Amazon S3, os visitantes do site poderão acessá-lo no
navegador digitando http://www.example.com ou http://example.com.

Para ver uma demonstração de exemplo, consulte Configurar um site estático usando um domínio
personalizado registrado no Route 53 (p. 973).

Principais diferenças entre um endpoint de site e um


endpoint de API REST
Um endpoint de site do Amazon S3 é otimizado para acesso de um navegador da Web. A tabela a seguir
resume as principais diferenças entre um endpoint de API REST e um endpoint de site.

Principal diferença Endpoint de API REST Endpoint de site

Controle de acesso Oferece suporte a conteúdo público e Oferece suporte apenas a conteúdo
privado publicamente legível

Manuseio de Retorna uma resposta de erro Retorna um documento HTML


mensagens de erro formatada em XML

Suporte a Não aplicável Oferece suporte a redirecionamentos no


redirecionamento nível do objeto e do bucket

Solicitações com Oferece suporte a todas as operações Oferece suporte apenas a solicitações
suporte de bucket e de objeto GET e HEAD em objetos

Responde a Retorna uma lista de chaves de objeto Retorna o documento de índice


solicitações GET no bucket especificado na configuração de site
e HEAD na raiz de
um bucket

Suporte a Secure Oferece suporte a conexões SSL Não oferece suporte a conexões SSL
Sockets Layer
(SSL)

Para obter uma lista completa dos endpoints do Amazon S3, consulte Endpoints e cotas do Amazon S3 na
Referência geral da AWS.

Habilitar a hospedagem de sites


Ao configurar um bucket como um site estático, você deve habilitar a hospedagem de sites estáticos,
configurar um documento de índice e definir permissões.

Versão da API 2006-03-01


947
Amazon Simple Storage Service Guia do usuário
Habilitar a hospedagem de sites

Você também pode ativar a hospedagem de sites estáticos usando a API REST, os AWS SDKs, a AWS
CLI ou o AWS CloudFormation.

Para configurar seu site com um domínio personalizado, consulte Configurar um site estático usando um
domínio personalizado registrado no Route 53 (p. 973).

Uso do console do S3
Como habilitar a hospedagem de sites estáticos

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar a hospedagem de site
estático.
3. Escolha Propriedades.
4. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).
5. Escolha Use this bucket to host a website (Usar este bucket para hospedar um site).
6. Em Static website hosting (Hospedagem estática de sites), escolha Enable (Ativar).
7. Em Index Document (Documento de índice), insira o nome do arquivo do documento de índice, que
geralmente é index.html.

O nome do documento de índice diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de índice HTML do qual você planeja fazer upload
para o bucket do S3. Quando você configura um bucket para hospedagem de site, deve especificar
um documento de índice. O Amazon S3 retorna esse documento de índice quando as solicitações são
feitas para o domínio raiz ou alguma subpasta. Para obter mais informações, consulte Configurar um
documento de índice (p. 951).
8. Para fornecer seu próprio documento de erros personalizado para erros da classe 4XX, em Error
document (Documento de erros), insira o nome de arquivo do documento de erros personalizado.

O nome do documento de erro diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de erro HTML do qual você planeja fazer upload para
o bucket do S3. Se você não especificar um documento de erro personalizado e ocorrer um erro, o
Amazon S3 retornará um documento de erro HTML padrão. Para obter mais informações, consulte
Configurar um documento de erro personalizado (p. 953).
9. (Opcional) Se você especificar regras avançadas de redirecionamento em Redirection rules (Regras
de redirecionamento), use XML para descrever as regras.

Por exemplo, você pode encaminhar solicitações condicionalmente de acordo com nomes de chave
de objeto ou prefixos específicos na solicitação. Para obter mais informações, consulte Configurar
redirecionamentos condicionais avançados (p. 962).
10. Selecione Save changes.

O Amazon S3 permite a hospedagem estática de sites para seu bucket. Na parte inferior da página,
em Static website hosting (Hospedagem estática de sites), você verá o endpoint do site do seu bucket.
11. Em Static website hosting (Hospedagem de sites estáticos), anote o Endpoint.

O Endpoint é o endpoint do site do Amazon S3 para o bucket. Depois de concluir a configuração do


bucket como um site estático, é possível usar esse endpoint para testar o site.

Uso dos REST API


Para obter mais informações sobre o envio de solicitações REST diretamente para habilitar a hospedagem
estática de sites, consulte as seções a seguir na Referência da API do Amazon Simple Storage Service:

Versão da API 2006-03-01


948
Amazon Simple Storage Service Guia do usuário
Habilitar a hospedagem de sites

• PUT em site de bucket


• GET em site de bucket
• Site de DELETE Bucket

Uso dos AWS SDKs


Para hospedar um site estático no Amazon S3, você configura um bucket do Amazon S3 para
hospedagem de sites e faz upload do conteúdo do seu site no bucket. Você também pode usar os AWS
SDKs para criar, atualizar e excluir a configuração do site de forma programática. Os SDKs fornecem
classes de wrapper na API REST do Amazon S3. Se seu aplicativo exigir, você pode enviar solicitações de
API REST diretamente do seu aplicativo.

.NET

O exemplo a seguir mostra como usar o AWS SDK para .NET para gerenciar a configuração de site
para um bucket. Para adicionar uma configuração de site a um bucket, forneça um nome de bucket e
uma configuração de site. A configuração de site deve incluir um documento de índice e pode conter
um documento de erro opcional. Esses documentos devem ser armazenados no bucket. Para obter
mais informações, consulte PUT Bucket website. Para obter mais informações sobre o recurso de site
do Amazon S3, consulte Hospedagem de um site estático usando o Amazon S3 (p. 945).

O exemplo de código C# a seguir adiciona uma configuração de site ao bucket especificado. A


configuração especifica o documento de índice e os nomes de documento de erros. Para obter
instruções sobre como criar e testar um exemplo funcional, consulte Executar os exemplos de código
do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class WebsiteConfigTest
{
private const string bucketName = "*** bucket name ***";
private const string indexDocumentSuffix = "*** index object key ***"; // For
example, index.html.
private const string errorDocument = "*** error object key ***"; // For
example, error.html.
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;
public static void Main()
{
client = new AmazonS3Client(bucketRegion);
AddWebsiteConfigurationAsync(bucketName, indexDocumentSuffix,
errorDocument).Wait();
}

static async Task AddWebsiteConfigurationAsync(string bucketName,


string indexDocumentSuffix,
string errorDocument)
{
try
{
// 1. Put the website configuration.
PutBucketWebsiteRequest putRequest = new PutBucketWebsiteRequest()
{
BucketName = bucketName,

Versão da API 2006-03-01


949
Amazon Simple Storage Service Guia do usuário
Habilitar a hospedagem de sites

WebsiteConfiguration = new WebsiteConfiguration()


{
IndexDocumentSuffix = indexDocumentSuffix,
ErrorDocument = errorDocument
}
};
PutBucketWebsiteResponse response = await
client.PutBucketWebsiteAsync(putRequest);

// 2. Get the website configuration.


GetBucketWebsiteRequest getRequest = new GetBucketWebsiteRequest()
{
BucketName = bucketName
};
GetBucketWebsiteResponse getResponse = await
client.GetBucketWebsiteAsync(getRequest);
Console.WriteLine("Index document: {0}",
getResponse.WebsiteConfiguration.IndexDocumentSuffix);
Console.WriteLine("Error document: {0}",
getResponse.WebsiteConfiguration.ErrorDocument);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}
}
}

PHP

O exemplo de PHP a seguir adiciona uma configuração de site ao bucket especificado. O método
create_website_config fornece explicitamente os nomes de documentos de índice e de
documentos de erros. O exemplo também recupera a configuração de site e imprime a resposta. Para
obter mais informações sobre o recurso de site do Amazon S3, consulte Hospedagem de um site
estático usando o Amazon S3 (p. 945).

Para obter instruções sobre criar e testar um exemplo funcional, consulte Usar o AWS SDK para PHP
e executar exemplos do PHP (p. 1044).

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([


'version' => 'latest',
'region' => 'us-east-1'
]);

// Add the website configuration.


$s3->putBucketWebsite([
'Bucket' => $bucket,
'WebsiteConfiguration' => [
'IndexDocument' => ['Suffix' => 'index.html'],
'ErrorDocument' => ['Key' => 'error.html']

Versão da API 2006-03-01


950
Amazon Simple Storage Service Guia do usuário
Configurar um documento de índice

]
]);

// Retrieve the website configuration.


$result = $s3->getBucketWebsite([
'Bucket' => $bucket
]);
echo $result->getPath('IndexDocument/Suffix');

// Delete the website configuration.


$s3->deleteBucketWebsite([
'Bucket' => $bucket
]);

Usar a CLI da AWS


Para obter mais informações sobre como usar a AWS CLI para configurar um bucket do S3 como um site
estático, consulte o site na Referência de comando da AWS CLI.

Depois, é necessário configurar o documento de índice e definir permissões. Para obter informações,
consulte Configurar um documento de índice (p. 951) e Definir permissões para acesso ao site (p. 956).

Também é possível configurar um documento de erro (p. 953), o registro em log do tráfego da
web (p. 959) ou um redirecionamento (p. 959).

Configurar um documento de índice


Ao habilitar a hospedagem de sites, você também deve configurar e fazer upload de um documento de
índice. Um documento de índice é uma página da Web que o Amazon S3 retorna quando uma solicitação
é feita para a raiz de um site ou para qualquer subpasta. Por exemplo, se um usuário insere http://
www.example.com no navegador, ele não está solicitando nenhuma página específica. Nesse caso, o
Amazon S3 exibe o documento de índice, que às vezes é referido como a página padrão.

Quando você habilita a hospedagem de sites estáticos para seu bucket, insere o nome do documento de
índice (por exemplo, index.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket,
faça upload de um arquivo HTML com o nome do documento de índice para o bucket.

A barra no final do URL no nível raiz é opcional. Por exemplo, se você configurar seu site com
index.html como o documento de índice, qualquer um dos URLs a seguir retornará index.html.

http://example-bucket.s3-website.Region.amazonaws.com/
http://example-bucket.s3-website.Region.amazonaws.com

Para obter mais informações sobre endpoints de site do Amazon S3, consulte Endpoints de site (p. 945).

Pastas e documentos de índice


No Amazon S3, um bucket é um contêiner de objetos simples. Ele não fornece nenhuma organização
hierárquica, já que o sistema de arquivos em seu computador faz isso. No entanto, você pode criar uma
hierarquia lógica usando nomes de chaves de objetos que envolvam uma estrutura de pastas.

Por exemplo, considere um bucket com três objetos e que tenha os nomes de chaves a seguir. Embora
esses objetos sejam armazenados sem uma organização hierárquica física, você pode pressupor a
seguinte estrutura lógica de pastas com base nos nomes das chaves.

• sample1.jpg: o objeto está na raiz do bucket.


• photos/2006/Jan/sample2.jpg: o objeto está na subpasta photos/2006/Jan.

Versão da API 2006-03-01


951
Amazon Simple Storage Service Guia do usuário
Configurar um documento de índice

• photos/2006/Feb/sample3.jpg: o objeto está na subpasta photos/2006/Feb.

No console do Amazon S3, você também pode criar uma pasta em um bucket. Por exemplo, você pode
criar uma pasta chamada photos. Você pode fazer upload de objetos no bucket ou na pasta photos no
bucket. Se você adicionar o objeto sample.jpg ao bucket, o nome da chave será sample.jpg. Se você
fizer upload do objeto na pasta photos, o nome da chave de objeto será photos/sample.jpg.

Se você criar um estrutura de pastas em seu bucket, deverá ter um documento de índice em cada nível.
Em cada pasta, o documento de índice deve ter o mesmo nome, por exemplo, index.html. Quando um
usuário especificar um URL que se assemelhe a uma consulta de pasta, a presença ou a ausência de uma
barra no final determinará o comportamento do site. Por exemplo, o URL a seguir, com uma barra no final,
retorna o documento de índice photos/index.html.

http://bucket-name.s3-website.Region.amazonaws.com/photos/

Contudo, se você excluir a barra no final do URL anterior, o Amazon S3 procurará primeiro um objeto
photos no bucket. Se o objeto photos não for encontrado, ele procurará um documento de índice,
photos/index.html. Se esse documento for encontrado, o Amazon S3 retornará uma mensagem 302
Found e apontará para a chave photos/. Para solicitações subsequentes a photos/, o Amazon S3
retorna photos/index.html. Se o documento de índice não for encontrado, o Amazon S3 retornará um
erro.

Configurar um documento de índice


Para configurar um documento de índice usando o console do S3, use o procedimento a seguir. Você
também pode configurar um documento de índice usando a API REST, os AWS SDKs, a CLI da AWS ou o
AWS CloudFormation.

Ao habilitar a hospedagem de sites estáticos para o bucket, insira o nome do documento de índice (por
exemplo, index.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de índice para o bucket.

Como configurar o documento de índice

1. Criar um arquivo index.html

Se você não tiver um arquivo index.html, poderá usar o HTML a seguir para criar um:

<html xmlns="http://www.w3.org/1999/xhtml" >


<head>
<title>My Website Home Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>Now hosted on Amazon S3!</p>
</body>
</html>

2. Salve o arquivo de índice localmente.

O nome do documento de índice deve corresponder exatamente ao nome do documento de índice


que você inseriu na caixa de diálogo Hospedagem de site estático. O nome do documento de
índice diferencia maiúsculas de minúsculas. Por exemplo, se você inserir index.html no nome
do Documentos de índice na caixa de diálogo Hospedagem de site estático, o nome do arquivo do
documento de índice também deverá ser index.html e não Index.html.
3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.

Versão da API 2006-03-01


952
Amazon Simple Storage Service Guia do usuário
Configurar um documento de erro personalizado

5. Habilite a hospedagem de sites estáticos para seu bucket e insira o nome exato do documento de
índice (por exemplo, index.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de índice para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de índice na listagem de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).
7. (Opcional) Faça upload do conteúdo de outro site para o seu bucket.

Depois, é necessário definir permissões para acesso ao site. Para obter mais informações, consulte Definir
permissões para acesso ao site (p. 956).

Também é possível configurar um documento de erro (p. 953), o registro em log do tráfego da
web (p. 959) ou um redirecionamento (p. 959).

Configurar um documento de erro personalizado


Depois de configurar o bucket como um site estático, quando ocorre um erro, o Amazon S3 retorna um
documento de erro HTML. Opcionalmente, você pode configurar seu bucket com um documento de erro
personalizado para que o Amazon S3 retorne esse documento quando ocorrer um erro.
Note

Quando um erro ocorre, alguns navegadores exibem sua própria mensagem, ignorando o
documento de erro que o Amazon S3 retorna. Por exemplo, quando ocorre um erro HTTP 404 Not
Found, o Google Chrome pode ignorar o documento de erro que o Amazon S3 retorna e exibir
seu próprio erro.

Tópicos
• Códigos de resposta HTTP do Amazon S3 (p. 953)
• Configurar um documento de erro personalizado (p. 955)

Códigos de resposta HTTP do Amazon S3


A tabela a seguir lista o subconjunto de códigos de resposta HTTP que o Amazon S3 retorna quando
ocorre um erro.

Código de erro Descrição


HTTP

301 Moved Quando um usuário enviar uma solicitação diretamente a endpoints de site do
Permanently Amazon S3 (http://s3-website.Region.amazonaws.com/), o Amazon
(301 movido S3 retornará uma resposta 301 Moved Permanently e redirecionará essas
permanentemente) solicitações para https://aws.amazon.com/s3/.

302 Found (302 Quando o Amazon S3 recebe uma solicitação para uma chave x,
Encontrado) http://bucket-name.s3-website.Region.amazonaws.com/x, sem uma
barra no final, ele tenta localizar o objeto com o nome de chave x. Se o objeto não

Versão da API 2006-03-01


953
Amazon Simple Storage Service Guia do usuário
Códigos de resposta HTTP do Amazon S3

Código de erro Descrição


HTTP
for encontrado, o Amazon S3 determinará que a solicitação é para a subpasta x e
redirecionará a solicitação adicionando uma barra no final, e retornará 302 Found.

304 Not Modified Os usuários do Amazon S3 usam cabeçalhos de solicitação If-Modified-


(304 Não Since, If-Unmodified-Since, If-Match e/ou If-None-Match para
modificado) determinar se o objeto solicitado é igual ao da cópia em cache mantida pelo
cliente. Se o objeto for o mesmo, o endpoint do site retornará uma resposta 304
Not Modified (304 não modificados).

400 Malformed O endpoint de site responde com 400 Malformed Request (400 Solicitação
Request (400 malformada) quando um usuário tenta acessar um bucket pelo endpoint regional
Solicitação incorreto.
malformada)

403 Forbidden (403 O endpoint de site responde com 403 Forbidden (403 Proibido) quando uma
Proibido) solicitação de usuário se traduz em um objeto que não é publicamente legível.
O proprietário do objeto deve tornar o objeto publicamente legível usando uma
política de bucket ou uma ACL.

404 Not Found (404 O endpoint de site responde com 404 Not Found (404 Não encontrado) pelos
Não encontrado) seguintes motivos:

• O Amazon S3 determina que o URL do site refere-se a uma chave de objeto


que não existe.
• O Amazon S3 pressupõe que a solicitação é para um documento de índice que
não existe.
• Um bucket especificado no URL não existe.
• Um bucket especificado no URL existe, mas não é configurado como um site.

Você pode criar um documento personalizado que é retornado em caso de


404 Not Found (404 Não encontrado). Certifique-se de que o documento
seja carregado no bucket configurado como um site e que a configuração de
hospedagem de sites esteja definida para usar o documento.

Para obter informações sobre como o Amazon S3 interpreta o URL como uma
solicitação de um objeto ou um documento de índice, consulte Configurar um
documento de índice (p. 951).

500 Service Error O endpoint de site responde com 500 Service Error (500 Erro de serviço) quando
(500 Erro de ocorre um erro interno de servidor.
serviço)

503 Service O endpoint de site responde com 503 Service Unavailable quando o Amazon S3
Unavailable (503 determina que você precisa reduzir sua taxa de solicitações.
Serviço não
disponível)

Para cada um desses erros, o Amazon S3 retorna uma mensagem HTML predefinida. Veja a seguir uma
mensagem HTML de exemplo que é retornada para a resposta 403 Forbidden (403 Proibido).

Versão da API 2006-03-01


954
Amazon Simple Storage Service Guia do usuário
Configurar um documento de erro personalizado

Configurar um documento de erro personalizado


Quando configura seu bucket como um site estático, você pode, opcionalmente, fornecer um documento
de erro personalizado que contém uma mensagem de erro fácil de entender e ajuda adicional. O Amazon
S3 retorna seu documento de erro personalizado somente para códigos de erro HTTP classe 4XX.

Para configurar um documento de erro personalizado usando o console do S3, siga as etapas abaixo.
Você também pode configurar um documento de erro usando a API REST, os AWS SDKs, a CLI da AWS
ou o AWS CloudFormation. Para obter mais informações, consulte:

• PutBucketWebsite na Referência da API do Amazon Simple Storage Service


• AWS#S3#Bucket WebsiteConfiguration no Guia do usuário do AWS CloudFormation
• put-bucket-website na Referência de comando da CLI da AWS

Ao habilitar a hospedagem de site estático para o bucket, insira o nome do documento de erro (por
exemplo, 404.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de erros para o bucket.

Para configurar um documento de erros

1. Crie um documento de erro, por exemplo 404.html.


2. Salve o arquivo de documento de erros localmente.

O nome do documento de erros diferencia maiúsculas e minúsculas e deve corresponder exatamente


ao nome que você insere ao habilitar a hospedagem estática do site. Por exemplo, se você inserir
404.html como o nome do Error document (Documento de erro) na caixa de diálogo Static website
hosting (Hospedagem de site estático), o nome de arquivo do documento de erro também deve ser
404.html.
3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.
5. Habilite a hospedagem de site estático para seu bucket e insira o nome exato do documento de
erro (por exemplo, 404.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de erros para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de documento de erros na lista de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Versão da API 2006-03-01


955
Amazon Simple Storage Service Guia do usuário
Definir permissões para acesso ao site

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).

Definir permissões para acesso ao site


Ao configurar um bucket como um site estático, se você desejar que seu site seja público, poderá
conceder acesso público de leitura. Para tornar o bucket publicamente legível, é necessário desabilitar
as configurações de bloqueio de acesso público do bucket e gravar uma política de bucket que conceda
acesso público de leitura. Se o bucket contiver objetos que não são do proprietário do bucket, talvez
também seja necessário adicionar uma lista de controle de acesso (ACL) de objeto que conceda acesso
de leitura a todos.
Note
No endpoint de site, se um usuário solicitar um objeto que não existe, o Amazon S3 retornará
um código de resposta HTTP 404 (Not Found). Se o objeto existir, mas não você não tiver
permissão de leitura nele, o endpoint de site retornará o código de resposta HTTP 403 (Access
Denied). O usuário pode usar o código de resposta para inferir se um objeto específico existe.
Se você não quiser esse comportamento, não ative o suporte de site para seu bucket.

Tópicos
• Etapa 1: Editar configurações de bloqueio de acesso público do S3 (p. 956)
• Etapa 2: Adicionar uma política de bucket (p. 957)

Etapa 1: Editar configurações de bloqueio de acesso


público do S3
Se quiser configurar um bucket existente como um site estático que tenha acesso público, você deverá
editar as configurações de bloqueio de acesso público desse bucket. Você também pode ter que editar
suas configurações de bloqueio de acesso público no nível da conta. O Amazon S3 aplica a combinação
mais restritiva das configurações de bloqueio de acesso público no nível do bucket e no nível da conta.

Por exemplo, se você permitir o acesso público a um bucket, mas bloquear todo o acesso público no nível
da conta, o Amazon S3 continuará a bloquear o acesso público ao bucket. Neste cenário, você precisaria
editar as configurações de bloqueio de acesso público no nível do bucket e no nível da conta. Para obter
mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3 (p. 469).

Por padrão, o Amazon S3 bloqueia o acesso público à sua conta e aos seus buckets. Se quiser usar um
bucket para hospedar um site estático, use estas etapas para editar as configurações de bloqueio de
acesso público.
Warning
Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso
público. Ao desativar as configurações de bloqueio de acesso público para tornar seu bucket
público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o
acesso público aos buckets.

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Escolha o nome do bucket configurado como um site estático.
3. Escolha Permissions (Permissões).
4. Em Block public access (bucket settings) (Bloqueio de acesso público (configurações de bucket)),
escolha Edit (Editar).

Versão da API 2006-03-01


956
Amazon Simple Storage Service Guia do usuário
Etapa 2: Adicionar uma política de bucket

5. Desmarque Block all public access (Bloquear todo acesso público) e escolha Save changes (Salvar
alterações).
Warning

Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do


Amazon S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir
o acesso público. Ao desativar as configurações de bloqueio de acesso público para tornar
seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você
bloqueie todo o acesso público aos buckets.

O Amazon S3 desativa as configurações do Bloqueio de acesso público para seu bucket. Para criar
um site público e estático, você também pode ter que editar as configurações de Bloqueio de acesso
público para sua conta antes de adicionar uma política de bucket. Se as configurações da conta para
bloquear acesso público estiverem ativadas no momento, você verá uma observação em Block public
access (bucket settings) (Bloqueio de acesso público (configurações de bucket)).

Etapa 2: Adicionar uma política de bucket


Para tornar os objetos no bucket publicamente legíveis, você deverá gravar uma política de bucket que
conceda a todos a permissão s3:GetObject.

Depois de editar as configurações do Bloqueio de acesso público do S3, é possível adicionar uma política
de bucket para conceder acesso público de leitura ao bucket. Ao conceder um acesso público de leitura,
qualquer pessoa na Internet pode acessar seu bucket.
Important

A política a seguir é somente um exemplo e concede acesso total aos conteúdos do bucket.
Antes de prosseguir com esta etapa, revise Como posso proteger os arquivos no meu bucket
Versão da API 2006-03-01
957
Amazon Simple Storage Service Guia do usuário
Etapa 2: Adicionar uma política de bucket

do Amazon S3? para garantir que você entende as práticas recomendadas a fim de proteger os
arquivos no bucket do S3 e os riscos envolvidos na concessão de acesso público.

1. Em Buckets, escolha o nome do seu bucket.


2. Escolha Permissions (Permissões).
3. Em Bucket Policy (Política de bucket), escolha Edit (Editar).
4. Para conceder acesso público de leitura ao site, copie a política de bucket a seguir e cole-a no Bucket
policy editor (Editor de política de bucket).

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::Bucket-Name/*"
]
}
]
}

5. Atualize o Resource para o nome do bucket.

Na política de bucket do exemplo anterior, Bucket-Name é um espaço reservado para o nome do


bucket. Para usar essa política de bucket com seu próprio bucket, você deve atualizar esse nome para
corresponder ao nome do seu bucket.
6. Selecione Save changes.

Uma mensagem é exibida indicando que a política de bucket foi adicionada com sucesso.

Se você vir um erro que diz Policy has invalid resource, confirme se o nome do bucket na
política de bucket corresponde ao nome do seu bucket. Para obter informações sobre como adicionar
uma política de bucket, consulte Como adicionar uma política de bucket do S3?

Se você receber uma mensagem de erro e não puder salvar a política do bucket, verifique suas
configurações de acesso público para confirmar que você permite acesso público ao bucket.

Listas de controle de acesso de objetos


É possível usar uma política de bucket para conceder permissão de leitura aos seus objetos. No entanto,
a política de bucket se aplica somente a objetos que sejam do proprietário do bucket. Se o seu bucket
contiver objetos que não sejam do proprietário do bucket, ele deverá usar a lista de controle de acesso
(ACL) do objeto para conceder permissão READ pública nesses objetos.

Para tornar um objeto publicamente legível usando uma ACL, conceda a permissão READ ao grupo
AllUsers, como mostrado no elemento de concessão a seguir. Adicione esse elemento de concessão à
ACL do objeto. Para obter informações sobre o gerenciamento de ACLs, consulte Visão geral da lista de
controle de acesso (ACL) (p. 440).

<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>

Versão da API 2006-03-01


958
Amazon Simple Storage Service Guia do usuário
Registro de tráfego da Web

</Grantee>
<Permission>READ</Permission>
</Grant>

(Opcional) Registrar em log o tráfego da web


Opcionalmente, é possível habilitar o registro em log de acesso ao servidor do Amazon S3 para um bucket
configurado como um site estático. O registro em log de acesso ao servidor fornece registros detalhados
para as solicitações que são feitas ao bucket. Para obter mais informações, consulte Registrar em log as
solicitações com registro em log de acesso ao servidor (p. 833). Se planeja usar o Amazon CloudFront
para acelerar seu site (p. 985), você também pode usar o registro em log do CloudFront. Para obter mais
informações, consulte Configurar e usar logs de acesso no Guia do desenvolvedor do Amazon CloudFront.

Como habilitar o registro em log do acesso ao servidor para o bucket de site estático

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na mesma região onde você criou o bucket configurado como um site estático, crie um bucket para
registro em log, por exemplo logs.example.com.
3. Crie uma pasta para os arquivos de log do registro em log de acesso ao servidor (por exemplo, logs).

Quando você agrupa seus arquivos de dados de log em uma pasta, eles são mais fáceis de localizar.
4. (Opcional) Se você quiser usar o CloudFront para melhorar o desempenho do seu site, crie uma pasta
para os arquivos de log do CloudFront (por exemplo, cdn).
5. Na lista Buckets, escolha o bucket.
6. Escolha Propriedades.
7. Em Server access logging (Registro de acesso ao servidor), selecione Edit (Editar).
8. Escolha Enable (Habilitar).
9. No Target bucket (Bucket de destino), escolha o destino do bucket e da pasta para os logs de acesso
ao servidor:

• Navegue até o local da pasta e do bucket:


1. Escolha Browse S3 (Navegar no S3).
2. Escolha o nome do bucket e, depois, escolha a pasta de logs.
3. Selecione Choose path (Escolher caminho).
• Insira o caminho do bucket do S3, por exemplo, s3://logs.example.com/logs/.
10. Selecione Save changes.

No bucket de log, agora você pode acessar seus logs. O Amazon S3 grava os logs de acesso ao site
no bucket de log a cada duas horas.

(Opcional) Configurar um redirecionamento de uma


página da Web
Se o bucket do Amazon S3 estiver configurado para hospedagem de site, você poderá configurar um
redirecionamento de página da Web. Para configurar um redirecionamento, você tem as opções a seguir.

Tópicos
• Definir um redirecionamento de objeto usando o console do Amazon S3 (p. 960)
• Definir um redirecionamento de objeto usando a API REST (p. 960)

Versão da API 2006-03-01


959
Amazon Simple Storage Service Guia do usuário
Definir um redirecionamento de objeto
usando o console do Amazon S3

• Redirecionar solicitações de um endpoint de site de um bucket para outro host (p. 961)
• Configurar redirecionamentos condicionais avançados (p. 962)

Definir um redirecionamento de objeto usando o


console do Amazon S3
Você pode redirecionar solicitações de um objeto para outro objeto ou URL configurando o local de
redirecionamento do site nos metadados do objeto. Você define o redirecionamento adicionando a
propriedade x-amz-website-redirect-location aos metadados do objeto. Você pode usar o
console do Amazon S3 para definir o Website Redirect Location (Local de redirecionamento de site) nos
metadados do objeto. Se você usar a API do Amazon S3 (p. 960), defina x-amz-website-redirect-
location. A seguir, o site interpreta o objeto como um redirecionamento 301.

Para reorientar uma solicitação para outro objeto, você define o local de redirecionamento como a
chave do objeto de destino. Para redirecionar uma solicitação para um URL externo, defina o local de
redirecionamento como o URL desejado. Para obter mais informações sobre metadados de objeto,
consulte Metadados do objeto definidos pelo sistema (p. 67).

Quando você define um redirecionamento de página, pode manter ou excluir o conteúdo de objeto de
origem. Por exemplo, se você tiver um objeto page1.html em seu bucket, poderá redirecionar todas as
solicitações para essa página para outro objeto, page2.html. Você tem duas opções:

• Mantenha o conteúdo do objeto do page1.html e redirecione solicitações de página.


• Exclua o conteúdo de page1.html e carregue um objeto de byte zero chamado page1.html para
substituir o objeto existente e redirecionar solicitações de páginas.

Para redirecionar solicitações de um objeto

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Buckets, escolha o nome do bucket que você configurou como um site estático (por exemplo,
example.com).
3. Em Objects (Objetos), selecione seu objeto.
4. Escolha Actions (Ações) e escolha Edit metadata (Editar metadados).
5. Escolha Metadata (Metadados).
6. Escolha Add Metadata (Adicionar metadados).
7. Em Type (Tipo), escolha System Defined (Definido pelo sistema).
8. Em Key (Chave), escolha x-amz-website-redirect-location.
9. Em Value (Valor), insira o nome da chave do objeto o qual deseja redirecionar, por exemplo, /
page2.html.

Para outro objeto no mesmo bucket, o prefixo / no valor é obrigatório. Você também pode definir o
valor para um URL externo, por exemplo, http://www.example.com.
10. Escolha Edit metadata (Editar metadados).

Definir um redirecionamento de objeto usando a API


REST
As ações da API do Amazon S3 oferecem suporte ao cabeçalho x-amz-website-redirect-location
na solicitação. O Amazon S3 armazena o valor de cabeçalho nos metadados de objeto como x-amz-
website-redirect-location.

Versão da API 2006-03-01


960
Amazon Simple Storage Service Guia do usuário
Redirecionar solicitações de um endpoint
de site de um bucket para outro host

• Objeto PUT
• Iniciar multipart upload
• Objeto POST
• Objeto PUT - Copiar

Um bucket configurado para hospedagem de sites tem o endpoint de site e o endpoint REST. Uma
solicitação para uma página que é configurada como redirecionamento 301 tem os seguintes resultados
possíveis, dependendo do endpoint da solicitação:

• Endpoint de site específico da região: o Amazon S3 redireciona a solicitação da página de acordo com o
valor da propriedade x-amz-website-redirect-location.
• Endpoint REST: o Amazon S3 não redireciona a solicitação da página. Ele retorna o objeto solicitado.

Para obter mais informações sobre os endpoints, consulte Principais diferenças entre um endpoint de site
e um endpoint de API REST (p. 947).

Quando você define um redirecionamento de página, pode manter ou excluir o conteúdo de objeto. Por
exemplo, suponha que você tenha um objeto page1.html em seu bucket.

• Para manter o conteúdo de page1.html e apenas redirecionar as solicitações de página, envie uma
solicitação PUT objeto - Copiar para criar um novo objeto page1.htmlque usa o objeto page1.html
existente como origem. Na sua solicitação, você define o cabeçalho x-amz-website-redirect-
location. Quando a solicitação for concluída, você terá a página original com o conteúdo inalterado,
mas o Amazon S3 redirecionará todas as solicitações da página para o local de redirecionamento
especificado.
• Para excluir o conteúdo do objeto page1.html e redirecionar as solicitações para a página, envie
uma solicitação PUT objeto para fazer upload de um objeto com zero byte com a mesma chave de
objeto: page1.html. Na solicitação PUT, você define x-amz-website-redirect-location para
page1.htmlcomo o novo objeto. Quando a solicitação for concluída, page1.html não terá nenhum
conteúdo, e as solicitações serão redirecionadas para o local que é especificado por x-amz-website-
redirect-location.

Quando você recupera o objeto usando a ação GET objeto com outros metadados de objeto, o Amazon S3
retorna o cabeçalho x-amz-website-redirect-location na resposta.

Redirecionar solicitações de um endpoint de site de


um bucket para outro host
É possível redirecionar todas as solicitações de um endpoint de site de um bucket para outro host. Se
você redirecionar todas as solicitações, qualquer solicitação feita ao endpoint do site será redirecionada ao
nome de host especificado.

Por exemplo, se o seu domínio raiz for example.com, e você deseja servir solicitações para http://
example.com e http://www.example.com, será possível criar dois buckets chamados example.com
e www.example.com. Depois, mantenha o conteúdo no bucket example.com e configure o outro bucket
www.example.com para redirecionar todas as solicitações ao bucket example.com. Para obter mais
informações, consulte Configurar um site estático usando um nome de domínio personalizado.

Como redirecionar solicitações para um endpoint de site do bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Em Buckets, escolha o nome do bucket do qual você deseja redirecionar solicitações (por exemplo,
www.example.com).

Versão da API 2006-03-01


961
Amazon Simple Storage Service Guia do usuário
Configurar redirecionamentos condicionais avançados

3. Escolha Propriedades.
4. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).
5. Selecione Redirect requests for an object (Redirecionar solicitações de um objeto).
6. Na caixa Host name (Nome do host) insira o endpoint do site para seu bucket ou seu domínio
personalizado.

Por exemplo, se você estiver redirecionando para um endereço de domínio raiz, insira example.com.
7. Para Protocol (Protocolo), escolha o protocolo para as solicitações redirecionadas (none,http, ou
https).

Se você não especificar um protocolo, a opção padrão será none.


8. Selecione Save changes.

Configurar redirecionamentos condicionais avançados


Usando regras de redirecionamentos avançadas, você pode rotear solicitações condicionalmente de
acordo com nomes de chave de objeto específicos, prefixos na solicitação ou códigos da resposta. Por
exemplo, suponha que você exclua ou dê outro nome a um objeto em seu bucket. Você pode adicionar
uma regra de roteamento que redireciona a solicitação a outro objeto. Se você deseja tornar uma pasta
indisponível, será possível adicionar uma regra de roteamento para redirecionar a solicitação para outra
página da Web. Você também pode adicionar uma regra de roteamento para processar condições de erro,
encaminhando solicitações que retornam o erro para outro domínio quando ele é processado.

Ao configurar o bucket para hospedagem de sites, você tem a opção de especificar regras avançadas de
redirecionamento. O Amazon S3 tem uma limitação de 50 regras de roteamento por configuração de site.
Se você precisar de mais de 50 regras de roteamento, poderá usar o redirecionamento de objetos. Para
obter mais informações, consulte Definir um redirecionamento de objeto usando o console do Amazon
S3 (p. 960).

Para obter mais informações sobre como configurar regras de roteamento usando a API REST, consulte
PutBucketWebsite na Referência da API do Amazon Simple Storage Service.
Important

Para criar regras de redirecionamento no novo console do Amazon S3, você deve usar o JSON.
Para exemplos de JSON, consulte Exemplos de regras de redirecionamento (p. 965).

Para configurar regras de redirecionamento para um site estático

Para adicionar regras de redirecionamento para um bucket que já tem alojamento de site estático ativado,
siga estas etapas.

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na lista Bucket, escolha o nome do bucket configurado como um site estático.
3. Escolha Properties (Propriedades).
4. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).
5. Na caixa Redirection rules (Regras de redirecionamento), insira suas regras de redirecionamento em
JSON.

No console do S3, você descreve as regras usando o JSON. Para exemplos de JSON, consulte
Exemplos de regras de redirecionamento (p. 965). O Amazon S3 tem uma limitação de 50 regras de
roteamento por configuração de site.
6. Selecione Save changes.

Versão da API 2006-03-01


962
Amazon Simple Storage Service Guia do usuário
Configurar redirecionamentos condicionais avançados

Elementos de regra de roteamento


Veja a seguir a sintaxe geral para definir as regras de roteamento em uma configuração de site em XML.
Para configurar regras de redirecionamento no novo console do S3, use o JSON. Para exemplos de JSON,
consulte Exemplos de regras de redirecionamento (p. 965).

JSON

[
{
"Condition": {
"HttpErrorCodeReturnedEquals": "string",
"KeyPrefixEquals": "string"
},
"Redirect": {
"HostName": "string",
"HttpRedirectCode": "string",
"Protocol": "http"|"https",
"ReplaceKeyPrefixWith": "string",
"ReplaceKeyWith": "string"
}
}
]

Note: Redirect must each have at least one child element. You can have either
ReplaceKeyPrefix with or ReplaceKeyWith but not both.

XML

<RoutingRules> =
<RoutingRules>
<RoutingRule>...</RoutingRule>
[<RoutingRule>...</RoutingRule>
...]
</RoutingRules>

<RoutingRule> =
<RoutingRule>
[ <Condition>...</Condition> ]
<Redirect>...</Redirect>
</RoutingRule>

<Condition> =
<Condition>
[ <KeyPrefixEquals>...</KeyPrefixEquals> ]
[ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ]
</Condition>
Note: <Condition> must have at least one child element.

<Redirect> =
<Redirect>
[ <HostName>...</HostName> ]
[ <Protocol>...</Protocol> ]
[ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ]
[ <ReplaceKeyWith>...</ReplaceKeyWith> ]
[ <HttpRedirectCode>...</HttpRedirectCode> ]
</Redirect>

Note: <Redirect> must have at least one child element. You can have either
ReplaceKeyPrefix with or ReplaceKeyWith but not both.

Versão da API 2006-03-01


963
Amazon Simple Storage Service Guia do usuário
Configurar redirecionamentos condicionais avançados

A tabela a seguir descreve os elementos na regra de roteamento.

Nome Descrição

RoutingRules Contêiner para um conjunto de elementos RoutingRule.

RoutingRule Uma regra que identifica uma condição e o redirecionamento que é


aplicado quando a condição é satisfeita.

Condição:

• Um contêiner RoutingRules deve ter pelo menos uma regra de


roteamento.

Condition O contêiner para descrever uma condição que deve ser satisfeita para
que o redirecionamento especificado seja aplicado. Se a regra de
roteamento não incluir uma condição, a regra será aplicada a todas as
solicitações.

KeyPrefixEquals O prefixo do nome da chave de objeto do qual as solicitações são


redirecionadas.

KeyPrefixEquals será obrigatório se


HttpErrorCodeReturnedEquals não for especificado. Se
KeyPrefixEquals e HttpErrorCodeReturnedEquals forem
especificados, ambos deverão ser verdadeiros para a condição ser
satisfeita.

O código de erro HTTP que deve corresponder para que o


HttpErrorCodeReturnedEquals
redirecionamento seja aplicado. Se ocorrer um erro, e se o código
de erro satisfizer esse valor, o redirecionamento especificado será
aplicado.

HttpErrorCodeReturnedEquals será obrigatório se


KeyPrefixEquals não for especificado. Se KeyPrefixEquals
e HttpErrorCodeReturnedEquals forem especificados, ambos
deverão ser verdadeiros para a condição ser satisfeita.

Redirect O elemento do contêiner que fornece instruções para o


redirecionamento da solicitação. Você pode redirecionar solicitações
para outro host, ou outra página, ou pode especificar outro protocolo
a ser usado. Uma RoutingRule deve ter um elemento Redirect.
Um elemento Redirect deve conter pelo menos um dos seguintes
elementos irmãos: Protocol, HostName, ReplaceKeyPrefixWith,
ReplaceKeyWith ou HttpRedirectCode.

Protocol O protocolo, http ou https, que será usado no cabeçalho Location


que é retornado na resposta.

Se um dos irmãos for fornecido, Protocol não será obrigatório.

HostName O nome do host a ser usado no cabeçalho Location que é retornado


na resposta.

Se um dos irmãos for fornecido, HostName não será obrigatório.

ReplaceKeyPrefixWith O prefixo do nome de chave de objeto que substitui o valor de


KeyPrefixEquals na solicitação de redirecionamento.

Versão da API 2006-03-01


964
Amazon Simple Storage Service Guia do usuário
Configurar redirecionamentos condicionais avançados

Nome Descrição
Se um dos irmãos for fornecido, ReplaceKeyPrefixWith não será
obrigatório. Poderá ser fornecido somente se ReplaceKeyWith não
for fornecido.

ReplaceKeyWith A chave de objeto a ser usada no cabeçalho Location que é


retornado na resposta.

Se um dos irmãos for fornecido, ReplaceKeyWith


não será obrigatório. Poderá ser fornecido somente se
ReplaceKeyPrefixWith não for fornecido.

HttpRedirectCode O código de redirecionamento HTTP a ser usado no cabeçalho


Location que é retornado na resposta.

Se um dos irmãos for fornecido, HttpRedirectCode não será


obrigatório.

Exemplos de regras de redirecionamento


Os seguintes exemplos explicam tarefas comuns de redirecionamento:
Important

Para criar regras de redirecionamento no novo console do Amazon S3, você deve usar o JSON.

Example 1: Redirecionar após trocar o nome de um prefixo de chave

Suponha que seu bucket contenha os seguintes objetos:

• index.html
• docs/article1.html
• docs/article2.html

Você decide renomear a pasta de docs/ para documents/. Depois de fazer essa alteração, você
precisará redirecionar as solicitações do prefixo docs/ para documents/. Por exemplo, as solicitações
para docs/article1.html serão redirecionadas para documents/article1.html.

Nesse caso, adicione a seguinte regra de roteamento à configuração do site:

JSON

[
{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": "documents/"
}
}
]

XML

<RoutingRules>

Versão da API 2006-03-01


965
Amazon Simple Storage Service Guia do usuário
Configurar redirecionamentos condicionais avançados

<RoutingRule>
<Condition>
<KeyPrefixEquals>docs/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>

Example 2: Redirecionar solicitações de uma pasta excluída para uma página

Suponha que você tenha excluído a pasta images/ (ou seja, você excluiu todos os objetos com o prefixo
de chave images/). Você pode adicionar uma regra de roteamento que redirecione as solicitações para
os objetos com o prefixo de chave images/ a uma página chamada folderdeleted.html.

JSON

[
{
"Condition": {
"KeyPrefixEquals": "images/"
},
"Redirect": {
"ReplaceKeyWith": "folderdeleted.html"
}
}
]

XML

<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>images/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>

Example 3: Redirecionar para um erro HTTP

Suponha que, quando um objeto solicitado não for encontrado, você queira redirecionar solicitações para
uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Adicione uma regra de redirecionamento
para que, quando um código HTTP de status 404 (não encontrado) for retornado, o visitante do site seja
redirecionado para uma instância do Amazon EC2 que processa a solicitação.

O exemplo a seguir também insere o prefixo de chave de objeto report-404/ no redirecionamento.


Por exemplo, se você solicitar uma página report-404/ExamplePage.html e ela resultar em um erro
HTTP 404, a solicitação será redirecionada a uma página ExamplePage.html na instância do Amazon
EC2 especificada. Se não houver nenhuma regra de roteamento e o erro HTTP 404 ocorrer, o documento
de erro que é especificado na configuração será retornado.

JSON

Versão da API 2006-03-01


966
Amazon Simple Storage Service Guia do usuário
Demonstrações de exemplo

{
"Condition": {
"HttpErrorCodeReturnedEquals": "404"
},
"Redirect": {
"HostName": "ec2-11-22-333-44.compute-1.amazonaws.com",
"ReplaceKeyPrefixWith": "report-404/"
}
}
]

XML

<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
</Condition>
<Redirect>
<HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName>
<ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>

Demonstrações: hospedar sites no Amazon S3


Esta seção fornece dois exemplos. No primeiro, você configura um bucket para hospedagem de
sites, faz upload de um exemplo de documento de índice e testa o site usando o endpoint de site do
Amazon S3 para o bucket. O segundo exemplo mostra como você pode usar seu próprio domínio, como
example.com, em vez do endpoint de site de bucket do Amazon S3, e exibir conteúdo de um bucket do
Amazon S3 configurado como um site. O exemplo também mostra como o Amazon S3 fornece suporte a
domínio raiz.

Tópicos
• Tutorial: configurar um site estático no Amazon S3 (p. 967)
• Configurar um site estático usando um domínio personalizado registrado no Route 53 (p. 973)

Tutorial: configurar um site estático no Amazon S3


Você pode configurar um bucket do Amazon S3 para funcionar como um site. Este exemplo conduz você
pelas etapas de hospedagem de um site no Amazon S3.

Tópicos
• Etapa 1: Criar um bucket (p. 968)
• Etapa 2: Habilitar hospedagem de site estático (p. 968)
• Etapa 3: editar as configurações do Bloqueio de acesso público (p. 969)
• Etapa 4: Adicionar política de bucket que torna o conteúdo do bucket publicamente
disponível (p. 970)
• Etapa 5: Configurar um documento de índice (p. 971)
• Etapa 6: configurar um documento de erros (p. 972)
• Etapa 7: testar o endpoint do site (p. 972)
• Etapa 8: Limpar (p. 973)

Versão da API 2006-03-01


967
Amazon Simple Storage Service Guia do usuário
Configurar um site estático

Etapa 1: Criar um bucket


As instruções a seguir fornecem uma visão geral de como criar seus buckets para hospedagem de sites.
Para obter instruções detalhadas passo a passo sobre como criar um bucket, consulte Criação de um
bucket (p. 31).

Para criar um bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Selecione Create bucket (Criar bucket).
3. Insira o Bucket name (Nome do bucket) (por exemplo, example.com).
4. Selecione a região onde você deseja criar o bucket.

Escolha uma região próxima de você para minimizar a latência e os custos ou atender a requisitos
normativos. A região escolhida determina o endpoint de site do Amazon S3. Para obter mais
informações, consulte Endpoints de site (p. 945).
5. Para aceitar as configurações padrão e criar o bucket, escolha Create (Criar).

Etapa 2: Habilitar hospedagem de site estático


Depois de criar um bucket, você pode habilitar a hospedagem de site estático para seu bucket. Você pode
criar um bucket novo ou usar um existente.

Como habilitar a hospedagem de sites estáticos

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar a hospedagem de site
estático.
3. Escolha Propriedades.
4. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).
5. Escolha Use this bucket to host a website (Usar este bucket para hospedar um site).
6. Em Static website hosting (Hospedagem estática de sites), escolha Enable (Ativar).
7. Em Index Document (Documento de índice), insira o nome do arquivo do documento de índice, que
geralmente é index.html.

O nome do documento de índice diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de índice HTML do qual você planeja fazer upload
para o bucket do S3. Quando você configura um bucket para hospedagem de site, deve especificar
um documento de índice. O Amazon S3 retorna esse documento de índice quando as solicitações são
feitas para o domínio raiz ou alguma subpasta. Para obter mais informações, consulte Configurar um
documento de índice (p. 951).
8. Para fornecer seu próprio documento de erros personalizado para erros da classe 4XX, em Error
document (Documento de erros), insira o nome de arquivo do documento de erros personalizado.

O nome do documento de erro diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de erro HTML do qual você planeja fazer upload para
o bucket do S3. Se você não especificar um documento de erro personalizado e ocorrer um erro, o
Amazon S3 retornará um documento de erro HTML padrão. Para obter mais informações, consulte
Configurar um documento de erro personalizado (p. 953).
9. (Opcional) Se você especificar regras avançadas de redirecionamento em Redirection rules (Regras
de redirecionamento), use XML para descrever as regras.

Versão da API 2006-03-01


968
Amazon Simple Storage Service Guia do usuário
Configurar um site estático

Por exemplo, você pode encaminhar solicitações condicionalmente de acordo com nomes de chave
de objeto ou prefixos específicos na solicitação. Para obter mais informações, consulte Configurar
redirecionamentos condicionais avançados (p. 962).
10. Selecione Save changes.

O Amazon S3 permite a hospedagem estática de sites para seu bucket. Na parte inferior da página,
em Static website hosting (Hospedagem estática de sites), você verá o endpoint do site do seu bucket.
11. Em Static website hosting (Hospedagem de sites estáticos), anote o Endpoint.

O Endpoint é o endpoint do site do Amazon S3 para o bucket. Depois de concluir a configuração do


bucket como um site estático, é possível usar esse endpoint para testar o site.

Etapa 3: editar as configurações do Bloqueio de acesso público


Por padrão, o Amazon S3 bloqueia o acesso público à sua conta e aos seus buckets. Se quiser usar um
bucket para hospedar um site estático, use estas etapas para editar as configurações de bloqueio de
acesso público.
Warning

Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso
público. Ao desativar as configurações de bloqueio de acesso público para tornar seu bucket
público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o
acesso público aos buckets.

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Escolha o nome do bucket configurado como um site estático.
3. Escolha Permissions (Permissões).
4. Em Block public access (bucket settings) (Bloqueio de acesso público (configurações de bucket)),
escolha Edit (Editar).
5. Desmarque Block all public access (Bloquear todo acesso público) e escolha Save changes (Salvar
alterações).
Warning

Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do


Amazon S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir
o acesso público. Ao desativar as configurações de bloqueio de acesso público para tornar
seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você
bloqueie todo o acesso público aos buckets.

Versão da API 2006-03-01


969
Amazon Simple Storage Service Guia do usuário
Configurar um site estático

O Amazon S3 desativa as configurações do Bloqueio de acesso público para seu bucket. Para criar
um site público e estático, você também pode ter que editar as configurações de Bloqueio de acesso
público para sua conta antes de adicionar uma política de bucket. Se as configurações da conta para
bloquear acesso público estiverem ativadas no momento, você verá uma observação em Block public
access (bucket settings) (Bloqueio de acesso público (configurações de bucket)).

Etapa 4: Adicionar política de bucket que torna o conteúdo do


bucket publicamente disponível
Depois de editar as configurações do Bloqueio de acesso público do S3, é possível adicionar uma política
de bucket para conceder acesso público de leitura ao bucket. Ao conceder um acesso público de leitura,
qualquer pessoa na Internet pode acessar seu bucket.
Important

A política a seguir é somente um exemplo e concede acesso total aos conteúdos do bucket.
Antes de prosseguir com esta etapa, revise Como posso proteger os arquivos no meu bucket
do Amazon S3? para garantir que você entende as práticas recomendadas a fim de proteger os
arquivos no bucket do S3 e os riscos envolvidos na concessão de acesso público.

1. Em Buckets, escolha o nome do seu bucket.


2. Escolha Permissions (Permissões).
3. Em Bucket Policy (Política de bucket), escolha Edit (Editar).
4. Para conceder acesso público de leitura ao site, copie a política de bucket a seguir e cole-a no Bucket
policy editor (Editor de política de bucket).

{
"Version": "2012-10-17",

Versão da API 2006-03-01


970
Amazon Simple Storage Service Guia do usuário
Configurar um site estático

"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::Bucket-Name/*"
]
}
]
}

5. Atualize o Resource para o nome do bucket.

Na política de bucket do exemplo anterior, Bucket-Name é um espaço reservado para o nome do


bucket. Para usar essa política de bucket com seu próprio bucket, você deve atualizar esse nome para
corresponder ao nome do seu bucket.
6. Selecione Save changes.

Uma mensagem é exibida indicando que a política de bucket foi adicionada com sucesso.

Se você vir um erro que diz Policy has invalid resource, confirme se o nome do bucket na
política de bucket corresponde ao nome do seu bucket. Para obter informações sobre como adicionar
uma política de bucket, consulte Como adicionar uma política de bucket do S3?

Se você receber uma mensagem de erro e não puder salvar a política do bucket, verifique suas
configurações de acesso público para confirmar que você permite acesso público ao bucket.

Etapa 5: Configurar um documento de índice


Ao habilitar a hospedagem de sites estáticos para o bucket, insira o nome do documento de índice (por
exemplo, index.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de índice para o bucket.

Como configurar o documento de índice

1. Criar um arquivo index.html

Se você não tiver um arquivo index.html, poderá usar o HTML a seguir para criar um:

<html xmlns="http://www.w3.org/1999/xhtml" >


<head>
<title>My Website Home Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>Now hosted on Amazon S3!</p>
</body>
</html>

2. Salve o arquivo de índice localmente.

O nome do documento de índice deve corresponder exatamente ao nome do documento de índice


que você inseriu na caixa de diálogo Hospedagem de site estático. O nome do documento de
índice diferencia maiúsculas de minúsculas. Por exemplo, se você inserir index.html no nome
do Documentos de índice na caixa de diálogo Hospedagem de site estático, o nome do arquivo do
documento de índice também deverá ser index.html e não Index.html.

Versão da API 2006-03-01


971
Amazon Simple Storage Service Guia do usuário
Configurar um site estático

3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.
5. Habilite a hospedagem de sites estáticos para seu bucket e insira o nome exato do documento de
índice (por exemplo, index.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de índice para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de índice na listagem de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).
7. (Opcional) Faça upload do conteúdo de outro site para o seu bucket.

Etapa 6: configurar um documento de erros


Ao habilitar a hospedagem de site estático para o bucket, insira o nome do documento de erro (por
exemplo, 404.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de erros para o bucket.

Para configurar um documento de erros

1. Crie um documento de erro, por exemplo 404.html.


2. Salve o arquivo de documento de erros localmente.

O nome do documento de erros diferencia maiúsculas e minúsculas e deve corresponder exatamente


ao nome que você insere ao habilitar a hospedagem estática do site. Por exemplo, se você inserir
404.html como o nome do Error document (Documento de erro) na caixa de diálogo Static website
hosting (Hospedagem de site estático), o nome de arquivo do documento de erro também deve ser
404.html.
3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.
5. Habilite a hospedagem de site estático para seu bucket e insira o nome exato do documento de
erro (por exemplo, 404.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de erros para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de documento de erros na lista de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).

Etapa 7: testar o endpoint do site


Depois de configurar a hospedagem de site estático para seu bucket, você pode testar o endpoint do site.

Versão da API 2006-03-01


972
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

Note

O Amazon S3 não oferece suporte para o acesso HTTPS ao site. Se quiser usar HTTPS, você
poderá usar o Amazon CloudFront para servir um site estático hospedado no Amazon S3.
Para obter mais informações, consulte Como uso o CloudFront para veicular um site estático
hospedado no Amazon S3? e Exigir HTTPS para comunicação entre visualizadores e CloudFront.

1. Em Buckets, escolha o nome do seu bucket.


2. Escolha Propriedades.
3. Na parte inferior da página, em Static website hosting (Hospedagem estática de sites), escolha seu
Bucket website endpoint (Endpoint de site do Bucket).

Seu documento de índice é aberto em uma janela separada do navegador.

Agora você tem um site hospedado no Amazon S3. Esse site está disponível no endpoint de site do
Amazon S3. No entanto, você pode ter um domínio, como example.com, que deseja usar para exibir
o conteúdo do site que criou. Talvez você também queira usar o suporte ao domínio raiz do Amazon S3
para atender solicitações para http://example.com e http://www.example.com. Isso exige etapas
adicionais. Para ver um exemplo, consulte Configurar um site estático usando um domínio personalizado
registrado no Route 53 (p. 973).

Etapa 8: Limpar
Se tiver criado o site apenas como exercício de aprendizado, você poderá excluir os recursos da AWS
alocados, de maneira que deixe de acumular cobranças. Depois que você excluir os recursos da AWS, o
site deixará de estar disponível. Para obter mais informações, consulte Excluir um bucket (p. 40).

Configurar um site estático usando um domínio


personalizado registrado no Route 53
Suponha que você queira hospedar um site estático no Amazon S3. Você registrou um domínio no
Amazon Route 53 (por exemplo, example.com) e deseja que solicitações http://www.example.com
e http://example.com sejam veiculadas a partir do conteúdo do Amazon S3. É possível usar essa
demonstração para saber como hospedar um site estático e criar redirecionamentos no Amazon S3 para
um site com um nome de domínio personalizado que é registrado com o Route 53. É possível trabalhar
com um site existente que você deseja hospedar no Amazon S3 ou usar esta demonstração para começar
do zero.

Depois de concluir esta demonstração, você tem a opção de usar o Amazon CloudFront para melhorar
a performance do seu site. Para obter mais informações, consulte Acelerar seu site com o Amazon
CloudFront (p. 985).
Note

O Amazon S3 não oferece suporte para o acesso HTTPS ao site. Se quiser usar HTTPS, você
poderá usar o Amazon CloudFront para servir um site estático hospedado no Amazon S3.
Para obter mais informações, consulte Como uso o CloudFront para veicular um site estático
hospedado no Amazon S3? e Exigir HTTPS para comunicação entre visualizadores e CloudFront.

Automatizar a configuração de site estático com um modelo do AWS CloudFormation

Você pode usar um modelo do AWS CloudFormation para automatizar a configuração do site estático.
O modelo do AWS CloudFormation configura os componentes que você precisa para hospedar um site
estático seguro e se concentrar mais no conteúdo do seu site e menos na configuração de componentes.

O modelo do AWS CloudFormation inclui os seguintes componentes:

Versão da API 2006-03-01


973
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

• Amazon S3: cria um bucket do Amazon S3 para hospedar seu site estático.
• CloudFront: cria uma distribuição do CloudFront para acelerar seu site estático.
• Lambda@Edge: usa o Lambda@Edge para adicionar cabeçalhos de segurança a cada resposta do
servidor. Os cabeçalhos de segurança são um grupo de cabeçalhos na resposta do servidor web
que dizem aos navegadores da web para tomarem precauções de segurança extras. Para obter mais
informações, consulte a publicação do blog: Adding HTTP security headers using Lambda@Edge and
Amazon CloudFront.

Este modelo do AWS CloudFormation está disponível para download e uso. Para obter informações e
instruções, consulte Conceitos básicos de um site estático seguro no Guia do desenvolvedor do Amazon
CloudFront.

Tópicos
• Antes de começar (p. 974)
• Etapa 1: Registrar um domínio personalizado no Route 53 (p. 974)
• Etapa 2: Criar dois buckets (p. 974)
• Etapa 3: Configurar o bucket de domínio raiz para hospedagem de sites (p. 975)
• Etapa 4: Configurar o bucket de subdomínio para redirecionamento de sites (p. 976)
• Etapa 5: Configurar o registro em log para o tráfego do site (p. 977)
• Etapa 6: Fazer upload do conteúdo do site e do índice (p. 977)
• Etapa 7: carregar um documento de erros (p. 978)
• Etapa 7: Editar configurações de bloqueio de acesso público do S3 (p. 979)
• Etapa 8: Anexar uma política de bucket (p. 980)
• Etapa 9: Testar o endpoint de domínio (p. 981)
• Etapa 10: Adicionar registros de alias para seu domínio e subdomínio (p. 982)
• Etapa 11: Testar o site (p. 985)
• Acelerar seu site com o Amazon CloudFront (p. 985)
• Limpar seus recursos de exemplo (p. 988)

Antes de começar
Ao seguir as etapas deste exemplo, você trabalha com os seguintes serviços:

Amazon Route 53: você pode usar o Route 53 para registrar domínios e definir onde você deseja rotear o
tráfego de internet para o seu domínio. O exemplo mostra como criar registros de alias do Route 53 que
roteiam o tráfego para do domínio (example.com) e do subdomínio (www.example.com) para um bucket
do Amazon S3 que contém um arquivo HTML.

Amazon S3: você usa o Amazon S3 para criar buckets, fazer upload de uma página de site de exemplo,
configurar permissões para que todos possam visualizar conteúdo e, em seguida, configurar os buckets
para hospedagem do site.

Etapa 1: Registrar um domínio personalizado no Route 53


Se você não tiver um nome de domínio registrado, como example.com, precisará registrar um com o
Route 53. Para obter mais informações, consulte Registrar um novo domínio no Guia do desenvolvedor do
Amazon Route 53. Depois de registrar seu nome de domínio, é possível criar e configurar seus buckets do
Amazon S3 para hospedagem de sites.

Etapa 2: Criar dois buckets


Para oferecer suporte a solicitações no domínio raiz e no subdomínio, crie dois buckets.

Versão da API 2006-03-01


974
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

• Bucket de domínio: example.com


• Bucket de subdomínio: www.example.com

Esses nomes de bucket devem corresponder exatamente ao seu nome de domínio. Neste exemplo,
o nome de domínio é example.com. Você hospeda seu conteúdo fora do bucket de domínio
raiz (example.com). Crie uma solicitação de redirecionamento para o bucket de subdomínio
(www.example.com). Em outras palavras, se uma pessoa insere www.example.com no navegador, ela é
redirecionada para example.com e vê o conteúdo hospedado no bucket do Amazon S3 com esse nome.

Como criar buckets para hospedagem de sites


As instruções a seguir fornecem uma visão geral de como criar seus buckets para hospedagem de sites.
Para obter instruções detalhadas passo a passo sobre como criar um bucket, consulte Criação de um
bucket (p. 31).

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Crie o bucket do domínio raiz:

a. Selecione Create bucket (Criar bucket).


b. Insira o Bucket name (Nome do bucket) (por exemplo, example.com).
c. Selecione a região onde você deseja criar o bucket.

Escolha uma região próxima de você para minimizar a latência e os custos ou atender a requisitos
normativos. A região escolhida determina o endpoint de site do Amazon S3. Para obter mais
informações, consulte Endpoints de site (p. 945).
d. Para aceitar as configurações padrão e criar o bucket, escolha Create (Criar).
3. Crie o bucket de subdomínio:

a. Selecione Create bucket (Criar bucket).


b. Insira o Bucket name (Nome do bucket) (por exemplo, www.example.com).
c. Selecione a região onde você deseja criar o bucket.

Escolha uma região próxima de você para minimizar a latência e os custos ou atender a requisitos
normativos. A região escolhida determina o endpoint de site do Amazon S3. Para obter mais
informações, consulte Endpoints de site (p. 945).
d. Para aceitar as configurações padrão e criar o bucket, escolha Create (Criar).

Na próxima etapa, configure example.com para a hospedagem do site.

Etapa 3: Configurar o bucket de domínio raiz para hospedagem


de sites
Nesta etapa, você configura o bucket de domínio raiz (example.com) como um site. Esse bucket terá o
conteúdo do site. Ao configurar um bucket para hospedagem de sites, é possível acessar o site usando o
Endpoints de site (p. 945).

Como habilitar a hospedagem de sites estáticos

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. Na lista Buckets, escolha o nome do bucket para o qual você deseja habilitar a hospedagem de site
estático.
3. Escolha Propriedades.

Versão da API 2006-03-01


975
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

4. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).


5. Escolha Use this bucket to host a website (Usar este bucket para hospedar um site).
6. Em Static website hosting (Hospedagem estática de sites), escolha Enable (Ativar).
7. Em Index Document (Documento de índice), insira o nome do arquivo do documento de índice, que
geralmente é index.html.

O nome do documento de índice diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de índice HTML do qual você planeja fazer upload
para o bucket do S3. Quando você configura um bucket para hospedagem de site, deve especificar
um documento de índice. O Amazon S3 retorna esse documento de índice quando as solicitações são
feitas para o domínio raiz ou alguma subpasta. Para obter mais informações, consulte Configurar um
documento de índice (p. 951).
8. Para fornecer seu próprio documento de erros personalizado para erros da classe 4XX, em Error
document (Documento de erros), insira o nome de arquivo do documento de erros personalizado.

O nome do documento de erro diferencia letras maiúsculas de minúsculas e deve corresponder


exatamente ao nome do arquivo do documento de erro HTML do qual você planeja fazer upload para
o bucket do S3. Se você não especificar um documento de erro personalizado e ocorrer um erro, o
Amazon S3 retornará um documento de erro HTML padrão. Para obter mais informações, consulte
Configurar um documento de erro personalizado (p. 953).
9. (Opcional) Se você especificar regras avançadas de redirecionamento em Redirection rules (Regras
de redirecionamento), use XML para descrever as regras.

Por exemplo, você pode encaminhar solicitações condicionalmente de acordo com nomes de chave
de objeto ou prefixos específicos na solicitação. Para obter mais informações, consulte Configurar
redirecionamentos condicionais avançados (p. 962).
10. Selecione Save changes.

O Amazon S3 permite a hospedagem estática de sites para seu bucket. Na parte inferior da página,
em Static website hosting (Hospedagem estática de sites), você verá o endpoint do site do seu bucket.
11. Em Static website hosting (Hospedagem de sites estáticos), anote o Endpoint.

O Endpoint é o endpoint do site do Amazon S3 para o bucket. Depois de concluir a configuração do


bucket como um site estático, é possível usar esse endpoint para testar o site.

Depois de editar as configurações de acesso público de bloqueio e adicionar uma política de bucket que
permita acesso público de leitura, você pode usar o endpoint do site para acessar seu site.

Na próxima etapa, configure o subdomínio (www.example.com) para redirecionar solicitações para o


domínio (example.com).

Etapa 4: Configurar o bucket de subdomínio para


redirecionamento de sites
Depois de configurar o bucket de domínio raiz para a hospedagem de sites, é possível configurar o
bucket do subdomínio para redirecionar todas as solicitações para o domínio. Neste exemplo, todas as
solicitações para www.example.com são redirecionadas para example.com.

Para configurar uma solicitação de redirecionamento

1. No console do Amazon S3, na lista Buckets, escolha o nome do bucket do subdomínio


(www.example.com neste exemplo).
2. Escolha Propriedades.
3. Em Static website hosting (Hospedagem estática de sites), escolha Edit (Editar).
4. Selecione Redirect requests for an object (Redirecionar solicitações de um objeto).

Versão da API 2006-03-01


976
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

5. Na caixa Target bucket (Bucket de destino), insira o domínio raiz (por exemplo, example.com).
6. Em Protocol (Protocolo), selecione http.
7. Selecione Save changes.

Etapa 5: Configurar o registro em log para o tráfego do site


Se quiser rastrear o número de visitantes que acessam seu site, opcionalmente você pode habilitar o log
para seu bucket de domínio raiz. Para obter mais informações, consulte Registrar em log as solicitações
com registro em log de acesso ao servidor (p. 833). Se planeja usar o Amazon CloudFront para acelerar
seu site, você também pode usar o registro em log do CloudFront.

Como habilitar o registro em log do acesso ao servidor para o bucket de domínio raiz

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Na mesma região onde você criou o bucket configurado como um site estático, crie um bucket para
registro em log, por exemplo logs.example.com.
3. Crie uma pasta para os arquivos de log do registro em log de acesso ao servidor (por exemplo, logs).
4. (Opcional) Se você quiser usar o CloudFront para melhorar o desempenho do seu site, crie uma pasta
para os arquivos de log do CloudFront (por exemplo, cdn).
5. Na lista Buckets, escolha seu bucket de domínio raiz.
6. Escolha Propriedades.
7. Em Server access logging (Registro de acesso ao servidor), selecione Edit (Editar).
8. Escolha Enable (Habilitar).
9. No Target bucket (Bucket de destino), escolha o destino do bucket e da pasta para os logs de acesso
ao servidor:

• Navegue até o local da pasta e do bucket:


1. Escolha Browse S3 (Navegar no S3).
2. Escolha o nome do bucket e, depois, escolha a pasta de logs.
3. Selecione Choose path (Escolher caminho).
• Insira o caminho do bucket do S3, por exemplo, s3://logs.example.com/logs/.
10. Selecione Save changes.

No bucket de log, agora você pode acessar seus logs. O Amazon S3 grava os logs de acesso ao site
no bucket de log a cada duas horas.

Etapa 6: Fazer upload do conteúdo do site e do índice


Nesta etapa, faça upload do documento de índice e do conteúdo opcional do site no bucket de domínio
raiz.

Ao habilitar a hospedagem de sites estáticos para o bucket, insira o nome do documento de índice (por
exemplo, index.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de índice para o bucket.

Como configurar o documento de índice

1. Criar um arquivo index.html

Se você não tiver um arquivo index.html, poderá usar o HTML a seguir para criar um:

<html xmlns="http://www.w3.org/1999/xhtml" >

Versão da API 2006-03-01


977
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

<head>
<title>My Website Home Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>Now hosted on Amazon S3!</p>
</body>
</html>

2. Salve o arquivo de índice localmente.

O nome do documento de índice deve corresponder exatamente ao nome do documento de índice


que você inseriu na caixa de diálogo Hospedagem de site estático. O nome do documento de
índice diferencia maiúsculas de minúsculas. Por exemplo, se você inserir index.html no nome
do Documentos de índice na caixa de diálogo Hospedagem de site estático, o nome do arquivo do
documento de índice também deverá ser index.html e não Index.html.
3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.
5. Habilite a hospedagem de sites estáticos para seu bucket e insira o nome exato do documento de
índice (por exemplo, index.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de índice para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de índice na listagem de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).
7. (Opcional) Faça upload do conteúdo de outro site para o seu bucket.

Etapa 7: carregar um documento de erros


Ao habilitar a hospedagem de site estático para o bucket, insira o nome do documento de erro (por
exemplo, 404.html). Depois de habilitar a hospedagem de sites estáticos para seu bucket, faça upload
de um arquivo HTML com esse nome de documento de erros para o bucket.

Para configurar um documento de erros

1. Crie um documento de erro, por exemplo 404.html.


2. Salve o arquivo de documento de erros localmente.

O nome do documento de erros diferencia maiúsculas e minúsculas e deve corresponder exatamente


ao nome que você insere ao habilitar a hospedagem estática do site. Por exemplo, se você inserir
404.html como o nome do Error document (Documento de erro) na caixa de diálogo Static website
hosting (Hospedagem de site estático), o nome de arquivo do documento de erro também deve ser
404.html.
3. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://
console.aws.amazon.com/s3/.
4. Na lista Buckets, selecione o nome do bucket que você deseja usar para hospedar um site estático.
5. Habilite a hospedagem de site estático para seu bucket e insira o nome exato do documento de
erro (por exemplo, 404.html). Para obter mais informações, consulte Habilitar a hospedagem de
sites (p. 947).

Versão da API 2006-03-01


978
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

Depois de habilitar a hospedagem estática do site, vá para a etapa 6.


6. Para fazer upload do documento de erros para o bucket, siga um destes procedimentos:

• Arraste e solte o arquivo de documento de erros na lista de buckets do console.


• Escolha Upload (Fazer upload) e siga as instruções para escolher e fazer upload do arquivo de
índice.

Para obter instruções detalhadas, consulte Fazer upload de objetos (p. 71).

Etapa 7: Editar configurações de bloqueio de acesso público do


S3
Neste exemplo, você edita configurações de bloqueio de acesso público para o bucket de domínio
(example.com) para permitir acesso público.

Por padrão, o Amazon S3 bloqueia o acesso público à sua conta e aos seus buckets. Se quiser usar um
bucket para hospedar um site estático, use estas etapas para editar as configurações de bloqueio de
acesso público.
Warning

Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do Amazon
S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso
público. Ao desativar as configurações de bloqueio de acesso público para tornar seu bucket
público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o
acesso público aos buckets.

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. Escolha o nome do bucket configurado como um site estático.
3. Escolha Permissions (Permissões).
4. Em Block public access (bucket settings) (Bloqueio de acesso público (configurações de bucket)),
escolha Edit (Editar).
5. Desmarque Block all public access (Bloquear todo acesso público) e escolha Save changes (Salvar
alterações).
Warning

Antes de concluir esta etapa, revise Bloquear o acesso público ao armazenamento do


Amazon S3 (p. 469) para garantir que você entenda e aceite os riscos envolvidos em permitir
o acesso público. Ao desativar as configurações de bloqueio de acesso público para tornar
seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você
bloqueie todo o acesso público aos buckets.

Versão da API 2006-03-01


979
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

O Amazon S3 desativa as configurações do Bloqueio de acesso público para seu bucket. Para criar
um site público e estático, você também pode ter que editar as configurações de Bloqueio de acesso
público para sua conta antes de adicionar uma política de bucket. Se as configurações da conta para
bloquear acesso público estiverem ativadas no momento, você verá uma observação em Block public
access (bucket settings) (Bloqueio de acesso público (configurações de bucket)).

Etapa 8: Anexar uma política de bucket


Neste exemplo, você anexa uma política de bucket ao bucket de domínio (example.com) para permitir
acesso de leitura pública. Você substitui o Bucket-Name na política de bucket de exemplo pelo nome do
bucket de domínio, por exemplo, example.com.

Depois de editar as configurações do Bloqueio de acesso público do S3, é possível adicionar uma política
de bucket para conceder acesso público de leitura ao bucket. Ao conceder um acesso público de leitura,
qualquer pessoa na Internet pode acessar seu bucket.
Important

A política a seguir é somente um exemplo e concede acesso total aos conteúdos do bucket.
Antes de prosseguir com esta etapa, revise Como posso proteger os arquivos no meu bucket
do Amazon S3? para garantir que você entende as práticas recomendadas a fim de proteger os
arquivos no bucket do S3 e os riscos envolvidos na concessão de acesso público.

1. Em Buckets, escolha o nome do seu bucket.


2. Escolha Permissions (Permissões).
3. Em Bucket Policy (Política de bucket), escolha Edit (Editar).
4. Para conceder acesso público de leitura ao site, copie a política de bucket a seguir e cole-a no Bucket
policy editor (Editor de política de bucket).

Versão da API 2006-03-01


980
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::Bucket-Name/*"
]
}
]
}

5. Atualize o Resource para o nome do bucket.

Na política de bucket do exemplo anterior, Bucket-Name é um espaço reservado para o nome do


bucket. Para usar essa política de bucket com seu próprio bucket, você deve atualizar esse nome para
corresponder ao nome do seu bucket.
6. Selecione Save changes.

Uma mensagem é exibida indicando que a política de bucket foi adicionada com sucesso.

Se você vir um erro que diz Policy has invalid resource, confirme se o nome do bucket na
política de bucket corresponde ao nome do seu bucket. Para obter informações sobre como adicionar
uma política de bucket, consulte Como adicionar uma política de bucket do S3?

Se você receber uma mensagem de erro e não puder salvar a política do bucket, verifique suas
configurações de acesso público para confirmar que você permite acesso público ao bucket.

Na próxima etapa, é possível descobrir os endpoints do site e testar o endpoint do domínio.

Etapa 9: Testar o endpoint de domínio


Depois de configurar seu bucket de domínio para hospedar um site público, você pode testar seu endpoint.
Para obter mais informações, consulte Endpoints de site (p. 945). Somente será possível testar o
endpoint de seu bucket de domínio porque ele está configurado para redirecionamento de site e não para
hospedagem de site estático.
Note
O Amazon S3 não oferece suporte para o acesso HTTPS ao site. Se quiser usar HTTPS, você
poderá usar o Amazon CloudFront para servir um site estático hospedado no Amazon S3.
Para obter mais informações, consulte Como uso o CloudFront para veicular um site estático
hospedado no Amazon S3? e Exigir HTTPS para comunicação entre visualizadores e CloudFront.

1. Em Buckets, escolha o nome do seu bucket.


2. Escolha Propriedades.
3. Na parte inferior da página, em Static website hosting (Hospedagem estática de sites), escolha seu
Bucket website endpoint (Endpoint de site do Bucket).

Seu documento de índice é aberto em uma janela separada do navegador.

Na próxima etapa, você usa o Amazon Route 53 para permitir que os clientes usem ambos os URLs
personalizados para navegar até o site.

Versão da API 2006-03-01


981
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

Etapa 10: Adicionar registros de alias para seu domínio e


subdomínio
Nesta etapa, você cria os registros de alias adicionados à zona hospedada dos mapas de domínio
example.com e www.example.com. Em vez de usar endereços IP, os registros de alias usam os
endpoints de site do Amazon S3. O Amazon Route 53 mantém um mapeamento entre os registros de alias
e os endereços IP onde os buckets do Amazon S3 residem. Crie dois registros de alias, um para o domínio
raiz e um para o subdomínio.

Adicionar um registro de alias para seu domínio raiz e subdomínio

Como adicionar um registro de alias ao domínio raiz (example.com)

1. Abra o console do Route 53 em https://console.aws.amazon.com/route53/.


Note

Se você ainda não usa o Route 53, consulte Etapa 1: registrar um domínio no Guia do
desenvolvedor do Amazon Route 53. Após concluir a configuração, é possível retomar as
instruções.
2. Selecione Hosted zones (Zonas hospedadas).
3. Na lista de zonas hospedadas, escolha o nome da zona hospedada que corresponde ao nome de
domínio.
4. Escolha Create record (Criar registro).
5. Escolha Switch to wizard (Alternar para assistente).
Note

Se você quiser usar a criação rápida para criar seus registros de alias, consulte Configurar o
Route 53 para rotear o tráfego para um bucket do S3.
6. Escolha Simple routing (Roteamento simples) e Next (Próximo).
7. Escolha Define simple record (Definir registro simples).
8. Em Record name (Nome do registro), aceite o valor padrão, que é o nome da zona hospedada e do
domínio.
9. Em Value/Route traffic to (Valor/Encaminhar tráfego para), escolha Alias to S3 website endpoint (Alias
para o endpoint do site do S3).
10. Escolha a região.
11. Escolha o bucket do S3.

O nome do bucket deve corresponder ao nome que aparece na caixa Name (Nome). Na lista Choose
S3 bucket (Escolher bucket do S3), o nome do bucket aparece com o endpoint do site do Amazon S3
para a região onde o bucket foi criado, por exemplo, s3-website-us-west-1.amazonaws.com
(example.com).

Choose S3 bucket (Escolher bucket do S3) lista um bucket se:

• Você configurou o bucket como um site estático.


• O nome do bucket é o mesmo que o nome do registro que você está criando.
• A conta da AWS atual criou o bucket.

Se o bucket não aparecer na lista Choose S3 bucket (Escolher bucket do S3), insira o endpoint
de site do Amazon S3 da região em que o bucket foi criado, por exemplo, s3-website-us-
west-2.amazonaws.com. Para obter uma lista completa dos endpoints do site do Amazon S3,
Versão da API 2006-03-01
982
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

consulte Endpoints de site do Amazon S3. Para obter mais informações sobre o destino de alias,
consulte Valor/rotear tráfego para no Guia do desenvolvedor do Amazon Route 53.
12. Em Record type (Tipo de registro), escolha A - Routes traffic to an IPv4 address and some AWS
resources (Encaminha o tráfego para um endereço IPv4 e alguns recursos da AWS).
13. Em Evaluate target health (Avaliar integridade do destino), escolha No (Não).
14. Escolha Define simple record (Definir registro simples).

Como adicionar um registro de alias ao subdomínio (www.example.com)

1. Em Configure records (Configurar registros), escolha Define simple record (Definir registro simples).
2. Em Record name (Nome do registro) para seu subdomínio, digite www.
3. Em Value/Route traffic to (Valor/Encaminhar tráfego para), escolha Alias to S3 website endpoint (Alias
para o endpoint do site do S3).
4. Escolha a região.
5. Escolha o bucket do S3, por exemplo, s3-website-us-west-2.amazonaws.com
(example.com).

Se o bucket não aparecer na lista Choose S3 bucket (Escolher bucket do S3), insira o endpoint
de site do Amazon S3 da região em que o bucket foi criado, por exemplo, s3-website-us-
west-2.amazonaws.com. Para obter uma lista completa dos endpoints do site do Amazon S3,
consulte Endpoints de site do Amazon S3. Para obter mais informações sobre o destino de alias,
consulte Valor/rotear tráfego para no Guia do desenvolvedor do Amazon Route 53.
6. Em Record type (Tipo de registro), escolha A - Routes traffic to an IPv4 address and some AWS
resources (Encaminha o tráfego para um endereço IPv4 e alguns recursos da AWS).
7. Em Evaluate target health (Avaliar integridade do destino), escolha No (Não).
8. Escolha Define simple record (Definir registro simples).
9. Na página Configure records (Configurar registros), escolha Create records (Criar registros).

Note

As alterações são geralmente propagadas para todos os servidores do Route 53 dentro de 53


segundos. Quando a propagação for concluída, será possível rotear o tráfego para o bucket do
Amazon S3 usando os nomes de registros de alias criados nesse procedimento.

Adicionar um registro de alias para seu domínio raiz e subdomínio (antigo console do Route 53)

Como adicionar um registro de alias ao domínio raiz (example.com)

O console do Route 53 foi reprojetado. No console do Route 53, você pode usar temporariamente o
console antigo. Se você optar por trabalhar com o console do Route 53 antigo, use o procedimento abaixo.

1. Abra o console do Route 53 em https://console.aws.amazon.com/route53/.


Note

Se você ainda não usa o Route 53, consulte Etapa 1: registrar um domínio no Guia do
desenvolvedor do Amazon Route 53. Após concluir a configuração, é possível retomar as
instruções.
2. Selecione Hosted Zones (Zonas hospedadas).
3. Na lista de zonas hospedadas, escolha o nome da zona hospedada que corresponde ao nome de
domínio.
4. Escolha Create Record Set (Criar conjunto de registros).
5. Especifique os seguintes valores:

Versão da API 2006-03-01


983
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

Nome

Aceite o valor padrão, que é o nome da zona hospedada e do domínio.

Para o domínio raiz, não é necessário inserir nenhuma informação adicional no campo Name
(Nome).
Tipo

Escolha A - IPv4 address (A – Endereço IPv4).


Alias

Escolha Yes (Sim).


Alvo do alias

Na seção S3 website endpoints (Endpoints de site do S3) da lista, escolha o nome do bucket.

O nome do bucket deve corresponder ao nome que aparece na caixa Name (Nome). Na listagem
Alias Target (Destino do alias), o nome do bucket é seguido pelo endpoint de site do Amazon
S3 para a região onde o bucket foi criado, por exemplo, example.com (s3-website-us-
west-2.amazonaws.com). Alias Target (Alvo do alias) lista um bucket se:
• Você configurou o bucket como um site estático.
• O nome do bucket é o mesmo que o nome do registro que você está criando.
• A conta da AWS atual criou o bucket.

Se o bucket não aparecer na listagem Alias Target (Destino do alias), insira o endpoint de site
do Amazon S3 da região em que o bucket foi criado, por exemplo, s3-website-us-west-2.
Para obter uma lista completa dos endpoints do site do Amazon S3, consulte Endpoints de site do
Amazon S3. Para obter mais informações sobre o destino de alias, consulte Valor/rotear tráfego
para no Guia do desenvolvedor do Amazon Route 53.
Política de roteamento

Aceite o valor padrão de Simple (Simples).


Avaliar status do alvo

Aceite o valor padrão de No (Não).


6. Escolha Create (Criar).

Como adicionar um registro de alias ao subdomínio (www.example.com)

1. Na zona hospedada do domínio raiz (example.com), selecione Create Record Set (Criar conjunto de
registros).
2. Especifique os seguintes valores:

Nome

Para o subdomínio, insira www na caixa.


Tipo

Escolha A - IPv4 address (A – Endereço IPv4).


Alias

Escolha Yes (Sim).

Versão da API 2006-03-01


984
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

Alvo do alias

Na seção S3 website endpoints (Endpoints de site do S3) da lista, escolha o mesmo nome
de bucket que é exibido no campo Name (Nome), por exemplo, www.example.com (s3-
website-us-west-2.amazonaws.com).
Política de roteamento

Aceite o valor padrão de Simple (Simples).


Avaliar status do alvo

Aceite o valor padrão de No (Não).


3. Escolha Create (Criar).

Note

As alterações são geralmente propagadas para todos os servidores do Route 53 dentro de 53


segundos. Quando a propagação for concluída, será possível rotear o tráfego para o bucket do
Amazon S3 usando os nomes de registros de alias criados nesse procedimento.

Etapa 11: Testar o site


Verifique se o site e o redirecionamento funcionam corretamente. No navegador, insira os URLs. Neste
exemplo, é possível tentar os seguintes URLs:

• Domínio (http://example.com): exibe o documento de índice no bucket example.com.


• Subdomínio (http://www.example.com): redireciona sua solicitação para http://example.com.
Veja o documento de índice no bucket example.com.

Se o seu site ou links de redirecionamento não funcionarem, tente o seguinte:

• Limpar cache: limpe o cache do seu navegador da Web.


• Verificar servidores de nomes: se a página da Web e os links de redirecionamento não funcionarem
depois de limpar o cache, você poderá comparar os servidores de nome do seu domínio e os servidores
de nome da sua zona hospedada. Se os servidores de nome não corresponderem, talvez seja
necessário atualizar seus servidores de nome de domínio para corresponder aos listados na zona
hospedada. Para obter mais informações, consulte Adicionar ou alterar servidores de nomes e registros
cola para um domínio.

Depois de testar com êxito o domínio raiz e o subdomínio, você pode configurar uma distribuição do
Amazon CloudFront para melhorar a performance do seu site e fornecer logs que você possa usar
para revisar o tráfego do site. Para obter mais informações, consulte Acelerar seu site com o Amazon
CloudFront (p. 985).

Acelerar seu site com o Amazon CloudFront


Você pode usar o Amazon CloudFront para melhorar a performance do seu site do Amazon S3. O
CloudFront disponibiliza os arquivos do site (como HTML, imagens e vídeos) por meio de datacenters
em todo o mundo (conhecidos como pontos de presença). Quando um visitante solicita um arquivo em
seu site, o CloudFront redireciona automaticamente a solicitação para uma cópia do arquivo no ponto de
presença mais próximo. Isso resulta em tempos de download mais rápidos se o visitante tiver solicitado o
conteúdo em um datacenter localizado mais longe.

O CloudFront armazena em cache o conteúdo em pontos de presença por um período especificado


por você. Se um visitante solicitar conteúdo que foi armazenado em cache por mais tempo que a data

Versão da API 2006-03-01


985
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

de expiração, o CloudFront verificará o servidor de origem para saber se há uma versão mais nova
do conteúdo disponível. Se houver uma versão mais nova à disposição, o CloudFront copiará a nova
versão para o ponto de presença. As alterações feitas no conteúdo original são replicadas para pontos de
presença à medida que os visitantes solicitam o conteúdo.

Automatizar a configuração com um modelo do AWS CloudFormation

Para obter mais informações sobre como usar um modelo do AWS CloudFormation para configurar um site
estático seguro que cria uma distribuição do CloudFront para veicular seu site, consulte Introdução a um
site estático seguro no Guia do desenvolvedor do Amazon CloudFront.

Tópicos
• Etapa 1: Criar uma distribuição do CloudFront (p. 986)
• Etapa 2: Atualizar os conjuntos de registros do domínio e do subdomínio (p. 987)
• (Opcional) Etapa 3: verificar os arquivos de log (p. 988)

Etapa 1: Criar uma distribuição do CloudFront


Primeiro, você cria uma distribuição do CloudFront. Isso torna seu site disponível em datacenters em todo
o mundo.

Como criar uma distribuição com uma origem do Amazon S3

1. Abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/.


2. Escolha Create Distribution (Criar distribuição).
3. Na página Select a delivery method for your content (Selecionar um método de entrega do conteúdo),
em Web, escolha Get Started (Conceitos básicos).
4. Na página Create Distribution (Criar distribuição), na seção Origin Settings (Configurações de origem),
em Origin Domain Name (Nome do domínio de origem), digite o endpoint do site do Amazon S3 para
seu bucket, por exemplo, example.com.s3-website.us-west-1.amazonaws.com.

O CloudFront preenche o Origin ID (ID de origem) para você.


5. Em Default Cache Behavior Settings (Configurações do comportamento de cache padrão), mantenha
os valores padrão definidos.

Com as configurações padrão do Viewer Protocol Policy (Política de protocolo de visualizador),


é possível usar HTTPS para o site estático. Para obter mais informações sobre essas opções de
configuração, consulte Valores que você especifica quando cria ou atualiza uma distribuição na Web
no Guia do desenvolvedor do Amazon CloudFront.
6. Para Distribution Settings (Configurações de distribuição), faça o seguinte:

a. Deixe Price Class (Classe de preço) definida como Use All Edge Locations (Best Performance)
(Usar todos os pontos de presença [melhor desempenho]).
b. Defina Alternate Domain Names (CNAMEs) Nomes de domínio alternativos (CNAMEs) para o
domínio raiz e para o subdomínio www. Neste tutorial, são example.com e www.example.com.
Important

Antes de executar essa etapa, veja os requisitos para o uso de nomes de domínio
alternativos, principalmente a necessidade de um certificado SSL/TLS válido.
c. Em SSL Certificate (Certificado SSL), selecione Custom SSL Certificate (example.com)
(Certificado SSL personalizado (exemplo.com)) e escolha o certificado personalizado que contém
os nomes de domínio e subdomínio.

Para obter mais informações, consulte Certificado SSL no Guia do desenvolvedor do Amazon
CloudFront.

Versão da API 2006-03-01


986
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

d. Em Default Root Object (Objeto raiz padrão), insira o nome do documento de índice, por exemplo,
index.html.

Se o URL usado para acessar a distribuição não contiver um nome de arquivo, a distribuição do
CloudFront retornará o documento de índice. O Default Root Object (Objeto raiz padrão) deve
corresponder exatamente ao nome do documento de índice do seu site estático. Para obter mais
informações, consulte Configurar um documento de índice (p. 951).
e. Defina Logging (Registro em log) como On (Ligado).
f. Em Bucket for Logs (Bucket para logs), escolha o bucket para o registro em log que você criou.

Para obter mais informações sobre como configurar um bucket de log, consulte (Opcional)
Registrar em log o tráfego da web (p. 959).
g. Se quiser armazenar os logs gerados pelo tráfego para a distribuição do CloudFront em uma
pasta, em Log Prefix (Prefixo de log), insira o nome da pasta.
h. Mantenha todas as outras configurações segundo seus valores predefinidos.
7. Escolha Create Distribution (Criar distribuição).
8. Para ver o status atual da distribuição, localize a distribuição no console e verifique a coluna Status.

Um status InProgress indica que a distribuição ainda não foi totalmente implantada.

Depois que a distribuição estiver implantada, você pode fazer referência ao conteúdo com o novo
nome do domínio do CloudFront.
9. Registre o valor de Domain Name (Nome do domínio) mostrado no console do CloudFront, por
exemplo, dj4p1rv6mvubz.cloudfront.net.
10. Para verificar se a distribuição do CloudFront está funcionando, insira o nome de domínio da
distribuição em um navegador da Web.

Se o seu site estiver visível, a distribuição do CloudFront funciona. Se o seu site tiver um domínio
personalizado registrado no Amazon Route 53, você precisará do nome de domínio do CloudFront
para atualizar o conjunto de registros na próxima etapa.

Etapa 2: Atualizar os conjuntos de registros do domínio e do subdomínio


Agora que você criou com sucesso uma distribuição do CloudFront, atualize o registro de alias no Route 53
para apontar para a nova distribuição do CloudFront.

Para atualizar o registro de alias para apontar para uma distribuição do CloudFront

1. Abra o console do Route 53 em https://console.aws.amazon.com/route53/.


2. Na página Hosted Zones (Zonas hospedadas), escolha a zona hospedada criada por você para o
subdomínio.
3. Escolha Go to Record Sets (Ir para conjuntos de registros).
4. Escolha o registro A que você criou para seu subdomínio, por exemplo, www.example.com.
5. Para Alias Target (Destino do alias), escolha a distribuição do CloudFront.
6. Escolha Save Record Set (Salvar conjunto de registros).
7. Para redirecionar o registro A do domínio raiz para a distribuição do CloudFront, repita esse
procedimento.

A atualização dos conjuntos de registros entra em vigor dentro de 2 a 48 horas.


8. Para ver se os novos registros A entraram em vigor, em um navegador da Web, digite o URL do
subdomínio, por exemplo, http://www.example.com.

Se o navegador não o redirecionar para o domínio raiz (por exemplo, http://example.com), os


novos registros A estarão no lugar. Quando o novo registro A entra em vigor, o tráfego roteado pelo

Versão da API 2006-03-01


987
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

novo registro A para a distribuição do CloudFront não é redirecionado para o domínio raiz. Qualquer
visitante que faça referência ao site usando http://www.example.com ou http://example.com
é redirecionado para o ponto de presença do CloudFront mais próximo, onde ele aproveita tempos de
download menores.
Tip

Os navegadores podem armazenar em cache configurações de redirecionamento. Se você


acreditar que as novas configurações do registro A devem ter entrado em vigor, mas o
navegador ainda redirecionar http://www.example.com para http://example.com,
tente limpar o histórico e limpar o cache do navegador, fechando e reabrindo a aplicação do
navegador ou usando outro navegador da Web.

(Opcional) Etapa 3: verificar os arquivos de log


Os logs de acesso informam quantas pessoas estão visitando o site. Eles também contêm dados
comerciais valiosos que você pode analisar com outros serviços, como o Amazon EMR.

Os logs do CloudFront são armazenados no bucket e na pasta escolhidos ao criar uma distribuição do
CloudFront e habilitar o registro em log. O CloudFront grava logs em seu bucket de log dentro de 24 horas
a partir do momento em que as solicitações correspondentes são feitas.

Para ver os arquivos de log do site

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3.


2. Escolha o nome do bucket de registro em log do site.
3. Escolha a pasta de logs do CloudFront.
4. Baixe os arquivos .gzip escritos pelo CloudFront antes de abri-los.

Se tiver criado o site apenas como um exercício de aprendizado, você poderá excluir os recursos
alocados, para não acumular mais cobranças. Para fazer isto, consulte Limpar seus recursos de
exemplo (p. 988). Depois que você excluir os recursos da AWS, o site deixará de estar disponível.

Limpar seus recursos de exemplo


Se você tiver criado o site estático apenas como um exercício de aprendizado, exclua os recursos da AWS
alocados, para deixar de acumular cobranças. Depois que você excluir os recursos da AWS, o site deixará
de estar disponível.

Tarefas
• Etapa 1: exclua a distribuição do Amazon CloudFront (p. 988)
• Etapa 2: exclua a zona hospedada do Route 53 (p. 989)
• Etapa 3: Desabilitar o registro em log e excluir o bucket do S3 (p. 989)

Etapa 1: exclua a distribuição do Amazon CloudFront


Antes de excluir uma distribuição do Amazon CloudFront, você deve desabilitá-la. Uma distribuição
desabilitada deixa de ser funcional e não acumula encargos. É possível habilitar uma distribuição
desabilitada a qualquer momento. Depois que você excluir uma distribuição desabilitada, ela deixará de
estar disponível.

Como desabilitar e excluir uma distribuição do CloudFront

1. Abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/.

Versão da API 2006-03-01


988
Amazon Simple Storage Service Guia do usuário
Configurar um site estático
usando um domínio personalizado

2. Selecione a distribuição que você deseja desabilitar e escolha Disable (Desabilitar).


3. Quando a confirmação for solicitada, escolha Yes, Disable (Sim, desabilitar).
4. Selecione a distribuição desabilitada e escolha Delete (Excluir).
5. Quando a confirmação for solicitada, escolha Yes, Delete (Sim, excluir).

Etapa 2: exclua a zona hospedada do Route 53


Para excluir a zona hospedada, você deve excluir os conjuntos de registros criados. Você não precisa
excluir os registros de Start of Authority (SOA – Início da autoridade) e Name Server (NS – Servidor de
nomes); eles são excluídos automaticamente quando se exclui a zona hospedada.

Para excluir os conjuntos de registros

1. Abra o console do Route 53 em https://console.aws.amazon.com/route53/.


2. Na lista de nomes de domínio, selecione o nome do seu domínio e escolha Go to Record Sets (Ir para
conjuntos de registros).
3. Na lista de conjuntos de registros, selecione os registros A que você criou.

O tipo de cada conjunto de registros está listado na coluna Type (Tipo).


4. Escolha Delete Record Set (Excluir conjunto de registros).
5. Quando a confirmação for solicitada, escolha Confirm (Confirmar).

Como excluir uma zona hospedada do Route 53

1. Continuando o procedimento anterior, escolha Back to Hosted Zones (Voltar para zonas hospedadas).
2. Selecione o nome do seu domínio e escolha Delete Hosted Zone (Excluir zona hospedada).
3. Quando a confirmação for solicitada, escolha Confirm (Confirmar).

Etapa 3: Desabilitar o registro em log e excluir o bucket do S3


Antes de excluir o bucket do S3, verifique se o registro está desativado para o bucket. Caso contrário, a
AWS continuará gravando logs para o bucket à medida que você o excluir.

Para desabilitar o registro em log para um bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3.


2. Em Buckets, escolha o nome do bucket e, em seguida, escolha Properties (Propriedades).
3. Em Properties (Propriedades), escolha Logging (Registro).
4. Desmarque a caixa de seleção Enabled (Habilitado).
5. Escolha Save (Salvar).

Agora, você pode excluir seu bucket. Para obter mais informações, consulte Excluir um bucket (p. 40).

Versão da API 2006-03-01


989
Amazon Simple Storage Service Guia do usuário
Fazer solicitações

Desenvolvimento com o Amazon S3


Esta seção aborda tópicos relacionados ao desenvolvedor para usar o Amazon S3. Para obter mais
informações, consulte os tópicos abaixo.

Tópicos
• Fazer solicitações (p. 990)
• Desenvolvimento com o Amazon S3 usando a AWS CLI (p. 1033)
• Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034)
• Desenvolver com o Amazon S3 usando a API REST (p. 1047)
• Tratar erros de REST e SOAP (p. 1052)
• Referência do desenvolvedor (p. 1055)

Fazer solicitações
O Amazon S3 é um serviço REST. Você pode enviar solicitações para o Amazon S3 usando a API REST
ou as bibliotecas wrapper do SDK da AWS (consulte Código de exemplo e bibliotecas) que envolvem a API
REST estrutural do Amazon S3, simplificando as tarefas de programação.

Cada interação com o Amazon S3 é autenticada ou anônima. A autenticação é um processo de verificação


da identidade do solicitante que está tentando acessar um produto da Amazon Web Services (AWS). As
solicitações autenticadas devem incluir um valor de assinatura que autentique o remetente da solicitação.
O valor de assinatura é, em parte, gerado a partir das chaves de acesso da AWS do solicitante (ID de
chave de acesso e chave de acesso secreta). Para obter mais informações sobre como obter chaves de
acesso, consulte Como faço para obter credenciais de segurança? na Referência geral da AWS.

Se você estiver usando o SDK da AWS, as bibliotecas calcularão a assinatura a partir das chaves
fornecidas. No entanto, se fizer chamadas diretas da API REST no aplicativo, você deverá escrever o
código para calcular a assinatura e adicioná-la à solicitação.

Tópicos
• Sobre as chaves de acesso (p. 990)
• Endpoints de solicitações (p. 992)
• Fazer solicitações para o Amazon S3 por meio do IPv6 (p. 992)
• Fazer solicitações usando os AWS SDKs (p. 998)
• Fazer solicitações usando a API REST (p. 1024)

Sobre as chaves de acesso


As seções a seguir avaliam os tipos de chaves de acesso que você pode usar para fazer solicitações
autenticadas.

Chaves de acesso da conta da AWS


As chaves de acesso da conta fornecem acesso total aos recursos da AWS que são de propriedade da
conta. Veja a seguir exemplos de chaves de acessos:

Versão da API 2006-03-01


990
Amazon Simple Storage Service Guia do usuário
Sobre as chaves de acesso

• ID de chave de acesso (uma string de 20 caracteres alfanuméricos). Por exemplo:


AKIAIOSFODNN7EXAMPLE
• Chave de acesso secreta (uma string de 40 caracteres). Por exemplo: wJalrXUtnFEMI/K7MDENG/
bPxRfiCYEXAMPLEKEY

O ID de chave de acesso identifica uma conta da AWS de maneira única. Use essas chaves de acesso
para enviar solicitações autenticadas para o Amazon S3.

Chaves de acesso do usuário do IAM


Você pode criar uma conta da AWS para sua empresa. No entanto, podem existir vários funcionários na
organização que precisam de acesso aos recursos da AWS da organização. Compartilhar as chaves de
acesso da conta da AWS reduz a segurança e criar contas individuais da AWS para cada funcionário pode
não ser prático. Além disso, não é fácil compartilhar recursos como buckets e objetos, pois eles pertencem
a contas diferentes. Para compartilhar recursos, você deve conceder permissões, o que gera trabalho
adicional.

Em tais cenários, use o AWS Identity and Access Management (IAM) para criar usuários na conta da AWS
com suas próprias chaves de acesso e anexe políticas de usuário do IAM concedendo as permissões de
acesso aos recursos apropriados. Para gerenciar melhor esses usuários, o IAM permite que você crie
grupos de usuários e conceda permissões no nível de grupo que se aplicam a todos os usuário do grupo.

Esses usuários são conhecidos como usuários do IAM criados e gerenciados dentro da AWS. A conta pai
controla a capacidade que um usuário tem de acessar a AWS. Quaisquer recursos que um usuário do
IAM cria estão sob o controle da conta pai da AWS e são pagos para ela. Esses usuários do IAM podem
enviar solicitações autenticadas para o Amazon S3 usando as próprias credenciais de segurança. Para
obter mais informações sobre como criar e gerenciar usuários em sua conta da AWS, acesse a página de
detalhes do produto do AWS Identity and Access Management.

Credenciais de segurança temporárias


Além de criar usuários do IAM com suas próprias chaves de acesso, o IAM também permite que você
conceda credenciais de segurança temporárias (chaves de acesso temporárias e um token de segurança)
a qualquer usuário do IAM permitindo que eles acessem serviços e recursos da AWS. Você também pode
gerenciar usuários no sistema fora da AWS. Eles são conhecidos como usuários federados. Além disso,
usuários podem ser aplicativos criados para acessar os recursos da AWS.

O IAM fornece a API do AWS Security Token Service para que você solicite credenciais de segurança
temporárias. Use a API da AWS STS ou o SDK da AWS para solicitar essas credenciais. A API retorna
as credenciais de segurança temporárias (ID de chave de acesso e chave de acesso secreta) e um token
de segurança. Essas credenciais são válidas apenas pela duração especificada ao solicitá-las. Use o ID
de chave de acesso e a chave secreta da mesma forma que os usa ao enviar solicitações usando a conta
da AWS ou as chaves de acesso do usuário do IAM. Além disso, é necessário incluir o token em cada
solicitação enviada para o Amazon S3.

Um usuário do IAM pode solicitar essas credenciais de segurança temporárias para seu próprio uso
ou enviá-las para usuários federados ou aplicações. Ao solicitar credenciais de segurança temporárias
para usuários federados, você deve fornecer um nome de usuário e uma política do IAM definindo as
permissões que deseja associar a essas credenciais. O usuário federado não pode obter mais permissões
que o usuário pai do IAM que solicitou as credenciais temporárias.

Use as credenciais de segurança temporárias para fazer solicitações ao Amazon S3. As bibliotecas de API
calculam o valor de assinatura necessário usando essas credenciais para autenticar sua solicitação. Se
você enviar solicitações usando credenciais vencidas, o Amazon S3 negará a solicitação.

Para obter informações sobre a assinatura de solicitações usando credenciais de segurança temporárias
nas solicitações da API REST, consulte Assinar e autenticar as solicitações REST (p. 1061). Para obter

Versão da API 2006-03-01


991
Amazon Simple Storage Service Guia do usuário
Endpoints de solicitações

informações sobre o envio de solicitações usando SDKs da AWS, consulte Fazer solicitações usando os
AWS SDKs (p. 998).

Para obter mais informações sobre o suporte do IAM para credenciais de segurança temporárias, consulte
Credenciais de segurança temporárias no Guia do usuário do IAM.

Para maior segurança, é possível exigir autenticação multifator (MFA) ao acessar os recursos do Amazon
S3 configurando uma política do bucket. Para obter mais informações, consulte Adicionar uma política
de bucket para exigir MFA (p. 384). Depois de exigir a MFA para acesso aos recursos do Amazon S3, a
única maneira de acessar esses recursos é fornecendo credenciais temporárias criadas com uma chave
MFA. Para obter mais informações, consulte a página de detalhes do AWS Multi-Factor Authentication e
Configurar o acesso à API com proteção MFA no Guia do usuário do IAM.

Endpoints de solicitações
Envie solicitações REST para o endpoint predefinido do serviço. Para obter uma lista de todos os serviços
da AWS e os endpoints correspondentes, acesse Regiões e endpoints na Referência geral da AWS.

Fazer solicitações para o Amazon S3 por meio do


IPv6
O Amazon Simple Storage Service (Amazon S3) oferece suporte à capacidade de acessar buckets do S3
usando o protocolo IPv6 (Internet Protocol versão 6), além do protocolo IPv4. Os endpoints de pilha dupla
do Amazon S3 oferecem suporte para buckets do S3 por IPv6 e IPv4. Não há custo adicional para acessar
o Amazon S3 por meio do IPv6. Para obter mais informações sobre a definição de preços, consulte
Definição de preços do Amazon S3.

Tópicos
• Conceitos básicos para fazer solicitações por meio do IPv6 (p. 992)
• Como usar endereços do IPv6 em políticas do IAM (p. 993)
• Testar a compatibilidade com endereços IP (p. 994)
• Usar endpoints de pilha dupla do Amazon S3 (p. 995)

Conceitos básicos para fazer solicitações por meio do IPv6


Para fazer uma solicitação para um bucket do S3 por meio do IPv6, você precisa usar um endpoint de pilha
dupla. A próxima seção descreve como fazer solicitações por meio do IPv6 usando endpoints de pilha
dupla.

Estas são algumas coisas sobre as quais você deve estar ciente antes de tentar acessar um bucket por
meio do IPv6:

• O cliente e a rede que estão acessando o bucket devem ter permissão para usar o IPv6.
• As solicitações de estilo hospedado virtual e de estilo de caminho são compatíveis para acessarem o
IPv6. Para obter mais informações, consulte Endpoints de pilha dupla do Amazon S3 (p. 995).
• Se você usar a filtragem de endereços IP de origem em suas políticas de usuário ou bucket do AWS
Identity and Access Management (IAM), precisará atualizar as políticas para incluir intervalos de
endereços IPv6. Para obter mais informações, consulte Como usar endereços do IPv6 em políticas do
IAM (p. 993).
• Ao usar o IPv6, os arquivos de log de acesso ao servidor fornecem endereços IP em um formato do
IPv6. Você precisa atualizar as ferramentas, os scripts e o software existentes que usa para analisar os
arquivos de log do Amazon S3 para que eles possam analisar os endereços Remote IP formatados

Versão da API 2006-03-01


992
Amazon Simple Storage Service Guia do usuário
Fazer solicitações por meio do IPv6

para IPv6. Para obter mais informações, consulte Formato dos logs de acesso ao servidor do Amazon
S3 (p. 841) e Registrar em log as solicitações com registro em log de acesso ao servidor (p. 833).
Note

Se você tiver problemas relacionados à presença de endereços IPv6 nos arquivos de log, entre
em contato com o AWS Support.

Como fazer solicitações por meio do IPv6 usando endpoints de pilha dupla
Você faz solicitações com chamadas da API do Amazon S3 por meio do IPv6 usando endpoints de pilha
dupla. As operações de API do Amazon S3 funcionam da mesma maneira se você estiver acessando o
Amazon S3 por IPv6 ou por IPv4. O desempenho deve ser o mesmo também.

Ao usar a API REST, você acessa um endpoint de pilha dupla diretamente. Para obter mais informações,
consulte Endpoints de pilha dupla (p. 995).

Ao usar a Interface da linha de comando da AWS (CLI da AWS) e os AWS SDKs, você pode usar um
parâmetro ou sinalizador para mudar para um endpoint de pilha dupla. Você também pode especificar
o endpoint de pilha dupla diretamente como uma substituição do endpoint do Amazon S3 no arquivo de
configuração.

Você pode usar um endpoint de pilha dupla para acessar um bucket por meio do IPv6 de qualquer um dos
seguintes:

• A AWS CLI, consulte Usar endpoints de pilha dupla da AWS CLI (p. 996).
• Os AWS SDKs, consulte Usar endpoints de pilha dupla dos AWS SDKs (p. 996).
• A API REST, consulte Fazer solicitações para endpoints de pilha dupla usando a API REST (p. 1025).

Recursos não disponíveis por meio do IPv6


No momento, os seguintes recursos não são compatíveis ao acessar um bucket do S3 por meio do IPv6:

• Hospedagem de site estático em um bucket do S3


• BitTorrent

Como usar endereços do IPv6 em políticas do IAM


Antes de tentar acessar um bucket usando o IPv6, você deve garantir que todas a políticas de usuário do
IAM ou de bucket do S3 usadas para filtragem de endereços IP estejam atualizadas para incluir intervalos
de endereços do IPv6. As políticas de filtragem de endereços IP que não estiverem atualizadas para lidar
com endereços do IPv6 podem resultar na perda ou no ganho de acesso de clientes ao bucket quando
começarem a usar o IPv6. Para obter mais informações sobre como gerenciar permissões de acesso com
o IAM, consulte Identity and Access Management no Amazon S3 (p. 252).

As políticas do IAM que filtram endereços IP usam Operadores de condição de endereço IP. A política de
bucket a seguir identifica o intervalo 54.240.143.* de endereços IPv4 permitidos usando operadores de
condição de endereço IP. Todos os endereços IP fora deste intervalo terão o acesso ao bucket negado
(examplebucket). Como todos os endereços do IPv6 estão fora do intervalo permitido, essa política
impede que os endereços do IPv6 possam acessar o examplebucket.

{
"Version": "2012-10-17",
"Statement": [

Versão da API 2006-03-01


993
Amazon Simple Storage Service Guia do usuário
Fazer solicitações por meio do IPv6

{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
}
]
}

Você pode modificar o elemento Condition da política do bucket para permitir os intervalos de endereços
do IPv4 (54.240.143.0/24) e do IPv6 (2001:DB8:1234:5678::/64), conforme mostrado no exemplo
a seguir. Você pode usar o mesmo tipo de bloqueio de Condition mostrado no exemplo para atualizar as
políticas de usuário e de bucket do IAM.

"Condition": {
"IpAddress": {
"aws:SourceIp": [
"54.240.143.0/24",
"2001:DB8:1234:5678::/64"
]
}
}

Antes de usar o IPv6, você deve atualizar todas as políticas de usuário e de bucket do IAM que usam
a filtragem de endereços IP para permitir os intervalos de endereços do IPv6. Recomendamos que
você atualize as políticas do IAM com os intervalos de endereços do IPv6 de sua organização além dos
intervalos de endereços do IPv4 existentes. Para obter um exemplo de uma política de bucket que permite
acesso por meio do IPv6 e do IPv4, consulte Limitar o acesso a endereços IP específicos (p. 381).

Você pode revisar suas políticas de usuário do IAM usando o console do IAM em https://
console.aws.amazon.com/iam/. Para obter mais informações sobre o IAM, consulte o Guia do usuário do
IAM. Para obter informações sobre políticas de bucket do S3, consulte Adicionar uma política de bucket
usando o console do Amazon S3 (p. 377).

Testar a compatibilidade com endereços IP


Se estiver usando o Linux/Unix ou o Mac OS X, você poderá testar se é possível acessar um endpoint de
pilha dupla por meio do IPv6 usando o comando curl conforme mostrado no exemplo a seguir:

Example

curl -v http://s3.dualstack.us-west-2.amazonaws.com/

Você recebe de volta informações semelhantes ao exemplo a seguir. Se estiver conectado por meio do
IPv6 o endereço IP conectado será um endereço do IPv6.

* About to connect() to s3-us-west-2.amazonaws.com port 80 (#0)


* Trying IPv6 address... connected
* Connected to s3.dualstack.us-west-2.amazonaws.com (IPv6 address) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1 OpenSSL/1.0.1t
zlib/1.2.3
> Host: s3.dualstack.us-west-2.amazonaws.com

Versão da API 2006-03-01


994
Amazon Simple Storage Service Guia do usuário
Fazer solicitações por meio do IPv6

Se estiver usando o Microsoft Windows 7 ou 10, você poderá testar se é possível acessar um endpoint
de pilha dupla por meio do IPv6 ou do IPv4 usando o comando ping conforme mostrado no exemplo a
seguir:

ping ipv6.s3.dualstack.us-west-2.amazonaws.com

Usar endpoints de pilha dupla do Amazon S3


Os endpoints de pilha dupla do Amazon S3 oferecem suporte para buckets do S3 por IPv6 e IPv4. Esta
seção descreve como usar os endpoints de pilha dupla.

Tópicos
• Endpoints de pilha dupla do Amazon S3 (p. 995)
• Usar endpoints de pilha dupla da AWS CLI (p. 996)
• Usar endpoints de pilha dupla dos AWS SDKs (p. 996)
• Usar endpoints de pilha dupla da API REST (p. 998)

Endpoints de pilha dupla do Amazon S3


Quando você faz uma solicitação para um endpoint de pilha dupla, o URL do bucket resolve para um
endereço IPv6 ou IPv4. Para obter mais informações sobre como acessar um bucket por meio do IPv6,
consulte Fazer solicitações para o Amazon S3 por meio do IPv6 (p. 992).

Ao usar a API REST, você acessa diretamente um endpoint do Amazon S3 usando o nome do endpoint
(URI). Você pode acessar um bucket do S3 por meio de um endpoint de pilha dupla usando um nome de
endpoint de estilo de hospedagem virtual ou de estilo de caminho. O Amazon S3 oferece suporte apenas a
nomes regionais de endpoint de pilha dupla, o que significa que você deve especificar a região como parte
do nome.

Use as seguintes convenções de atribuição de nomes para os nomes de endpoint de estilo de


hospedagem virtual e de estilo de caminho de pilha dupla:

• Endpoint de pilha dupla de estilo de hospedagem virtual

bucketname.s3.dualstack.aws-region.amazonaws.com

 
• Endpoint de pilha dupla de estilo de caminho:

s3.dualstack.aws-region.amazonaws.com/bucketname

Para obter mais informações sobre estilo de nome de endpoints, consulte Acessar um bucket (p. 36). Para
obter uma lista de todos os endpoints da Amazon S3, consulte Regiões e endpoints na Referência geral da
AWS.
Important

Você pode usar a aceleração de transferência com endpoints de pilha dupla. Para obter mais
informações, consulte Conceitos básicos do Amazon S3 Transfer Acceleration (p. 50).

Ao usar a Interface da linha de comando da AWS (CLI da AWS) e os AWS SDKs, você pode usar um
parâmetro ou sinalizador para mudar para um endpoint de pilha dupla. Você também pode especificar
o endpoint de pilha dupla diretamente como uma substituição do endpoint do Amazon S3 no arquivo de
configuração. As seções a seguir descrevem como usar endpoints de pilha dupla da AWS CLI e dos AWS
SDKs.

Versão da API 2006-03-01


995
Amazon Simple Storage Service Guia do usuário
Fazer solicitações por meio do IPv6

Usar endpoints de pilha dupla da AWS CLI


Esta seção fornece exemplos de comandos da AWS CLI usados para fazer solicitações a um endpoint de
pilha dupla. Para obter instruções de configuração da AWS CLI, consulte Desenvolvimento com o Amazon
S3 usando a AWS CLI (p. 1033).

Você define o valor de configuração use_dualstack_endpoint para true em um perfil no seu arquivo
do AWS Config para direcionar todas as solicitações do Amazon S3 feitas pelos comandos s3 e s3api
da AWS CLI ao endpoint de pilha dupla para a região especificada. Especifique a região no arquivo de
configuração ou em um comando usando a opção --region.

Quando se usa endpoints de pilha dupla com a AWS CLI, os estilos de endereçamento path e virtual
são compatíveis. O estilo de endereçamento, definido no arquivo de configuração, controla se o nome
do bucket está no hostname ou em parte do URL. Por padrão, a CLI tentará usar o estilo virtual sempre
que possível, mas voltará ao estilo de caminho se necessário. Para obter mais informações, consulte
Configuração do Amazon S3 da AWS CLI.

Você também pode fazer alterações de configuração usando um comando, conforme mostrado no
exemplo a seguir que define use_dualstack_endpoint para true e addressing_style para
virtual no perfil padrão.

$ aws configure set default.s3.use_dualstack_endpoint true


$ aws configure set default.s3.addressing_style virtual

Se quiser usar um endpoint de pilha dupla apenas para comandos especificados da AWS CLI, (nem todos
os comandos), você pode usar qualquer um dos métodos a seguir:

• Você pode usar o endpoint de pilha dupla por comando, definindo o parâmetro --endpoint-url
como https://s3.dualstack.aws-region.amazonaws.com ou http://s3.dualstack.aws-
region.amazonaws.com para qualquer comando s3 ou s3api.

$ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-


region.amazonaws.com

• Você pode configurar perfis separados em seu arquivo AWS Config. Por exemplo, crie
um perfil que defina use_dualstack_endpoint como true e um perfil que não defina
use_dualstack_endpoint. Quando executar um comando, especifique qual perfil deseja usar,
dependendo de querer ou não usar o endpoint de pilha dupla.

Note
Atualmente, ao usar a AWS CLI, você não pode usar a aceleração de transferência com
endpoints de pilha dupla. Contudo, o suporte para a CLI da AWS estará disponível em breve.
Para obter mais informações, consulte Usar a CLI da AWS (p. 52).

Usar endpoints de pilha dupla dos AWS SDKs


Esta seção fornece exemplos de como acessar um endpoint de pilha dupla usando os SDKs da AWS.

Exemplo de endpoint de pilha dupla do AWS SDK para Java


O exemplo a seguir mostra como habilitar endpoints de pilha dupla ao criar um cliente do Amazon S3
usando o AWS SDK para Java.

Para obter instruções sobre criar e testar um exemplo funcional Java, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;

Versão da API 2006-03-01


996
Amazon Simple Storage Service Guia do usuário
Fazer solicitações por meio do IPv6

import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;

public class DualStackEndpoints {

public static void main(String[] args) {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
// Create an Amazon S3 client with dual-stack endpoints enabled.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.withDualstackEnabled(true)
.build();

s3Client.listObjects(bucketName);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Se estiver usando o AWS SDK para Java no Windows, você talvez tenha de definir a seguinte propriedade
da máquina virtual Java (JVM):

java.net.preferIPv6Addresses=true

Exemplo do endpoint de pilha dupla do AWS SDK para .NET

Ao usar o AWS SDK para .NET você, você usa a classe AmazonS3Config para permitir o uso de um
endpoint de pilha dupla, como mostrado no exemplo a seguir.

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class DualStackEndpointTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
var config = new AmazonS3Config
{

Versão da API 2006-03-01


997
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

UseDualstackEndpoint = true,
RegionEndpoint = bucketRegion
};
client = new AmazonS3Client(config);
Console.WriteLine("Listing objects stored in a bucket");
ListingObjectsAsync().Wait();
}

private static async Task ListingObjectsAsync()


{
try
{
var request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await client.ListObjectsV2Async(request);

// Process the response.


foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);
}
Console.WriteLine("Next Continuation Token: {0}",
response.NextContinuationToken);
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated == true);
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("An AmazonS3Exception was thrown. Exception: " +
amazonS3Exception.ToString());
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
}
}
}
}

Para uma amostra completa da .NET para objetos de listagem, consulte Listar chaves de objeto
programaticamente (p. 150).

Para obter informações sobre como criar e testar um exemplo funcional .NET, consulte Executar os
exemplos de código do Amazon S3 .NET (p. 1044).

Usar endpoints de pilha dupla da API REST


Para obter informações sobre fazer solicitação para endpoints de pilha dupla usando a API REST, consulte
Fazer solicitações para endpoints de pilha dupla usando a API REST (p. 1025).

Fazer solicitações usando os AWS SDKs


Tópicos
• Fazer solicitações usando credenciais de usuário do IAM ou da conta da AWS (p. 999)
• Fazer solicitações usando credenciais temporárias de usuário do IAM (p. 1005)

Versão da API 2006-03-01


998
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

• Fazer solicitações usando credenciais temporárias de usuário federado (p. 1014)

Você pode enviar solicitações autenticadas para o Amazon S3 usando o AWS SDK ou fazendo chamadas
de API REST diretamente em sua aplicação. A API do SDK da AWS usa as credenciais que você fornece
para computar a assinatura para autenticação. Se você usar a API REST diretamente em seus aplicativos,
deverá gravar o código necessário para computar a assinatura para autenticar sua solicitação. Para obter
uma lista de AWS SDKs disponíveis, acesse Código de exemplo e bibliotecas.

Fazer solicitações usando credenciais de usuário do IAM ou da


conta da AWS
É possível usar suas credenciais de segurança de usuário do IAM ou da conta da AWS para enviar
solicitações autenticadas ao Amazon S3. Esta seção fornece exemplos de como é possível enviar
solicitações autenticadas usando o AWS SDK para Java, o AWS SDK para .NET e o AWS SDK para PHP.
Para obter uma lista de AWS SDKs disponíveis, acesse Código de exemplo e bibliotecas.

Cada um desses SDKs da AWS usa uma cadeia de provedor de credenciais específicas do SDK para
encontrar e usar credenciais, além de realizar ações em nome do proprietário das credenciais. O que todas
essas cadeias de provedor de credenciais têm em comum é que elas procuram por seu arquivo local de
credenciais da AWS.

Para obter mais informações, consulte os tópicos abaixo.

Tópicos
• Para criar um arquivo de credenciais local da AWS (p. 999)
• Enviar solicitações autenticadas usando os AWS SDKs (p. 1000)
• Recursos relacionados (p. 1005)

Para criar um arquivo de credenciais local da AWS


A forma mais fácil de configurar credenciais para os SDKs da AWS é usar um arquivo de credenciais da
AWS. Se você usar a interface da linha de comando da AWS (CLI da AWS), talvez já tenha um arquivo
de credenciais da AWS local configurado. Caso contrário, use o procedimento a seguir para configurar um
arquivo de credenciais:

1. Faça login no Console de Gerenciamento da AWS e abra o console do IAM em https://


console.aws.amazon.com/iam/.
2. Crie um novo usuário com permissões limitadas aos serviços e ações aos quais você deseja que seu
código tenha acesso. Para obter mais informações sobre como criar um usuário do IAM, consulte Criar
usuários do IAM (console) e siga as instruções até a etapa 8.
3. Escolha Fazer download do arquivo .csv para salvar uma cópia de suas credenciais da AWS.
4. Em seu computador, navegue para seu diretório inicial e crie um diretório .aws. Nos sistemas
baseados em Unix, como Linux ou OS X, isso fica no seguinte local:

~/.aws

No Windows, isso está no seguinte local:

%HOMEPATH%\.aws

5. No diretório .aws, crie um novo arquivo chamado credentials.


6. Abra o arquivo de credenciais .csv que você baixou do console do IAM e copie o conteúdo dele para o
arquivo credentials usando o seguinte formato:

Versão da API 2006-03-01


999
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

7. Salve o arquivo credentials e exclua o arquivo .csv que você baixou na etapa 3.

Seu arquivo de credenciais compartilhado agora está configurado em seu computador local, e ele está
pronto para ser usado com os SDKs da AWS.

Enviar solicitações autenticadas usando os AWS SDKs


Use os SDKs da AWS para enviar solicitações autenticadas.

Java

Para enviar solicitações autenticadas para o Amazon S3 usando as credenciais de conta da AWS ou
de usuário do IAM, faça o seguinte:

• Use a classe AmazonS3ClientBuilder class para criar uma instância AmazonS3Client.


• Execute um dos métodos do AmazonS3Client para enviar solicitações ao Amazon S3. O cliente
gera a assinatura necessária a partir das credenciais que você fornece e a inclui na solicitação.

O exemplo a seguir realiza as tarefas anteriores. Para obter informações sobre como criar e testar um
exemplo funcional, consulte Testar exemplos de código Java no Amazon S3 (p. 1042).

Example

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;

import java.io.IOException;
import java.util.List;

public class MakingRequests {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";

try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Get a list of objects in the bucket, two at a time, and


// print the name and size of each object.
ListObjectsRequest listRequest = new
ListObjectsRequest().withBucketName(bucketName).withMaxKeys(2);
ObjectListing objects = s3Client.listObjects(listRequest);
while (true) {
List<S3ObjectSummary> summaries = objects.getObjectSummaries();

Versão da API 2006-03-01


1000
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

for (S3ObjectSummary summary : summaries) {


System.out.printf("Object \"%s\" retrieved with size %d\n",
summary.getKey(), summary.getSize());
}
if (objects.isTruncated()) {
objects = s3Client.listNextBatchOfObjects(objects);
} else {
break;
}
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Para enviar solicitações autenticadas usando as credenciais de conta da AWS ou de usuário do IAM:

• Crie uma instância da classe AmazonS3Client.


• Execute um dos métodos do AmazonS3Client para enviar solicitações ao Amazon S3. O cliente
gera a assinatura necessária das credenciais que você fornece e a inclui na solicitação enviada ao
Amazon S3.

Para obter mais informações, consulte Fazer solicitações usando credenciais de usuário do IAM ou da
conta da AWS (p. 999).
Note
• Você pode criar o cliente AmazonS3Client sem fornecer suas credenciais de segurança.
As solicitações enviadas usando esse cliente são solicitações anônimas, sem uma
assinatura. O Amazon S3 retorna um erro se você enviar solicitações anônimas para um
recurso que não esteja disponível publicamente.
• Você pode criar uma conta da AWS e criar as contas de usuário necessárias. Você
também pode gerenciar credenciais para essas contas de usuário. Você precisa dessas
credenciais para executar a tarefa no exemplo a seguir. Para obter mais informações,
consulte Configurar credenciais da AWS no Guia do desenvolvedor do AWS SDK
para .NET.

Em seguida, você também pode configurar seu aplicativo para recuperar ativamente perfis
e credenciais e, em seguida, usar explicitamente essas credenciais ao criar um cliente de
serviço da AWS. Para obter mais informações, consulte Acessando credenciais e perfis em
um aplicativo no Guia do desenvolvedor do AWS SDK para .NET.

O exemplo de C# a seguir mostra como realizar as tarefas anteriores. Para obter informações
sobre como executar exemplos .NET neste guia e para instruções sobre como armazenar suas
credenciais em um arquivo de configuração, consulte Executar os exemplos de código do Amazon
S3 .NET (p. 1044).

Example

using Amazon;

Versão da API 2006-03-01


1001
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class MakeS3RequestTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
using (client = new AmazonS3Client(bucketRegion))
{
Console.WriteLine("Listing objects stored in a bucket");
ListingObjectsAsync().Wait();
}
}

static async Task ListingObjectsAsync()


{
try
{
ListObjectsRequest request = new ListObjectsRequest
{
BucketName = bucketName,
MaxKeys = 2
};
do
{
ListObjectsResponse response = await
client.ListObjectsAsync(request);
// Process the response.
foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);
}

// If the response is truncated, set the marker to get the next


// set of keys.
if (response.IsTruncated)
{
request.Marker = response.NextMarker;
}
else
{
request = null;
}
} while (request != null);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when
writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

Versão da API 2006-03-01


1002
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

}
}

Para obter exemplos funcionais, consulte Visão geral de objetos Amazon S3 (p. 62) e Visão geral dos
buckets (p. 26). É possível testar esses exemplos usando as credenciais de sua conta da AWS ou de
um usuário do IAM.

Por exemplo, para listar todas as chaves de objetos em seu bucket, consulte Listar chaves de objeto
programaticamente (p. 150).
PHP

Esta seção explica como usar uma classe da versão 3 do AWS SDK para PHP para enviar
solicitações autenticadas usando suas credenciais da conta da AWS ou de usuário do IAM.
Pressupõe-se que você já esteja seguindo as instruções de Usar o AWS SDK para PHP e executar
exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

O exemplo de PHP a seguir mostra como o cliente faz uma solicitação usando suas credenciais de
segurança para listar todos os buckets para a sua conta.

Example

require 'vendor/autoload.php';

use Aws\Sts\StsClient;
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([


'region' => 'us-east-1',
'version' => 'latest',
]);

// Retrieve the list of buckets.


$result = $s3->listBuckets();

try {
// Retrieve a paginator for listing objects.
$objects = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);

echo "Keys retrieved!" . PHP_EOL;

// Print the list of objects to the page.


foreach ($objects as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

Note

Você pode criar o cliente S3Client sem fornecer suas credenciais de segurança. As
solicitações enviadas usando esse cliente são solicitações anônimas, sem uma assinatura.
O Amazon S3 retorna um erro se você enviar solicitações anônimas para um recurso que

Versão da API 2006-03-01


1003
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

não esteja disponível publicamente. Para obter mais informações, consulte Criar clientes
anônimos na Documentação do AWS SDK para PHP.

Para ver um exemplo funcional, consulte Visão geral de objetos Amazon S3 (p. 62). É possível testar
esses exemplos usando suas credenciais de usuário do IAM ou da conta da AWS.

Para um exemplo de listagem de chaves de objeto em um bucket, consulte Listar chaves de objeto
programaticamente (p. 150).
Ruby

Para poder usar a versão 3 do AWS SDK para Ruby para fazer chamadas para o Amazon S3, defina
as credenciais de acesso da AWS que o SDK usa para verificar acesso aos seus buckets e objetos.
Se você compartilhou credenciais configuradas no perfil de credenciais da AWS no sistema local,
a versão 3 do SDK para Ruby poderá usar essas credenciais sem que você precise declará-las no
código. Para obter mais informações sobre como configurar credenciais compartilhadas, consulte
Fazer solicitações usando credenciais de usuário do IAM ou da conta da AWS (p. 999).

O trecho de código seguinte do Ruby usa as credenciais de um arquivo de credenciais da AWS


compartilhado em um computador local para autenticar uma solicitação a fim de obter todos os nomes
de chaves de objeto em um bucket específico. Ela faz o seguinte:

1. Cria uma instância da classe Aws::S3::Client.


2. Faz uma solicitação para o Amazon S3, enumerando objetos em um bucket com o método
list_objects_v2 do Aws::S3::Client. O cliente gera o valor de assinatura necessário
com base nas credenciais do arquivo de credenciais da AWS em seu computador e o inclui na
solicitação que envia ao Amazon S3.
3. Imprime o array de nomes de chaves de objeto no terminal.

Example

require 'aws-sdk-s3'

# Prints the list of objects in an Amazon S3 bucket.


#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless list_bucket_objects?(s3_client, 'doc-example-bucket')
def list_bucket_objects?(s3_client, bucket_name)
puts "Accessing the bucket named '#{bucket_name}'..."
objects = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)

if objects.count.positive?
puts 'The object keys in this bucket are (first 50 objects):'
objects.contents.each do |object|
puts object.key
end
else
puts 'No objects found in this bucket.'
end

return true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
return false

Versão da API 2006-03-01


1004
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

end

Se você não tiver um arquivo de credenciais da AWS local, ainda poderá criar o recurso
Aws::S3::Client e executar o código nos buckets e objetos do Amazon S3. As solicitações
enviadas usando a versão 3 do SDK para Ruby são anônimas, sem assinatura por padrão. O Amazon
S3 retornará um erro se você enviar solicitações anônimas para um recurso que não esteja disponível
publicamente.

É possível usar e expandir o trecho de código anterior para aplicações do SDK para Ruby, como no
seguinte exemplo mais robusto.

require 'aws-sdk-s3'

# Prints a list of objects in an Amazon S3 bucket.


#
# Prerequisites:
#
# - An Amazon S3 bucket.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless can_list_bucket_objects?(s3_client, 'doc-example-bucket')
def list_bucket_objects?(s3_client, bucket_name)
puts "Accessing the bucket named '#{bucket_name}'..."
objects = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)

if objects.count.positive?
puts 'The object keys in this bucket are (first 50 objects):'
objects.contents.each do |object|
puts object.key
end
else
puts 'No objects found in this bucket.'
end

return true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
end

Recursos relacionados
• Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034)
• AWS SDK para PHP para a classe Aws\S3\S3Client do Amazon S3
• Documentação do AWS SDK para PHP

Fazer solicitações usando credenciais temporárias de usuário do


IAM
Uma conta da AWS ou um usuário do IAM pode solicitar credenciais de segurança temporárias e usá-las
para enviar solicitações autenticadas ao Amazon S3. Esta seção fornece exemplos de como usar AWS

Versão da API 2006-03-01


1005
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

SDK para Java, .NET e PHP para obter credenciais de segurança temporárias e usá-las para autenticar
suas solicitações para o Amazon S3.

Java

Um usuário do IAM ou uma conta da AWS pode solicitar credenciais de segurança temporárias
(consulte Fazer solicitações (p. 990)) usando o AWS SDK para Java e usá-las para acessar o
Amazon S3. Essas credenciais expiram após a duração da sessão especificada.

Por padrão, a duração da sessão é de uma hora. Se usar credenciais de usuário do IAM, você
poderá especificar a duração ao solicitar as credenciais de segurança temporárias de 15 minutos
até a duração máxima de sessão para a função. Para obter mais informações sobre credenciais de
segurança temporárias, consulte Credenciais de segurança temporárias no Guia do usuário do IAM.
Para mais informações sobre fazer solicitações, consulte Fazer solicitações (p. 990).

Como obter credenciais de segurança temporárias e acesso ao Amazon S3

1. Crie uma instância da classe AWSSecurityTokenService. Para mais informações sobre a


concessão de credenciais, consulte Desenvolvimento com o Amazon S3 usando os AWS SDKs e
exploradores (p. 1034).
2. Recupere as credenciais de segurança temporárias para a função desejada chamando o método
assumeRole() do cliente STS (Security Token Service).
3. Empacote as credenciais de segurança temporárias em um objeto
BasicSessionCredentials. Use esse objeto para fornecer as credenciais de segurança
temporárias para o cliente do Amazon S3.
4. Crie uma instância da classe AmazonS3Client usando as credenciais de segurança
temporárias. Envie solicitações ao Amazon S3 usando esse cliente. Se você enviar solicitações
usando credenciais expiradas, o Amazon S3 retornará um erro.

Note

Se você obtiver as credenciais de segurança temporárias usando suas credenciais de


segurança de conta da AWS, as credenciais temporárias serão válidas somente por uma
hora. Você pode especificar a duração de sessão somente se usar credenciais de usuário do
IAM para solicitar uma sessão.

O exemplo a seguir lista um conjunto de chaves de objeto no bucket especificado. O exemplo obtém
credenciais de segurança temporárias para uma sessão e usa essas credenciais para enviar uma
solicitação autenticada ao Amazon S3.

Se você desejar testar o exemplo usando credenciais de usuário do IAM, crie um usuário do IAM em
sua conta da AWS. Para obter mais informações sobre como criar um usuário do IAM, consulte Criar o
primeiro usuário do IAM e grupo de administradores no Guia do usuário do IAM.

Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;

Versão da API 2006-03-01


1006
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

import com.amazonaws.services.securitytoken.model.AssumeRoleRequest;
import com.amazonaws.services.securitytoken.model.AssumeRoleResult;
import com.amazonaws.services.securitytoken.model.Credentials;

public class MakingRequestsWithIAMTempCredentials {


public static void main(String[] args) {
String clientRegion = "*** Client region ***";
String roleARN = "*** ARN for role to be assumed ***";
String roleSessionName = "*** Role session name ***";
String bucketName = "*** Bucket name ***";

try {
// Creating the STS client is part of your trusted code. It has
// the security credentials you use to obtain temporary security
credentials.
AWSSecurityTokenService stsClient =
AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new
ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

// Obtain credentials for the IAM role. Note that you cannot assume the
role of an AWS root account;
// Amazon S3 will deny access. You must use credentials for an IAM user or
an IAM role.
AssumeRoleRequest roleRequest = new AssumeRoleRequest()
.withRoleArn(roleARN)

.withRoleSessionName(roleSessionName);
AssumeRoleResult roleResponse = stsClient.assumeRole(roleRequest);
Credentials sessionCredentials = roleResponse.getCredentials();

// Create a BasicSessionCredentials object that contains the credentials


you just retrieved.
BasicSessionCredentials awsCredentials = new BasicSessionCredentials(
sessionCredentials.getAccessKeyId(),
sessionCredentials.getSecretAccessKey(),
sessionCredentials.getSessionToken());

// Provide temporary security credentials so that the Amazon S3 client


// can send authenticated requests to Amazon S3. You create the client
// using the sessionCredentials object.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new
AWSStaticCredentialsProvider(awsCredentials))
.withRegion(clientRegion)
.build();

// Verify that assuming the role worked and the permissions are set
correctly
// by getting a set of object keys from the bucket.
ObjectListing objects = s3Client.listObjects(bucketName);
System.out.println("No. of Objects: " +
objects.getObjectSummaries().size());
}
catch(AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
}
catch(SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}

Versão da API 2006-03-01


1007
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

}
}

.NET

Um usuário do IAM ou uma conta da AWS pode solicitar credenciais de segurança temporárias
usando o AWS SDK para .NET e usá-las para acessar o Amazon S3. Essas credenciais expiram após
a duração da sessão.

Por padrão, a duração da sessão é de uma hora. Se usar credenciais de usuário do IAM, você
poderá especificar a duração ao solicitar as credenciais de segurança temporárias de 15 minutos
até a duração máxima de sessão para a função. Para obter mais informações sobre credenciais de
segurança temporárias, consulte Credenciais de segurança temporárias no Guia do usuário do IAM.
Para mais informações sobre fazer solicitações, consulte Fazer solicitações (p. 990).

Como obter credenciais de segurança temporárias e acesso ao Amazon S3

1. Crie uma instância do cliente do AWS Security Token Service,


AmazonSecurityTokenServiceClient. Para mais informações sobre a concessão
de credenciais, consulte Desenvolvimento com o Amazon S3 usando os AWS SDKs e
exploradores (p. 1034).
2. Inicie uma sessão chamando o método GetSessionToken do cliente STS criado na
etapa anterior. Forneça informações da sessão para esse método usando um objeto
GetSessionTokenRequest.

O método retorna as credenciais de segurança temporárias.


3. Empacote as credenciais de segurança temporárias em uma instância do objeto
SessionAWSCredentials. Use esse objeto para fornecer as credenciais de segurança
temporárias para o cliente do Amazon S3.
4. Crie uma instância da classe AmazonS3Client passando as credenciais de segurança
temporárias. Envie solicitações ao Amazon S3 usando esse cliente. Se você enviar solicitações
usando credenciais expiradas, o Amazon S3 retornará um erro.

Note

Se você obtiver as credenciais de segurança temporárias usando suas credenciais de


segurança de conta da AWS, as credenciais serão válidas somente por uma hora. Você
poderá especificar a duração de sessão somente se usar as credenciais de usuário do IAM
para solicitar uma sessão.

O exemplo do C# a seguir lista chaves de objeto no bucket especificado. Como ilustração, o exemplo
obtém credenciais de segurança temporárias para uma sessão padrão de uma hora e usa essas
credenciais para enviar uma solicitação autenticada ao Amazon S3.

Para testar o exemplo usando credenciais de usuário do IAM, crie um usuário do IAM em sua conta
da AWS. Para obter mais informações sobre como criar um usuário do IAM, consulte Criar o primeiro
usuário do IAM e grupo de administradores no Guia do usuário do IAM. Para mais informações sobre
fazer solicitações, consulte Fazer solicitações (p. 990).

Para obter instruções sobre criar e testar um exemplo funcional, consulte Executar os exemplos de
código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.SecurityToken;

Versão da API 2006-03-01


1008
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

using Amazon.SecurityToken.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class TempCredExplicitSessionStartTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
public static void Main()
{
ListObjectsAsync().Wait();
}

private static async Task ListObjectsAsync()


{
try
{
// Credentials use the default AWS SDK for .NET credential search
chain.
// On local development machines, this is your default profile.
Console.WriteLine("Listing objects stored in a bucket");
SessionAWSCredentials tempCredentials = await
GetTemporaryCredentialsAsync();

// Create a client by providing temporary security credentials.


using (s3Client = new AmazonS3Client(tempCredentials, bucketRegion))
{
var listObjectRequest = new ListObjectsRequest
{
BucketName = bucketName
};
// Send request to Amazon S3.
ListObjectsResponse response = await
s3Client.ListObjectsAsync(listObjectRequest);
List<S3Object> objects = response.S3Objects;
Console.WriteLine("Object count = {0}", objects.Count);
}
}
catch (AmazonS3Exception s3Exception)
{
Console.WriteLine(s3Exception.Message, s3Exception.InnerException);
}
catch (AmazonSecurityTokenServiceException stsException)
{
Console.WriteLine(stsException.Message, stsException.InnerException);
}
}

private static async Task<SessionAWSCredentials> GetTemporaryCredentialsAsync()


{
using (var stsClient = new AmazonSecurityTokenServiceClient())
{
var getSessionTokenRequest = new GetSessionTokenRequest
{
DurationSeconds = 7200 // seconds
};

GetSessionTokenResponse sessionTokenResponse =
await
stsClient.GetSessionTokenAsync(getSessionTokenRequest);

Versão da API 2006-03-01


1009
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

Credentials credentials = sessionTokenResponse.Credentials;

var sessionCredentials =
new SessionAWSCredentials(credentials.AccessKeyId,
credentials.SecretAccessKey,
credentials.SessionToken);
return sessionCredentials;
}
}
}
}

PHP

Este exemplo pressupõe que você já esteja seguindo as instruções para Usar o AWS SDK para PHP
e executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente instalado.

Um usuário do IAM ou uma conta da AWS pode solicitar credenciais de segurança temporárias
usando a versão 3 do AWS SDK para PHP. Posteriormente, as credenciais temporárias podem ser
usadas para acessar o Amazon S3. As credenciais expiram quando a duração da sessão expira.

Por padrão, a duração da sessão é de uma hora. Se usar credenciais de usuário do IAM, você
poderá especificar a duração ao solicitar as credenciais de segurança temporárias de 15 minutos
até a duração máxima de sessão para a função. Para obter mais informações sobre credenciais de
segurança temporárias, consulte Credenciais de segurança temporárias no Guia do usuário do IAM.
Para mais informações sobre fazer solicitações, consulte Fazer solicitações (p. 990).
Note

Se você obtiver as credenciais de segurança temporárias usando suas credenciais de


segurança de conta da AWS, as credenciais de segurança temporárias serão válidas
somente por uma hora. Você pode especificar a duração de sessão somente se usar
credenciais de usuário do IAM para solicitar uma sessão.

Example

O exemplo de PHP a seguir lista as chaves de objeto no bucket especificado usando credenciais de
segurança temporárias. O exemplo obtém credenciais de segurança temporárias para uma sessão
padrão de uma hora e usa essas credenciais para enviar uma solicitação autenticada ao Amazon
S3. Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

Para testar o exemplo usando credenciais de usuário do IAM, crie um usuário do IAM em sua conta da
AWS. Para obter informações sobre como criar um usuário do IAM, consulte Criar o primeiro usuário
do IAM e grupo de administradores no Guia do usuário do IAM. Para obter exemplos de definição de
duração de sessão usando credenciais de usuário do IAM para solicitar uma sessão, consulte Fazer
solicitações usando credenciais temporárias de usuário do IAM (p. 1005).

require 'vendor/autoload.php';

use Aws\Sts\StsClient;
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';

$sts = new StsClient([


'version' => 'latest',
'region' => 'us-east-1'
]);

Versão da API 2006-03-01


1010
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

$sessionToken = $sts->getSessionToken();

$s3 = new S3Client([


'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => $sessionToken['Credentials']['AccessKeyId'],
'secret' => $sessionToken['Credentials']['SecretAccessKey'],
'token' => $sessionToken['Credentials']['SessionToken']
]
]);

$result = $s3->listBuckets();

try {
// Retrieve a paginator for listing objects.
$objects = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);

echo "Keys retrieved!" . PHP_EOL;

// List objects
foreach ($objects as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

Ruby

Um usuário do IAM ou uma conta da AWS pode solicitar credenciais de segurança temporárias
usando o AWS SDK para Ruby e usá-las para acessar o Amazon S3. Essas credenciais expiram após
a duração da sessão.

Por padrão, a duração da sessão é de uma hora. Se usar credenciais de usuário do IAM, você
poderá especificar a duração ao solicitar as credenciais de segurança temporárias de 15 minutos
até a duração máxima de sessão para a função. Para obter mais informações sobre credenciais de
segurança temporárias, consulte Credenciais de segurança temporárias no Guia do usuário do IAM.
Para mais informações sobre fazer solicitações, consulte Fazer solicitações (p. 990).
Note

Se você obtiver as credenciais de segurança temporárias usando suas credenciais de


segurança de conta da AWS, as credenciais de segurança temporárias serão válidas
somente por uma hora. É possível especificar a duração da sessão somente ao usar as
credenciais de usuário do IAM para solicitar uma sessão.

O seguinte exemplo de Ruby cria um usuário temporário para listar os itens em um bucket
especificado por uma hora. Para usar este exemplo, você deve ter credenciais da AWS que tenham as
permissões necessárias para criar novos clientes do AWS Security Token Service (AWS STS) e listar
buckets do Amazon S3.

require 'aws-sdk-core'
require 'aws-sdk-s3'
require 'aws-sdk-iam'

# Checks whether a user exists in IAM.


#
# @param iam [Aws::IAM::Client] An initialized IAM client.
# @param user_name [String] The user's name.

Versão da API 2006-03-01


1011
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

# @return [Boolean] true if the user exists; otherwise, false.


# @example
# iam_client = Aws::IAM::Client.new(region: 'us-east-1')
# exit 1 unless user_exists?(iam_client, 'my-user')
def user_exists?(iam_client, user_name)
response = iam_client.get_user(user_name: user_name)
return true if response.user.user_name
rescue Aws::IAM::Errors::NoSuchEntity
# User doesn't exist.
rescue StandardError => e
puts 'Error while determining whether the user ' \
"'#{user_name}' exists: #{e.message}"
end

# Creates a user in IAM.


#
# @param iam_client [Aws::IAM::Client] An initialized IAM client.
# @param user_name [String] The user's name.
# @return [AWS:IAM::Types::User] The new user.
# @example
# iam_client = Aws::IAM::Client.new(region: 'us-east-1')
# user = create_user(iam_client, 'my-user')
# exit 1 unless user.user_name
def create_user(iam_client, user_name)
response = iam_client.create_user(user_name: user_name)
return response.user
rescue StandardError => e
puts "Error while creating the user '#{user_name}': #{e.message}"
end

# Gets a user in IAM.


#
# @param iam_client [Aws::IAM::Client] An initialized IAM client.
# @param user_name [String] The user's name.
# @return [AWS:IAM::Types::User] The existing user.
# @example
# iam_client = Aws::IAM::Client.new(region: 'us-east-1')
# user = get_user(iam_client, 'my-user')
# exit 1 unless user.user_name
def get_user(iam_client, user_name)
response = iam_client.get_user(user_name: user_name)
return response.user
rescue StandardError => e
puts "Error while getting the user '#{user_name}': #{e.message}"
end

# Checks whether a role exists in IAM.


#
# @param iam_client [Aws::IAM::Client] An initialized IAM client.
# @param role_name [String] The role's name.
# @return [Boolean] true if the role exists; otherwise, false.
# @example
# iam_client = Aws::IAM::Client.new(region: 'us-east-1')
# exit 1 unless role_exists?(iam_client, 'my-role')
def role_exists?(iam_client, role_name)
response = iam_client.get_role(role_name: role_name)
return true if response.role.role_name
rescue StandardError => e
puts 'Error while determining whether the role ' \
"'#{role_name}' exists: #{e.message}"
end

# Gets credentials for a role in IAM.


#
# @param sts_client [Aws::STS::Client] An initialized AWS STS client.
# @param role_arn [String] The role's Amazon Resource Name (ARN).

Versão da API 2006-03-01


1012
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

# @param role_session_name [String] A name for this role's session.


# @param duration_seconds [Integer] The number of seconds this session is valid.
# @return [AWS::AssumeRoleCredentials] The credentials.
# @example
# sts_client = Aws::STS::Client.new(region: 'us-east-1')
# credentials = get_credentials(
# sts_client,
# 'arn:aws:iam::123456789012:role/AmazonS3ReadOnly',
# 'ReadAmazonS3Bucket',
# 3600
# )
# exit 1 if credentials.nil?
def get_credentials(sts_client, role_arn, role_session_name, duration_seconds)
Aws::AssumeRoleCredentials.new(
client: sts_client,
role_arn: role_arn,
role_session_name: role_session_name,
duration_seconds: duration_seconds
)
rescue StandardError => e
puts "Error while getting credentials: #{e.message}"
end

# Checks whether a bucket exists in Amazon S3.


#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The name of the bucket.
# @return [Boolean] true if the bucket exists; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless bucket_exists?(s3_client, 'doc-example-bucket')
def bucket_exists?(s3_client, bucket_name)
response = s3_client.list_buckets
response.buckets.each do |bucket|
return true if bucket.name == bucket_name
end
rescue StandardError => e
puts "Error while checking whether the bucket '#{bucket_name}' " \
"exists: #{e.message}"
end

# Lists the keys and ETags for the objects in an Amazon S3 bucket.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if the objects were listed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless list_objects_in_bucket?(s3_client, 'doc-example-bucket')
def list_objects_in_bucket?(s3_client, bucket_name)
puts "Accessing the contents of the bucket named '#{bucket_name}'..."
response = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)

if response.count.positive?
puts "Contents of the bucket named '#{bucket_name}' (first 50 objects):"
puts 'Name => ETag'
response.contents.each do |obj|
puts "#{obj.key} => #{obj.etag}"
end
else
puts "No objects in the bucket named '#{bucket_name}'."
end
return true

Versão da API 2006-03-01


1013
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

rescue StandardError => e


puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
end

Recursos relacionados
• Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034)
• AWS SDK para PHP para a classe Aws\S3\S3Client do Amazon S3
• Documentação do AWS SDK para PHP

Fazer solicitações usando credenciais temporárias de usuário


federado
Solicite credenciais de segurança temporárias e forneça-as aos aplicativos ou aos usuários federados que
precisam de acesso aos recursos da AWS. Esta seção fornece exemplos de como usar o AWS SDK para
obter credenciais de segurança temporárias para as aplicações ou usuários federados e enviar solicitações
autenticadas ao Amazon S3 usando essas credenciais. Para obter uma lista de AWS SDKs disponíveis,
consulte Código de exemplo e bibliotecas.
Note

Tanto a conta da AWS quanto um usuário do IAM podem solicitar credenciais de segurança
temporárias para usuários federados. No entanto, para melhor segurança, somente um usuário
do IAM com as permissões necessárias deve solicitar essas credenciais temporárias para
garantir que o usuário federado obtenha, no máximo, as mesmas permissões do usuário do
IAM solicitante. Em algumas aplicações, pode ser apropriado criar um usuário do IAM com
permissões específicas com o único propósito de conceder credenciais de segurança temporárias
às aplicações e aos usuários federados.

Java

Forneça credenciais de segurança temporárias para os aplicativos e os usuários federados a fim


de que eles possam enviar solicitações autenticadas para acessar os recursos da AWS. Ao solicitar
essas credenciais temporárias, forneça um nome de usuário e uma política do IAM que descreva
as permissões de recursos que você deseja conceder. Por padrão, a duração da sessão é de uma
hora. Defina explicitamente um valor de duração diferente ao solicitar as credenciais de segurança
temporárias para aplicativos e usuários federados.
Note

Para garantir segurança adicional ao solicitar credenciais de segurança temporárias para


usuários federados e aplicações, recomendamos usar um usuário dedicado do IAM apenas
com as permissões de acesso necessárias. O usuário temporário criado nunca pode ter mais
permissões que o usuário do IAM que solicitou as credenciais de segurança temporárias.
Para obter mais informações, consulte Perguntas frequentes sobre o AWS Identity and
Access Management.

Para fornecer credenciais de segurança e enviar solicitações autenticadas para acessar recursos, faça
o seguinte:

• Crie uma instância da classe AWSSecurityTokenServiceClient. Para mais informações sobre


a concessão de credenciais, consulte Usar o AWS SDK para Java (p. 1041).
• Inicie uma sessão chamando o método getFederationToken() do cliente Security Token
Service (STS). Forneça informações da sessão, incluindo o nome de usuário e uma política do IAM,
que você deseja anexar às credenciais temporárias. Forneça uma duração de sessão opcional.
Esse método retorna suas credenciais de segurança temporárias.

Versão da API 2006-03-01


1014
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

• Empacote as credenciais de segurança temporárias em uma instância do objeto


BasicSessionCredentials. Use esse objeto para fornecer as credenciais de segurança
temporárias para o cliente do Amazon S3.
• Crie uma instância da classe AmazonS3Client usando as credenciais de segurança temporárias.
Envie solicitações ao Amazon S3 usando esse cliente. Se você enviar solicitações usando
credenciais expiradas, o Amazon S3 retornará um erro.

Example

O exemplo lista chaves no bucket especificado do S3. No exemplo, você obtém credenciais de
segurança temporárias para uma sessão de duas horas para o usuário federado e usa as credenciais
para enviar solicitações autenticadas ao Amazon S3. Para executar o exemplo, crie um usuário do
IAM com a política anexada que permita ao usuário solicitar as credenciais de segurança temporárias
e listar os recursos da AWS. A política seguinte faz isso:

{
"Statement":[{
"Action":["s3:ListBucket",
"sts:GetFederationToken*"
],
"Effect":"Allow",
"Resource":"*"
}
]
}

Para obter mais informações sobre como criar um usuário do IAM, consulte Criar o primeiro usuário do
IAM e grupo de administradores no Guia do usuário do IAM.

Após criar um usuário do IAM e anexar a política anterior, você poderá executar o exemplo a seguir.
Para obter instruções sobre criar e testar um exemplo funcional, consulte Testar exemplos de código
Java no Amazon S3 (p. 1042).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.auth.policy.Policy;
import com.amazonaws.auth.policy.Resource;
import com.amazonaws.auth.policy.Statement;
import com.amazonaws.auth.policy.Statement.Effect;
import com.amazonaws.auth.policy.actions.S3Actions;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;

import java.io.IOException;

public class MakingRequestsWithFederatedTempCredentials {

public static void main(String[] args) throws IOException {


Regions clientRegion = Regions.DEFAULT_REGION;

Versão da API 2006-03-01


1015
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

String bucketName = "*** Specify bucket name ***";


String federatedUser = "*** Federated user name ***";
String resourceARN = "arn:aws:s3:::" + bucketName;

try {
AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder
.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();

GetFederationTokenRequest getFederationTokenRequest = new


GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(7200);
getFederationTokenRequest.setName(federatedUser);

// Define the policy and add it to the request.


Policy policy = new Policy();
policy.withStatements(new Statement(Effect.Allow)
.withActions(S3Actions.ListObjects)
.withResources(new Resource(resourceARN)));
getFederationTokenRequest.setPolicy(policy.toJson());

// Get the temporary security credentials.


GetFederationTokenResult federationTokenResult =
stsClient.getFederationToken(getFederationTokenRequest);
Credentials sessionCredentials = federationTokenResult.getCredentials();

// Package the session credentials as a BasicSessionCredentials


// object for an Amazon S3 client object to use.
BasicSessionCredentials basicSessionCredentials = new
BasicSessionCredentials(
sessionCredentials.getAccessKeyId(),
sessionCredentials.getSecretAccessKey(),
sessionCredentials.getSessionToken());
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new
AWSStaticCredentialsProvider(basicSessionCredentials))
.withRegion(clientRegion)
.build();

// To verify that the client works, send a listObjects request using


// the temporary security credentials.
ObjectListing objects = s3Client.listObjects(bucketName);
System.out.println("No. of Objects = " +
objects.getObjectSummaries().size());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

.NET

Forneça credenciais de segurança temporárias para os aplicativos e os usuários federados a fim


de que eles possam enviar solicitações autenticadas para acessar os recursos da AWS. Ao solicitar
essas credenciais temporárias, forneça um nome de usuário e uma política do IAM que descreva
as permissões de recursos que você deseja conceder. Por padrão, a duração de uma sessão é

Versão da API 2006-03-01


1016
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

de uma hora. Defina explicitamente um valor de duração diferente ao solicitar as credenciais de


segurança temporárias para aplicativos e usuários federados. Para obter informações sobre o envio
de solicitações autenticadas, consulte Fazer solicitações (p. 990).
Note

Ao solicitar credenciais de segurança temporárias para usuários federados e aplicações, a


fim de garantir segurança adicional, recomendamos que você use um usuário dedicado do
IAM apenas com as permissões de acesso necessárias. O usuário temporário criado nunca
pode ter mais permissões que o usuário do IAM que solicitou as credenciais de segurança
temporárias. Para obter mais informações, consulte Perguntas frequentes sobre o AWS
Identity and Access Management.

Faça o seguinte:

• Crie uma instância do cliente do AWS Security Token Service, classe


AmazonSecurityTokenServiceClient. Para mais informações sobre a concessão de
credenciais, consulte Usar o AWS SDK para .NET (p. 1043).
• Inicie uma sessão chamando o método GetFederationToken do cliente STS. Forneça as
informações da sessão, incluindo o nome de usuário e uma política do IAM que você deseja anexar
às credenciais temporárias. Como opção, você pode fornecer uma duração de sessão. Esse método
retorna suas credenciais de segurança temporárias.
• Empacote as credenciais de segurança temporárias em uma instância do objeto
SessionAWSCredentials. Use esse objeto para fornecer as credenciais de segurança
temporárias para o cliente do Amazon S3.
• Crie uma instância da classe AmazonS3Client enviando as credenciais de segurança temporárias.
Use este cliente para enviar solicitações ao Amazon S3. Se você enviar solicitações usando
credenciais expiradas, o Amazon S3 retornará um erro.

Example

O exemplo do C# a seguir lista as chaves no bucket especificado. No exemplo, você obtém


credenciais de segurança temporárias para uma sessão de duas horas para o usuário federado
(User1), e usa as credenciais para enviar solicitações autenticadas ao Amazon S3.

• Neste exercício, você criará um usuário do IAM com permissões mínimas. Usando as credenciais
desse usuário do IAM, solicite credenciais temporárias para terceiros. Este exemplo lista somente
os objetos em um bucket específico. Crie um usuário do IAM com a política a seguir anexada:

{
"Statement":[{
"Action":["s3:ListBucket",
"sts:GetFederationToken*"
],
"Effect":"Allow",
"Resource":"*"
}
]
}

A política permite que o usuário do IAM solicite credenciais de segurança temporárias e permissão
de acesso apenas para listar os recursos da AWS. Para obter mais informações sobre como criar
um usuário do IAM, consulte Criar o primeiro usuário do IAM e grupo de administradores no Guia do
usuário do IAM.
• Use as credenciais de segurança do usuário do IAM para testar o exemplo a seguir. O exemplo
envia a solicitação autenticada ao Amazon S3 usando credenciais de segurança temporárias. O
exemplo especifica a política a seguir ao solicitar credenciais de segurança temporárias para o

Versão da API 2006-03-01


1017
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

usuário federado (User1), que restringe o acesso aos objetos de lista em um bucket específico
(YourBucketName). É necessário atualizar a política e fornecer um nome de bucket existente.

{
"Statement":[
{
"Sid":"1",
"Action":["s3:ListBucket"],
"Effect":"Allow",
"Resource":"arn:aws:s3:::YourBucketName"
}
]
}

• Example

Atualize o exemplo a seguir e forneça o nome de bucket especificado na política de acesso do


usuário federado anterior. Para obter instruções sobre como criar e testar um exemplo funcional,
consulte Executar os exemplos de código do Amazon S3 .NET (p. 1044).

using Amazon;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
class TempFederatedCredentialsTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;

public static void Main()


{
ListObjectsAsync().Wait();
}

private static async Task ListObjectsAsync()


{
try
{
Console.WriteLine("Listing objects stored in a bucket");
// Credentials use the default AWS SDK for .NET credential search
chain.
// On local development machines, this is your default profile.
SessionAWSCredentials tempCredentials =
await GetTemporaryFederatedCredentialsAsync();

// Create a client by providing temporary security credentials.


using (client = new AmazonS3Client(bucketRegion))
{
ListObjectsRequest listObjectRequest = new ListObjectsRequest();
listObjectRequest.BucketName = bucketName;

ListObjectsResponse response = await


client.ListObjectsAsync(listObjectRequest);
List<S3Object> objects = response.S3Objects;

Versão da API 2006-03-01


1018
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

Console.WriteLine("Object count = {0}", objects.Count);

Console.WriteLine("Press any key to continue...");


Console.ReadKey();
}
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered ***. Message:'{0}' when writing
an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when
writing an object", e.Message);
}
}

private static async Task<SessionAWSCredentials>


GetTemporaryFederatedCredentialsAsync()
{
AmazonSecurityTokenServiceConfig config = new
AmazonSecurityTokenServiceConfig();
AmazonSecurityTokenServiceClient stsClient =
new AmazonSecurityTokenServiceClient(
config);

GetFederationTokenRequest federationTokenRequest =
new GetFederationTokenRequest();
federationTokenRequest.DurationSeconds = 7200;
federationTokenRequest.Name = "User1";
federationTokenRequest.Policy = @"{
""Statement"":
[
{
""Sid"":""Stmt1311212314284"",
""Action"":[""s3:ListBucket""],
""Effect"":""Allow"",
""Resource"":""arn:aws:s3:::" + bucketName + @"""
}
]
}
";

GetFederationTokenResponse federationTokenResponse =
await
stsClient.GetFederationTokenAsync(federationTokenRequest);
Credentials credentials = federationTokenResponse.Credentials;

SessionAWSCredentials sessionCredentials =
new SessionAWSCredentials(credentials.AccessKeyId,
credentials.SecretAccessKey,
credentials.SessionToken);
return sessionCredentials;
}
}
}

PHP

Este tópico explica como usar classes da versão 3 do AWS SDK para PHP para solicitar credenciais
de segurança temporárias para aplicações e usuários federados, e usá-las para acessar recursos
armazenados no Amazon S3. Pressupõe-se que você já esteja seguindo as instruções de Usar o AWS

Versão da API 2006-03-01


1019
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

SDK para PHP e executar exemplos do PHP (p. 1044) e tenha o AWS SDK para PHP devidamente
instalado.

Forneça credenciais de segurança temporárias para os aplicativos e os usuários federados para


que eles possam enviar solicitações autenticadas para acessar os recursos da AWS. Ao solicitar
essas credenciais temporárias, forneça um nome de usuário e uma política do IAM que descreva as
permissões de recursos que você deseja conceder. Essas credenciais expiram quando a duração da
sessão expira. Por padrão, a duração da sessão é de uma hora. Defina explicitamente um valor de
duração diferente ao solicitar as credenciais de segurança temporárias para aplicativos e usuários
federados. Para obter mais informações sobre credenciais de segurança temporárias, consulte
Credenciais de segurança temporárias no Guia do usuário do IAM. Para obter informações sobre
como fornecer credenciais de segurança temporárias para aplicativos e usuários federados, consulte
Fazer solicitações (p. 990).

Para garantir segurança adicional ao solicitar credenciais de segurança temporárias para usuários
federados e aplicações, recomendamos usar um usuário dedicado do IAM apenas com as permissões
de acesso necessárias. O usuário temporário criado nunca pode ter mais permissões que o usuário do
IAM que solicitou as credenciais de segurança temporárias. Para obter informações sobre a federação
de identidades, consulte Perguntas frequentes sobre o AWS Identity and Access Management.

Para obter informações sobre a execução dos exemplos de PHP neste guia, consulte Executar
exemplos do PHP (p. 1045).

Example

O exemplo PHP a seguir lista chaves no bucket especificado. No exemplo, você obtém credenciais de
segurança temporárias para uma sessão de uma hora para o usuário federado (User1). Depois, use
as credenciais de segurança temporárias para enviar solicitações autenticadas ao Amazon S3.

Para maior segurança, ao solicitar credenciais temporárias para terceiros, use as credenciais
de segurança de um usuário do IAM com permissões para solicitar credenciais de segurança
temporárias. Para garantir que o usuário do IAM conceda apenas as permissões mínimas específicas
da aplicação ao usuário federado, você também pode limitar as permissões de acesso desse usuário
do IAM. Este exemplo lista somente objetos em um bucket específico. Crie um usuário do IAM com a
política a seguir anexada:

{
"Statement":[{
"Action":["s3:ListBucket",
"sts:GetFederationToken*"
],
"Effect":"Allow",
"Resource":"*"
}
]
}

A política permite que o usuário do IAM solicite credenciais de segurança temporárias e permissão
de acesso apenas para listar os recursos da AWS. Para obter mais informações sobre como criar
um usuário do IAM, consulte Criar o primeiro usuário do IAM e grupo de administradores no Guia do
usuário do IAM.

Agora é possível usar as credenciais de segurança do usuário do IAM para testar o exemplo a seguir.
O exemplo envia uma solicitação autenticada ao Amazon S3 usando credenciais de segurança
temporárias. Ao solicitar credenciais de segurança temporárias para o usuário federado (User1),
o exemplo especifica a política a seguir, que restringe o acesso aos objetos de lista em um bucket
específico. Atualizar a política com o nome do seu bucket.

Versão da API 2006-03-01


1020
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

"Statement":[
{
"Sid":"1",
"Action":["s3:ListBucket"],
"Effect":"Allow",
"Resource":"arn:aws:s3:::YourBucketName"
}
]
}

No exemplo a seguir, ao especificar o recurso de política, substitua YourBucketName pelo seu


próprio nome de bucket:

require 'vendor/autoload.php';

use Aws\Sts\StsClient;
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';

// In real applications, the following code is part of your trusted code. It has
// the security credentials that you use to obtain temporary security credentials.
$sts = new StsClient(
[
'version' => 'latest',
'region' => 'us-east-1']
);

// Fetch the federated credentials.


$sessionToken = $sts->getFederationToken([
'Name' => 'User1',
'DurationSeconds' => '3600',
'Policy' => json_encode([
'Statement' => [
'Sid' => 'randomstatementid' . time(),
'Action' => ['s3:ListBucket'],
'Effect' => 'Allow',
'Resource' => 'arn:aws:s3:::' . $bucket
]
])
]);

// The following will be part of your less trusted code. You provide temporary
// security credentials so the code can send authenticated requests to Amazon S3.

$s3 = new S3Client([


'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => $sessionToken['Credentials']['AccessKeyId'],
'secret' => $sessionToken['Credentials']['SecretAccessKey'],
'token' => $sessionToken['Credentials']['SessionToken']
]
]);

try {
$result = $s3->listObjects([
'Bucket' => $bucket
]);
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

Versão da API 2006-03-01


1021
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

Ruby

Forneça credenciais de segurança temporárias para os aplicativos e os usuários federados a fim


de que eles possam enviar solicitações autenticadas para acessar os recursos da AWS. Ao solicitar
essas credenciais temporárias do serviço do IAM, forneça um nome de usuário e uma política do
IAM que descreva as permissões de recurso que você deseja conceder. Por padrão, a duração
da sessão é de uma hora. No entanto, se estiver solicitando credenciais temporárias usando
credenciais de usuário do IAM, defina explicitamente um valor de duração diferente ao solicitar as
credenciais de segurança temporárias para usuários federados e aplicações. Para obter informações
sobre credenciais de segurança temporárias para aplicativos e usuários federados, consulte Fazer
solicitações (p. 990).
Note

Para garantir segurança adicional ao solicitar credenciais de segurança temporárias


para usuários federados e aplicações, use um usuário dedicado do IAM apenas com as
permissões de acesso necessárias. O usuário temporário criado nunca pode ter mais
permissões que o usuário do IAM que solicitou as credenciais de segurança temporárias.
Para obter mais informações, consulte Perguntas frequentes sobre o AWS Identity and
Access Management.

Example

O exemplo de código Ruby a seguir permite que um usuário federado com um conjunto limitado de
permissões listar as chaves no bucket específico.

require 'aws-sdk-s3'
require 'aws-sdk-iam'
require 'json'

# Checks to see whether a user exists in IAM; otherwise,


# creates the user.
#
# @param iam [Aws::IAM::Client] An initialized IAM client.
# @param user_name [String] The user's name.
# @return [Aws::IAM::Types::User] The existing or new user.
# @example
# iam = Aws::IAM::Client.new(region: 'us-east-1')
# user = get_user(iam, 'my-user')
# exit 1 unless user.user_name
# puts "User's name: #{user.user_name}"
def get_user(iam, user_name)
puts "Checking for a user with the name '#{user_name}'..."
response = iam.get_user(user_name: user_name)
puts "A user with the name '#{user_name}' already exists."
return response.user
# If the user doesn't exist, create them.
rescue Aws::IAM::Errors::NoSuchEntity
puts "A user with the name '#{user_name}' doesn't exist. Creating this user..."
response = iam.create_user(user_name: user_name)
iam.wait_until(:user_exists, user_name: user_name)
puts "Created user with the name '#{user_name}'."
return response.user
rescue StandardError => e
puts "Error while accessing or creating the user named '#{user_name}': #{e.message}"
end

# Gets temporary AWS credentials for an IAM user with the specified permissions.
#
# @param sts [Aws::STS::Client] An initialized AWS STS client.
# @param duration_seconds [Integer] The number of seconds for valid credentials.
# @param user_name [String] The user's name.

Versão da API 2006-03-01


1022
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando os AWS SDKs

# @param policy [Hash] The access policy.


# @return [Aws::STS::Types::Credentials] AWS credentials for API authentication.
# @example
# sts = Aws::STS::Client.new(region: 'us-east-1')
# credentials = get_temporary_credentials(sts, duration_seconds, user_name,
# {
# 'Version' => '2012-10-17',
# 'Statement' => [
# 'Sid' => 'Stmt1',
# 'Effect' => 'Allow',
# 'Action' => 's3:ListBucket',
# 'Resource' => 'arn:aws:s3:::doc-example-bucket'
# ]
# }
# )
# exit 1 unless credentials.access_key_id
# puts "Access key ID: #{credentials.access_key_id}"
def get_temporary_credentials(sts, duration_seconds, user_name, policy)
response = sts.get_federation_token(
duration_seconds: duration_seconds,
name: user_name,
policy: policy.to_json
)
return response.credentials
rescue StandardError => e
puts "Error while getting federation token: #{e.message}"
end

# Lists the keys and ETags for the objects in an Amazon S3 bucket.
#
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if the objects were listed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-east-1')
# exit 1 unless list_objects_in_bucket?(s3_client, 'doc-example-bucket')
def list_objects_in_bucket?(s3_client, bucket_name)
puts "Accessing the contents of the bucket named '#{bucket_name}'..."
response = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)

if response.count.positive?
puts "Contents of the bucket named '#{bucket_name}' (first 50 objects):"
puts 'Name => ETag'
response.contents.each do |obj|
puts "#{obj.key} => #{obj.etag}"
end
else
puts "No objects in the bucket named '#{bucket_name}'."
end
return true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
end

Recursos relacionados
• Desenvolvimento com o Amazon S3 usando os AWS SDKs e exploradores (p. 1034)
• AWS SDK para PHP para a classe Aws\S3\S3Client do Amazon S3
• Documentação do AWS SDK para PHP

Versão da API 2006-03-01


1023
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Fazer solicitações usando a API REST


Esta seção contém informações sobre como fazer solicitações para endpoints do Amazon S3 usando a
API REST. Para obter uma lista de todos os endpoints da Amazon S3, consulte Regiões e endpoints na
Referência geral da AWS.

Criar nomes de host do S3 para solicitações de API REST


Endpoints do Amazon S3 seguem a estrutura mostrada abaixo:

s3.Region.amazonaws.com

Os endpoints de pontos de acesso do Amazon S3 e endpoints de pilha dupla também seguem a estrutura
padrão:

• Pontos de acesso do Amazon S3:s3-accesspoint.Region.amazonaws.com


• Pilha dupla: s3.dualstack.Region.amazonaws.com

Para obter uma lista completa de regiões e endpoints do Amazon S3, consulte Endpoints e cotas do
Amazon S3 na Referência geral da AWS.

Solicitações de estilo de hospedagem virtual e caminho


Ao fazer solicitações usando a API REST, use URIs no estilo de hospedagem virtual ou de caminho
para os endpoints do Amazon S3. Para obter mais informações, consulte Hospedagem virtual de
buckets (p. 1025).

Example Solicitação no estilo de hospedagem virtual

Veja a seguir um exemplo de uma solicitação de estilo de hospedagem virtual para excluir o arquivo
puppy.jpg do bucket examplebucket na região Oeste dos EUA (Oregon). Para obter mais informações
sobre solicitações de estilo hosted virtual, consulte Solicitações no estilo de hospedagem virtual (p. 1026).

DELETE /puppy.jpg HTTP/1.1


Host: examplebucket.s3.us-west-2.amazonaws.com
Date: Mon, 11 Apr 2016 12:00:00 GMT
x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
Authorization: authorization string

Example Solicitação no estilo de caminho

Veja a seguir um exemplo com a versão no estilo de caminho da mesma solicitação.

DELETE /examplebucket/puppy.jpg HTTP/1.1


Host: s3.us-west-2.amazonaws.com
Date: Mon, 11 Apr 2016 12:00:00 GMT
x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
Authorization: authorization string

Atualmente, o Amazon S3 é compatível com acesso virtual de estilo de hospedagem e de caminho em


todas as regiões, mas isso mudará (consulte a nota Importante a seguir).

Para obter mais informações sobre solicitações de estilo virtual, consulte Solicitações no estilo de
caminho (p. 1026).

Versão da API 2006-03-01


1024
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Important

Atualização (23 de setembro de 2020): decidimos atrasar a desativação de URLs no estilo de


caminho para garantir que os clientes tenham o tempo necessário para fazer a transição para
URLs no estilo de hospedagem virtual. Para obter mais informações, consulte Amazon S3 Path
Deprecation Plan – The Rest of the Story no Blog de notícias da AWS.

Fazer solicitações para endpoints de pilha dupla usando a API


REST
Ao usar a API REST, acesse um endpoint de pilha dupla diretamente usando um nome de endpoint (URI)
de hospedagem virtual ou de caminho. Todos os nomes de endpoint de pilha dupla do Amazon S3 incluem
a região. Diferente dos endpoints somente-IPv4 padrão, os endpoints de hospedagem virtual e de caminho
usam nomes de endpoint específicos para a região.

Example Solicitação de endpoint de pilha dupla do estilo de hospedagem virtual

Conforme mostrado no exemplo a seguir, use um endpoint no estilo de hospedagem virtual na solicitação
REST que recupera o objeto do bucket chamado puppy.jpg do bucket examplebucket na região Oeste
dos EUA (Oregon).

GET /puppy.jpg HTTP/1.1


Host: examplebucket.s3.dualstack.us-west-2.amazonaws.com
Date: Mon, 11 Apr 2016 12:00:00 GMT
x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
Authorization: authorization string

Example Solicitação de endpoint de pilha dupla no estilo de caminho

Ou use um endpoint no de estilo caminho na solicitação, conforme mostrado no exemplo a seguir.

GET /examplebucket/puppy.jpg HTTP/1.1


Host: s3.dualstack.us-west-2.amazonaws.com
Date: Mon, 11 Apr 2016 12:00:00 GMT
x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
Authorization: authorization string

Para obter mais informações sobre endpoints de pilha dupla, consulte Usar endpoints de pilha dupla do
Amazon S3 (p. 995).

Para obter mais informações sobre como fazer solicitações usando a API REST, consulte os tópicos
abaixo.

Tópicos
• Hospedagem virtual de buckets (p. 1025)
• Redirecionamento de solicitação e a API REST (p. 1031)

Hospedagem virtual de buckets


Hospedagem virtual é a prática de atender vários sites a partir de um único servidor web. Uma maneira
de diferenciar sites é usar o nome de host aparente da solicitação em vez de apenas a parte do nome do
caminho do URI. Uma solicitação REST comum do Amazon S3 especifica um bucket usando o primeiro
componente delimitado por barra do caminho do URI da solicitação. Ou você pode usar a hospedagem
virtual do Amazon S3 para endereçar um bucket em uma chamada de API REST usando o cabeçalho

Versão da API 2006-03-01


1025
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Host HTTP. Na prática, o Amazon S3 interpreta https://bucketname.s3.Region.amazonaws.com


como um aviso de que a maioria dos buckets são acessíveis automaticamente (para tipos limitados de
solicitações) em Host. Para obter uma lista completa de regiões e endpoints do Amazon S3, consulte
Endpoints e cotas do Amazon S3 na Referência geral da AWS.

Além disso, a hospedagem virtual tem outros benefícios. Ao nomear o bucket com o nome do domínio
registrado e ao tornar esse nome um alias do DNS para o Amazon S3, você pode personalizar totalmente
o URL dos recursos do Amazon S3, por exemplo, http://my.bucketname.com/. Você também
pode publicar no “diretório raiz” do servidor virtual do bucket. Esta habilidade pode ser importante pois
muitos aplicativos buscam arquivos nesse local padrão. Por exemplo, favicon.ico, robots.txt,
crossdomain.xml serão todos encontrados na raiz.
Important

Ao usar buckets no estilo de hospedagem virtual com SSL, o certificado curinga SSL corresponde
apenas a buckets que não contêm pontos ("."). Para contornar isso, use HTTP ou escreva a
sua própria lógica de verificação do certificado. Para obter mais informações, consulte Plano de
depreciação de caminhos do Amazon S3.

Tópicos
• Solicitações no estilo de caminho (p. 1026)
• Solicitações no estilo de hospedagem virtual (p. 1026)
• Especificação de bucket do cabeçalho de host HTTP (p. 1027)
• Exemplos (p. 1027)
• Personalizar URLs do Amazon S3 com CNAMEs (p. 1028)
• Limitações (p. 1030)
• Compatibilidade retroativa (p. 1030)

Solicitações no estilo de caminho


Atualmente, o Amazon S3 é compatível com acesso virtual de estilo de hospedagem e de caminho em
todas as regiões, mas isso mudará (consulte a nota Importante a seguir).

No Amazon S3, os URLs de estilo de caminho usam o formato a seguir.

https://s3.Region.amazonaws.com/bucket-name/key name

Por exemplo, se você criar um bucket chamado mybucket na região Oeste dos EUA (Oregon) e quiser
acessar o objeto puppy.jpg nele, use o seguinte URL no estilo de caminho:

https://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg

Important

Atualização (23 de setembro de 2020): decidimos atrasar a desativação de URLs no estilo de


caminho para garantir que os clientes tenham o tempo necessário para fazer a transição para
URLs no estilo de hospedagem virtual. Para obter mais informações, consulte Amazon S3 Path
Deprecation Plan – The Rest of the Story no Blog de notícias da AWS.

Solicitações no estilo de hospedagem virtual


Em um URL de estilo hospedado virtual, o nome do bucket faz parte do nome do domínio no URL.

Versão da API 2006-03-01


1026
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Os URLs de estilo hospedados virtualmente do Amazon S3 usam o formato a seguir.

https://bucket-name.s3.Region.amazonaws.com/key name

Neste exemplo, my-bucket é o nome do bucket, Oeste dos EUA (Oregon) é a região, e puppy.png é o
nome da chave.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Especificação de bucket do cabeçalho de host HTTP


Desde que a solicitação GET não use o endpoint SSL, você pode especificar o bucket para a solicitação
usando o cabeçalho Host HTTP. O cabeçalho Host em uma solicitação REST é interpretado da seguinte
forma:

• Se o cabeçalho Host estiver omitido ou se o seu valor for s3.Region.amazonaws.com, o bucket


para a solicitação será o primeiro componente delimitado por barra no URI da solicitação e a chave da
solicitação será o restante do URI. Este é o método comum, conforme ilustrado pelos dois primeiros
exemplos desta seção. Omitir o cabeçalho Host é válido apenas para solicitações HTTP 1.0.
• Caso contrário, se o valor do cabeçalho Host terminar com .s3.Region.amazonaws.com, o nome
do bucket será o componente inicial do valor do cabeçalho Host até .s3.Region.amazonaws.com.
A chave da solicitação será o seu URI. Essa interpretação expõe buckets como subdomínios do
.s3.Region.amazonaws.com, conforme ilustrado pelo terceiro e pelo quarto exemplos nesta seção.
• Caso contrário, o bucket da solicitação é o valor em letras minúsculas do cabeçalho Host, e a chave
da solicitação é o seu URI. Essa interpretação é útil se você tiver registrado o mesmo nome DNS que
o nome do bucket e se tiver configurado o nome para ser um alias CNAME para o Amazon S3. O
procedimento para registrar nomes de domínios e configurar o DNS está além do escopo deste guia,
mas o resultado é ilustrado pelo último exemplo desta seção.

Exemplos
Esta seção fornece exemplos de URLs e solicitações.

Example Estilo de caminho

Este exemplo usa o seguinte:

• Nome do bucket: awsexamplebucket1.net


• Região: Leste dos EUA (Norte da Virgínia)
• Nome da chave: homepage.html

O URL é o seguinte:

http://s3.us-east-1.amazonaws.com/awsexamplebucket1.net/homepage.html

A solicitação é a seguinte:

GET /awsexamplebucket1.net/homepage.html HTTP/1.1


Host: s3.us-east-1.amazonaws.com

A solicitação com HTTP 1.0 e a omissão do cabeçalho host é a seguinte:

Versão da API 2006-03-01


1027
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

GET /awsexamplebucket1.net/homepage.html HTTP/1.0

Para obter informações sobre nomes compatíveis do DNS, consulte Limitações (p. 1030). Para obter mais
informações sobre chaves, consulte Chaves (p. 3).

Example Estilo de hospedagem virtual

Este exemplo usa o seguinte:

• Nome do bucket: awsexamplebucket1.eu


• Região: Europa (Irlanda)
• Nome da chave: homepage.html

O URL é o seguinte:

http://awsexamplebucket1.eu.s3.eu-west-1.amazonaws.com/homepage.html

A solicitação é a seguinte:

GET /homepage.html HTTP/1.1


Host: awsexamplebucket1.eu.s3.eu-west-1.amazonaws.com

Example Método CNAME

Para usar este método, é necessário configurar o nome de DNS como um alias CNAME para
bucketname.s3.us-east-1.amazonaws.com. Para obter mais informações, consulte Personalizar
URLs do Amazon S3 com CNAMEs (p. 1028). Este exemplo usa o seguinte:

• Nome do bucket: awsexamplebucket1.net


• Nome da chave: homepage.html

O URL é o seguinte:

http://www.awsexamplebucket1.net/homepage.html

O exemplo é o seguinte:

GET /homepage.html HTTP/1.1


Host: www.awsexamplebucket1.net

Personalizar URLs do Amazon S3 com CNAMEs


Dependendo da necessidade, é possível que você não queira que s3.Region.amazonaws.com
apareça no site ou serviço. Por exemplo, se você estiver hospedando as imagens do site
no Amazon S3, talvez prefira http://images.awsexamplebucket1.net/ em vez de
http://images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/. Qualquer
bucket com um nome compatível com o DNS pode ser mencionado da seguinte forma:
http://BucketName.s3.Region.amazonaws.com/[Filename], por exemplo, http://
images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/mydog.jpg. Ao usar o
CNAME, mapeie images.awsexamplebucket1.net para um nome de host do Amazon S3, para que o
URL anterior se torne http://images.awsexamplebucket1.net/mydog.jpg.

Versão da API 2006-03-01


1028
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

O nome do bucket deve ser o mesmo que o CNAME. Por exemplo, se você criar um CNAME para
mapear images.awsexamplebucket1.net para images.awsexamplebucket1.net.s3.us-
east-1.amazonaws.com, http://images.awsexamplebucket1.net/filename e http://
images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/filename serão o mesmo.

O registro DNS do CNAME deve apelidar o nome do domínio para o nome de host apropriado
do estilo de hospedagem virtual. Por exemplo, se o nome do bucket e o nome do domínio forem
images.awsexamplebucket1.net e o bucket estiver na região Leste dos EUA (Norte da
Virgínia), o alias do registro do CNAME deverá ser images.awsexamplebucket1.net.s3.us-
east-1.amazonaws.com.

images.awsexamplebucket1.net CNAME images.awsexamplebucket1.net.s3.us-


east-1.amazonaws.com.

O Amazon S3 usa o nome de host para determinar o nome do bucket. O nome do CNAME e o nome do
bucket devem ser os mesmos. Por exemplo, suponha que você tenha configurado www.example.com
como um CNAME para www.example.com.s3.us-east-1.amazonaws.com. Quando você acessa
http://www.example.com, o Amazon S3 recebe uma solicitação semelhante à seguinte:

Example

GET / HTTP/1.1
Host: www.example.com
Date: date
Authorization: signatureValue

O Amazon S3 vê apenas o nome do host original www.example.com e não tem conhecimento do


mapeamento CNAME usado para resolver a solicitação.

Qualquer endpoint do Amazon S3 pode ser usado em um CNAME. Por exemplo, s3.ap-
southeast-1.amazonaws.com pode ser usado em CNAMEs. Para obter mais informações sobre
endpoints, consulte Endpoints de solicitações (p. 992).

Como associar um nome de host a um bucket do Amazon S3 usando CNAMEs

1. Selecione um nome de host que pertença a um domínio controlado por você.

Este exemplo usa o subdomínio images do domínio awsexamplebucket1.net.


2. Crie um bucket que corresponda ao nome de host.

Neste exemplo, os nomes de host e do bucket são images.awsexamplebucket1.net. O nome do


bucket deve ser exatamente igual ao nome de host.
3. Crie um registro do CNAME que define o nome de host como um alias para o bucket do Amazon S3.

Por exemplo:

images.awsexamplebucket1.net CNAME images.awsexamplebucket1.net.s3.us-


west-2.amazonaws.com
Important

Por questões de encaminhamento de solicitações, o registro do CNAME deve estar definido


exatamente como mostrado no exemplo anterior. Caso contrário, ele pode parecer operar de
maneira correta, mas, eventualmente, resultará em um comportamento imprevisível.

O procedimento para configurar o DNS depende do servidor DNS ou do provedor DNS. Para obter
informações específicas, consulte a documentação do servidor ou entre em contato com o provedor.
Versão da API 2006-03-01
1029
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Limitações
O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos do
Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST ou os AWS
SDKs.

Compatibilidade retroativa
Endpoints legados
Algumas regiões oferecem suporte a endpoints legados. Você pode ver esses endpoints nos logs de
acesso do servidor ou nos logs do CloudTrail. Para obter mais informações, revise as informações abaixo.
Para obter uma lista completa de regiões e endpoints do Amazon S3, consulte Endpoints e cotas do
Amazon S3 na Referência geral da AWS.
Important
Embora você possa ver endpoints legados nos seus logs, recomendamos que você sempre use a
sintaxe do endpoint padrão para acessar os buckets.
Os URLs de estilo hospedados virtualmente do Amazon S3 usam o formato a seguir.

https://bucket-name.s3.Region.amazonaws.com/key name

No Amazon S3, os URLs de estilo de caminho usam o formato a seguir.

https://s3.Region.amazonaws.com/bucket-name/key name

s3‐Region
Algumas regiões mais antigas do Amazon S3 oferecem suporte a endpoints que contêm um traço entre
o S3 e a região (por exemplo, S3#us-west-2), em vez de um ponto (por exemplo, S3.us-west-2). Se
o bucket estiver em uma dessas regiões, você poderá ver o seguinte formato de endpoint nos logs de
acesso ao servidor ou nos logs do CloudTrail:

https://bucket-name.s3-Region.amazonaws.com

Neste exemplo, o nome do bucket é my-bucket e a região é Oeste dos EUA (Oregon):

https://my-bucket.s3-us-west-2.amazonaws.com

Endpoint global legado


Para algumas regiões, o endpoint global legado pode ser usado para construir solicitações que não
especificam um endpoint específico da região. A seguir, o endpoint global legado:

bucket-name.s3.amazonaws.com

Nos logs de acesso ao servidor ou nos logs do CloudTrail, você poderá ver solicitações que usam o
endpoint global legado. Neste exemplo, o nome do bucket é my-bucket e o endpoint global legado é
exibido:

https://my-bucket.s3.amazonaws.com

Solicitações de estilo de hospedagem virtual para Leste dos EUA (Norte da Virgínia)

As solicitações feitas com o endpoint global legado vão, por padrão, para o Leste dos EUA (Norte da
Virgínia). Portanto, o endpoint global legado às vezes é usado no lugar do endpoint regional para o Leste

Versão da API 2006-03-01


1030
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

dos EUA (Norte da Virgínia). Se você criar um bucket no Leste dos EUA (Norte da Virgínia) e usar o
endpoint global, o Amazon S3 roteará sua solicitação para essa região por padrão.

Solicitações no estilo de hospedagem virtual para outras regiões

O endpoint global legado também é usado para solicitações no estilo de hospedagem virtual em outras
regiões compatíveis. Se você criar um bucket em uma região lançada antes de 20 de março de 2019 e
usar o endpoint global legado, o Amazon S3 atualizará o DNS para rotear a solicitação para o local correto,
o que pode levar algum tempo. Enquanto isso, a regra padrão se aplica e sua solicitação de estilo de
hospedagem virtual vai para a região Leste dos EUA (Norte da Virgínia). Em seguida, o Amazon S3 a
redireciona com um redirecionamento HTTP 307 para a região correta. Para buckets do S3 em regiões
lançadas após 20 de março de 2019, o DNS não roteia a solicitação diretamente à região da AWS na qual
o bucket reside. Em vez disso, ele retorna um erro de solicitação incorreta HTTP 400. Para obter mais
informações, consulte Fazer solicitações (p. 990).

Solicitações no estilo de caminho

Para a região Leste dos EUA (Norte da Virgínia), o endpoint global legado pode ser usado para
solicitações de estilo de caminho.

Para todas as outras regiões, a sintaxe de caminho exige usar o endpoint específico da região ao tentar
acessar um bucket. Se você tentar acessar um bucket com o endpoint global legado ou outro endpoint
diferente daquele para a região onde reside o bucket, você receberá um erro de redirecionamento
temporário com código 307 de resposta HTTP e uma mensagem indicando o URI correto para o seu
recurso. Por exemplo, se você usar https://s3.amazonaws.com/bucket-name para um bucket
criado na região Oeste dos EUA (Oregon), você receberá um erro de redirecionamento temporário HTTP
307.

Redirecionamento de solicitação e a API REST


Tópicos
• Redirecionamentos e agentes de usuário de HTTP (p. 1031)
• Redirecionamentos e 100-Continue (p. 1032)
• Exemplo de redirecionamento (p. 1032)

Esta seção descreve como processar redirecionamentos HTTP usando a API REST do Amazon S3. Para
obter informações gerais sobre redirecionamentos do Amazon S3, consulte Fazer solicitações (p. 990) na
Referência da API do Amazon Simple Storage Service.

Redirecionamentos e agentes de usuário de HTTP


Os programas que usam a API REST do Amazon S3 devem processar os redirecionamentos na camada
de aplicação ou na camada HTTP. Muitas bibliotecas de clientes HTTP e agentes de usuário podem ser
configurados para processar redirecionamentos de modo correto e automático; contudo, muitas outras têm
implementações de redirecionamento incorretas ou incompletas.

Antes de confiar em uma biblioteca para atender aos requisitos de redirecionamento, teste os seguintes
casos:

• Verifique se todos os cabeçalhos de solicitações HTTP estão incluídos corretamente na solicitação


redirecionada (a segunda solicitação depois de receber um redirecionamento), incluindo os padrões
HTTP como Autorização e Data.
• Verifique se redirecionamentos não GET, como PUT e DELETE, funcionam corretamente.
• Verifique se grandes solicitações PUT seguem o redirecionamento corretamente.
• Verifique se as solicitações PUT seguem redirecionamentos corretamente se a resposta 100-continue
demorar muito tempo para chegar.

Versão da API 2006-03-01


1031
Amazon Simple Storage Service Guia do usuário
Fazer solicitações usando a API REST

Os agentes de usuário HTTP que se conformam estritamente a RFC 2616 podem exigir confirmação
explícita antes de seguir um redirecionamento quando o método de solicitação HTTP não for GET nem
HEAD. Em geral, é seguro seguir redirecionamentos gerados pelo Amazon S3 automaticamente, pois
o sistema emitirá redirecionamentos somente para hosts no domínio amazonaws.com e o efeito da
solicitação redirecionada será igual ao da solicitação original.

Redirecionamentos e 100-Continue
Para simplificar o processamento de redirecionamentos, aumentar a eficiência e evitar custos associados
com o envio de um corpo de solicitação redirecionado duas vezes, configure seu aplicativo para usar
100-continues para operações PUT. Quando seu aplicativo usa 100-continue, ele não envia o corpo da
solicitação até receber uma confirmação. Se a mensagem for rejeitada com base nos cabeçalhos, o corpo
da mensagem não será enviado. Para obter mais informações sobre 100-continue, acesse RFC 2616
Section 8.2.3.
Note

De acordo com o RFC 2616, ao usar Expect: Continue com um servidor HTTP desconhecido,
você não deve esperar um período indefinido antes de enviar o corpo da solicitação. Isso porque
alguns servidores HTTP não reconhecem 100-continue. Porém, o Amazon S3 reconhecerá se
sua solicitação contiver um Expect: Continue e responderá com um status 100-continue
temporário ou um código de status final. Além disso, um erro de não redirecionamento ocorrerá
depois de receber o 100-continue temporário. Isto ajudará a evitar que você receba uma resposta
de redirecionamento enquanto ainda estiver escrevendo o corpo da solicitação.

Exemplo de redirecionamento
Esta seção fornece um exemplo de interação de servidor cliente usando redirecionamento HTTP e 100-
continue.

A seguir está um exemplo PUT para o bucket quotes.s3.amazonaws.com.

PUT /nelson.txt HTTP/1.1


Host: quotes.s3.amazonaws.com
Date: Mon, 15 Oct 2007 22:18:46 +0000

Content-Length: 6
Expect: 100-continue

O Amazon S3 retorna o seguinte:

HTTP/1.1 307 Temporary Redirect


Location: http://quotes.s3-4c25d83b.amazonaws.com/nelson.txt?rk=8d47490b
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 15 Oct 2007 22:18:46 GMT

Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>


<Error>
<Code>TemporaryRedirect</Code>
<Message>Please re-send this request to the
specified temporary endpoint. Continue to use the
original request endpoint for future requests.
</Message>
<Endpoint>quotes.s3-4c25d83b.amazonaws.com</Endpoint>
<Bucket>quotes</Bucket>
</Error>

Versão da API 2006-03-01


1032
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

O cliente segue a resposta de redirecionamento e emite uma nova solicitação ao endpoint temporário
quotes.s3-4c25d83b.amazonaws.com.

PUT /nelson.txt?rk=8d47490b HTTP/1.1


Host: quotes.s3-4c25d83b.amazonaws.com
Date: Mon, 15 Oct 2007 22:18:46 +0000

Content-Length: 6
Expect: 100-continue

O Amazon S3 retorna um 100-continue indicando que o cliente deve continuar com o envio de corpo da
solicitação.

HTTP/1.1 100 Continue

O cliente envia o corpo da solicitação.

ha ha\n

O Amazon S3 retorna a resposta final.

HTTP/1.1 200 OK
Date: Mon, 15 Oct 2007 22:18:48 GMT

ETag: "a2c8d6b872054293afd41061e93bc289"
Content-Length: 0
Server: AmazonS3

Desenvolvimento com o Amazon S3 usando a AWS


CLI
Siga as etapas para fazer download e configurar a Interface de linhas de comando da AWS (AWS CLI).

Para obter uma lista de comandos da AWS CLI do Amazon S3, consulte as seguintes páginas na
Referência de comandos da AWS CLI:

• s3
• s3api
• s3control

Note

Os serviços na AWS, como o Amazon S3, exigem o fornecimento de credenciais quando


acessados. Esse serviço pode determinar se você tem permissões para acessar os respectivos
recursos próprios. O console requer sua senha. Você pode criar chaves de acesso para a
conta da AWS para acessar a CLI ou a API da AWS. No entanto, não recomendamos que você
acesse a AWS usando as credenciais da conta da AWS. Em vez disso, recomendamos que
você use o AWS Identity and Access Management (IAM). Crie um usuário do IAM, adicione o
usuário a um grupo do IAM com permissões administrativas e, em seguida, conceda permissões
administrativas ao usuário do IAM criado. Em seguida, você pode acessar a AWS usando uma
URL especial e as credenciais desse usuário do IAM. Para obter instruções, acesse Criar o
primeiro usuário do IAM e o grupo de administradores no Guia do usuário do IAM.

Versão da API 2006-03-01


1033
Amazon Simple Storage Service Guia do usuário
Uso dos AWS SDKs

Para configurar a AWS CLI

1. Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia
do usuário da interface de linha de comando da AWS:

• Configurar com a interface de linha de comando da AWS


• Configurar a interface de linha de comando da AWS
2. Adicione um perfil nomeado para o usuário administrador no arquivo config da AWS CLI. Você usa
esse perfil ao executar os comandos da AWS CLI.

[adminuser]
aws_access_key_id = adminuser access key ID
aws_secret_access_key = adminuser secret access key
region = aws-region

Para obter uma lista de regiões da AWS disponíveis, consulte Regiões e endpoints na Referência
geral da AWS.
3. Verifique a configuração digitando os comandos a seguir no prompt de comando.

• Teste o comando help para verificar se a CLI da AWS está instalada no computador:

aws help

• Teste um comando do S3 para verificar se o usuário pode acessar o Amazon S3. Esse comando
lista os buckets de sua conta. A CLI da AWS usa as credenciais do adminuser para autenticar a
solicitação.

aws s3 ls --profile adminuser

Desenvolvimento com o Amazon S3 usando os


AWS SDKs e exploradores
Você também pode usar os AWS SDKs ao desenvolver aplicações com o Amazon S3. Os AWS SDKs
simplificam as tarefas de programação integrando a API REST subjacente. Os SDKs do AWS Mobile e
a biblioteca AWS Amplify JavaScript da AWS também estão disponíveis para criar aplicações Web e de
dispositivos móveis conectados usando a AWS.

Esta seção fornece uma visão geral dos AWS SDKs para desenvolver aplicações do Amazon S3. Esta
seção também descreve como você pode testar os exemplos de código do SDK da AWS fornecidos neste
guia.

Tópicos
• Especificar a versão da assinatura na autenticação de solicitações (p. 1035)
• Usar o AWS SDK para Java (p. 1041)
• Usar o AWS SDK para .NET (p. 1043)
• Usar o AWS SDK para PHP e executar exemplos do PHP (p. 1044)
• Usar o AWS SDK para Ruby versão 3 (p. 1045)
• Usar o AWS SDK para Python (Boto) (p. 1046)
• Usar os AWS Mobile SDKs para iOS e Android (p. 1047)

Versão da API 2006-03-01


1034
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

• Usar a biblioteca JavaScript do AWS Amplify (p. 1047)


• Usar o AWS SDK para JavaScript (p. 1047)

Além dos AWS SDKs, os AWS Explorers estão disponíveis para Visual Studio e Eclipse para Java IDE.
Nesse caso, os SDKs e os Explorers estão disponíveis em um pacote como toolkits da AWS.

Você também pode usar a interface de linha de comando da AWS (CLI da AWS) para gerenciar buckets e
objetos do Amazon S3.

AWS Toolkit for Eclipse

O AWS Toolkit for Eclipse inclui o AWS SDK para Java e o AWS Explorer for Eclipse. O AWS Explorer
for Eclipse é um plug-in de código aberto para o Eclipse para IDE de Java que facilita o desenvolvimento,
a depuração e a implantação de aplicações Java para os desenvolvedores que usam a AWS. A GUI
fácil de usar permite acessar e administrar a infraestrutura da AWS, incluindo o Amazon S3. É possível
executar operações comuns, como gerenciar buckets e objetos, além de definir políticas do IAM ao mesmo
tempo que desenvolve aplicações, tudo no contexto do IDE do Eclipse for Java. Para obter instruções de
configuração, consulte Configurar o toolkit. Para obter exemplos de como usar o Explorer, consulte Como
acessar o AWS Explorer.

AWS Toolkit for Visual Studio

O AWS Explorer para Visual Studio é uma extensão do Microsoft Visual Studio que facilita o
desenvolvimento, a depuração e a implantação de aplicativos .NET para os desenvolvedores que usam
a Amazon Web Services. A GUI fácil de usar permite acessar e administrar a infraestrutura da AWS,
incluindo o Amazon S3. É possível executar operações comuns, como gerenciar buckets e objetos
ou definir políticas do IAM ao desenvolver aplicações, tudo no contexto do Visual Studio. Para obter
instruções de configuração, acesse Configurar o AWS Toolkit for Visual Studio. Para obter exemplos sobre
como usar o Amazon S3 utilizando o Explorer, consulte Usar o Amazon S3 no AWS Explorer.

SDKs da AWS

Você pode fazer download somente dos SDKs. Para obter informações sobre como fazer download de
bibliotecas de SDKs, consulte Bibliotecas de códigos de exemplo.

CLI da AWS

A CLI da AWS é uma ferramenta unificada para gerenciar os serviços da AWS, incluindo o Amazon
S3. Para obter informações sobre como fazer download da CLI da AWS, consulte Interface da linha de
comando da AWS.

Especificar a versão da assinatura na autenticação de


solicitações
O Amazon S3 é compatível apenas com o AWS Signature versão 4 na maioria das regiões da AWS. No
entanto, em algumas das mais antigas regiões da AWS, o Amazon S3 é compatível com as versões 2
e 4 do Signature. No entanto, o Signature versão 2 está sendo desativado (defasado). Para obter mais
informações sobre o fim do suporte ao Signature versão 2, consulte AWS Signature versão 2 desativado
(defasado) para o Amazon S3 (p. 1037).

Para obter uma lista de todas as regiões do Amazon S3 e das versões do Signature com as quais elas são
compatíveis, consulte Regiões e endpoints na Referência geral da AWS.

Para todas as regiões da AWS, por padrão, os SDKs da AWS usam o Signature versão 4 para autenticar
solicitações. Ao usar os SDKs da AWS liberados antes de maio de 2016, talvez seja necessário solicitar o
Signature versão 4 conforme mostrado na tabela a seguir:

Versão da API 2006-03-01


1035
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

SDK Solicitar o Signature versão 4 para autenticação de solicitações

CLI da AWS Para o perfil padrão, execute o comando a seguir:

$ aws configure set default.s3.signature_version s3v4

Para um perfil personalizado, execute o comando a seguir:

$ aws configure set


profile.your_profile_name.s3.signature_version s3v4

SDK do Java Adicione o seguinte ao código:

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERT
"true");

Ou, na linha de comando, especifique o seguinte:

-Dcom.amazonaws.services.s3.enableV4

SDK do JavaScript Defina o parâmetro signatureVersion como v4 ao criar o cliente:

var s3 = new AWS.S3({signatureVersion: 'v4'});

SDK do PHP Defina o parâmetro signature como v4 ao criar o cliente de


serviço do Amazon S3 para o SDK v2 do PHP:

<?php
$client = S3Client::factory([
'region' => 'YOUR-REGION',
'version' => 'latest',
'signature' => 'v4'
]);

Ao usar o SDK v3 do PHP, defina o parâmetro


signature_version como v4 durante a criação do cliente de
serviço do Amazon S3:

<?php
$s3 = new Aws\S3\S3Client([
'version' => '2006-03-01',
'region' => 'YOUR-REGION',
'signature_version' => 'v4'
]);

SDK do Python-Boto Especifique o seguinte no arquivo de configuração boto padrão:

[s3] use-sigv4 = True

SDK do Ruby SDK do Ruby - versão 1: defina o parâmetro


:s3_signature_version como :v4 ao criar o cliente:

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

Versão da API 2006-03-01


1036
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

SDK Solicitar o Signature versão 4 para autenticação de solicitações


SDK do Ruby - versão 3: defina o parâmetro signature_version
como v4 ao criar o cliente:

s3 = Aws::S3::Client.new(signature_version: 'v4')

SDK do .NET Adicione o código a seguir antes de criar o cliente do Amazon S3:

AWSConfigsS3.UseSignatureVersion4 = true;

Ou adicione o seguinte ao arquivo config:

<appSettings>
<add key="AWS.S3.UseSignatureVersion4" value="true" />
</appSettings>

AWS Signature versão 2 desativado (defasado) para o Amazon


S3
O Signature versão 2 está sendo desativado (defasado) no Amazon S3. O Amazon S3 só aceitará
solicitações de API assinadas com o Signature versão 4.

Esta seção apresenta respostas às perguntas mais comuns relacionadas ao fim do suporte ao Signature
versão 2.

O que é o Signature versão 2/4 e o que “assinar solicitações” quer dizer?

O processo de assinatura com as versões 2 ou 4 do Signature é utilizado para autenticar solicitações de


API do Amazon S3. A assinatura de solicitações permite que o Amazon S3 identifique quem está enviando
uma solicitação e a protege contra agentes mal intencionados.

Para obter mais informações sobre a assinatura de solicitações AWS, consulte Assinar solicitações de API
da AWS na Referência geral da AWS.

Qual atualização está sendo feita?

No momento, oferecemos suporte a solicitações da API do Amazon S3 assinadas usando os processos


das versões 2 e 4 do Signature. Depois disso, o Amazon S3 só aceitará solicitações assinadas com o
Signature versão 4.

Para obter mais informações sobre a assinatura de solicitações da AWS, consulte Alterações no Signature
versão 4 na Referência geral da AWS.

Por que esta atualização está sendo feita?

O Signature versão 4 oferece maior segurança porque usa uma chave de assinatura em vez de sua chave
de acesso secreta. No momento, o Signature versão 4 é compatível com todas as regiões da AWS. O
Signature versão 2 só é compatível com as regiões lançadas antes de janeiro de 2014. Essa atualização
nos permite oferecer uma experiência mais consistente em todas as regiões.

Como posso ter certeza de que estou usando o Signature versão 4 e quais atualizações são necessárias?

Versão da API 2006-03-01


1037
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

Normalmente, a versão utilizada para assinar suas solicitações é definida pela ferramenta ou pelo SDK no
lado do cliente. Por padrão, as versões mais recentes dos SDKs da AWS usam o Signature versão 4. Para
software de terceiro, entre em contato com a equipe de suporte dele para confirmar a versão necessária.
Para enviar chamadas REST diretamente para o Amazon S3, modifique a aplicação para usar o processo
de assinatura do Signature versão 4.

Para obter informações sobre qual versão dos AWS SDKs deve ser usada depois da transição para o
Signature versão 4, consulte Migração do Signature versão 2 para o Signature versão 4 (p. 1038).

Para obter informações sobre como usar o Signature versão 4 com a API REST do Amazon S3, consulte
Autenticar solicitações (AWS Signature versão 4) na Referência da API do Amazon Simple Storage
Service.

O que acontecerá se eu não atualizar?

As solicitações assinadas com o Signature versão 2 feitas após essa data não autenticarão com o Amazon
S3. Os solicitantes verão erros com a mensagem de que a solicitação deve ser assinada com o Signature
versão 4.

Devo fazer alterações mesmo se estiver usando um pre-signed URL que exige a assinatura por mais de
sete dias?

Se você estiver usando um pre-signed URL que exige a assinatura por mais de sete dias, não é necessário
fazer nada. Você pode continuar usando o AWS Signature versão 2 para assinar e autenticar pre-signed
URLs. Vamos fazer um acompanhamento e fornecer mais detalhes sobre como migrar para o Signature
versão 4 para pre-signed URL.

Mais informações
• Para obter mais informações sobre como usar o Signature versão 4, consulte Assinar solicitações de API
da AWS.
• Visualize a lista de alterações entre o Signature versão 2 e o Signature versão 4 em Alterações no
Signature versão 4.
• Visualize a publicação AWS Signature Version 4 to replace AWS Signature Version 2 for signing Amazon
S3 API requests nos fóruns da AWS.
• Em caso de dúvidas, entre em contato com o AWS Support.

Migração do Signature versão 2 para o Signature versão 4


Se estiver usando o Signature versão 2 para autenticar solicitações de API do Amazon S3, migre para
o Signature versão 4. Não haverá mais suporte para o Signature versão 2, conforme descrito em AWS
Signature versão 2 desativado (defasado) para o Amazon S3 (p. 1037).

Para obter informações sobre como usar o Signature versão 4 com a API REST do Amazon S3, consulte
Autenticar solicitações (AWS Signature versão 4) na Referência da API do Amazon Simple Storage
Service.

A tabela a seguir contém os SDKs que exigem a utilização do Signature versão 4 (SigV4).
Se você utilizar pre-signed URLs com os SDKs AWS Java, JavaScript (Node.js) ou Python (Boto/CLI),
deverá definir a região da AWS correta e o Signature versão 4 na configuração do cliente. Para obter mais
informações sobre como definir o SigV4 na configuração do cliente, consulte Especificar a versão da
assinatura na autenticação de solicitações (p. 1035).

Versão da API 2006-03-01


1038
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

Se você usa Atualize para Alteração Link para documentação do SDK


este SDK/ esta versão do de código
produto SDK necessária
para o cliente
usar o Sigv4?

AWS SDK para Atualize para Sim Especificar a versão da assinatura na autenticação
Java v1 Java 1.11.201+ de solicitações (p. 1035)
ou v2 no 4º
trimestre de
2018.

AWS SDK para Não é Não AWS SDK para Java


Java v2 (pré- necessário
visualização) atualizar os
SDKs.

AWS SDK Atualize para Sim AWS SDK para .NET


para .NET v1 o 3.1.10
ou versão
superior.

AWS SDK Atualize para Não AWS SDK para .NET v2


para .NET v2 o 3.1.10
ou versão
superior.

AWS SDK Atualize para a Sim AWS SDK para .NET v3


para .NET v3 versão 3.3.0.0
ou superior.

AWS SDK para Atualize para Sim AWS SDK para JavaScript
JavaScript v1 o 2.68.0
ou versão
superior.

AWS SDK para Atualize para Sim AWS SDK para JavaScript
JavaScript v2 o 2.68.0
ou versão
superior.

AWS SDK para Nenhuma Não AWS SDK para JavaScript


JavaScript v3 outra ação é
necessária
no momento.
Atualize para a
versão principal
V3 no terceiro
trimestre de
2019.

AWS SDK para Recomenda- Sim AWS SDK para PHP


PHP v1 se atualizar
para a versão
mais recente
do PHP ou,
ao menos,
para a versão

Versão da API 2006-03-01


1039
Amazon Simple Storage Service Guia do usuário
Especificar a versão da assinatura
na autenticação de solicitações

Se você usa Atualize para Alteração Link para documentação do SDK


este SDK/ esta versão do de código
produto SDK necessária
para o cliente
usar o Sigv4?
2.7.4 com o
parâmetro de
assinatura
definido
como v4 na
configuração
do cliente do
S3.

AWS SDK para Recomenda- Não AWS SDK para PHP


PHP v2 se atualizar
para a versão
mais recente
do PHP ou,
ao menos,
para a versão
2.7.4 com o
parâmetro de
assinatura
definido
como v4 na
configuração
do cliente do
S3.

AWS SDK para Não é Não AWS SDK para PHP


PHP v3 necessário
atualizar os
SDKs.

Boto2 Atualize para Sim Atualização do Boto 2


Boto2 v2.49.0.

Boto3 Atualize Sim Boto 3 - SDK da AWS para Python


para 1.5.71
(Botocore),
1.4.6 (Boto3).

CLI da AWS Atualize para Sim Interface de linha de comando da AWS


1.11.108.

CLI da AWS Não é Não Interface da linha de comando da AWS, versão 2


v2 (pré- necessário
visualização) atualizar os
SDKs.

AWS SDK para Atualize para Sim Ruby V3 para AWS


Ruby v1 Ruby V3.

AWS SDK para Atualize para Sim Ruby V3 para AWS


Ruby v2 Ruby V3.

Versão da API 2006-03-01


1040
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para Java

Se você usa Atualize para Alteração Link para documentação do SDK


este SDK/ esta versão do de código
produto SDK necessária
para o cliente
usar o Sigv4?

AWS SDK para Não é Não Ruby V3 para AWS


Ruby v3 necessário
atualizar os
SDKs.

Go Não é Não AWS SDK para Go


necessário
atualizar os
SDKs.

C++ Não é Não AWS SDK para C++


necessário
atualizar os
SDKs.

AWS Tools for Windows PowerShell ou AWS Tools for PowerShell Core

Se você estiver usando versões de módulo anteriores à 3.3.0.0, deverá atualizar para a 3.3.0.0.

Para obter informações sobre a versão, use o cmdlet do Get-Module:

Get-Module –Name AWSPowershell


Get-Module –Name AWSPowershell.NetCore

Para atualizar para a versão 3.3.0.0, use o cmdlet do Update-Module:

Update-Module –Name AWSPowershell


Update-Module –Name AWSPowershell.NetCore

É possível enviar o tráfego do Signature versão 2 para pre-signed URLs válidas por mais de sete dias.

Usar o AWS SDK para Java


O AWS SDK para Java fornece uma API para as operações de buckets e objetos do Amazon S3. Para
operações de objeto, além de fornecer a API para fazer upload de objetos em uma única operação, o SDK
fornece a API para fazer upload de grandes objetos em partes. Para obter mais informações, consulte
Carregar e copiar objetos usando multipart upload (p. 80).

Tópicos
• A organização da API Java (p. 1042)
• Testar exemplos de código Java no Amazon S3 (p. 1042)

O AWS SDK para Java dá a opção de usar uma API de alto nível ou de baixo nível.

Versão da API 2006-03-01


1041
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para Java

API de baixo nível

As APIs de baixo nível correspondem às operações REST subjacentes do Amazon S3, como operações
de criação, atualização e exclusão que se aplicam a buckets e objetos. Quando você faz upload de
objetos grandes usando a API de multipart upload de baixo nível, ela proporciona mais controle. Por
exemplo, ela permite pausar e retomar multipart uploads, variar tamanhos de parte durante o upload ou
começar uploads quando você não sabe o tamanho dos dados com antecedência. Se você não tiver esses
requisitos, use a API de alto nível para fazer upload de objetos.

API de alto nível

Para fazer upload de objetos, o SDK fornece um nível superior de abstração fornecendo a classe
TransferManager. A API de alto nível é uma API mais simples, na qual em apenas algumas linhas de
código, você pode fazer upload de arquivos e streams no Amazon S3. Você deve usar essa API para fazer
upload dos dados a menos que você precise controlar o upload conforme descrito na seção API de baixo
nível anterior.

Para dados menores, a API TransferManager faz upload dos dados em uma única operação. No
entanto, o TransferManager alterna para o uso da API de multipart upload quando os dados atingem
um determinado limite. Quando possível, o TransferManager usa vários threads para fazer upload das
partes simultaneamente. Se houver falha no upload de uma parte, a API repetirá o upload da parte até três
vezes. Contudo, essas são opções configuráveis usando a classe TransferManagerConfiguration.
Note

Quando você está usando um streaming na fonte dos dados, a classe TransferManager não
faz uploads simultâneos.

A organização da API Java


Os seguintes pacotes no AWS SDK para Java fornecem a API:

• com.amazonaws.services.s3: fornece as APIs para a criação de clientes do Amazon S3 e o trabalho


com buckets e objetos. Por exemplo, ele possibilita a você criar buckets, fazer upload de objetos, obter
objetos, excluir objetos e listar chaves.
• com.amazonaws.services.s3.transfer: fornece as operações de dados da API de alto nível.

Essa API de alto nível é projetada para simplificar a transferência de objetos para o Amazon S3 e vice-
versa. Ela inclui a classe TransferManager, que fornece métodos assíncronos para trabalhar com,
consultar e manipular transferências. Também inclui a classe TransferManagerConfiguration que
você pode usar para configurar o tamanho mínimo das partes para upload e o limite em bytes de quando
usar multipart uploads.
• com.amazonaws.services.s3.model: fornece as classes da API de baixo nível para criar solicitações e
respostas a processos. Por exemplo, inclui a classe GetObjectRequest para descrever sua solicitação
para obter objetos, a classe ListObjectsRequest para descrever suas solicitações para listar chaves,
e a classe InitiateMultipartUploadRequest para criar multipart uploads.

Para obter mais informações sobre a API do AWS SDK para Java, consulte Referência da API do AWS
SDK para Java API.

Testar exemplos de código Java no Amazon S3


Os exemplos de Java neste guia são compatíveis com o AWS SDK para Java versão 1.11.321. Para obter
instruções sobre como configurar e executar exemplos de código, consulte Conceitos básicos no Guia do
desenvolvedor do AWS SDK para Java.

Versão da API 2006-03-01


1042
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para .NET

Usar o AWS SDK para .NET


O AWS SDK para .NET fornece a API para as operações de buckets e objetos do Amazon S3. Para
operações de objetos, além de prover a API para fazer upload de objetos em uma única operação, o SDK
provê a API para fazer upload de grandes objetos em partes (consulte Carregar e copiar objetos usando
multipart upload (p. 80)).

Tópicos
• A organização da API .NET (p. 1043)
• Executar os exemplos de código do Amazon S3 .NET (p. 1044)

O AWS SDK para .NET fornece a opção de usar uma API de alto ou de baixo nível.

API de baixo nível

As APIs de baixo nível correspondem às operações REST subjacentes do Amazon S3 incluindo operações
de criação, atualização e exclusão que se aplicam a buckets e objetos. Quando você faz upload de
objetos grandes usando a API de multipart upload de baixo nível (consulte Carregar e copiar objetos
usando multipart upload (p. 80)), ela proporciona mais controle. Por exemplo, ela permite pausar e retomar
multipart uploads, variar tamanhos de parte durante o upload ou começar uploads quando você não sabe o
tamanho dos dados com antecedência. Se você não tiver essas necessidades, use a API de alto nível para
fazer upload de objetos.

API de alto nível

Para fazer upload de objetos, o SDK fornece um nível superior de abstração fornecendo a classe
TransferUtility. A API de alto nível é uma API mais simples, na qual em apenas algumas linhas de
código, você pode fazer upload de arquivos e streams no Amazon S3. Você deve usar essa API para fazer
upload dos dados a menos que você precise controlar o upload conforme descrito na seção API de baixo
nível anterior.

Para dados menores, a API TransferUtility faz upload dos dados em uma única operação. No
entanto, o TransferUtility alterna para o uso da API de multipart upload quando os dados atingem um
determinado limite. Por padrão, ele usa vários threads para fazer upload das partes simultaneamente. Se
houver falha no upload de uma parte, a API repetirá o upload da parte até três vezes. Contudo, essas são
opções configuráveis.
Note

Quando você está usando um streaming na fonte dos dados, a classe TransferUtility não
faz uploads simultâneos.

A organização da API .NET


Ao escrever aplicações do Amazon S3 usando o AWS SDK para .NET, você usa o AWSSDK.dll. Os
seguintes namespaces neste assembly fornecem a API de multipart upload:

• Amazon.S3.Transfer: fornece a API de alto nível para carregar os dados em partes.

Inclui a classe TransferUtility que permite especificar um arquivo, um diretório ou um


fluxo para upload dos dados. Também inclui as classes TransferUtilityUploadRequest e
TransferUtilityUploadDirectoryRequest para definir configurações avançadas, como o número
de threads simultâneos, o tamanho da parte, os metadados do objeto, a classe de armazenamento
(STANDARD, REDUCED_REDUNDANCY) e a Access Control List (ACL – Lista de controle de acesso)
do objeto.
• Amazon.S3: fornece a implementação das APIs de baixo nível.

Versão da API 2006-03-01


1043
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para PHP e executar exemplos do PHP

Fornece métodos que correspondem à API REST multipart upload do Amazon S3 (consulte Uso dos
REST API (p. 99)).
• Amazon.S3.Model: fornece as classes da API de baixo nível para criar solicitações e respostas
a processos. Por exemplo, fornece as classes InitiateMultipartUploadRequest e
InitiateMultipartUploadResponse que você pode usar ao iniciar um multipart upload, e as
classes UploadPartRequest e UploadPartResponse ao fazer o upload das partes.
• Amazon.S3.Encryption: fornece o AmazonS3EncryptionClient.
• Amazon.S3.Util: fornece várias classes de utilitários, como AmazonS3Util e
BucketRegionDetector.

Para obter mais informações sobre a API do AWS SDK para .NET, consulte a Referência da API do AWS
SDK para .NET versão 3.

Executar os exemplos de código do Amazon S3 .NET


Os exemplos de código .NET neste guia são compatíveis com o AWS SDK para .NET API versão 3.0. Para
obter informações sobre como configurar e executar exemplos de código, consulte Conceitos básicos do
AWS SDK para .NET no Guia do desenvolvedor do AWS SDK para .NET.

Usar o AWS SDK para PHP e executar exemplos do


PHP
O AWS SDK para PHP fornece acesso à API para operações de buckets e objetos do Amazon S3. O SDK
fornece a opção de usar a API de baixo nível do serviço ou abstrações de alto nível.

O SDK está disponível no AWS SDK para PHP, que também tem instruções para instalar e começar a usar
o SDK.

A configuração para usar o AWS SDK para PHP depende do ambiente e de como você deseja executar a
aplicação. Para configurar o ambiente para executar os exemplos desta documentação, consulte o Guia de
conceitos básicos do AWS SDK para PHP.

Tópicos
• Níveis do AWS SDK para PHP (p. 1044)
• Executar exemplos do PHP (p. 1045)
• Recursos relacionados (p. 1045)

Níveis do AWS SDK para PHP


O AWS SDK para PHP fornece a opção de usar uma API de alto ou baixo nível.

API de baixo nível


As APIs de baixo nível correspondem às operações REST subjacentes do Amazon S3 incluindo operações
de criação, atualização e exclusão em buckets e objetos. As APIs de baixo nível fornecem maior controle
sobre essas operações. Por exemplo, é possível colocar as solicitações em lotes e executá-las em
paralelo. Ou, ao usar a API multipart upload, você pode gerenciar as partes de objetos individualmente.
Observe que essas chamadas da API de baixo nível retornam um resultado que inclui todos os detalhes da
resposta do Amazon S3. Para obter mais informações sobre a API multipart upload, consulte Carregar e
copiar objetos usando multipart upload (p. 80).

Versão da API 2006-03-01


1044
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para Ruby versão 3

Abstrações de alto nível


As abstrações de alto nível têm o objetivo de simplificar casos de uso comuns. Por exemplo,
para fazer upload dos objetos grandes usando a API de baixo nível, você deve primeiro chamar
Aws\S3\S3Client::createMultipartUpload(), em seguida, chamar o método Aws
\S3\S3Client::uploadPart() para fazer upload das partes dos objetos e, em seguida, chamar o
método Aws\S3\S3Client::completeMultipartUpload() para concluir o upload. Você pode usar
o objeto Aws\S3\\MultipartUploader de alto nível que simplifica a criação de um multipart upload em
vez disso.

Outro exemplo é, ao enumerar objetos em um bucket, você pode usar o recurso de iteradores do AWS
SDK para PHP para retornar todas as chaves de objetos, independentemente de quantos objetos foram
armazenados no bucket. Se você usar a API de baixo nível, a resposta retornará, no máximo, 1.000
chaves. Se o bucket contiver mais de 1.000 objetos, o resultado ficará truncado e você terá que gerenciar
a resposta e verificar o truncamento.

Executar exemplos do PHP


Para configurar e usar os exemplos do Amazon S3 para a versão 3 do AWS SDK para PHP, consulte
Instalação no Guia do desenvolvedor do AWS SDK para PHP.

Recursos relacionados
• AWS SDK para PHP para o Amazon S3
• Documentação do AWS SDK para PHP
• API do AWS SDK para PHP para o Amazon S3
• Exemplos de código do AWS SDK para PHP versão 3

Usar o AWS SDK para Ruby versão 3


O AWS SDK para Ruby fornece uma API para operações de buckets e objetos do Amazon S3. Para
operações de objeto, você pode usar a API para fazer upload de objetos em uma única operação ou
fazer upload de objetos grandes em partes (consulte Fazer upload de um objeto usando multipart
upload (p. 86)). Contudo, a API para um único upload de operação também pode aceitar objetos grandes
e, em segundo plano, gerenciar o upload em partes para você, reduzindo a quantidade de script que
precisa escrever.

A organização da API Ruby


Ao criar aplicações do Amazon S3 usando o AWS SDK para Ruby, instale o gem SDK para Ruby. Para
obter mais informações, consulte AWS SDK para Ruby versão 3. Depois de instalado, você pode acessar
a API, incluindo as seguintes classes de chaves:

• Aws::S3::Resource: representa a interface para o Amazon S3 para o SDK do Ruby e fornece métodos
para criar e enumerar buckets.

A classe S3 fornece o método da instância #buckets para acessar buckets existentes ou criar novos.
• Aws::S3::Bucket representa um bucket do Amazon S3. 

A classe Bucket fornece os métodos #object(key) e #objects para acessar os objetos em um


bucket, bem como métodos para excluir um bucket e retornar informações sobre um bucket, como a
política do bucket.
• Aws::S3::Object: representa um objeto do Amazon S3 identificado por sua chave.

Versão da API 2006-03-01


1045
Amazon Simple Storage Service Guia do usuário
Usar o AWS SDK para Python (Boto)

A classe Object fornece métodos para obter e definir as propriedades de um objeto, especificando a
classe storage para armazenar objetos, e definindo permissões de objetos usando listas de controle de
acesso. A classe Object também tem métodos para exclusão, upload e cópia de objetos. Ao carregar
objetos em partes, essa classe fornece opções para especificar a ordem das partes carregadas e o
tamanho das partes.

Para obter mais informações sobre o AWS SDK para a API do Ruby, acesse AWS SDK para Ruby versão
2.

Testar os exemplos de script do Ruby


A maneira mais fácil de começar a usar os exemplos de script do Ruby é instalar o gem AWS SDK para
Ruby. Para obter informações sobre como instalar ou atualizar a gem mais recente, acesse AWS SDK
para Ruby versão 3. As tarefas a seguir orientam você na criação e nos testes dos exemplos de script do
Ruby pressupondo que você instalou o AWS SDK para Ruby.

Processo geral de criação e testes dos exemplos de script do Ruby

1 Para acessar a AWS, você deve fornecer um conjunto de credenciais para sua aplicação do
AWS SDK para PHP. Para obter mais informações, consulte Configurar o AWS SDK para
Ruby.

2 Crie um script do SDK para Ruby e adicione as seguintes linhas à parte superior do script.

#!/usr/bin/env ruby

require 'rubygems'
require 'aws-sdk-s3'

A primeira linha é a diretiva do intérprete e as duas instruções require importam duas


gems necessárias no script.

3 Copie o código da seção que você está lendo no script.

4 Atualize o código fornecendo todos os dados necessários. Por exemplo, se estiver fazendo
o upload de um arquivo, forneça o caminho do arquivo e o nome do bucket.

5 Execute o script. Verifique as alterações em buckets e objetos usando o Console de


Gerenciamento da AWS. Para obter mais informações sobre o Console de Gerenciamento
da AWS, acesse https://aws.amazon.com/console/.

Exemplos do Ruby

Os links a seguir contêm exemplos para ajudar você a começar a usar o SDK para Ruby versão 3:

• Criação de um bucket (p. 31)


• Fazer upload de objetos (p. 71)

Usar o AWS SDK para Python (Boto)


O Boto é um pacote do Python que fornece interfaces à AWS, incluindo o Amazon S3. Para obter mais
informações sobre o Boto, acesse AWS SDK para Python (Boto). O link de começar a usar nesta página
fornece instruções passo a passo para começar.

Versão da API 2006-03-01


1046
Amazon Simple Storage Service Guia do usuário
Usar os AWS Mobile SDKs para iOS e Android

Usar os AWS Mobile SDKs para iOS e Android


Você pode usar os SDKs da AWS Mobile para Android e iOS para integrar de maneira rápida e fácil back-
ends de nuvem robustos aos seus aplicativos móveis existentes. Você pode configurar e usar recursos
como login de usuário, bancos de dados, notificações por push e muito mais, sem ser um especialista na
AWS.

Os AWS Mobile SDKs oferecem acesso fácil ao Amazon S3 e a muitos outros serviços da AWS. Para
começar a usar os AWS Mobile SDKs, consulte Conceitos básicos dos AWS Mobile SDKs.

Mais informações
Usar a biblioteca JavaScript do AWS Amplify (p. 1047)

Usar a biblioteca JavaScript do AWS Amplify


AWS Amplify é uma biblioteca de JavaScript de código aberto para desenvolvedores para web e
dispositivos móveis que compilam aplicativos compatíveis com a nuvem. O AWS Amplify fornece
componentes de interface do usuário personalizáveis e uma interface declarativa para trabalhar com um
bucket do S3, além de outras categorias de alto nível para serviços da AWS.

Para começar a usar a biblioteca JavaScript do AWS Amplify, escolha um dos links a seguir:

• Conceitos básicos da biblioteca do AWS Amplify para a web


• Conceitos básicos da biblioteca do AWS Amplify para React Native

Para obter mais informações sobre o AWS Amplify, consulte AWS Amplify no GitHub.

Mais informações
Usar os AWS Mobile SDKs para iOS e Android (p. 1047)

Usar o AWS SDK para JavaScript


O AWS SDK para JavaScript fornece uma API JavaScript para serviços da AWS. Você pode usar a API
JavaScript para criar bibliotecas ou aplicativos para Node.js ou o navegador.

Para obter mais informações sobre como usar o AWS SDK para JavaScript para Amazon S3, consulte
abaixo.

• O que é o AWS SDK para JavaScript? (v2)


• AWS SDK para JavaScript - exemplos do Amazon S3 (v2)
• O que é o AWS SDK para JavaScript? (v3)
• AWS SDK para JavaScript - exemplos do Amazon S3 (v3)
• AWS SDK para JavaScript para Amazon S3

Desenvolver com o Amazon S3 usando a API


REST
A arquitetura do Amazon S3 foi desenvolvida para ser neutra em termos de linguagem de programação,
usando nossas interfaces compatíveis para armazenar e recuperar objetos.

Versão da API 2006-03-01


1047
Amazon Simple Storage Service Guia do usuário
Roteamento de solicitação

No momento, o Amazon S3 fornece uma interface REST. Com a REST, os metadados são retornados em
cabeçalhos HTTP. Como só oferecemos suporte a solicitações HTTP de até 4 KB (sem incluir o corpo),
a quantidade de metadados que você pode fornecer é restrita. A API REST é uma interface HTTP para o
Amazon S3. Usando REST, você usa solicitações HTTP padrão criar, buscar e excluir bucket e objetos.

Você pode usar qualquer toolkit compatível com HTTP para usar a API REST. Você pode até usar um
navegador para buscar objetos, desde que eles possam ser lidos anonimamente.

A API REST usa os cabeçalhos padrão e os códigos de status HTTP, para que os navegadores e os
toolkits padrão funcionem como esperado. Em algumas áreas, adicionamos funcionalidade ao HTTP (por
exemplo, adicionamos cabeçalhos para oferecer suporte ao controle de acesso). Nesses casos, fizemos o
melhor para adicionar nova funcionalidade de uma forma que correspondesse ao estilo de uso padrão do
HTTP.

Para obter mais informações sobre como usar a API REST para desenvolver com o Amazon S3, consulte
os tópicos abaixo.

Tópicos
• Roteamento de solicitação (p. 1048)

Roteamento de solicitação
Os programas que fazem solicitações em buckets criados usando a API <CreateBucketConfiguration>
devem oferecer suporte a redirecionamentos. Além disso, alguns clientes que não respeitam TTLs DNS
podem encontrar problemas.

Esta seção descreve problemas de roteamento e DNS a serem considerados ao projetar seu serviço ou
aplicação para uso com o Amazon S3.

Redirecionamento de solicitação e a API REST


O Amazon S3 usa o Domain Name System (DNS) para rotear solicitações para instalações capazes de
processá-las. Esse sistema funciona com eficiência, mas podem ocorrer erros de roteamento temporários.
Se uma solicitação chega na localização errada do Amazon S3, o Amazon S3 responde com um
redirecionamento temporário pedindo que o solicitante reenvie a solicitação para um novo endpoint. Se
uma solicitação é formada de maneira incorreta, o Amazon S3 usa redirecionamentos constantes para
fornecer direções sobre como executar a solicitação corretamente.
Important

Para usar esse recurso, você deve ter uma aplicação que possa lidar com respostas
de redirecionamento do Amazon S3. A única exceção é para aplicativos que funcionam
exclusivamente com buckets criados sem <CreateBucketConfiguration>. Para obter mais
informações sobre restrições de localização, consulte Acessar um bucket (p. 36).
Para todas as regiões lançadas após 20 de março de 2019, se uma solicitação chega no local
errado do Amazon S3, o Amazon S3 retorna um erro de solicitação incorreta HTTP 400.
Para obter mais informações sobre como habilitar ou desabilitar uma região da AWS, consulte
Regiões e endpoints da AWS na Referência geral da AWS.

Tópicos
• Roteamento de DNS (p. 1049)
• Redirecionamento de solicitação temporário (p. 1049)
• Redirecionamento permanente de solicitação (p. 1051)
• Exemplos de redirecionamento de solicitação (p. 1051)

Versão da API 2006-03-01


1048
Amazon Simple Storage Service Guia do usuário
Roteamento de solicitação

Roteamento de DNS
O roteamento de DNS encaminha solicitações para instalações apropriadas do Amazon S3. A figura e o
procedimento a seguir mostram um exemplo de roteamento de DNS.

Etapas de solicitação de roteamento DNS

1. O cliente faz uma solicitação de DNS para obter um objeto armazenado no Amazon S3.
2. O cliente recebe um ou mais endereços IP para instalações capazes de processar a solicitação. Neste
exemplo, o endereço IP é para a instalação B.
3. O cliente faz uma solicitação à instalação B do Amazon S3.
4. A instalação B retorna uma cópia do objeto ao cliente.

Redirecionamento de solicitação temporário


Um redirecionamento temporário é um tipo de resposta de erro que indica que o solicitante deve reenviar
a solicitação para um endpoint diferente. Devido à natureza distribuída do Amazon S3, as solicitações
podem ser roteadas temporariamente para a instalação errada. É mais provável que isso aconteça
imediatamente após a criação ou exclusão de buckets.

Por exemplo, se você criar um bucket novo e, em seguida, fizer uma solicitação a esse bucket, é possível
que receba um redirecionamento temporário dependendo da restrição de localização do bucket. Se você

Versão da API 2006-03-01


1049
Amazon Simple Storage Service Guia do usuário
Roteamento de solicitação

criou o bucket na região da AWS Leste dos EUA (Norte da Virgínia), você não verá o redirecionamento já
que esse também é o endpoint padrão do Amazon S3.

No entanto, se o bucket for criado em qualquer outra região, todas as solicitações feitas ao bucket
vão para o endpoint padrão enquanto a entrada do DNS do bucket é propagada. O endpoint padrão
redireciona a solicitação para o endpoint correto com uma resposta HTTP 302. Os redirecionamentos
temporários contêm um URI para a instalação correta, que pode ser usado para reenviar a solicitação
imediatamente.
Important

Não reutilize um endpoint fornecido por uma resposta de redirecionamento anterior. Ele
pode parecer funcionar (até mesmo durante longos períodos), mas pode fornecer resultados
imprevisíveis e eventualmente falhará sem aviso.

A figura e o procedimento a seguir mostram um exemplo de um redirecionamento temporário.

Etapas de redirecionamento de solicitação temporário

1. O cliente faz uma solicitação de DNS para obter um objeto armazenado no Amazon S3.
2. O cliente recebe um ou mais endereços IP para instalações capazes de processar a solicitação.
3. O cliente faz uma solicitação à instalação B do Amazon S3.
4. A instalação B retorna um redirecionamento indicando que o objeto está disponível na localização C.
5. O cliente reenvia a solicitação para a instalação C.

Versão da API 2006-03-01


1050
Amazon Simple Storage Service Guia do usuário
Roteamento de solicitação

6. A instalação C retorna uma cópia do objeto.

Redirecionamento permanente de solicitação


Um redirecionamento permanente indica que a solicitação abordou um recurso de maneira inapropriada.
Por exemplo, redirecionamentos permanentes ocorrem se você usar uma solicitação no estilo de caminho
para acessar um bucket criado com <CreateBucketConfiguration>. Para obter mais informações,
consulte Acessar um bucket (p. 36).

Para ajudar a encontrar esses erros durante o desenvolvimento, esse tipo de redirecionamento não
contém um cabeçalho HTTP de localização que permite o acompanhamento automático da solicitação
para a localização correta. Consulte o documento de erros XML resultante para obter ajuda no uso do
endpoint correto do Amazon S3.

Exemplos de redirecionamento de solicitação


Veja a seguir exemplos de respostas de redirecionamento de solicitação temporário.

API REST de resposta de redirecionamento temporário

HTTP/1.1 307 Temporary Redirect


Location: http://awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com/photos/puppy.jpg?rk=e2c69a31
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Fri, 12 Oct 2007 01:12:56 GMT
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>


<Error>
<Code>TemporaryRedirect</Code>
<Message>Please re-send this request to the specified temporary endpoint.
Continue to use the original request endpoint for future requests.</Message>
<Endpoint>awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com</Endpoint>
</Error>

API SOAP de resposta de redirecionamento temporário


Note
O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

<soapenv:Body>
<soapenv:Fault>
<Faultcode>soapenv:Client.TemporaryRedirect</Faultcode>
<Faultstring>Please re-send this request to the specified temporary endpoint.
Continue to use the original request endpoint for future requests.</Faultstring>
<Detail>
<Bucket>images</Bucket>
<Endpoint>s3-gztb4pa9sq.amazonaws.com</Endpoint>
</Detail>
</soapenv:Fault>
</soapenv:Body>

Considerações de DNS
Um dos requisitos de design do Amazon S3 é uma disponibilidade extremamente alta. Uma das maneiras
de cumprirmos esse requisito é atualizando os endereços IP associados com o endpoint do Amazon S3

Versão da API 2006-03-01


1051
Amazon Simple Storage Service Guia do usuário
Tratamento de erros

no DNS, conforme necessário. Essas alterações são refletidas automaticamente em clientes com tempo
de vida curto, mas não em alguns clientes com tempo de vida longo. Os clientes com tempo de vida longo
precisarão realizar uma ação especial para resolver de novo o endpoint do Amazon S3 periodicamente
para se beneficiar com essas alterações. Para obter mais informações sobre Virtual Machines (VMs –
Máquinas virtuais), consulte o seguinte:

• Para Java, por padrão, o JVM do Sun armazena em cache as pesquisas de DNS para sempre; acesse
a seção "InetAddress Caching" da documentação do InetAddress para obter informações sobre como
alterar esse comportamento.
• Para PHP, a VM PHP persistente que é executada nas configurações de implantação mais populares
armazena em cache as pesquisas do DNS até a VM ser reiniciada. Acesse os docs getHostByName
PHP.

Tratar erros de REST e SOAP


Tópicos
• A resposta de erro de REST (p. 1052)
• A resposta de erro de SOAP (p. 1053)
• Melhores práticas com relação a erros do Amazon S3 (p. 1054)

Esta seção descreve os erros de REST e de SOAP e como tratá-los.


Note
O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

A resposta de erro de REST


Se uma solicitação de REST resultar em um erro, a resposta HTTP terá:

• Um documento de erro XML como o corpo da resposta


• Content-Type: application/xml
• O código de status HTTP 3xx, 4xx ou 5xx apropriado

O seguinte é um exemplo de uma resposta de erro de REST.

<?xml version="1.0" encoding="UTF-8"?>


<Error>
<Code>NoSuchKey</Code>
<Message>The resource you requested does not exist</Message>
<Resource>/mybucket/myfoto.jpg</Resource>
<RequestId>4442587FB7D0A2F9</RequestId>
</Error>

Para obter mais informações sobre erros do Amazon S3, visite ErrorCodeList.

Cabeçalhos de resposta
Os seguintes são cabeçalhos de resposta retornados por todas as operações:

• x-amz-request-id: Um ID exclusivo atribuído a cada solicitação pelo sistema. No caso improvável


de problemas com o Amazon S3, a Amazon pode usar esse ID para ajudar a resolver o problema.

Versão da API 2006-03-01


1052
Amazon Simple Storage Service Guia do usuário
A resposta de erro de SOAP

• x-amz-id-2: Um token especial que nos ajudará a solucionar problemas.

Resposta de erro
Quando uma solicitação do Amazon S3 está em erro, o cliente recebe uma resposta de erro. O formato
exato de resposta de erro é específico à API: por exemplo, a resposta de erro de REST difere da resposta
de erro de SOAP. Contudo, todas as respostas de erro têm elementos comuns.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Código de erro
O código de erro é uma sequência que identifica exclusivamente uma condição de erro. O objetivo desse
código é ser lido e compreendido pelos programas que detectam e tratam erros por tipo. Muitos códigos
de erro são comuns entre as APIs SOAP e REST, mas alguns são específicos à API. Por exemplo,
NoSuchKey é universal, mas UnexpectedContent pode ocorrer apenas em resposta a uma solicitação
inválida do REST. Em todos os casos, os códigos com falha de SOAP têm um prefixo, conforme indicado
na tabela de códigos de erro, para que um erro de NoSuchKey seja realmente retornado em SOAP como
Client.NoSuchKey.
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

A mensagem de erro
A mensagem de erro contém uma descrição genérica da condição do erro em inglês. Ela é destinada ao
público humano. Programas simples exibem a mensagem diretamente ao usuário final se encontrarem
uma condição de erro que não conhecem ou não tratam. Programas sofisticados com tratamento de erro
mais exaustivo e internacionalização própria são mais de prováveis de ignorar a mensagem de erro.

Detalhes adicionais
Muitas respostas de erro contêm dados estruturados adicionais para serem lidos e compreendidos
pelo desenvolvedor que diagnostica erros de programação. Por exemplo, se você enviar um cabeçalho
Content-MD5 com uma solicitação PUT de REST que não corresponde ao resumo calculado no servidor,
você receberá um erro BadDigest. A resposta do erro também inclui como elementos de detalhes o
resumo que calculamos, e o resumo que você nos informou para esperar. Durante o desenvolvimento,
você pode usar essas informações para diagnosticar o erro. Em produção, um programa bem-comportado
pode incluir essas informações em seu log de erros.

A resposta de erro de SOAP


Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Em SOAP, um resultado de erro será retornado ao cliente como uma falha de SOAP, com o código de
resposta HTTP 500. Se você não receber uma falha de SOAP, sua solicitação terá sido bem-sucedida.

Versão da API 2006-03-01


1053
Amazon Simple Storage Service Guia do usuário
Melhores práticas com relação a erros do Amazon S3

O código de falha de SOAP do Amazon S3 é composto de um código de falha padrão de SOAP 1.1
("servidor" ou "cliente") concatenado com o código de erro específico ao Amazon S3. Por exemplo:
“Server.InternalError” ou “Client.NoSuchBucket”. O elemento da sequência da falha de SOAP contém uma
mensagem de erro genérica, legível pelo usuário em inglês. Finalmente, o elemento de detalhes da falha
de SOAP contém informações diversas relevantes para o erro.

Por exemplo, se você tentar excluir o objeto “Fred”, que não existe, o corpo da resposta de SOAP conterá
uma falha de SOAP “NoSuchKey”.

Example

<soapenv:Body>
<soapenv:Fault>
<Faultcode>soapenv:Client.NoSuchKey</Faultcode>
<Faultstring>The specified key does not exist.</Faultstring>
<Detail>
<Key>Fred</Key>
</Detail>
</soapenv:Fault>
</soapenv:Body>

Para obter mais informações sobre erros do Amazon S3, visite ErrorCodeList.

Melhores práticas com relação a erros do Amazon S3


Ao desenvolver uma aplicação para uso com o Amazon S3, é importante tratar os erros do Amazon S3
de maneira adequada. Esta seção descreve os problemas a serem considerados ao desenvolver um
aplicativo.

Tentar InternalErrors novamente


Os erros internos são erros que ocorrem no ambiente do Amazon S3.

Solicitações que recebem uma resposta de InternalError podem não ter sido processadas. Por exemplo, se
uma solicitação PUT retornar um InternalError, um GET subsequente poderá recuperar o valor antigo ou o
valor atualizado.

Se o Amazon S3 retornar uma resposta de InternalError, tente a solicitação novamente.

Ajustar o aplicativo para erros repetidos de SlowDown


Como com qualquer sistema distribuído, o S3 tem mecanismos de proteção que detectam consumo
excessivo intencional ou involuntário de recursos e reagem adequadamente. Os erros de SlowDown
podem ocorrer quando uma alta taxa de solicitações aciona um desses mecanismos. Reduzir a taxa
de solicitações reduzirá ou eliminará erros desse tipo. De um modo geral, a maioria dos usuários não
experimentará esses erros regularmente; no entanto, se você quiser obter mais informações ou estiver
enfrentando erros de desaceleração altos ou inesperados, publique no nosso fórum de desenvolvedores
do Amazon S3 https://forums.aws.amazon.com/ ou cadastre-se no AWS Premium Support https://
aws.amazon.com/premiumsupport/.

Erros isolados
Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Versão da API 2006-03-01


1054
Amazon Simple Storage Service Guia do usuário
Referência

O Amazon S3 fornece um conjunto de códigos de erro que são usados pelas APIs SOAP e REST. A
API SOAP retorna códigos de erro padrão do Amazon S3. A API REST é desenvolvida para parecer um
servidor HTTP padrão e interagir com clientes HTTP existentes (por exemplo, navegadores, bibliotecas
de cliente HTTP, proxies, caches etc.) Para garantir que os clientes HTTP tratem erros corretamente,
mapeamos cada erro do Amazon S3 para um código de status HTTP.

Os códigos de status HTTP são menos expressivos que os códigos de erro do Amazon S3 e contêm
menos informações sobre o erro. Por exemplo, os erros NoSuchKey e NoSuchBucket do Amazon S3 são
mapeados para o código de status HTTP 404 Not Found.

Embora os códigos de status HTTP contenham menos informações sobre o erro, os clientes que entendem
HTTP, mas não a API do Amazon S3, geralmente tratam o erro corretamente.

Portanto, para lidar com erros ou para relatar erros do Amazon S3 para os usuários finais, use o código de
erro do Amazon S3 em vez do código de status HTTP, uma vez que ele contém a maioria das informações
sobre o erro. Além disso, ao depurar o aplicativo, você também deve consultar o elemento <Details>
legível pelo usuário da resposta de erro XML.

Referência do desenvolvedor
Este apêndice inclui as seções a seguir.

Tópicos
• Apêndice A: Usar a API SOAP (p. 1055)
• Apêndice B: Autenticar solicitações (AWS Signature versão 2) (p. 1058)

Apêndice A: Usar a API SOAP


Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Esta seção contém informações específicas da API SOAP do Amazon S3.


Note

As solicitações SOAP, autenticadas e anônimas, devem ser enviadas para o Amazon S3 usando
SSL. O Amazon S3 retorna um erro quando você envia uma solicitação SOAP via HTTP.

Tópicos
• Elementos comuns da API SOAP (p. 1055)
• Autenticar solicitações SOAP (p. 1056)
• Configurar políticas de acesso padrão com SOAP (p. 1057)

Elementos comuns da API SOAP


Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Versão da API 2006-03-01


1055
Amazon Simple Storage Service Guia do usuário
Apêndice A: Usar a API SOAP

Você pode interagir com o Amazon S3 usando SOAP 1.1 via HTTP. O WSDL do Amazon S3,
que descreve a API do Amazon S3 de maneira legível por máquina, está disponível em: https://
doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl. O esquema do Amazon S3 está disponível em
https://doc.s3.amazonaws.com/2006-03-01/AmazonS3.xsd.

A maioria dos usuários vai interagir com o Amazon S3 usando um toolkit SOAP personalizado para sua
linguagem e ambiente de desenvolvimento. Diferentes toolkits expõem a API do Amazon S3 de diferentes
maneiras. Consulte a documentação específica do toolkit para entender como usá-la. Esta seção ilustra as
operações SOAP do Amazon S3 de um modo independente do toolkit exibindo as solicitações XML e as
respostas como elas aparecem "na rede".

Elementos comuns
Você pode incluir os seguintes elementos relacionados a autorização com qualquer solicitação SOAP:

• AWSAccessKeyId: O ID de chave de acesso da AWS do solicitante


• Timestamp: A hora atual do seu sistema
• Signature: A assinatura da solicitação

Autenticar solicitações SOAP


Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Cada solicitação não anônima deve conter informações de autenticação para estabelecer a identidade do
principal que faz a solicitação. Em SOAP, as informações de autenticação são colocadas nos seguintes
elementos da solicitação SOAP:

• Seu ID de chave de acesso da AWS


Note

Ao fazer solicitações SOAP autenticadas, não há suporte para credenciais de segurança


temporárias. Para obter mais informações sobre os tipos de credenciais, consulte Fazer
solicitações (p. 990).
• Timestamp: Deve ser um dateTime (acesse http://www.w3.org/TR/xmlschema-2/#dateTime) o fuso
horário universal coordenado (horário médio de Greenwich), como 2009-01-01T12:00:00.000Z.
Haverá falha na autorização se esse time stamp tiver mais de 15 minutos de diferença do relógio nos
servidores do Amazon S3.
• Signature: O resumo RFC 2104 HMAC-SHA1 (acesse http://www.ietf.org/rfc/
rfc2104.txt) da concatenação de "AmazonS3" + OPERAÇÃO + Time stamp, usando sua
chave de acesso secreta da AWS como chave. Por exemplo, na solicitação de exemplo
CreateBucket a seguir, o elemento de assinatura conteria o resumo HMAC-SHA1 do valor
"AmazonS3CreateBucket2009-01-01T12:00:00.000Z":

Por exemplo, na solicitação de exemplo CreateBucket a seguir, o elemento de assinatura conteria o


resumo HMAC-SHA1 do valor "AmazonS3CreateBucket2009-01-01T12:00:00.000Z":

Example

<CreateBucket xmlns="https://doc.s3.amazonaws.com/2006-03-01">
<Bucket>quotes</Bucket>

Versão da API 2006-03-01


1056
Amazon Simple Storage Service Guia do usuário
Apêndice A: Usar a API SOAP

<Acl>private</Acl>
<AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId>
<Timestamp>2009-01-01T12:00:00.000Z</Timestamp>
<Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
</CreateBucket>

Note

As solicitações SOAP, autenticadas e anônimas, devem ser enviadas para o Amazon S3 usando
SSL. O Amazon S3 retorna um erro quando você envia uma solicitação SOAP via HTTP.
Important

Devido a interpretações diferentes em relação a como a precisão de tempo extra deve


ser aplicada, os usuários de .NET devem tomar cuidado para não enviar datas e horas
excessivamente específicas ao Amazon S3. Isso pode ser realizado criando manualmente objetos
DateTime com precisão de apenas milissegundos.

Configurar políticas de acesso padrão com SOAP


Note

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

O controle de acesso pode ser definido no momento em que um bucket ou um objeto são gravados ao
se incluir o elemento “AccessControlList” com a solicitação para CreateBucket, PutObjectInline ou
PutObject. O elemento AccessControlList está descrito em Identity and Access Management no Amazon
S3 (p. 252). Se nenhuma lista de controle de acesso for especificada com essas operações, o recurso será
criado com uma política de acesso padrão que dá ao solicitante acesso FULL_CONTROL (esse é o caso
mesmo que a solicitação seja uma solicitação PutObjectInline ou PutObject para um objeto que já exista).

A seguir está uma solicitação que grava dados em um objeto, torna o objeto legível por administradores
anônimos e dá ao usuário especificado direitos FULL_CONTROL sobre o bucket (a maioria dos
desenvolvedores vai querer dar a si mesmo acesso FULL_CONTROL a seu próprio bucket).

Example

A seguir está uma solicitação que grava dados em um objeto e torna o objeto legível por administradores
anônimos.

Sample Request

<PutObjectInline xmlns="https://doc.s3.amazonaws.com/2006-03-01">
<Bucket>quotes</Bucket>
<Key>Nelson</Key>
<Metadata>
<Name>Content-Type</Name>
<Value>text/plain</Value>
</Metadata>
<Data>aGEtaGE=</Data>
<ContentLength>5</ContentLength>
<AccessControlList>
<Grant>
<Grantee xsi:type="CanonicalUser">
<ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
<DisplayName>chriscustomer</DisplayName>
</Grantee>

Versão da API 2006-03-01


1057
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

<Permission>FULL_CONTROL</Permission>
</Grant>
<Grant>
<Grantee xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AllUsers<URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
</AccessControlList>
<AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId>
<Timestamp>2009-03-01T12:00:00.183Z</Timestamp>
<Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
</PutObjectInline>

Sample Response

<PutObjectInlineResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01">
<PutObjectInlineResponse>
<ETag>&quot828ef3fdfa96f00ad9f27c383fc9ac7f&quot</ETag>
<LastModified>2009-01-01T12:00:00.000Z</LastModified>
</PutObjectInlineResponse>
</PutObjectInlineResponse>

A política de controle de acesso pode ser lida ou configurada para um bucket ou objeto existentes
usando os métodos GetBucketAccessControlPolicy, GetObjectAccessControlPolicy,
SetBucketAccessControlPolicy e SetObjectAccessControlPolicy. Para obter mais
informações, consulte a explicação detalhada desses métodos.

Apêndice B: Autenticar solicitações (AWS Signature


versão 2)
Important

Esta seção descreve como autenticar solicitações usando o AWS Signature versão 2. O Signature
versão 2 está sendo desativado (defasado), o Amazon S3 aceitará somente solicitações de API
assinadas usando o Signature versão 4. Para obter mais informações, consulte AWS Signature
versão 2 desativado (defasado) para o Amazon S3 (p. 1037)
O Signature versão 4 oferece suporte para todas as regiões da AWS; é a única versão compatível
com novas regiões. Para obter mais informações, consulte Autenticar solicitações (AWS Signature
versão 4) na Referência de APIs do Amazon Simple Storage Service.
O Amazon S3 oferece a possibilidade de identificar qual versão da assinatura de API foi usada
para assinar uma solicitação. É importante identificar se algum dos fluxos de trabalho estão
utilizando as assinaturas do Signature versão 2 e atualizá-los para que usem o Signature versão 4
para evitar que seus negócios sejam impactados.

• Se você estiver usando os logs de eventos do CloudTrail (opção recomendada), consulte


Identificar solicitações do Amazon S3 Signature versão 2 usando o CloudTrail (p. 828) sobre
como consultar e identificar essas solicitações.
• Se você estiver usando os logs de acesso ao servidor do Amazon S3, consulte Identificar
solicitações do Signature versão 2 usando logs de acesso do Amazon S3 (p. 853)

Tópicos
• Autenticar solicitações usando a API REST (p. 1059)
• Assinar e autenticar as solicitações REST (p. 1061)
• Uploads baseados no navegador usando POST (Signature versão 2 da AWS) (p. 1071)

Versão da API 2006-03-01


1058
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Autenticar solicitações usando a API REST


Ao acessar o Amazon S3 usando REST, é necessário fornecer os seguintes itens na solicitação para que
ela seja autenticada:

Elementos da solicitação

• ID de chave de acesso da AWS: cada solicitação deve conter o ID de chave de acesso da identidade
que você estiver usando para enviar a solicitação.
• Assinatura: cada solicitação deve conter uma assinatura de solicitação válida. Caso contrário, a
solicitação será rejeitada.

Uma assinatura de solicitação é calculada com a chave de acesso secreta, um segredo compartilhado
conhecido apenas por você e pela AWS.
• Time stamp: cada solicitação deve conter a data e a hora de criação da solicitação, representada como
uma string em UTC.
• Data: cada solicitação deve conter o time stamp da solicitação.

Dependendo da ação da API que você está usando, é possível fornecer uma data e hora de expiração
para a solicitação em vez (ou além) do time stamp. Consulte o tópico de autenticação da respectiva ação
para determinar o que é necessário.

Veja a seguir as etapas gerais para autenticar solicitações ao Amazon S3. Pressupõe-se que você tem as
credenciais de segurança necessárias, o ID de chave de acesso e a chave de acesso secreta.

Versão da API 2006-03-01


1059
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

1 Crie uma solicitação para a AWS.

2 Calcule a assinatura usando a chave de acesso secreta.

3 Envie a solicitação para o Amazon S3. Inclua o ID de chave de acesso e a assinatura na


solicitação. O Amazon S3 executa as próximas três etapas.

4 O Amazon S3 usa o ID de chave de acesso para pesquisar a chave de acesso secreta.

5 O Amazon S3 calcula uma assinatura a partir dos dados da solicitação e da chave de acesso
secreta usando o mesmo algoritmo usado para calcular a assinatura enviada na solicitação.

6 Se a assinatura gerada pelo Amazon S3 corresponder à enviada na solicitação, ela será


considerada autêntica. Se a houver falha na comparação, a solicitação será descartada e o
Amazon S3 retornará uma resposta de erro.

Informações de autenticação detalhadas


Para obter informações detalhadas sobre a autenticação REST, consulte Assinar e autenticar as
solicitações REST (p. 1061).

Versão da API 2006-03-01


1060
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Assinar e autenticar as solicitações REST


Tópicos
• Uso de credenciais de segurança temporárias (p. 1062)
• Cabeçalho de autenticação (p. 1062)
• Canonização de solicitação para assinatura (p. 1063)
• Criar o elemento CanonicalizedResource (p. 1063)
• Criar o elemento CanonicalizedAmzHeaders (p. 1064)
• Elementos StringToSign de cabeçalho HTTP posicionais versus nomeados (p. 1064)
• Requisito de time stamp (p. 1065)
• Exemplos de autenticação (p. 1065)
• Problemas de assinatura de solicitação REST (p. 1069)
• Alternativa de autenticação de solicitação por string de consulta (p. 1069)

Note

Este tópico explica solicitações de autenticação usando o Signature versão 2. O Amazon S3


agora é compatível com o mais recente Signature versão 4. Essa versão mais recente de
assinatura é compatível com todas as regiões e qualquer nova região depois de 30 de janeiro de
2014 oferecerá suporte somente ao Signature versão 4. Para obter mais informações, acesse
;Autenticar solicitações (AWS Signature versão 4) na Referência de APIs do Amazon Simple
Storage Service.

Autenticação é o processo de provar sua identidade ao sistema. A identidade é um fator importante


nas decisões de controle de acesso do Amazon S3. As solicitações são permitidas ou negadas em
parte com base na identidade do solicitante. Por exemplo, o direito de criar buckets está reservado a
desenvolvedores registrados e (por padrão) o direito de criar objetos em um bucket está reservado para
o proprietário do bucket em questão. Como um desenvolvedor, você fará solicitações que invocam esses
privilégios e, portanto, precisará provar sua identidade ao sistema, autenticando suas solicitações. Esta
seção explica como fazer isso.
Note

O conteúdo nesta seção não se aplica a HTTP POST. Para obter mais informações, consulte
Uploads baseados no navegador usando POST (Signature versão 2 da AWS) (p. 1071).

A API REST do Amazon S3 usa um esquema HTTP personalizado com base em um HMAC de chave
(código de autenticação de mensagem hash) para autenticação. Para autenticar uma solicitação, você
primeiro concatena elementos selecionados da solicitação para formar uma string. Depois, você pode
usar sua chave de acesso secreta da AWS para calcular o HMAC dessa string. Informalmente, chamamos
desse processo de “assinar a solicitação” e chamamos o resultado do algoritmo do HMAC de assinatura,
pois ele simula as propriedades de segurança de uma assinatura real. Finalmente, você adiciona esta
assinatura como um parâmetro da solicitação usando a sintaxe descrita nesta seção.

Quando o sistema recebe uma solicitação autenticada, ele busca a chave de acesso secreta da AWS que
você afirma ter e a usa da mesma forma para computar uma assinatura para a mensagem que recebeu.
Então, ele compara a assinatura que calculou com a assinatura apresentada pelo solicitante. Se houver
correspondência entre as duas assinaturas, o sistema conclui que o solicitante deve ter acesso à chave
de acesso secreta da AWS e, portanto, age com a autoridade do principal para quem a chave foi emitida.
Se as duas assinaturas não correspondem, a solicitação é abandonada e o sistema responde com uma
mensagem de erro.

Example Solicitação REST autenticada do Amazon S3

GET /photos/puppy.jpg HTTP/1.1

Versão da API 2006-03-01


1061
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Host: awsexamplebucket1.us-west-1.s3.amazonaws.com
Date: Tue, 27 Mar 2007 19:36:42 +0000

Authorization: AWS AKIAIOSFODNN7EXAMPLE:


qgk2+6Sv9/oM7G3qLEjTH1a1l1g=

Uso de credenciais de segurança temporárias


Se você assinar sua solicitação usando credenciais de segurança temporárias (consulte Fazer
solicitações (p. 990)), você deverá incluir o token de segurança correspondente em sua solicitação,
adicionando o cabeçalho x-amz-security-token.

Quando você obtém credenciais de segurança temporárias usando a API do AWS Security Token Service,
a resposta inclui credenciais de segurança temporárias e um token de sessão. Forneça o valor do token
de sessão no cabeçalho x-amz-security-token ao enviar solicitações ao Amazon S3. Para obter
informações sobre a API do AWS Security Token Service fornecida pelo IAM, acesse Ação no Guia de
referência de APIs do AWS Security Token Service.

Cabeçalho de autenticação
A API REST do Amazon S3 usa o cabeçalho padrão HTTP Authorization para passar informações de
autenticação. (O nome do cabeçalho padrão é infeliz porque ele carrega informações de autenticação, não
de autorização.) No esquema de autenticação do Amazon S3, o cabeçalho Autorização tem a seguinte
forma:

Authorization: AWS AWSAccessKeyId:Signature

Um ID de chave de acesso da AWS e uma chave de acesso secreta da AWS são emitidos para
os desenvolvedores quando eles se registram. Para autenticação de solicitação, o elemento
AWSAccessKeyId identifica o ID de chave de acesso que foi usado para computar a assinatura e,
indiretamente, o desenvolvedor que fez a solicitação.

O elemento Signature é o RFC 2104 HMAC-SHA1 dos elementos selecionados da solicitação e,


portanto, a parte Signature do cabeçalho Autorização variará de uma solicitação para outra. Se a
assinatura da solicitação calculada pelo sistema corresponder ao Signature incluído na solicitação,
o solicitante terá demonstrado a posse da chave de acesso secreta da AWS. A solicitação será então
processada na identidade do desenvolvedor para quem a chave foi emitida e com a autoridade dele.

A seguir está uma pseudogramática que ilustra a criação do cabeçalho da solicitação Authorization.
(No exemplo, \n significa o ponto do código Unicode U+000A, geralmente chamado de nova linha).

Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-


Of( StringToSign ) ) );

StringToSign = HTTP-Verb + "\n" +


Content-MD5 + "\n" +
Content-Type + "\n" +
Date + "\n" +
CanonicalizedAmzHeaders +
CanonicalizedResource;

CanonicalizedResource = [ "/" + Bucket ] +


<HTTP-Request-URI, from the protocol name up to the query string> +
[ subresource, if present. For example "?acl", "?location", "?logging", or "?torrent"];

CanonicalizedAmzHeaders = <described below>

Versão da API 2006-03-01


1062
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

O HMAC-SHA1 é um algoritmo definido pelo hash de chave RFC 2104 para autenticação de mensagem.
O algoritmo recebe como input duas strings de byte, uma chave e uma mensagem. Para a autenticação de
solicitação do Amazon S3, use sua chave de acesso secreta da AWS (YourSecretAccessKey) como a
chave e a codificação UTF-8 de StringToSign como a mensagem. A saída de HMAC-SHA1 também é
uma string de byte, chamada de resumo. O parâmetro de solicitação Signature é criado pela codificação
Base64 desse resumo.

Canonização de solicitação para assinatura


Lembre-se de que quando o sistema recebe uma solicitação autenticada, ele compara a assinatura de
solicitação computada com a assinatura fornecida na solicitação em StringToSign. Por esse motivo,
é necessário computar a assinatura usando o mesmo método usado pelo Amazon S3. Nós chamamos o
processo de colocar uma solicitação em um formulário estabelecido para assinatura de canonização.

Criar o elemento CanonicalizedResource


CanonicalizedResource representa o recurso do Amazon S3 visado pela solicitação. Crie-o para uma
solicitação REST como se segue:

Iniciar processo

1 Inicie com uma string vazia ("").

2 Se a solicitação especificar um bucket usando o cabeçalho de host HTTP (estilo hosted virtual),
adicione o nome do bucket precedido por uma "/" (por exemplo, “/bucketname”). Para solicitações
de estilo de caminho e solicitações que não seja endereçada a um bucket, não faça nada. Para
obter mais informações sobre solicitações de estilo hosted virtual, consulte Hospedagem virtual de
buckets (p. 1025).

Para uma solicitação no estilo de hospedagem virtual "https://awsexamplebucket1.s3.us-


west-1.amazonaws.com/photos/puppy.jpg", o CanonicalizedResource é "/awsexamplebucket1".

Para uma solicitação em estilo de caminho, "https://s3.us-west-1.amazonaws.com/


awsexamplebucket1/photos/puppy.jpg", o CanonicalizedResource é "".

3 Adicione a parte do caminho de um URI de solicitação HTTP descodificado, até a query string, mas
sem incluí-la.

Para uma solicitação no estilo de hospedagem virtual "https://awsexamplebucket1.s3.us-


west-1.amazonaws.com/photos/puppy.jpg", o CanonicalizedResource e "/awsexamplebucket1/
photos/puppy.jpg".

Para uma solicitação no estilo de hospedagem virtual "https://s3.us-west-1.amazonaws.com/


awsexamplebucket1/photos/puppy.jpg", o CanonicalizedResource é "/awsexamplebucket1/
photos/puppy.jpg". Neste ponto, o CanonicalizedResource é o mesmo para a solicitação em
estilo hosted virtual e em estilo de caminho.

Para uma solicitação que não seja endereçada a um bucket, como GET Service, adicione “/”.

4 Se a solicitação endereça um sub-recurso, como ?versioning, ?location, ?acl, ?torrent,


?lifecycle ou ?versionid, adicione o sub-recurso, seu valor, se houver um, e o ponto
de interrogação. Observe que, em caso de vários sub-recursos, os sub-recursos devem ser
classificados em ordem lexicográfica por nome de sub-recurso e ser separados por '&', por
exemplo, ?acl&versionId=value.

Os sub-recursos que devem ser incluídos ao criar o elemento de CanonicalizedResource são acl,
ciclo de vida, local, registro, notificação, partNumber, política, requestPayment, torrent, uploadId,
uploads, versionId, versionamento, versões e site.

Versão da API 2006-03-01


1063
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Se a solicitação especificar os parâmetros de query string que cancelam os valores de cabeçalho


da resposta (consulte Objeto GET), adicione os parâmetros de query string e seus valores. Ao
assinar, você não codifica esses valores; contudo, ao fazer a solicitação, você deve codificar
esses valores de parâmetros. Os parâmetros de query string em uma solicitação GET incluem
response-content-type, response-content-language, response-expires, response-
cache-control, response-content-disposition e response-content-encoding.

O parâmetro de query string delete deve ser incluído ao criar o CanonicalizedResource para uma
solicitação de exclusão de vários objetos.

Os elementos do CanonicalizedResource que vêm da URI da solicitação HTTP devem ser assinados
literalmente como aparecem na solicitação HTTP, incluindo metacaracteres de codificação de URL.

O CanonicalizedResource pode ser diferente da URI da solicitação HTTP. Em particular, se


sua solicitação usa o cabeçalho HTTP Host para especificar um bucket, o bucket não aparece na
URI da solicitação HTTP. Contudo, o CanonicalizedResource continua a incluir o bucket. Os
parâmetros de query string podem também aparecer na URI da solicitação, mas não estão incluídos
em CanonicalizedResource. Para obter mais informações, consulte Hospedagem virtual de
buckets (p. 1025).

Criar o elemento CanonicalizedAmzHeaders


Para criar a parte de CanonicalizedAmzHeaders de StringToSign, selecione todos os cabeçalhos de
solicitações HTTP que comecem com 'x-amz-' (usando uma comparação que não diferencie maiúsculas e
minúsculas) e use o processo a seguir.

Processo de CanonicalizedAmzHeaders

1 Converta cada nome de cabeçalho HTTP para minúsculas. Por exemplo, 'X-Amz-Date' torna-se
'x-amz-date'.

2 Classifique a coleção de cabeçalhos por ordem lexicográfica por nome de cabeçalho.

3 Combine campos do cabeçalho com o mesmo nome em um par “header-name:comma-


separated-value-list” conforme descrito em RFC 2616, seção 4.2, sem qualquer espaço entre os
valores. Por exemplo, os dois cabeçalhos de metadados 'x-amz-meta-username: fred' e
'x-amz-meta-username: barney' seriam combinados em único cabeçalho 'x-amz-meta-
username: fred,barney'.

4 “Desdobre” os cabeçalhos longos que abrangem várias linhas (como permitido em RFC 2616,
seção 4.2) substituindo o espaço de dobramento (incluindo a nova linha) por um único espaço.

5 Remova todos os espaços ao redor dos dois pontos no cabeçalho. Por exemplo, o cabeçalho 'x-
amz-meta-username: fred,barney' iria se tornar 'x-amz-meta-username:fred,barney'

6 Finalmente, adicione um caractere de nova linha (U+000A) para cada cabeçalho canonizado
na lista resultante. Crie o elemento CanonicalizedResource concatenando todos os cabeçalhos
dessa lista em uma única string.

Elementos StringToSign de cabeçalho HTTP posicionais versus nomeados


Os primeiros elementos de cabeçalho do StringToSign (Content-Type, Date e Content-MD5) são de
natureza posicional. StringToSign não inclui os nomes desses cabeçalhos, somente seus valores da
solicitação. Em contraste, os elementos 'x-amz-' são nomeados. Os nomes de cabeçalho e os valores de
cabeçalho aparecem em StringToSign.

Versão da API 2006-03-01


1064
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Se um cabeçalho posicional chamado para a definição de StringToSign não estiver presente na sua
solicitação (por exemplo, Content-Type ou Content-MD5 são opcionais para solicitações PUT e sem
sentido para solicitações GET), substitua a string vazia ("") para essa posição.

Requisito de time stamp


Um time stamp válido (usando o cabeçalho HTTP Date ou uma alternativa x-amz-date) é obrigatório
para solicitações autenticadas. Além disso, o time stamp do cliente, incluído com uma solicitação
autenticada, não deve exceder 15 minutos do tempo do sistema do Amazon S3 quando a solicitação é
recebida. Caso contrário, haverá falha na solicitação com o código de erro RequestTimeTooSkewed.
A intenção dessas restrições é limitar a possibilidade de que solicitações interceptadas possam ser
reenviadas por um adversário. Para uma proteção mais forte contra espionagem, use o transporte HTTPS
para solicitações autenticadas.
Note

A restrição de validação na data da solicitação se aplica somente a solicitações autenticadas que


não usem a autenticação por query string. Para obter mais informações, consulte Alternativa de
autenticação de solicitação por string de consulta (p. 1069).

Algumas bibliotecas de clientes HTTP não expõem a capacidade para configurar o cabeçalho Date para
uma solicitação. Se tiver problemas para incluir o valor do cabeçalho "Data" nos cabeçalhos canonizados,
você pode configurar o time stamp para a solicitação usando um cabeçalho 'x-amz-date'. O valor do
cabeçalho x-amz-date deve estar em um dos formatos RFC 2616 (http://www.ietf.org/rfc/rfc2616.txt).
Quando um cabeçalho x-amz-date está presente em uma solicitação, o sistema ignorará qualquer
cabeçalho Date ao calcular a assinatura da solicitação. Portanto, se você incluir o cabeçalho x-amz-
date, use a string vazia para o Date quando criar o StringToSign. Consulte a próxima seção para ver
um exemplo.

Exemplos de autenticação
Os exemplos nesta seção usam as credenciais (não trabalho) na tabela a seguir.

Parâmetro Valor

AWSAccessKeyId AKIAIOSFODNN7EXAMPLE

AWSSecretAccessKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

No exemplo StringToSigns, o formato não é significativo e \n significa o ponto de código Unicode U


+000A, chamado geralmente de nova linha. Além disso, os exemplos usam "+0000" para designar o fuso
horário. Você pode usar "GMT" para designar o fuso horário, mas as assinaturas mostradas nos exemplos
serão diferentes.

Objeto GET

Este exemplo obtém um objeto do bucket awsexamplebucket1.

Solicitação StringToSign

GET /photos/puppy.jpg HTTP/1.1 GET\n


Host: awsexamplebucket1.us- \n
west-1.s3.amazonaws.com \n
Date: Tue, 27 Mar 2007 19:36:42 +0000 Tue, 27 Mar 2007 19:36:42 +0000\n
/awsexamplebucket1/photos/puppy.jpg

Versão da API 2006-03-01


1065
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Solicitação StringToSign
Authorization: AWS
AKIAIOSFODNN7EXAMPLE:
qgk2+6Sv9/oM7G3qLEjTH1a1l1g=

Observe que o CanonicalizedResource inclui o nome do bucket, mas a URI da solicitação HTTP não o
inclui. (O bucket é especificado pelo cabeçalho de host.)
Note

O script Python a seguir calcula a assinatura precedente, usando os parâmetros fornecidos.


É possível usar esse script para criar suas próprias assinaturas, substituindo as chaves e
StringToSign conforme apropriado.

import base64
import hmac
from hashlib import sha1

access_key = 'AKIAIOSFODNN7EXAMPLE'.encode("UTF-8")
secret_key = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.encode("UTF-8")

string_to_sign = 'GET\n\n\nTue, 27 Mar 2007 19:36:42 +0000\n/awsexamplebucket1/


photos/puppy.jpg'.encode("UTF-8")
signature = base64.encodestring(
hmac.new(
secret_key, string_to_sign, sha1
).digest()
).strip()

print(f"AWS {access_key.decode()}:{signature.decode()}")

PUT objeto

Este exemplo coloca um objeto no bucket awsexamplebucket1 bucket.

Solicitação StringToSign

PUT /photos/puppy.jpg HTTP/1.1 PUT\n


Content-Type: image/jpeg \n
Content-Length: 94328 image/jpeg\n
Host: awsexamplebucket1.s3.us- Tue, 27 Mar 2007 21:15:45 +0000\n
west-1.amazonaws.com /awsexamplebucket1/photos/puppy.jpg
Date: Tue, 27 Mar 2007 21:15:45 +0000

Authorization: AWS AKIAIOSFODNN7EXAMPLE:


iqRzw+ileNPu1fhspnRs8nOjjIA=

Observe o cabeçalho Content-Type na solicitação e em StringToSign. Também observe que o Content-


MD5 está em branco em StringToSign porque não está presente na solicitação.

Lista

Este exemplo lista o conteúdo do bucket awsexamplebucket1.

Versão da API 2006-03-01


1066
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Solicitação StringToSign

GET /?prefix=photos&max-keys=50&marker=puppy HTTP/1.1 GET\n


User-Agent: Mozilla/5.0 \n
Host: awsexamplebucket1.s3.us-west-1.amazonaws.com \n
Date: Tue, 27 Mar 2007 19:42:41 +0000 Tue, 27 Mar 2007 19:42:41
+0000\n
Authorization: AWS AKIAIOSFODNN7EXAMPLE: /awsexamplebucket1/
m0WP8eCtspQl5Ahe6L1SozdX9YA=

Observe a barra final no CanonicalizedResource e a ausência de parâmetros de query string.

Fetch
Este exemplo busca o sub-recurso de política de controle de acesso para o bucket “awsexamplebucket1”
bucket.

Solicitação StringToSign

GET /?acl HTTP/1.1 GET\n


Host: awsexamplebucket1.s3.us-west-1.amazonaws.com \n
Date: Tue, 27 Mar 2007 19:44:46 +0000 \n
Tue, 27 Mar 2007 19:44:46
Authorization: AWS AKIAIOSFODNN7EXAMPLE: +0000\n
82ZHiFIjc+WbcwFKGUVEQspPn+0= /awsexamplebucket1/?acl

Observe como o parâmetro de query string do sub-recurso está incluído no CanonicalizedResource.

Excluir
Este exemplo exclui um objeto do bucket “awsexamplebucket1” usando o estilo de caminho e a alternativa
de data.

Solicitação StringToSign

DELETE /awsexamplebucket1/photos/puppy.jpg DELETE\n


HTTP/1.1 \n
User-Agent: dotnet \n
Host: s3.us-west-1.amazonaws.com Tue, 27 Mar 2007 21:20:26 +0000\n
Date: Tue, 27 Mar 2007 21:20:27 +0000 /awsexamplebucket1/photos/puppy.jpg

x-amz-date: Tue, 27 Mar 2007 21:20:26 +0000


Authorization: AWS
AKIAIOSFODNN7EXAMPLE:XbyTlbQdu9Xw5o8P4iMwPktxQd8=

Observe como usamos o método alternativo 'x-amz- data' de especificar a data (porque a biblioteca de
cliente nos impediu de configurar a data, por exemplo). Nesse caso, o x-amz-date tem precedência
sobre o cabeçalho Date. Portanto, entrada de data na assinatura deve conter o valor de cabeçalho x-
amz-date.

Carregar
Este exemplo faz upload de um objeto para um bucket de estilo hosted virtual CNAME com metadados.

Versão da API 2006-03-01


1067
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Solicitação StringToSign

PUT /db-backup.dat.gz HTTP/1.1 PUT\n


User-Agent: curl/7.15.5 4gJE4saaMU4BqNR0kLY+lw==\n
Host: static.awsexamplebucket1.net:8080 application/x-download\n
Date: Tue, 27 Mar 2007 21:06:08 +0000 Tue, 27 Mar 2007 21:06:08 +0000\n

x-amz-acl: public-read x-amz-acl:public-read\n


content-type: application/x-download x-amz-meta-checksumalgorithm:crc32\n
Content-MD5: 4gJE4saaMU4BqNR0kLY+lw== x-amz-meta-filechecksum:0x02661779\n
X-Amz-Meta-ReviewedBy: x-amz-meta-reviewedby:
[email protected] [email protected],[email protected]
X-Amz-Meta-ReviewedBy: \n
[email protected] /static.awsexamplebucket1.net/db-
X-Amz-Meta-FileChecksum: 0x02661779 backup.dat.gz
X-Amz-Meta-ChecksumAlgorithm: crc32
Content-Disposition: attachment;
filename=database.dat
Content-Encoding: gzip
Content-Length: 5913339

Authorization: AWS AKIAIOSFODNN7EXAMPLE:


dKZcB+bz2EPXgSdXZp9ozGeOM4I=

Observe como os cabeçalhos 'x-amz-' são classificados, os espaços são removidos e os cabeçalhos são
convertidos em minúsculas. Observe também que vários cabeçalhos com o mesmo nome foram unidos
usando vírgulas para separar valores.

Observe como somente os cabeçalhos de entidade HTTP Content-Type e Content-MD5 aparecem em


StringToSign. Os outros cabeçalhos de entidade Content-* não aparecem.

Mais uma vez, observe que o CanonicalizedResource inclui o nome do bucket, mas a URI da
solicitação HTTP não o inclui. (O bucket é especificado pelo cabeçalho de host.)

Listar todos os meus buckets

Solicitação StringToSign

GET / HTTP/1.1 GET\n


Host: s3.us-west-1.amazonaws.com \n
Date: Wed, 28 Mar 2007 01:29:59 +0000 \n
Wed, 28 Mar 2007 01:29:59
Authorization: AWS +0000\n
AKIAIOSFODNN7EXAMPLE:qGdzdERIC03wnaRNKh6OqZehG9s= /

Chaves Unicode

Solicitação StringToSign

GET /dictionary/fran%C3%A7ais/pr%c3%a9f GET\n


%c3%a8re HTTP/1.1 \n
Host: s3.us-west-1.amazonaws.com \n
Date: Wed, 28 Mar 2007 01:49:49 +0000 Wed, 28 Mar 2007 01:49:49 +0000\n
Authorization: AWS /dictionary/fran%C3%A7ais/pr%c3%a9f
AKIAIOSFODNN7EXAMPLE:DNEZGsoieTZ92F3bUfSPQcbGmlM=
%c3%a8re

Versão da API 2006-03-01


1068
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Note

Os elementos em StringToSign que foram derivados da URI de solicitação são obtidos


literalmente, incluindo a codificação do URL e a capitalização.

Problemas de assinatura de solicitação REST


Quando a autenticação de solicitação REST falha, o sistema responde à solicitação com um documento
de erro em XML. As informações contidas neste documento de erro têm o objetivo de ajudar os
desenvolvedores a diagnosticar o problema. Especificamente, o elemento StringToSign do documento
de erro SignatureDoesNotMatch diz exatamente que canonização de solicitação o sistema está
usando.

Alguns toolkits inserem silenciosamente os cabeçalhos que você não conhece antecipadamente, como a
adição do cabeçalho Content-Type durante um PUT. Na maioria desses casos, o valor do cabeçalho
inserido permanece constante, permitindo que você descubra os cabeçalhos que faltam, usando
ferramentas como Ethereal ou o tcpmon.

Alternativa de autenticação de solicitação por string de consulta


Você pode autenticar determinados tipos de solicitações passando as informações necessárias como
parâmetros de query string em vez de usar o cabeçalho HTTP Authorization. Isso é útil para habilitar
o acesso de navegadores de terceiros a seus dados privados do Amazon S3 sem um proxy na solicitação.
A ideia é criar uma solicitação "pré-assinada" e codificá-la como um URL que o navegador de um usuário
final pode recuperar. Além disso, você pode limitar uma solicitação pré-assinada, especificando um tempo
de expiração.

Para obter mais informações sobre como usar parâmetros de consulta para autenticar solicitações,
consulte Autenticar solicitações: usar parâmetros de consulta (AWS Signature versão 4) na Referência
de APIs do Amazon Simple Storage Service. Para obter exemplos de uso de AWS SDKs para gerar pre-
signed URLs, consulte Compartilhar um objeto com uma pre-signed URL (p. 159).

Criar uma assinatura

Veja a seguir um exemplo de solicitação REST do Amazon S3 autenticada por query string.

GET /photos/puppy.jpg
?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1141889120&Signature=vjbyPxybdZaNmGa
%2ByT272YEAiv4%3D HTTP/1.1
Host: awsexamplebucket1.s3.us-west-1.amazonaws.com
Date: Mon, 26 Mar 2007 19:37:58 +0000

O método de autenticação por query string não requer nenhum cabeçalho especial HTTP. Em vez disso,
os elementos de autenticação exigidos são especificados como parâmetros de query string:

Nome de Valor de exemplo Descrição


parâmetro de
string de consulta

AWSAccessKeyId AKIAIOSFODNN7EXAMPLE Seu ID de chave de acesso da AWS.


Especifica a chave de acesso secreta da
AWS usada para assinar a solicitação
e, indiretamente, a identidade de
desenvolvedor que fez a solicitação.

Expires 1141889120 O tempo quando a assinatura vai


expirar, especificado como o número

Versão da API 2006-03-01


1069
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Nome de Valor de exemplo Descrição


parâmetro de
string de consulta
de segundos desde o epoch (00:00:00
UTC em 1º de janeiro de 1970). Uma
requisição recebida depois desse
tempo (de acordo com o servidor) será
rejeitada.

Signature vjbyPxybdZaNmGa A codificação do URL da codificação


%2ByT272YEAiv4%3D Base64 do HMAC-SHA1 de
StringToSign.

O método de autenticação de solicitação por query string difere ligeiramente do método comum, mas
somente no formato do parâmetro da solicitação Signature e no elemento StringToSign. A seguir está
a pseudogramática que ilustra o método de autenticação de solicitação por query string.

Signature = URL-Encode( Base64( HMAC-SHA1( YourSecretAccessKey, UTF-8-Encoding-


Of( StringToSign ) ) ) );

StringToSign = HTTP-VERB + "\n" +


Content-MD5 + "\n" +
Content-Type + "\n" +
Expires + "\n" +
CanonicalizedAmzHeaders +
CanonicalizedResource;

YourSecretAccessKey é o ID da chave de acesso secreta da AWS que a Amazon atribui a você


quando você se cadastra para ser um desenvolvedor da Amazon Web Services. Observe como o
Signature é codificado por URL para ser apropriado para a colocação na query string. Observe
também que no StringToSign, o elemento posicional HTTP Date foi substituído por Expires. O
CanonicalizedAmzHeaders e o CanonicalizedResource são os mesmos.
Note

No método de autenticação por query string, você não utiliza o cabeçalho Date nem o x-amz-
date request para calcular o string para assinar.

Autenticação de solicitação por string de consulta

Solicitação StringToSign

GET /photos/puppy.jpg? GET\n


AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE& \n
Signature=NpgCjnDzrM \n
%2BWFzoENXmpNDUsSn8%3D& 1175139620\n
Expires=1175139620 HTTP/1.1
/awsexamplebucket1/photos/puppy.jpg
Host: awsexamplebucket1.s3.us-
west-1.amazonaws.com

Supomos que quando um navegador faz a solicitação GET, ele não fornece um cabeçalho Content-
MD5 ou Content-Type, nem define os cabeçalhos x-amz- e assim essas partes de StringToSign são
deixadas em branco.

Versão da API 2006-03-01


1070
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Usar codificação Base64

As assinaturas de solicitação HMAC devem ser codificadas em Base64. A codificação Base64 converte a
assinatura em uma string simples ASCII que pode ser anexada à solicitação. Os caracteres que poderiam
aparecer na string da assinatura como mais (+), barra (/) e igual (=) devem ser codificados se forem
usados em uma URI. Por exemplo, se o código de autenticação inclui um sinal de mais (+), codifique-o
como %2B na solicitação. Codifique uma barra como %2F e o sinal de igual como %3D.

Para obter exemplos de codificação Base64, consulte Exemplos de autenticação (p. 1065) do Amazon S3.

Uploads baseados no navegador usando POST (Signature


versão 2 da AWS)
O Amazon S3 é compatível com POST, o que permite aos usuários fazer upload de conteúdo diretamente
para o Amazon S3. POST foi projetada para simplificar uploads, reduzir a latência do upload e economizar
seu dinheiro nas aplicações em que os usuários fazem upload de dados para armazenamento para o
Amazon S3.
Note

A autenticação de solicitação discutida nesta seção é baseada no Signature versão 2 da AWS,


um protocolo para autenticar solicitações de entrada da API para serviços da AWS.
Agora, o Amazon S3 é compatível com o Signature versão 4, um protocolo para autenticação
de solicitações de API de entrada para serviços da AWS, em todas as regiões da AWS. Neste
momento, as regiões da AWS criadas antes de 30 de janeiro de 2014 continuarão oferecendo
suporte ao protocolo anterior, Signature versão 2. Todas as regiões novas a partir de 30 de
janeiro de 2014 oferecerão suporte apenas ao Signature versão 4. Portanto, todas as solicitações
para essas regiões devem ser feitas com o Signature versão 4. Para obter mais informações,
consulte Autenticar solicitações em uploads baseados em navegador usando POST (AWS
Signature versão 4) na Referência de APIs do Amazon Simple Storage Service.

A figura a seguir mostra um upload usando POST do Amazon S3.

Versão da API 2006-03-01


1071
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Fazer upload usando POST

1 O usuário abre um navegador e acessa sua página da web.

2 A página da web tem um formulário HTTP que contém toda as informações necessárias para
que o usuário faça upload de conteúdo no Amazon S3.

3 O usuário faz uploads do conteúdo diretamente para o Amazon S3.

Note
Não há suporte para autenticação por query string para POST.

Formulários HTML (Signature versão 2 da AWS)


Tópicos
• Codificação do formulário HTML (p. 1072)
• Declaração do formulário HTML (p. 1073)
• Campos do formulário HTML (p. 1073)
• Criação de política (p. 1076)
• Criar uma assinatura (p. 1079)
• Redirecionamento (p. 1080)

Ao se comunicar com o Amazon S3, você normalmente usa as APIs REST ou SOAP para executar as
operações “put”, “get”, “delete”, entre outras. Com POST, os usuários fazem upload dos dados diretamente
para o Amazon S3 por meios dos navegadores, que não são capazes de processar a API SOAP ou criar
uma solicitação PUT de REST.
Note
O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos
do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST
ou os AWS SDKs.

Para permitir que os usuários façam upload de conteúdo para o Amazon S3 usando os navegadores, use
formulários HTML. Os formulários HTML são formados por uma declaração de formulário e campos de
formulário. A declaração de formulário contém informações de alto nível sobre a solicitação. Os campos de
formulário contêm informações detalhadas sobre a solicitação, bem como a política usada para autenticá-
la e garantir que ela satisfaça as condições especificadas.
Note
Os dados e os limites do formulário (excluindo o conteúdo do arquivo) não podem exceder 20 KB.

Esta seção explica como usar formulários HTML.

Codificação do formulário HTML


O formulário e a política devem ser codificados em UTF-8. Aplique a codificação UTF-8 no formulário
especificando isso no cabeçalho HTML ou como um cabeçalho de solicitação.
Note
A declaração de formulário HTML não aceita parâmetros de autenticação por query string.

A seguir um exemplo de codificação UTF-8 no cabeçalho HTML:

<html>
<head>

Versão da API 2006-03-01


1072
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...
</head>
<body>

A seguir um exemplo de codificação UTF-8 em um cabeçalho de solicitação:

Content-Type: text/html; charset=UTF-8

Declaração do formulário HTML


A declaração de formulário tem três componentes: a ação, o método e o tipo de compartimento. Se
qualquer um desses valores for definido de maneira incorreta, a solicitação falhará.

A ação especifica o URL que processa a solicitação, que deve ser definido como o URL do bucket. Por
exemplo, se o nome do seu bucket for awsexamplebucket1 e a região for Oeste dos EUA (Norte da
Califórnia), o URL será https://awsexamplebucket1.s3.us-west-1.amazonaws.com/.
Note
O nome chave é especificado em um campo do formulário.

O método deve ser POST.

O tipo de compartimento (enctype) deve ser especificado e definido como multipart/form-data para uploads
de arquivos e de áreas de texto. Para obter mais informações, acesse RFC 1867.

Example
O exemplo a seguir é uma declaração de formulário para o bucket "awsexamplebucket1".

<form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post"

enctype="multipart/form-data">

Campos do formulário HTML


A tabela a seguir descreve os campos que podem ser usados em um formulário HTML.
Note
A variável ${filename} é substituída automaticamente pelo nome do arquivo fornecido pelo
usuário e é reconhecida por todos os campos do formulário. Se o navegador ou o cliente fornece
um caminho completo ou parcial para o arquivo, apenas o texto que vem depois da última barra
(/) ou barra invertida (\) será usado. Por exemplo, "C:\Program Files\directory1\file.txt" será
interpretado como "file.txt". Se nenhum arquivo ou nome de arquivo for fornecido, a variável será
substituída por uma string vazia.

Nome do campo Descrição Obrigatório

AWSAccessKeyId O ID de chave de acesso da AWS do proprietário Condicional


do bucket que concede acesso a um usuário
anônimo para uma solicitação que satisfaz o
conjunto de restrições na política. Este campo é
necessário se a solicitação inclui um documento
de política.

Versão da API 2006-03-01


1073
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Nome do campo Descrição Obrigatório

acl Uma lista de controle de acesso (ACL) do Não


Amazon S3. Se uma lista de controle de acesso
inválida for especificada, um erro será gerado.
Para obter mais informações sobre as ACLs,
consulte Listas de controle de acesso (p. 8).

Tipo: string

Padrão: privado

Valores válidos: private | public-read |


public-read-write | aws-exec-read |
authenticated-read | bucket-owner-
read | bucket-owner-full-control

Cache-Control, Content- Cabeçalhos específicos para REST. Para obter Não


Type, Content- mais informações, consulte Objeto PUT.
Disposition, Content-
Encoding, Expires

key O nome da chave carregada. Sim

Para usar o nome de arquivo fornecido pelo


usuário, use a variável ${filename}. Por exemplo,
se o usuário Betty carrega o arquivo lolcatz.jpg e
você especifica /user/betty/${filename}, o arquivo
é armazenado como /user/betty/lolcatz.jpg.

Para obter mais informações, consulte Trabalhar


com metadados de objeto (p. 66).

policy Política de segurança que descreve o que é Não


permitido na solicitação. As solicitações sem
uma política de segurança são consideradas
anônimas e terão sucesso apenas em buckets
com gravação pública.

Versão da API 2006-03-01


1074
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Nome do campo Descrição Obrigatório

success_action_redirect, O URL para o qual o cliente é redirecionado após Não


redirect um upload bem-sucedido. O Amazon S3 anexa os
valores de bucket, chave e etag como parâmetros
de query string ao URL.

Se success_action_redirect não for especificado,


o Amazon S3 retornará o tipo de documento vazio
especificado no campo success_action_status.

Se o Amazon S3 não for capaz de interpretar o


URL, o campo será ignorado.

Se houver falha no upload, o Amazon S3 exibirá


um erro e não redirecionará o usuário para um
URL.

Para obter mais informações, consulte


Redirecionamento (p. 1080).
Note

O nome do campo de redirecionamento


está obsoleto e o suporte para ele será
removido no futuro.

success_action_status O código de status retornado ao cliente após o Não


upload bem-sucedido se success_action_redirect
não for especificado.

Os valores válidos são 200, 201 ou 204 (padrão).

Se o valor estiver definido como 200 ou 204, o


Amazon S3 retornará um documento vazio com
um código de status 200 ou 204.

Se o valor estiver definido como 201, o Amazon


S3 retornará um documento XML com um código
de status 201. Para obter informações sobre o
conteúdo do documento XML, consulte Objeto
POST.

Se o valor não estiver definido ou for um valor


inválido, o Amazon S3 retornará um documento
vazio com um código de status 204.
Note

Algumas versões do Adobe Flash Player


não lidam muito bem com respostas
HTTP com um corpo vazio. Para
oferecer suporte a uploads por meio
do Adobe Flash, recomendamos definir
success_action_status como 201.

Versão da API 2006-03-01


1075
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Nome do campo Descrição Obrigatório

signature A assinatura HMAC criada com a chave Condicional


de acesso secreta correspondente ao
AWSAccessKeyId fornecido. Este campo é
necessário se um documento de política estiver
incluso na solicitação.

Para obter mais informações, consulte Identity


and Access Management no Amazon S3 (p. 252).

x-amz-security-token Um token de segurança usado por credenciais de Não


sessão

Se a solicitação estiver usando o Amazon


DevPay, serão necessários dois campos do
formulário x-amz-security-token: um para o
token de produto e outro para o token de usuário.

Se a solicitação estiver usando credenciais de


sessão, será necessário um formulário x-amz-
security-token. Para obter mais informações,
consulte Credenciais de segurança temporárias
no Guia do usuário do IAM.

Outros nomes de campos com o Metadados especificados pelo usuário. Não


prefixo x-amz-meta-
O Amazon S3 não valida ou usa esses dados.

Para obter mais informações, consulte Objeto


PUT.

file Conteúdo de arquivo ou texto. Sim

O arquivo ou conteúdo deve ser o último campo


no formulário. Todos os campos abaixo deles
serão ignorados.

Não carregue mais de um arquivo por vez.

Criação de política

Tópicos
• Expiração (p. 1077)
• Condições (p. 1077)
• Correspondência de condição (p. 1078)
• Caracteres de escape (p. 1079)

A política é um documento JSON codificado em Base64 e UTF-8 que especifica as condições que a
solicitação deve satisfazer, sendo usado para autenticar o conteúdo. Dependendo de como os documentos
de política forem elaborados, eles podem ser usados por upload, por usuário, para todos os uploads ou de
acordo com outros formatos que atendam as suas necessidades.

Versão da API 2006-03-01


1076
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Note
Embora o documento de política seja opcional, o recomendamos fortemente em vez de tornar um
bucket aberto ao público para gravação.

Veja a seguir um exemplo de um documento de política:

{ "expiration": "2007-12-01T12:00:00.000Z",

"conditions": [

{"acl": "public-read" },

{"bucket": "awsexamplebucket1" },

["starts-with", "$key", "user/eric/"],

O documento de política contém a expiração e as condições.

Expiração
O elemento expiração especifica a data de expiração da política no formato de data UTC ISO 8601. Por
exemplo, "2007-12-01T12:00:00.000Z" especifica que a política não tem mais validade depois da meia-
noite UTC do dia 1° de dezembro de 2007. A expiração é necessária em uma política.

Condições
As condições no documento de política validam o conteúdo do objeto carregado. Cada campo especificado
no formulário (exceto AWSAccessKeyId, assinatura, arquivo, política e nomes de campos com o prefixo x-
ignore-) deve estar incluso na lista de condições.
Note
Caso existam vários campos com o mesmo nome, os valores devem ser separados por
vírgulas. Por exemplo, se existem dois campos chamados "x-amz-meta-tag", o primeiro tem o
valor "Ninja" e o segundo tem o valor "Stallman", o documento de política seria definido como
Ninja,Stallman.
Todas as variáveis dentro do formulário são expandidas antes da validação da política. Portanto,
qualquer correspondência de condição deve ser realizada nos campos expandidos. Por
exemplo, se o campo chave for definido como user/betty/${filename}, a política deve ser
[ "starts-with", "$key", "user/betty/" ]. Não insira [ "starts-with", "$key",
"user/betty/${filename}" ]. Para obter mais informações, consulte Correspondência de
condição (p. 1078).

A tabela a seguir descreve as condições do documento de política.

Nome do elemento Descrição

acl Especifica as condições que a ACL deve satisfazer.

Oferece suporte à correspondência exata e a starts-with.

content-length-range Especifica os tamanhos mínimo e máximo permitidos para o


conteúdo carregado.

Oferece suporte à correspondência por intervalo.

Versão da API 2006-03-01


1077
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Nome do elemento Descrição

Cache-Control, Content-Type, Cabeçalhos específicos para REST.


Content-Disposition, Content-
Encoding, Expires Oferece suporte à correspondência exata e a starts-with.

chave O nome da chave carregada.

Oferece suporte à correspondência exata e a starts-with.

success_action_redirect, redirect O URL para o qual o cliente é redirecionado após um upload


bem-sucedido.

Oferece suporte à correspondência exata e a starts-with.

success_action_status O código de status retornado ao cliente após o upload bem-


sucedido se success_action_redirect não for especificado.

Oferece suporte à correspondência exata.

x-amz-security-token Token de segurança do Amazon DevPay.

Cada solicitação que usa o Amazon DevPay requer dois


campos do formulário x-amz-security-token: um
para o token de produto e outro para o token de usuário.
Consequentemente, os valores devem ser separados por
vírgulas. Por exemplo, se o token de usuário é eW91dHViZQ==
e o token de produto for b0hnNVNKWVJIQTA=, defina a
entrada da política para: { "x-amz-security-token":
"eW91dHViZQ==,b0hnNVNKWVJIQTA=" }.

Outros nomes de campos com o Metadados especificados pelo usuário.


prefixo x-amz-meta-
Oferece suporte à correspondência exata e a starts-with.

Note
Se o seu toolkit traz campos adicionais (por exemplo, o Flash adiciona nome do arquivo), é
necessário adicioná-los ao documento de política. Se essa funcionalidade puder ser controlada,
adicione o prefixo x-ignore- ao campo para que o Amazon S3 ignore o recurso e para que
futuras versões não sejam afetadas.

Correspondência de condição
A tabela a seguir descreve os tipos de correspondência de condição. Embora seja necessário especificar
uma condição para cada campo especificado no formulário, é possível criar critérios de correspondência
mais complexos especificando várias condições para um campo.

Condição Descrição

Correspondências Correspondências exatas verificam se os campos correspondem a valores


exatas específicos. Este exemplo indica que a ACL deve ser definida como pública para
leitura:

{"acl": "public-read" }

Este exemplo é uma forma alternativa para indicar que a ACL deve ser definida como
pública para leitura:

Versão da API 2006-03-01


1078
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Condição Descrição

[ "eq", "$acl", "public-read" ]

Inicia com Se o valor deve iniciar com um certo valor, use starts-with. Este exemplo indica que a
chave deve iniciar com user/betty:

["starts-with", "$key", "user/betty/"]

Corresponder Para configurar a política para permitir qualquer conteúdo em um campo, use starts-
qualquer with com um valor vazio. Este exemplo permite qualquer success_action_redirect:
conteúdo
["starts-with", "$success_action_redirect", ""]

Especificar Para os campos que aceitam intervalos, separe os limites superior e inferior do
intervalos intervalo com uma vírgula. Este exemplo permite um tamanho de arquivo entre 1 e 10
megabytes:

["content-length-range", 1048579, 10485760]

Caracteres de escape
A tabela a seguir descreve os caracteres de escape dentro de um documento de política.

Sequência Descrição
de escape

\\ Barra invertida

\$ Sinal de dólar

\b Apagar

\f Feed do formulário

\n Nova linha

\r Carriage return

\t Guia horizontal

\v Guia vertical

\uxxxx Todos os caracteres do Unicode

Criar uma assinatura

Etapa Descrição

1 Codifique a política usando UTF-8.

2 Codifique os bytes UTF-8 usando Base64.

3 Assine a política com a chave de acesso secreta usando HMAC SHA-1.

Versão da API 2006-03-01


1079
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Etapa Descrição

4 Codifique a assinatura SHA-1 usando Base64.

Para obter informações gerais sobre a autenticação, consulte Identity and Access Management no Amazon
S3 (p. 252).

Redirecionamento

Esta seção descreve como manipular redirecionamentos.

Redirecionamento geral

Após a conclusão da solicitação POST, o usuário é redirecionado para o local especificado no campo
success_action_redirect. Se o Amazon S3 não for capaz de interpretar o URL, o campo
success_action_redirect será ignorado.

Se success_action_redirect não for especificado, o Amazon S3 retornará o tipo de documento vazio


especificado no campo success_action_status.

Se houver falha na solicitação POST, o Amazon S3 exibirá um erro e não fará o redirecionamento.

Redirecionamento pré-upload

Se o bucket foi criado usando <CreateBucketConfiguration>, os usuários finais poderão exigir um


redirecionamento. Se isso ocorrer, alguns navegadores podem manipular o redirecionamento de maneira
incorreta. Isso é relativamente raro, mas é mais provável que ocorra logo após a criação do bucket.

Exemplos de uploads (AWS Signature versão 2)


Tópicos
• Upload de arquivo (p. 1080)
• Upload de área de texto (p. 1083)

Note

A autenticação de solicitação discutida nesta seção é baseada no Signature versão 2 da AWS,


um protocolo para autenticar solicitações de entrada da API para serviços da AWS.
Agora, o Amazon S3 é compatível com o Signature versão 4, um protocolo para autenticação
de solicitações de API de entrada para serviços da AWS, em todas as regiões da AWS. Neste
momento, as regiões da AWS criadas antes de 30 de janeiro de 2014 continuarão oferecendo
suporte ao protocolo anterior, Signature versão 2. Todas as regiões novas a partir de 30 de
janeiro de 2014 oferecerão suporte apenas ao Signature versão 4. Portanto, todas as solicitações
para essas regiões devem ser feitas com o Signature versão 4. Para obter mais informações,
consulte Exemplos: upload baseado em navegador usando HTTP POST (usando o AWS
Signature versão 4) na Referência de APIs do Amazon Simple Storage Service.

Upload de arquivo

Este exemplo mostra o processo completo para criação de uma política e um formulário que pode ser
usado para carregar um arquivo anexo.

Criação de política e formulário

A política a seguir é compatível com uploads para o bucket awsexamplebucket1 do Amazon S3.

{ "expiration": "2007-12-01T12:00:00.000Z",

Versão da API 2006-03-01


1080
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

"conditions": [
{"bucket": "awsexamplebucket1"},
["starts-with", "$key", "user/eric/"],
{"acl": "public-read"},
{"success_action_redirect": "https://awsexamplebucket1.s3.us-west-1.amazonaws.com/
successful_upload.html"},
["starts-with", "$Content-Type", "image/"],
{"x-amz-meta-uuid": "14365123651274"},
["starts-with", "$x-amz-meta-tag", ""]
]
}

Esta política requer o seguinte:

• O upload deve ocorrer antes das 12:00 UTC em 1º de dezembro de 2007.


• O upload do conteúdo deve ser feito para o bucket awsexamplebucket1.
• A chave deve começar com "user/eric/".
• A ACL está definida para leitura pública.
• O success_action_redirect está definido como https://awsexamplebucket1.s3.us-
west-1.amazonaws.com/successful_upload.html.
• O objeto é um arquivo de imagem.
• A tag x-amz-meta-uuid deve ser definida como 14365123651274.
• A tag x-amz-meta-tag pode conter qualquer valor.

Veja a seguir uma versão codificada em Base64 dessa política.

eyAiZXhwaXJhdGlvbiI6ICIyMDA3LTEyLTAxVDEyOjAwOjAwLjAwMFoiLAogICJjb25kaXRpb25zIjogWwogICAgeyJidWNrZXQiOiA

Crie uma assinatura usando suas credenciais. Por exemplo 0RavWzkygo6QX9caELEqKi9kDbU= é a


assinatura para o documento de política anterior.

O formulário a seguir oferece suporte a uma solicitação POST para o bucket awsexamplebucket1.net que
usa essa política.

<html>
<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...
</head>
<body>
...
<form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post"
enctype="multipart/form-data">
Key to upload: <input type="input" name="key" value="user/eric/" /><br />
<input type="hidden" name="acl" value="public-read" />
<input type="hidden" name="success_action_redirect" value="https://
awsexamplebucket1.s3.us-west-1.amazonaws.com/successful_upload.html" />
Content-Type: <input type="input" name="Content-Type" value="image/jpeg" /><br />
<input type="hidden" name="x-amz-meta-uuid" value="14365123651274" />
Tags for File: <input type="input" name="x-amz-meta-tag" value="" /><br />
<input type="hidden" name="AWSAccessKeyId" value="AKIAIOSFODNN7EXAMPLE" />
<input type="hidden" name="Policy" value="POLICY" />
<input type="hidden" name="Signature" value="SIGNATURE" />
File: <input type="file" name="file" /> <br />
<!-- The elements after this will be ignored -->
<input type="submit" name="submit" value="Upload to Amazon S3" />

Versão da API 2006-03-01


1081
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

</form>
...
</html>

Exemplo de solicitação

Essa solicitação pressupões que a imagem carregada tem 117.108 bytes; os dados da imagem não estão
inclusos.

POST / HTTP/1.1
Host: awsexamplebucket1.s3.us-west-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.10) Gecko/20071115
Firefox/2.0.0.10
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/
plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary=9431149156168
Content-Length: 118698

--9431149156168
Content-Disposition: form-data; name="key"

user/eric/MyPicture.jpg
--9431149156168
Content-Disposition: form-data; name="acl"

public-read
--9431149156168
Content-Disposition: form-data; name="success_action_redirect"

https://awsexamplebucket1.s3.us-west-1.amazonaws.com/successful_upload.html
--9431149156168
Content-Disposition: form-data; name="Content-Type"

image/jpeg
--9431149156168
Content-Disposition: form-data; name="x-amz-meta-uuid"

14365123651274
--9431149156168
Content-Disposition: form-data; name="x-amz-meta-tag"

Some,Tag,For,Picture
--9431149156168
Content-Disposition: form-data; name="AWSAccessKeyId"

AKIAIOSFODNN7EXAMPLE
--9431149156168
Content-Disposition: form-data; name="Policy"

eyAiZXhwaXJhdGlvbiI6ICIyMDA3LTEyLTAxVDEyOjAwOjAwLjAwMFoiLAogICJjb25kaXRpb25zIjogWwogICAgeyJidWNrZXQiOiA
--9431149156168
Content-Disposition: form-data; name="Signature"

0RavWzkygo6QX9caELEqKi9kDbU=
--9431149156168
Content-Disposition: form-data; name="file"; filename="MyFilename.jpg"
Content-Type: image/jpeg

...file content...

Versão da API 2006-03-01


1082
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

--9431149156168
Content-Disposition: form-data; name="submit"

Upload to Amazon S3
--9431149156168--

Exemplo de resposta

HTTP/1.1 303 Redirect


x-amz-request-id: 1AEE782442F35865
x-amz-id-2: cxzFLJRatFHy+NGtaDFRR8YvI9BHmgLxjvJzNiGGICARZ/mVXHj7T+qQKhdpzHFh
Content-Type: application/xml
Date: Wed, 14 Nov 2007 21:21:33 GMT
Connection: close
Location: https://awsexamplebucket1.s3.us-west-1.amazonaws.com/
successful_upload.html?bucket=awsexamplebucket1&key=user/eric/
MyPicture.jpg&etag=&quot;39d459dfbc0faabbb5e179358dfb94c3&quot;
Server: AmazonS3

Upload de área de texto

Tópicos
• Criação de política e formulário (p. 1083)
• Exemplo de solicitação (p. 1084)
• Exemplo de resposta (p. 1085)

O exemplo a seguir mostra o processo completo para criação de uma política e um formulário para
carregar uma área de texto. Fazer upload de uma área de texto é útil para o envio de conteúdo criado pelo
usuário, como postagens de um blog.

Criação de política e formulário

A política a seguir é compatível com uploads de área de texto para o bucket awsexamplebucket1 do
Amazon S3.

{ "expiration": "2007-12-01T12:00:00.000Z",
"conditions": [
{"bucket": "awsexamplebucket1"},
["starts-with", "$key", "user/eric/"],
{"acl": "public-read"},
{"success_action_redirect": "https://awsexamplebucket1.s3.us-west-1.amazonaws.com/
new_post.html"},
["eq", "$Content-Type", "text/html"],
{"x-amz-meta-uuid": "14365123651274"},
["starts-with", "$x-amz-meta-tag", ""]
]
}

Esta política requer o seguinte:

• O upload deve ocorrer antes das 12:00 GMT em 1º de dezembro de 2007.


• O upload do conteúdo deve ser feito para o bucket awsexamplebucket1.
• A chave deve começar com "user/eric/".
• A ACL está definida para leitura pública.
• O success_action_redirect está definido como https://awsexamplebucket1.s3.us-
west-1.amazonaws.com/new_post.html.
• O objeto é texto HTML.

Versão da API 2006-03-01


1083
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

• A tag x-amz-meta-uuid deve ser definida como 14365123651274.


• A tag x-amz-meta-tag pode conter qualquer valor.

Veja a seguir uma versão codificada em Base64 dessa política.

eyAiZXhwaXJhdGlvbiI6ICIyMDA3LTEyLTAxVDEyOjAwOjAwLjAwMFoiLAogICJjb25kaXR
pb25zIjogWwogICAgeyJidWNrZXQiOiAiam9obnNtaXRoIn0sCiAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci9lcmljLy
LAogICAgeyJhY2wiOiAicHVibGljLXJlYWQifSwKICAgIHsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL2pvaG5zbWl
C5zMy5hbWF6b25hd3MuY29tL25ld19wb3N0Lmh0bWwifSwKICAgIFsiZXEiLCAiJENvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiXSwK
CAgIHsieC1hbXotbWV0YS11dWlkIjogIjE0MzY1MTIzNjUxMjc0In0sCiAgICBbInN0YXJ0cy13aXRoIiwgIiR4LWFtei1tZXRhLXRh
IsICIiXQogIF0KfQo=

Crie uma assinatura usando suas credenciais. Por exemplo, qA7FWXKq6VvU68lI9KdveT1cWgF= é a


assinatura para o documento de política anterior.

O formulário a seguir oferece suporte a uma solicitação POST para o bucket awsexamplebucket1.net que
usa essa política.

<html>
<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...
</head>
<body>
...
<form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post"
enctype="multipart/form-data">
Key to upload: <input type="input" name="key" value="user/eric/" /><br />
<input type="hidden" name="acl" value="public-read" />
<input type="hidden" name="success_action_redirect" value="https://
awsexamplebucket1.s3.us-west-1.amazonaws.com/new_post.html" />
<input type="hidden" name="Content-Type" value="text/html" />
<input type="hidden" name="x-amz-meta-uuid" value="14365123651274" />
Tags for File: <input type="input" name="x-amz-meta-tag" value="" /><br />
<input type="hidden" name="AWSAccessKeyId" value="AKIAIOSFODNN7EXAMPLE" />
<input type="hidden" name="Policy" value="POLICY" />
<input type="hidden" name="Signature" value="SIGNATURE" />
Entry: <textarea name="file" cols="60" rows="10">

Your blog post goes here.

</textarea><br />
<!-- The elements after this will be ignored -->
<input type="submit" name="submit" value="Upload to Amazon S3" />
</form>
...
</html>

Exemplo de solicitação
Essa solicitação pressupões que a imagem carregada tem 117.108 bytes; os dados da imagem não estão
inclusos.

POST / HTTP/1.1
Host: awsexamplebucket1.s3.us-west-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.10) Gecko/20071115
Firefox/2.0.0.10
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/
plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5

Versão da API 2006-03-01


1084
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary=178521717625888
Content-Length: 118635

-178521717625888
Content-Disposition: form-data; name="key"

ser/eric/NewEntry.html
--178521717625888
Content-Disposition: form-data; name="acl"

public-read
--178521717625888
Content-Disposition: form-data; name="success_action_redirect"

https://awsexamplebucket1.s3.us-west-1.amazonaws.com/new_post.html
--178521717625888
Content-Disposition: form-data; name="Content-Type"

text/html
--178521717625888
Content-Disposition: form-data; name="x-amz-meta-uuid"

14365123651274
--178521717625888
Content-Disposition: form-data; name="x-amz-meta-tag"

Interesting Post
--178521717625888
Content-Disposition: form-data; name="AWSAccessKeyId"

AKIAIOSFODNN7EXAMPLE
--178521717625888
Content-Disposition: form-data; name="Policy"
eyAiZXhwaXJhdGlvbiI6ICIyMDA3LTEyLTAxVDEyOjAwOjAwLjAwMFoiLAogICJjb25kaXRpb25zIjogWwogICAgeyJidWNrZXQiOiA

--178521717625888
Content-Disposition: form-data; name="Signature"

qA7FWXKq6VvU68lI9KdveT1cWgF=
--178521717625888
Content-Disposition: form-data; name="file"

...content goes here...


--178521717625888
Content-Disposition: form-data; name="submit"

Upload to Amazon S3
--178521717625888--

Exemplo de resposta

HTTP/1.1 303 Redirect


x-amz-request-id: 1AEE782442F35865
x-amz-id-2: cxzFLJRatFHy+NGtaDFRR8YvI9BHmgLxjvJzNiGGICARZ/mVXHj7T+qQKhdpzHFh
Content-Type: application/xml
Date: Wed, 14 Nov 2007 21:21:33 GMT
Connection: close
Location: https://awsexamplebucket1.s3.us-west-1.amazonaws.com/new_post.html?
bucket=awsexamplebucket1&key=user/eric/NewEntry.html&etag=40c3271af26b7f1672e41b8a274d28d4
Server: AmazonS3

Versão da API 2006-03-01


1085
Amazon Simple Storage Service Guia do usuário
Apêndice B: Autenticar solicitações
(AWS Signature versão 2)

POST com Adobe Flash


Esta seção descreve como usar o POST com o Adobe Flash.

Segurança do Adobe Flash Player

Por padrão, o modelo de segurança do Adobe Flash Player proíbe que os Adobe Flash Players realizem
conexões de rede com servidores fora do domínio que serve o arquivo SWF.

Para substituir o padrão, é necessário carregar um arquivo crossdomain.xml de leitura pública no bucket
que aceitará uploads POST. Veja a seguir um exemplo de arquivo crossdomain.xml.

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="false" />
</cross-domain-policy>

Note

Para obter mais informações sobre o modelo de segurança do Adobe Flash, acesse o site da
Adobe.
Adicionar o arquivo crossdomain.xml ao bucket permite que qualquer Adobe Flash Player se
conecte ao arquivo crossdomain.xml no bucket. No entanto, isso não concede acesso ao bucket
do Amazon S3 em si.

Considerações do Adobe Flash

A API FileReference no Adobe Flash adiciona o campo de formulário Filename à solicitação POST.
Ao compilar aplicações do Adobe Flash que fazem upload para o Amazon S3 usando a ação da API
FileReference, inclua a seguinte condição na política:

['starts-with', '$Filename', '']

Algumas versões do Adobe Flash Player não lidam muito bem com respostas HTTP que têm
um corpo vazio. Para configurar a POST para retornar uma resposta sem corpo vazio, defina
success_action_status para 201. O Amazon S3 retornará um documento XML com um código de
status 201. Para obter informações sobre o conteúdo do documento XML, consulte Objeto POST. Para
obter informações campos de formulário, consulte Campos do formulário HTML (p. 1073).

Versão da API 2006-03-01


1086
Amazon Simple Storage Service Guia do usuário

Padrões de design de melhores


práticas: otimizar a performance do
Amazon S3
As aplicações podem executar facilmente milhares de transações por segundo em performance
de solicitação ao fazer upload e recuperar armazenamento do Amazon S3. O Amazon S3 escala
automaticamente para taxas de solicitações elevadas. Por exemplo, seu aplicativo pode atingir, pelo
menos, 3.500 solicitações PUT/POST/DELETE ou 5.500 solicitações GET/HEAD por segundo por
prefixo em um bucket. Não há limite para o número de prefixos em um bucket. Você pode aumentar seu
desempenho de leitura ou gravação paralelizando as leituras. Por exemplo, se você criar 10 prefixos em
um bucket do Amazon S3 para paralelizar leituras, poderá escalar o desempenho de leitura para 55.000
solicitações de leitura por segundo. Da mesma forma, você pode dimensionar as operações de gravação
gravando em vários prefixos.

Por exemplo, algumas aplicações de data lake no Amazon S3 verificam milhões ou bilhões de objetos para
consultas que são executadas em petabytes de dados. Essas aplicações de data lake atingem taxas de
transferência de instância única que maximizam o uso da interface de rede para a instância do Amazon
EC2, que podem ser de até 100 Gb/s em uma única instância. Esses aplicativos então agregam a taxa de
transferência em várias instâncias para obter vários terabits por segundo.

Outros aplicativos são sensíveis à latência, como aplicativos de mensagem de mídias sociais. Essas
aplicações podem atingir latências consistentes de objetos pequenos (e latências de saída de primeiro
byte para objetos maiores) de aproximadamente 100 a 200 milissegundos.

Outros serviços da AWS também podem ajudar a acelerar o desempenho para diferentes arquiteturas
de aplicativo. Por exemplo, para obter taxas de transferência mais altas em uma única conexão HTTP
ou latências de um dígito de milissegundos, use o Amazon CloudFront ou o Amazon ElastiCache para
armazenar em cache com o Amazon S3.

Além disso, se você quiser um transporte de dados rápido em longas distâncias entre um cliente e um
bucket do S3, use Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer
Acceleration (p. 48). O Transfer Acceleration usa os pontos de presença distribuídos globalmente no
CloudFront para acelerar o transporte de dados em distâncias geográficas. Se a carga de trabalho no
Amazon S3 usar criptografia no lado do servidor com AWS Key Management Service (SSE-KMS), consulte
Limites do AWS KMS no Guia do desenvolvedor do AWS Key Management Service para obter mais
informações sobre as taxas de solicitações compatíveis com seu caso de uso.

Os tópicos a seguir descrevem as diretrizes de melhores práticas e os padrões de design para otimizar
a performance de aplicações que usam o Amazon S3. Essas diretrizes prevalecem sobre as diretrizes
anteriores relacionadas à otimização da performance do Amazon S3. Por exemplo, as diretrizes anteriores
de performance do Amazon S3 recomendavam a randomização da nomenclatura de prefixos com
caracteres com hash para otimizar a performance de recuperações de dados frequentes. Não é mais
necessário randomizar a nomeação de prefixos para o desempenho, e você pode usar nomeação
sequencial baseada em datas para seus prefixos. Consulte Diretrizes de performance do Amazon
S3 (p. 1088) e Padrões de design de performance do Amazon S3 (p. 1090) para obter as informações
mais recentes sobre a otimização de performance do Amazon S3.

Tópicos
• Diretrizes de performance do Amazon S3 (p. 1088)
• Padrões de design de performance do Amazon S3 (p. 1090)

Versão da API 2006-03-01


1087
Amazon Simple Storage Service Guia do usuário
Diretrizes de desempenho

Diretrizes de performance do Amazon S3


Ao criar aplicações que fazem upload e recuperam objetos do Amazon S3, siga as diretrizes de melhores
práticas para otimizar a performance. Também oferecemos Padrões de design de desempenho (p. 1090)
mais detalhados.

Para obter a melhor performance para a aplicação no Amazon S3, recomendamos as seguintes diretrizes.

Tópicos
• Avaliar o desempenho (p. 1088)
• Dimensionar conexões de armazenamento na horizontal (p. 1088)
• Usar consulta na escala de bytes (p. 1088)
• Solicitações de repetição para aplicativos sensíveis à latência (p. 1089)
• Combinar o Amazon S3 (armazenamento) e o Amazon EC2 (computação) na mesma região da
AWS (p. 1089)
• Usar o Amazon S3 Transfer Acceleration para minimizar a latência causada pela distância (p. 1089)
• Usar a versão mais recente dos AWS SDKs (p. 1089)

Avaliar o desempenho
Ao otimizar o desempenho, observe os requisitos de throughput de rede, CPU e DRAM. Dependendo da
combinação de demandas desses recursos diferentes, convém avaliar os diferentes tipos de instância do
Amazon EC2. Para obter mais informações sobre tipos de instância, consulte Tipos de instância no Guia
do usuário do Amazon EC2 para instâncias do Linux.

Também é útil observar o tempo de pesquisa de DNS, a latência e a velocidade de transferência dos
dados usando ferramentas de análise de HTTP ao avaliar o desempenho.

Dimensionar conexões de armazenamento na


horizontal
A distribuição de solicitações em muitas conexões é um padrão de design comum para dimensionamento
horizontal do desempenho. Ao criar aplicações de alta performance, pense no Amazon S3 como um
sistema distribuído muito grande, não como um único endpoint de rede de um servidor de armazenamento
tradicional. Para atingir a melhor performance, emita várias solicitações simultâneas para o Amazon S3.
Espalhe essas solicitações em conexões separadas para maximizar a largura de banda acessível do
Amazon S3. O Amazon S3 não tem limites para o número de conexões feitas ao bucket.

Usar consulta na escala de bytes


Usando o cabeçalho HTTP Range em uma solicitação de Objeto GET, é possível consultar um objeto
em escala de bytes, transferindo somente a parte especificada. É possível usar conexões simultâneas
ao Amazon S3 para buscar diferentes escalas de bytes no mesmo objeto. Isso ajuda a atingir um
throughput agregado maior em comparação com uma única solicitação de objeto inteiro. A consulta de
escalas menores de um objeto grande também permite que o aplicativo melhore os tempos de repetição
quando as solicitações são interrompidas. Para obter mais informações, consulte Fazer download de um
objeto (p. 122).

Os tamanhos típicos das solicitações de escala de bytes são 8 MB ou 16 MB. Se os objetos usarem a
solicitação PUT com um upload de várias partes, é recomendado usar a solicitação GET nos mesmos
tamanhos de parte (ou pelo menos de acordo com os limites de parte) para obter o melhor desempenho.
As solicitações GET podem abordar partes individuais diretamente; por exemplo, GET ?partNumber=N.

Versão da API 2006-03-01


1088
Amazon Simple Storage Service Guia do usuário
Solicitações de repetição

Solicitações de repetição para aplicativos sensíveis à


latência
Repetições e tempos limite agressivos ajudam a obter uma latência consistente. Devido à grande escala
do Amazon S3, se a primeira solicitação for lenta, uma solicitação repetida provavelmente seguirá um
caminho diferente e será bem-sucedida rapidamente. Os AWS SDKs têm valores configuráveis de tempo
limite e repetição que podem ser ajustados de acordo com as tolerâncias do aplicativo específico.

Combinar o Amazon S3 (armazenamento) e o


Amazon EC2 (computação) na mesma região da AWS
Embora os nomes de buckets do S3 sejam globalmente exclusivos, cada bucket é armazenado em uma
região selecionada ao criar o bucket. Para otimizar a performance, recomendamos acessar o bucket nas
instâncias do Amazon EC2 na mesma região da AWS quando possível. Isso ajuda a reduzir os custos de
latência de rede e transferência de dados.

Para obter mais informações sobre custos de transferência de dados, consulte Definição de preço do
Amazon S3.

Usar o Amazon S3 Transfer Acceleration para


minimizar a latência causada pela distância
O Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer
Acceleration (p. 48) gerencia transferências de arquivos rápidas, fáceis e seguras em longas distâncias
entre o cliente e um bucket do S3. O Transfer Acceleration tira proveito dos pontos de presença
distribuídos globalmente no Amazon CloudFront. Conforme os dados chegam a um ponto de presença,
eles são roteados para o Amazon S3 por um caminho de rede otimizado. O Transfer Acceleration é ideal
para transferir gigabytes a terabytes de dados regularmente entre os continentes. Ele também é útil para
clientes que fazem upload em um bucket centralizado do mundo todo.

Você pode usar a Ferramenta de comparação de velocidade do Amazon S3 Transfer Acceleration para
comparar velocidades de upload aceleradas e não aceleradas em regiões do Amazon S3. A ferramenta
de comparação de velocidade usa multipart uploads para transferir um arquivo do navegador para várias
regiões do Amazon S3 com e sem o uso do Amazon S3 Transfer Acceleration.

Usar a versão mais recente dos AWS SDKs


Os AWS SDKs têm compatibilidade incorporada com muitas da diretrizes recomendadas para otimizar a
performance do Amazon S3. Os SDKs fornecem uma API mais simples para aproveitar o Amazon S3 em
uma aplicação e são atualizados regularmente para seguir as práticas recomendadas mais recentes. Por
exemplo, os SDKs incluem uma lógica para executar automaticamente solicitações de repetição em erros
HTTP 503 e estão investindo em código para responder e se adaptar a conexões lentas.

Os SDKs também fornecem o Gerenciador de transferências, que automatiza conexões de


dimensionamento horizontal para atingir milhares de solicitações por segundo, usando solicitações na
escala de bytes quando apropriado. É importante usar a última versão dos AWS SDKs para obter os
recursos mais recentes de otimização de desempenho.

Também é possível otimizar o desempenho ao usar solicitações de API REST HTTP. Ao usar a API REST,
siga as mesmas práticas recomendadas que fazem parte dos SDKs. Permita tempo limite e repetição em
solicitações lentas e que várias conexões consultem dados de objeto em paralelo. Para obter informações
sobre como usar a API REST, consulte a Referência da API do Amazon Simple Storage Service.

Versão da API 2006-03-01


1089
Amazon Simple Storage Service Guia do usuário
Padrões de design de desempenho

Padrões de design de performance do Amazon S3


Ao projetar aplicações para fazer upload e recuperar objetos do Amazon S3, use nossas melhores práticas
e padrões de design para atingir a melhor performance da aplicação. Também oferecemos Diretrizes de
desempenho (p. 1088) a ser considerado ao planejar a arquitetura da aplicação.

Para otimizar o desempenho, você pode usar os padrões de design a seguir.

Tópicos
• Usar o cache para conteúdo acessado com frequência (p. 1090)
• Tempo limite e repetição para aplicativos sensíveis à latência (p. 1090)
• Dimensionamento horizontal e paralelização de solicitações para alto throughput (p. 1091)
• Usar o Amazon S3 Transfer Acceleration para acelerar transferências de dados geograficamente
dispersas (p. 1092)

Usar o cache para conteúdo acessado com frequência


Muitas aplicações que armazenam dados no Amazon S3 fornecem um “conjunto de trabalhos” de dados
que são solicitados várias vezes pelos usuários. Se uma carga de trabalho estiver enviando solicitações
GET repetidas para um conjunto comum de objetos, você poderá usar um cache, como o Amazon
CloudFront, o Amazon ElastiCache ou o AWS Elemental MediaStore para otimizar a performance. A
adoção bem-sucedida do cache pode resultar em baixar latência e altas taxas de transferência de dados.
As aplicações que usam o armazenamento em cache também enviam menos solicitações diretas ao
Amazon S3, o que também pode ajudar a reduzir os custos de solicitações.

O Amazon CloudFront é uma rede de entrega de conteúdo (CDN) rápida que armazena os dados
do Amazon S3 em cache com transparência em um grande conjunto de pontos de presença (PoPs)
distribuídos geograficamente. Quando os objetos podem ser acessados em várias regiões ou pela
Internet, o CloudFront permite que os dados sejam armazenados em cache perto dos usuários que estão
acessando os objetos. Isso pode resultar na entrega de alta performance de conteúdo popular do Amazon
S3. Para obter mais informações sobre o CloudFront, consulte o Guia do desenvolvedor do Amazon
CloudFront.

O Amazon ElastiCache é um cache de memória gerenciado. Com o ElastiCache, é possível provisionar


instâncias do Amazon EC2 que armazenam objetos em cache na memória. Esse armazenamento em
cache resulta em pedidos de redução de magnitude da latência de GET e aumentos significativos no
throughput de download. Para usar o ElastiCache, modifique a lógica da aplicação para preencher o cache
com objetos dinâmicos e verifique se esses objetos estão presentes no cache antes de solicitá-los do
Amazon S3. Para obter exemplos de como usar o ElastiCache para melhorar a performance de GET do
Amazon S3, consulte a publicação do blog Turbocharge Amazon S3 with Amazon ElastiCache for Redis.

O AWS Elemental MediaStore é um sistema de armazenamento em cache e de distribuição de conteúdo


criado especificamente para fluxos de trabalho de vídeo e entrega de mídia do Amazon S3. O MediaStore
fornece APIs de armazenamento completas especificamente para vídeo e é recomendado para cargas de
trabalho de vídeo sensíveis à performance. Para obter informações sobre o MediaStore, consulte o Guia
do usuário do AWS Elemental MediaStore.

Tempo limite e repetição para aplicativos sensíveis à


latência
Há determinadas situações em que uma aplicação recebe uma resposta do Amazon S3 indicando que
uma nova tentativa é necessária. O Amazon S3 mapeia nomes de bucket e de objetos para os dados do

Versão da API 2006-03-01


1090
Amazon Simple Storage Service Guia do usuário
Dimensionamento horizontal e paralelização de solicitações

objeto associados a eles. Se um aplicativo gerar altas taxas de solicitação (normalmente taxas constantes
de mais de 5.000 solicitações por segundo para um pequeno número de objetos), ele poderá receber
respostas HTTP 503 de lentidão. Se esses erros ocorrerem, cada SDK da AWS implementará uma lógica
de repetição automática usando o recuo exponencial. Se você não estiver usando um SDK da AWS,
implemente a lógica de repetição ao receber o erro HTTP 503. Para obter informações sobre técnicas de
recuo, consulte Repetições de erro e recuo exponencial na AWS na Referência geral da Amazon Web
Services.

O Amazon S3 é dimensionado automaticamente em resposta a novas taxas constantes de solicitação,


otimizando a performance dinamicamente. Enquanto o Amazon S3 estiver sendo otimizado internamente
para uma nova taxa de solicitação, você receberá respostas de solicitação HTTP 503 temporariamente até
a otimização terminar. Depois que o Amazon S3 otimiza a performance internamente para a nova taxa de
solicitação, todas as solicitações serão executadas de forma geral sem repetições.

Para aplicações sensíveis à latência, o Amazon S3 recomenda rastrear e repetir agressivamente as


operações mais lentas. Ao repetir uma solicitação, recomendamos usar uma nova conexão ao Amazon S3
e executar uma nova pesquisa de DNS.

Ao fazer solicitações de tamanhos variavelmente grandes (por exemplo, mais de 128 MB), recomendamos
rastrear o throughput atingido e repetir os 5% mais lentos das solicitações. Ao fazer solicitações menores
(por exemplo, menos de 512 KB), onde latências medianas geralmente estão na faixa de dezenas de
milissegundos, é recomendado repetir uma operação GET ou PUT depois de 2 segundos. Se outras
repetições forem necessárias, é recomendado recuar. Por exemplo, recomendamos emitir uma repetição
depois de 2 segundos e uma segunda repetição depois de mais 4 segundos.

Se a aplicação fizer solicitações de tamanho fixo para o Amazon S3, espere tempos de resposta mais
consistentes para cada uma dessas solicitações. Nesse caso, uma estratégia simples é identificar o 1%
mais lento de solicitações e repetí-las. Uma única repetição consegue reduzir a latência.

Se estiver usando o AWS Key Management Service (AWS KMS) para a criptografia no lado do servidor,
consulte Limites no Guia do desenvolvedor do AWS Key Management Service para obter informações
sobre as taxas de solicitações compatíveis com seu caso de uso.

Dimensionamento horizontal e paralelização de


solicitações para alto throughput
O Amazon S3 é um sistema distribuído muito grande. Para ajudar a aproveitar essa escala,
recomendamos dimensionar horizontalmente as solicitações paralelas para os endpoints do
serviço Amazon S3. Além de distribuir as solicitações no Amazon S3, esse tipo de abordagem de
dimensionamento ajuda a distribuir a carga em vários caminhos na rede.

Para obter altas taxas de transferência, o Amazon S3 recomenda usar aplicações com várias conexões
para executar solicitações GET ou PUT paralelas de dados. Por exemplo, isso é compatível com o
Amazon S3 Transfer Manager no AWS SDK para Java, e a maioria dos outros AWS SDKs fornece
construções semelhantes. Para alguns aplicativos, você pode atingir conexões paralelas iniciando várias
solicitações ao mesmo tempo em diferentes threads de aplicativo ou em diferentes instâncias de aplicativo.
A melhor abordagem depende do aplicativo e da estrutura dos objetos acessados.

Você pode usar os AWS SDKs para emitir solicitações GET e PUT diretamente em vez de empregar o
gerenciamento de transferências no AWS SDK. Essa abordagem permite ajustar a carga de trabalho
mais diretamente, além de ainda aproveitar o suporte do SDK para repetições e o processamento das
eventuais respostas HTTP 503. Como regra geral, ao fazer download de grandes objetos em uma região
do Amazon S3 para o Amazon EC2, sugerimos fazer solicitações simultâneas em escalas de bytes de um
objeto na granularidade de 8 a 16 MB. Faça uma solicitação simultânea para cada 85 a 90 MB/s da taxa de
transferência de rede desejada. Para saturar uma placa de interface de rede (NIC) de 10 Gb/s, você pode
usar cerca de 15 solicitações simultâneas em conexões separadas. É possível dimensionar as solicitações
simultâneas em mais conexões para saturar NICs mais rápidas, como NICs de 25 Gb/s ou 100 Gb/s.

Versão da API 2006-03-01


1091
Amazon Simple Storage Service Guia do usuário
Acelerar transferências de dados geograficamente dispersas

A avaliação do desempenho é importante ao ajustar o número de solicitações a serem emitidas ao mesmo


tempo. Recomendamos começar com uma única solicitação de cada vez. Meça a largura de banda de
rede atingida e o uso de outros recursos que o aplicativo usa no processamento dos dados. Você pode
identificar o recurso de gargalo (isto é, o recurso com maior utilização) e, assim, o número de solicitações
que provavelmente serão úteis. Por exemplo, se processar uma solicitação por vez usa 25% da CPU,
é recomendado acomodar até quatro solicitações simultâneas. A medição é essencial e vale a pena
confirmar o uso do recurso conforme a taxa de solicitação aumenta.

Se a aplicação emitir solicitações diretamente para o Amazon S3 usando a API REST, recomendamos
usar um grupo de conexões HTTP e reutilizar cada conexão para uma série de solicitações. Evitar a
configuração de conexão por solicitação elimina a necessidade de realizar handshakes Secure Sockets
Layer (SSL) e TCP de inicialização lenta em cada solicitação. Para obter informações sobre como usar a
API REST, consulte a Referência da API do Amazon Simple Storage Service.

Finalmente, vale prestar atenção ao DNS e verificar novamente se as solicitações estão sendo distribuídas
em um grande grupo de endereços IP do Amazon S3. As consultas de DNS para o Amazon S3 percorrem
uma grande lista de endpoints IP. No entanto, o armazenamento em cache de solucionadores ou
código do aplicativo que reutiliza um único endereço IP não aproveita a diversidade de endereços e o
balanceamento de carga associados. Ferramentas de utilitário de rede, como a ferramenta de linha de
comando netstat, podem mostrar os endereços IP usados para comunicação com o Amazon S3, e nós
fornecemos diretrizes para as configurações de DNS que devem ser usadas. Para obter mais informações
sobre essas diretrizes, consulte Fazer solicitações (p. 990).

Usar o Amazon S3 Transfer Acceleration para acelerar


transferências de dados geograficamente dispersas
O Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer
Acceleration (p. 48) é útil para minimizar ou eliminar a latência causada pela distância geográfica entre
clientes distribuídos globalmente e uma aplicação regional que usa o Amazon S3. O Transfer Acceleration
usa os pontos de presença distribuídos globalmente no CloudFront para transporte de dados. A rede de
presença da AWS tem pontos de presença em mais de 50 locais. Atualmente, ela é usada para distribuir
conteúdo por meio do CloudFront e fornecer respostas rápidas para consultas de DNS feitas para o
Amazon Route 53.

A rede de borda também ajuda a acelerar transferências de dados enviadas e recebidas do Amazon
S3. Ela é ideal para aplicativos que transferem dados em ou entre continentes, possuem uma rápida
conexão com a Internet, usam objetos grandes ou possuem muito conteúdo para upload. Conforme os
dados chegam em um ponto de presença, eles são roteados para o Amazon S3 por um caminho de rede
otimizado. Em geral, quanto mais distante você está de uma região do Amazon S3, maior a melhoria de
velocidade que pode esperar do uso do Transfer Acceleration.

Você pode configurar o Transfer Acceleration em buckets novos ou existentes. Use um endpoint separado
do Amazon S3 Transfer Acceleration para usar os pontos de presença da AWS. A melhor maneira de
testar se o Transfer Acceleration ajuda a performance da solicitação do cliente é usar a Ferramenta de
comparação de velocidade do Amazon S3 Transfer Acceleration. As configurações e condições de rede
variam periodicamente e de um lugar para outro. Portanto, você só é cobrado para transferências em
que o Amazon S3 Transfer Acceleration pode melhorar a performance do upload. Para obter informações
sobre o uso do Transfer Acceleration com diferentes AWS SDKs, consulte Habilitar e usar o S3 Transfer
Acceleration (p. 51).

Versão da API 2006-03-01


1092
Amazon Simple Storage Service Guia do usuário
Conceitos básicos do S3 no Outposts

Usar o Amazon S3 no Outposts


O AWS Outposts é um serviço totalmente gerenciado que estende a infraestrutura, os serviços, as
APIs e as ferramentas da AWS para o local. Ao fornecer acesso local à infraestrutura gerenciada pela
AWS, o AWS Outposts ajuda a criar e executar aplicações on-premise usando as mesmas interfaces de
programação que nas regiões da AWS, ao mesmo tempo que usam recursos locais de computação e
armazenamento para menor latência e necessidades de processamento de dados locais. Para obter mais
informações, consulte O que é AWS Outposts? no Guia do usuário do AWS Outposts.

Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar e
recuperar facilmente objetos no local para aplicações que exigem acesso a dados locais, processamento
de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de armazenamento,
OUTPOSTS, que usa as APIs do S3 e é projetada para armazenar dados de forma duradoura e redundante
em vários dispositivos e servidores em seu AWS Outposts. Você se comunica com o bucket do Outposts
usando um ponto de acesso e uma conexão de endpoint em uma Virtual Private Cloud (VPC). É possível
usar as mesmas APIs e recursos nos buckets do Outposts da mesma maneira que no Amazon S3, como
políticas de acesso, criptografia e marcação. É possível usar o S3 no Outposts por meio do Console de
Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST.

Você pode usar o S3 on Outposts para implantar o armazenamento de objetos on-premise que é
monitorado, corrigido e atualizado pela AWS. Com Outposts, você pode reduzir o tempo, os recursos, o
risco operacional e o tempo de inatividade de manutenção necessários para gerenciar a infraestrutura de
TI. Você pode processar e armazenar dados com segurança localmente em seu ambiente local e transferir
dados para o Amazon S3 em uma região da AWS para processamento ou arquivamento adicional. O S3
no Outposts permite que você atenda aos requisitos regulamentares ou de residência de dados, mantendo
os dados em um Outpost local dentro de um país, estado/província ou local onde não existe uma região da
AWS hoje.

Para aplicativos locais que exigem processamento local de alto rendimento, o S3 no Outposts fornece
armazenamento de objetos no local para minimizar transferências de dados e buffer de variações de
rede, ao mesmo tempo que oferece a você a capacidade de transferir dados facilmente entre Outposts
e regiões da AWS. O S3 no Outposts é integrado ao AWS DataSync. Assim, é possível automatizar a
transferência de dados entre os Outposts e as regiões da AWS, escolhendo o que transferir, quando
transferir e quanta largura de banda de rede usar. Para obter mais informações sobre como transferir
dados do S3 em buckets do Outposts usando o DataSync, consulte Conceitos básicos do AWS DataSync
no Guia do usuário do AWS DataSync.

Tópicos
• Conceitos básicos do Amazon S3 on Outposts (p. 1093)
• Restrições e limitações do Amazon S3 no Outposts (p. 1094)
• Usar o AWS Identity and Access Management com o Amazon S3 no Outposts (p. 1097)
• Acessar o Amazon S3 no Outposts (p. 1099)
• Monitoramento do Amazon S3 on Outposts (p. 1102)
• Como gerenciar buckets e objetos do Amazon S3 no Outposts (p. 1103)

Conceitos básicos do Amazon S3 on Outposts


Com o Amazon S3 on Outposts, você pode usar as APIs e recursos do Amazon S3, como armazenamento
de objetos, políticas de acesso, criptografia e marcação, no AWS Outposts como você faz no Amazon S3.

Versão da API 2006-03-01


1093
Amazon Simple Storage Service Guia do usuário
Pedir um Outpost

Para obter informações sobre o AWS Outposts, consulte O que é o AWS Outposts? no Guia do usuário do
AWS Outposts.

Tópicos
• Pedir seu AWS Outpost (p. 1094)
• Configurar o S3 on Outposts (p. 1094)

Pedir seu AWS Outpost


Para começar a usar o Amazon S3 on Outposts, você precisa de um Outpost com capacidade do Amazon
S3 implantada em suas instalações. Para obter informações sobre opções para pedir um Outpost e uma
capacidade do S3, consulte AWS Outposts. Para ver especificações, restrições e limitações, consulte
Restrições e limitações do Amazon S3 no Outposts (p. 1094).

Precisa de um novo AWS Outpost?


Se precisar solicitar um novo Outpost com capacidade do S3, consulte Definição de preço do AWS
Outposts para entender a opção de capacidade do Amazon EC2, Amazon EBS e Amazon S3. As opções
atuais para a capacidade do Amazon S3 on Outposts são de 48 TB e 96 TB.

Depois de selecionar a configuração, siga as etapas em Criar um Outpost e pedir a capacidade do Outpost
no Guia do usuário do AWS Outposts.

Você já tem uma conta da AWS?


Se o AWS Outposts já estiver em seu site, dependendo da configuração atual do Outpost e da capacidade
de armazenamento, você poderá adicionar o armazenamento do Amazon S3 a um Outpost existente ou
talvez seja necessário trabalhar com sua equipe de contas da AWS para incluir hardware adicional para
oferecer suporte ao Amazon S3 no Outposts.

Configurar o S3 on Outposts
Depois que a capacidade do S3 on Outposts for provisionada, você poderá criar buckets e pontos de
acesso do S3 no seu Outpost usando o console do AWS Outposts, a API REST do Amazon S3 on
Outposts, a Interface da linha de comando da AWS (CLI da AWS) ou os AWS SDKs. Depois, você pode
usar APIs para armazenar e recuperar objetos desses buckets. Você também pode usar o AWS DataSync
para transferir dados entre o Outpost e a região da AWS. Para obter mais informações, consulte Acessar o
Amazon S3 no Outposts (p. 1099).

É possível gerenciar o armazenamento do Amazon S3 on Outposts usando os mesmos serviços que


você usa na região hoje. Isso inclui os pontos de acesso do AWS Identity and Access Management (IAM)
e do Amazon S3 para controlar o acesso a objetos e buckets, o Amazon CloudWatch para monitorar a
integridade operacional e o AWS CloudTrail para rastrear e gerar relatórios sobre atividades no nível de
objeto e no nível de bucket.

Depois que a AWS habilitar a capacidade do S3 no Outposts, você poderá acessar o S3 no Outpost
usando consoles do AWS Outposts ou Amazon S3, a API REST do Amazon S3, a AWS CLI ou os AWS
SDKs.

Restrições e limitações do Amazon S3 no Outposts


Considere as seguintes restrições e limitações ao configurar o Amazon S3 no Outposts.

Tópicos

Versão da API 2006-03-01


1094
Amazon Simple Storage Service Guia do usuário
Especificações

• Especificações do Amazon S3 no Outposts (p. 1095)


• Modelo de consistência de dados do Amazon S3 no Outposts (p. 1095)
• Operações de API compatíveis com o Amazon S3 no Outposts (p. 1096)
• Recursos do Amazon S3 não compatíveis com o S3 no Outposts. (p. 1096)
• Restrições de rede do S3 no Outposts (p. 1097)

Especificações do Amazon S3 no Outposts


• O tamanho máximo do bucket do Outposts é de 50 TB.
• O número máximo de buckets de Outposts por Outpost é 100.
• Os buckets do Outposts só podem ser acessados usando pontos de acesso e endpoints.
• O número máximo de pontos de acesso por bucket de Outposts é 10.
• As políticas de ponto de acesso estão limitadas a 20 KB.
• A conta de proprietário do bucket do S3 on Outposts é sempre o proprietário de todos os objetos no
bucket.
• Somente a conta de proprietário do bucket do S3 no Outposts pode executar operações no bucket.
• As limitações de tamanho do objeto são consistentes com o Amazon S3.
• Todos os objetos armazenados no S3 no Outposts são armazenados na classe de armazenamento do
OUTPOSTS.
• Todos os objetos armazenados na classe de armazenamento OUTPOSTS são armazenados usando
criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) por
padrão. Você também pode explicitamente optar por armazenar objetos usando criptografia no lado do
servidor com chaves de criptografia fornecidas pelo cliente (SSE-C).
• Se não houver espaço suficiente para armazenar um objeto no seu Outpost, a API retornará uma
exceção de capacidade insuficiente (ICE).

Modelo de consistência de dados do Amazon S3 no


Outposts
O Amazon S3 on Outposts fornece consistência de leitura após gravação para PUTS de novos objetos no
bucket do Amazon S3 com uma ressalva: se você fizer uma solicitação HEAD ou GET para um nome de
chave antes que o objeto seja criado e, em seguida, criar o objeto logo depois disso, um GET subsequente
pode não retornar o objeto devido à consistência eventual.

O Amazon S3 oferece consistência eventual para substituir PUTS e DELETES em todas as regiões.

As atualizações em uma única chave são atômicas. Por exemplo, se você executar PUT para uma chave
existente, uma leitura subsequente poderá retornar os dados antigos ou os dados atualizados, mas nunca
retornará dados corrompidos ou parciais. Com o modelo de consistência eventual, você pode observar os
seguintes comportamentos:

• Um processo grava um novo objeto no S3 on Outposts e imediatamente lista as chaves em seu bucket.
Até que a alteração seja totalmente propagada, o objeto poderá não aparecer na lista.
• Um processo substitui um objeto existente e imediatamente tenta lê-lo. Até que a alteração seja
totalmente propagada, o S3 on Outposts poderá retornar os dados anteriores.
• Um processo exclui um objeto existente e imediatamente tenta lê-lo. Até que a exclusão seja totalmente
propagada, o S3 on Outposts poderá retornar os dados excluídos.
• Um processo exclui um objeto existente e imediatamente lista as chaves em seu bucket. Até que a
exclusão seja totalmente propagada, o S3 on Outposts poderá listar o objeto excluído.

Versão da API 2006-03-01


1095
Amazon Simple Storage Service Guia do usuário
Operações de API compatíveis

Operações de API compatíveis com o Amazon S3 no


Outposts
O Amazon S3 no Outposts foi projetado para usar as mesmas APIs de objeto do Amazon S3. Portanto, é
possível usar muitos de seus códigos e políticas existentes transmitindo o nome de recurso da Amazon
(ARN) do S3 no Outposts como identificador.

O Amazon S3 no Outposts oferece suporte às seguintes operações de API:

• AbortMultipartUpload
• CompleteMultipartUpload
• CopyObject
• CreateMultipartUpload
• DeleteObject
• DeleteObjects
• DeleteObjectTagging
• GetObject
• GetObjectTagging
• HeadObject
• HeadBucket
• ListMultipartUploads
• ListObjects
• ListObjectsV2
• ListParts
• PutObject
• PutObjectTagging
• UploadPart
• UploadPartCopy

Recursos do Amazon S3 não compatíveis com o S3


no Outposts.
No momento, vários recursos do Amazon S3 não são compatíveis com o Amazon S3 no Outposts. Todas
as tentativas de usá-los são rejeitadas.

• Lista de controle de acesso (ACL)


• CORS
• Operações em lote
• Relatórios de inventário
• Alterar a criptografia de bucket padrão
• Buckets públicos
• Exclusão de MFA
• Transições do ciclo de vida limitadas à exclusão de objetos e interrupção de multipart uploads
incompletos
• Retenção legal do Bloqueio de objetos
• Retenção do Bloqueio de objetos
• Versionamento de objeto

Versão da API 2006-03-01


1096
Amazon Simple Storage Service Guia do usuário
Restrições de rede

• SSE-KMS
• Replicação
• Controle do tempo de replicação
• Métricas de solicitação do Amazon CloudWatch
• Configuração de métricas
• Aceleração de transferência
• Notificações de eventos
• Buckets de pagamento pelo solicitante
• Seleção do S3
• Torrent
• Eventos do Lambda
• Server access logging (Registro em log de acesso ao servidor)
• Pre-signed URLs
• Solicitações HTTP POST
• SOAP
• Acesso ao site

Restrições de rede do S3 no Outposts


• Para rotear solicitações para um ponto de acesso do S3 no Outposts, você deve criar e configurar um
endpoint do S3 no Outposts. Os seguintes limites se aplicam aos endpoints do S3 no Outposts:
• Cada nuvem privada virtual (VPC) em seu AWS Outposts pode ter um endpoint associado e você
pode ter até 100 endpoints por Outpost.
• Vários pontos de acesso podem ser mapeados para o mesmo endpoint.
• Os endpoints só podem ser adicionados a VPCs com blocos CIDR nos subespaços dos seguintes
intervalos CIDR:
• 10.0.0.0/8
• 172.16.0.0/12
• 192.168.0.0/16
• Os endpoints para um Outpost só podem ser criados de VPCs que tenham blocos CIDR não
sobrepostos.
• Você só pode criar um endpoint para VPCs associadas a apenas um bloco CIDR.
• Um endpoint só pode ser criado de sua sub-rede de Outposts.
• Conexões de VPCs emparelhadas a um endpoint não são suportadas.
• A sub-rede usada para criar um endpoint deve conter quatro endereços IP para o S3 no Outposts usar.
• Você só pode criar um endpoint por Outpost por VPC.

Usar o AWS Identity and Access Management com


o Amazon S3 no Outposts
O AWS Identity and Access Management (IAM) é um serviço da AWS que os administradores podem usar
para controlar com segurança o acesso aos recursos do AWS Outposts. Para permitir que os usuários do
IAM gerenciem os recursos do AWS Outposts, crie uma política do IAM que conceda permissões a eles
explicitamente. Depois, anexe a política aos usuários ou grupos do IAM que exigem essas permissões.
Para obter mais informações, consulte Identity and Access Management para o AWS Outposts no Guia do
usuário do AWS Outposts.

Versão da API 2006-03-01


1097
Amazon Simple Storage Service Guia do usuário
ARNs para S3 no Outposts

O Amazon S3 no Outposts oferece suporte a políticas de bucket e ponto de acesso. As políticas do S3 no


Outposts usam um namespace de ações do IAM diferentes do S3 (s3-outposts:* em relação a s3:*)
para fornecer controles distintos a dados armazenados no Outpost.

As solicitações feitas ao S3 na API de controle do Outposts em uma região da AWS são autenticadas
usando o IAM e autorizados no namespace do IAM s3-outposts:*. As solicitações feitas aos endpoints
da API do objeto no Outpost são autenticadas.

Configure os usuários do IAM e autorize-os no namespace do IAM s3-outposts:*. Políticas de ponto


de acesso configuradas no ponto de acesso do Outpost controlam a autorização de solicitações de API de
objetos, além das políticas de usuário do IAM.
Note

• O S3 em Outposts usa como padrão o proprietário do bucket como proprietário do objeto, para
ajudar a garantir que o proprietário de um bucket não possa ser impedido de acessar ou excluir
objetos.
• O S3 em Outposts sempre tem o Bloqueio de acesso público do S3 habilitado para ajudar a
garantir que os objetos nunca tenham acesso público.
• O S3 em Outposts usa o prefixo de serviço s3-outposts:<ACTION>. Para obter mais
informações, consulte Ações, recursos e chaves de condição para o Amazon S3 no Guia do
usuário do IAM.

ARNS para Amazon S3 no Outposts


O S3 no Outposts tem nomes de recursos da Amazon (ARN) diferentes do Amazon S3. O seguinte é o
formato ARN para buckets do S3 no Outposts. É necessário usar esse formato de ARN para acessar e
executar ações em buckets e objetos do Outposts.

ARN do Amazon S3 no Outposts Formato ARN Exemplo

ARN do bucket arn:<partition>:s3- arn:aws:s3-outposts:us-


outposts:<region>:<account_id>:outpost/
west-2:123456789012:outpost/
<outpost_id>/bucket/ op-01ac5d28a6a232904/
<bucket_name bucket/DOC-EXAMPLE-
BUCKET1

ARN do ponto de acesso arn:<partition>:s3- arn:aws:s3-outposts:us-


outposts:<region>:<account_id>:outpost/
west-2:123456789012:outpost/
<outpost_id>/ op-01ac5d28a6a232904/
accesspoint/ accesspoint/
<accesspoint_name>

ARN do objeto arn:<partition>:s3- arn:aws:s3-outposts:us-


outposts:<region>:<account_id>:outpost/
west-2:123456789012:outpost/
<outpost_id>/bucket/ op-01ac5d28a6a232904/
<bucket_name>/object/ bucket/DOC-EXAMPLE-
<object_key> BUCKET1/object/myobject

ARN do objeto S3 no Outposts arn:<partition>:s3- arn:aws:s3-outposts:us-


AP (usado nas políticas) outposts:<region>:<account_id>:outpost/
west-2:123456789012:outpost/
<outpost_id>/ op-01ac5d28a6a232904/
accesspoint/ accesspoint//object/
<accesspoint_name>/ myobject
object/<object_key>

Versão da API 2006-03-01


1098
Amazon Simple Storage Service Guia do usuário
Acessar o S3 no Outposts

ARN do Amazon S3 no Outposts Formato ARN Exemplo

ARN do S3 no Outposts arn:<partition>:s3- arn:aws:s3-outposts:us-


outposts:<region>:<account_id>:outpost/
west-2:123456789012:outpost/
<outpost_id> op-01ac5d28a6a232904

Acessar o Amazon S3 no Outposts


Você pode usar o S3 on Outposts para armazenar e recuperar objetos no local para aplicativos que
exigem acesso a dados locais, processamento de dados e residência de dados. Esta seção descreve
como trabalhar com APIs de gerenciamento de bucket no S3 no Outposts e os requisitos para acessar e
monitorar o S3 no Outposts.

Tópicos
• Como acessar recursos do S3 no Outposts usando ARNs (p. 1099)
• Como acessar o Amazon S3 no Outposts usando pontos de acesso somente para VPC (p. 1101)

Como acessar recursos do S3 no Outposts usando


ARNs
O Amazon S3 oferece suporte a buckets globais, o que significa que cada nome de bucket deve ser
exclusivo em todas as regiões da AWS dentro de uma partição. É possível acessar um bucket usando
apenas seu nome no Amazon S3. No S3 on Outposts, os nomes de bucket são exclusivos de um Outpost
e exigem o Outpost-id com o nome do bucket para identificá-los.

Os pontos de acesso simplificam o gerenciamento do acesso a dados em escala para conjuntos de dados
compartilhados no S3. Os pontos de acesso são endpoints de rede nomeados e anexados a buckets que
você pode usar para realizar operações de objeto do Amazon S3, como GetObject e PutObject. Com o
S3 on Outposts, o endpoint do bucket e o endpoint de API de objeto são diferentes. Assim, diferentemente
dos buckets no Amazon S3 que podem ser acessados diretamente, você deve usar pontos de acesso para
acessar qualquer objeto em um bucket do Outposts. Os pontos de acesso são compatíveis apenas com o
endereçamento em estilo de host virtual.

Veja a seguir o formato do nome de recurso da Amazon (ARN) para buckets do S3 no Outposts.

arn:aws:s3-outposts:<region>:<account>:outpost/<outpost-id>/bucket/<bucket-name>

Veja a seguir o formato do ARN para pontos de acesso do S3 no Outposts.

arn:aws:s3-outposts:<region>:<account>:outpost/<outpost-id>/accesspoint/<accesspoint-name>

As APIs de gerenciamento de bucket existentes não são compatíveis com o conceito de localização
além das regiões. Portanto, você não pode usar essas APIs para criar e gerenciar buckets que têm como
escopo conta, Outpost e região. O S3 on Outposts hospeda um endpoint separado para gerenciar APIs de
bucket do Outposts distintas do S3. Este endpoint é s3-outposts.<region>.amazonaws.com. Você
deve criar esses endpoints para poder acessar seu bucket do Outposts e executar operações de objeto.
Isso também permite que o modelo e os comportamentos da API sejam os mesmos, permitindo que as
mesmas ações funcionem no S3 e no S3 on Outposts. Isso é feito assinando o bucket e os objetos usando
os ARNs corretos.

Você deve passar ARNs para a API para que o Amazon S3 possa determinar se a solicitação
é para Amazon S3 (s3-control.<region>.amazonaws.com) ou S3 on Outposts (s3-

Versão da API 2006-03-01


1099
Amazon Simple Storage Service Guia do usuário
Como acessar recursos usando ARNs

outposts.<region>.amazonaws.com). O S3 pode então assinar e rotear a solicitação


adequadamente.

Sempre que a solicitação é enviada para o plano de controle do Amazon S3, o SDK extrai os componentes
do ARN e inclui um cabeçalho adicional “x-amz-outpost-id” com o valor de “outpost-id” extraído do
ARN. O nome do serviço do ARN é usado para assinar a solicitação antes de ser roteada para o endpoint
do S3 on Outposts. Isso é aplicável a todas as APIs tratadas pelo cliente s3control.

APIs para S3 on Outposts

A tabela a seguir lista as APIs estendidas para o Amazon S3 on Outposts e suas alterações em relação ao
Amazon S3.

API Valor do parâmetro do Valor do parâmetro do S3


Amazon S3 no Outposts

CreateBucket nome do bucket nome como ARN, outpost-


id

ListRegionalBuckets (nova API) NA outpost-id

DeleteBucket nome do bucket nome como ARN

DeleteBucketLifecycleConfiguration nome do bucket nome do bucket como ARN

GetBucketLifecycleConfiguration nome do bucket nome do bucket como ARN

PutBucketLifecycleConfiguration nome do bucket nome do bucket como ARN

GetBucketPolicy nome do bucket nome do bucket como ARN

PutBucketPolicy nome do bucket nome do bucket como ARN

DeleteBucketPolicy nome do bucket nome do bucket como ARN

GetBucketTagging nome do bucket nome do bucket como ARN

PutBucketTagging nome do bucket nome do bucket como ARN

DeleteBucketTagging nome do bucket nome do bucket como ARN

CreateAccessPoint Nome do ponto de acesso Nome do ponto de acesso


como ARN

DeleteAccessPoint Nome do ponto de acesso Nome do ponto de acesso


como ARN

GetAccessPoint Nome do ponto de acesso Nome do ponto de acesso


como ARN

GetAccessPoint Nome do ponto de acesso Nome do ponto de acesso


como ARN

ListAccessPoints Nome do ponto de acesso Nome do ponto de acesso


como ARN

PutAccessPointPolicy Nome do ponto de acesso Nome do ponto de acesso


como ARN

GetAccessPointPolicy Nome do ponto de acesso Nome do ponto de acesso


como ARN

Versão da API 2006-03-01


1100
Amazon Simple Storage Service Guia do usuário
Como acessar o S3 no Outposts usando um VPC

API Valor do parâmetro do Valor do parâmetro do S3


Amazon S3 no Outposts

DeleteAccessPointPolicy Nome do ponto de acesso Nome do ponto de acesso


como ARN

Como acessar o Amazon S3 no Outposts usando


pontos de acesso somente para VPC
O Amazon S3 on Outposts oferece suporte a pontos de acesso somente de virtual private cloud (VPC)
como o único meio de acessar os buckets do Outposts. Os endpoints S3 on Outposts permitem que você
conecte privadamente seu VPC ao seu bucket do AWS Outposts sem exigir um gateway da Internet,
dispositivo NAT, conexão VPN ou conexão AWS Direct Connect.

As instâncias na sua VPC não exigem que endereços IP públicos se comuniquem com recursos no
Outposts. Isso mantém o tráfego entre a VPC e os buckets do S3 on Outposts na rede da Amazon.

Os endpoints do S3 no Outposts são dispositivos virtuais. Eles são componentes de VPC escalados
horizontalmente, redundantes e altamente disponíveis. Permitem a comunicação entre instâncias na VPC
e o S3 no Outposts, sem impor riscos de disponibilidade ou restrições de largura de banda ao tráfego de
rede.
Note

Para acessar buckets e objetos do S3 on Outposts, é preciso ter o seguinte:

• Um ponto de acesso criado para a VPC.


• Um endpoint que existe para a mesma VPC.

Tópicos
• Gerenciar conexões para o S3 on Outposts usando interfaces de rede elástica entre contas (p. 1101)
• Permissões necessárias para endpoints (p. 1101)
• Opções de criptografia com o S3 on Outposts (p. 1102)

Gerenciar conexões para o S3 on Outposts usando interfaces de


rede elástica entre contas
Os endpoints do S3 on Outposts são recursos nomeados com nomes de recurso da Amazon (ARNs)
apropriados. Quando esses endpoints são criados, o AWS Outposts configura quatro interfaces elásticas
de rede entre contas (ENI entre contas). ENI entre contas são como outras interfaces elásticas de rede
com uma exceção: o S3 no Outposts anexa a ENI entre contas às instâncias que ele executa na conta de
serviço e tem uma presença em sua VPC. O DNS do S3 no Outposts equilibra a carga de suas solicitações
no ENI entre contas. O S3 no Outposts cria o ENI entre contas em sua conta que é visível no console de
interface de rede elástica.

Permissões necessárias para endpoints


Para anexar as interfaces de rede elástica entre contas (ENI entre contas) às contas de cluster, o S3 no
Outposts também deve modificar essas interfaces de rede para usá-las com o ID da conta do cluster.
Devido às restrições do CIDR, cada interface de rede elástica é exclusiva e em um IP exclusivo. O VPC de
origem para o IP e o ID de ENI é registrado e associado ao ID do cluster.

Versão da API 2006-03-01


1101
Amazon Simple Storage Service Guia do usuário
Monitoramento do S3 on Outposts

Opções de criptografia com o S3 on Outposts


Por padrão, todos os dados armazenados no S3 on Outposts são criptografados usando criptografia no
lado do servidor com chaves de criptografia gerenciadas do Amazon S3 (SSE-S3). Opcionalmente, você
pode usar a criptografia do lado do servidor com chaves de criptografia fornecidas pelo cliente (SSE-C)
especificando uma chave de criptografia como parte de suas solicitações de API de objeto. A criptografia
no lado do servidor criptografa somente os dados de objeto, não os metadados de objeto.

Monitoramento do Amazon S3 on Outposts


Você pode monitorar e gerenciar a capacidade de armazenamento do Amazon S3 on Outposts usando o
Amazon CloudWatch Events e os logs do AWS CloudTrail.

Tópicos
• Como gerenciar a capacidade do S3 no Outposts com as métricas do Amazon CloudWatch (p. 1102)
• Gerenciamento da capacidade do S3 on Outposts com logs do AWS CloudTrail (p. 1102)
• Como receber notificações de eventos do S3 no Outposts usando o Amazon CloudWatch
Events (p. 1102)

Como gerenciar a capacidade do S3 no Outposts com


as métricas do Amazon CloudWatch
Se não houver espaço suficiente para armazenar um objeto no Outpost, a API retornará uma isenção de
capacidade insuficiente (ICE). Para evitar isso, você pode criar alertas do CloudWatch que avisam quando
a utilização do armazenamento exceder um limite. Para obter mais informações, consulte Métricas do
Amazon S3 em Outposts CloudWatch (p. 860).

Você pode usar este método para liberar espaço excluindo explicitamente os dados, usando uma política
de expiração do ciclo de vida ou copiando os dados do seu bucket do S3 on Outposts para um bucket
do S3 em uma região da AWS usando AWS DataSync. Para obter mais informações sobre como usar o
DataSync, consulte Conceitos básicos do AWS DataSync no Guia do usuário do AWS DataSync.

Gerenciamento da capacidade do S3 on Outposts com


logs do AWS CloudTrail
Os eventos de gerenciamento do Amazon S3 on Outposts estão disponíveis por meio do AWS CloudTrail.
Para obter mais informações, consulte Registrar em log chamadas de API do Amazon S3 usando o
CloudTrail.

Além disso, é possível habilitar o registro em log para eventos de dados no CloudTrail opcionalmente.
Para obter mais informações, consulte Habilitar o registro em log de objetos em um bucket usando o
console (p. 825).

Como receber notificações de eventos do S3 no


Outposts usando o Amazon CloudWatch Events
Agora você pode usar o CloudWatch Events para criar uma regra para qualquer evento de API do S3
no Outposts para ser notificado por meio de todos os destinos do CloudWatch compatíveis, incluindo o

Versão da API 2006-03-01


1102
Amazon Simple Storage Service Guia do usuário
Como gerenciar buckets e objetos do S3 no Outposts

Amazon SQS, Amazon SNS e AWS Lambda. Para obter mais informações, consulte a lista de produtos
da AWS que podem ser destinos para o CloudWatch Events. Para escolher um serviço de destino para
trabalhar com o S3 no Outposts, consulte Criação de uma regra do CloudWatch Events que aciona uma
chamada de API da AWS usando o AWS CloudTrail.
Note

Para operações de objeto do S3 no Outposts, os eventos de chamada de API da AWS enviados


pelo CloudTrail só corresponderão às suas regras se você tiver trilhas (opcionalmente com
seletores de eventos) configuradas para receber esses eventos. Para obter mais informações,
consulte Como trabalhar com arquivos de log do CloudTrail.

Example

Veja a seguir uma regra de amostra para a operação DeleteObject.

{
"source": [
"aws.s3-outposts"
],
"detail-type": [
"AWS API call via CloudTrail"
],
"detail": {
"eventSource": [
"s3-outposts.amazonaws.com"
],
"eventName": [
"DeleteObject"
],
"requestParameters": {
"bucketName": [
"DOC-EXAMPLE-BUCKET1"
]
}
}
}

Como gerenciar buckets e objetos do Amazon S3


no Outposts
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar e
recuperar facilmente objetos no local para aplicações que exigem acesso a dados locais, processamento
de dados local e residência de dados. É possível usar o S3 no Outposts por meio do Console de
Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para obter mais informações,
consulte Usar o Amazon S3 no Outposts.

Esta seção contém exemplos de criação e gerenciamento de buckets do Outposts e execução de


operações de objeto com o S3 no Outposts. Nos exemplos de código nesta seção, substitua quaisquer
valores de variável por aqueles que se adequam às suas necessidades.

Tópicos
• Como gerenciar buckets e objetos do S3 no Outposts usando o console (p. 1104)
• Como gerenciar buckets e objetos do S3 no Outposts usando a AWS CLI (p. 1113)
• Como gerenciar buckets e objetos do S3 no Outposts usando o AWS SDK para Java (p. 1118)

Versão da API 2006-03-01


1103
Amazon Simple Storage Service Guia do usuário
Uso do console

Como gerenciar buckets e objetos do S3 no Outposts


usando o console
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar
e recuperar facilmente objetos on-premisses para aplicações que exigem acesso a dados locais,
processamento de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de
armazenamento, OUTPOSTS, que usa as APIs do S3 e é projetada para armazenar dados de forma
duradoura e redundante em vários dispositivos e servidores em seu AWS Outposts. Você se comunica
com o bucket do Outposts usando um ponto de acesso e uma conexão de endpoint em uma Virtual Private
Cloud (VPC). É possível usar as mesmas APIs e recursos nos buckets do Outposts da mesma maneira
que no Amazon S3, como políticas de acesso, criptografia e marcação. É possível usar o S3 no Outposts
por meio do Console de Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para
obter mais informações, consulte Usar o Amazon S3 no Outposts (p. 1093).

As seções a seguir descrevem como usar o console do Amazon S3 para criar e gerenciar buckets do S3
no Outposts.

Tópicos
• Como criar um bucket do Amazon S3 no Outposts usando o console (p. 1104)
• Como exibir e editar propriedades de buckets do Amazon S3 no Outposts usando o console (p. 1106)
• Como excluir um bucket do Amazon S3 no Outposts usando o console (p. 1111)
• Como gerenciar pontos de acesso do Amazon S3 no Outposts usando o console (p. 1112)

Como criar um bucket do Amazon S3 no Outposts usando o


console
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar
e recuperar facilmente objetos on-premisses para aplicações que exigem acesso a dados locais,
processamento de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de
armazenamento, OUTPOSTS, que usa as APIs do S3 e é projetada para armazenar dados de forma
duradoura e redundante em vários dispositivos e servidores em seu AWS Outposts. Você se comunica
com o bucket do Outposts usando um ponto de acesso e uma conexão de endpoint em uma Virtual Private
Cloud (VPC). É possível usar as mesmas APIs e recursos nos buckets do Outposts da mesma maneira
que no Amazon S3, como políticas de acesso, criptografia e marcação. É possível usar o S3 no Outposts
por meio do Console de Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para
obter mais informações, consulte Usar o Amazon S3 no Outposts (p. 1093).

Antes de fazer upload de dados para o S3 on Outposts, você deve criar um bucket do Outposts em um
de seus AWS Outposts. Depois de criar um bucket, você pode fazer upload e download e gerenciar seus
objetos de dados no bucket do Outposts.
Note

A conta da AWS que cria o bucket é proprietária dele e é a única que pode confirmar suas
ações. Os buckets têm propriedades de configuração, como Outpost, tags, criptografia padrão e
configurações de ponto de acesso. As configurações do ponto de acesso incluem a política de
VPC e ponto de acesso para acessar os objetos no bucket e outros metadados. Para obter mais
informações, consulte Especificações do Amazon S3 no Outposts (p. 1095).
O console do Amazon S3 não oferece suporte a ações de objeto do S3 on Outposts. Para isso,
você deve usar a API REST, AWS CLI ou AWS SDKs.

Versão da API 2006-03-01


1104
Amazon Simple Storage Service Guia do usuário
Uso do console

Para criar um bucket do Outposts

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha Create Outposts bucket (Criar bucket do Outposts).
4. Em Bucket name (Nome do bucket), insira um nome compatível com o DNS para seu bucket.

O nome do bucket deve:

• Ser exclusivo na conta dessa região da AWS e do Outpost.


• Seja exclusivo em todo o Amazon S3.
• Ter entre 3 e 63 caracteres.
• Não contém caracteres maiúsculos.
• Começar com uma letra minúscula ou um número.

Depois de criado o bucket, você não pode mudar seu nome. Para obter informações sobre
nomeação de buckets, consulte Regras de nomeação de bucket (p. 30).
Important

Evite incluir informações confidenciais, como números de conta, no nome do bucket. O


nome do bucket é visível nos URLs que apontam para os objetos no bucket.
5. No Outpost, escolha o Outpost onde você quer que o bucket resida.
6. Adicione quaisquer tags opcionais que você gostaria de associar ao bucket do Outposts. Você pode
usar tags para monitorar o custo de armazenamento ou outros critérios de projetos individuais ou
grupos de projetos, ou rotular seus buckets usando tags de alocação de custo. Para obter mais
informações, consulte Usar tags de alocação de custos para buckets do S3 (p. 693).

Todos os objetos armazenados em seu bucket do Outposts são armazenados usando criptografia do
lado do servidor com chaves de criptografia gerenciadas do Amazon S3 (SSE-S3) por padrão. Você
também pode explicitamente optar por armazenar objetos usando criptografia no lado do servidor com
chaves de criptografia fornecidas pelo cliente (SSE-C). Para isso, você deve usar a API REST, AWS
CLI ou AWS SDKs.
7. Na seção Outposts access point settings (Configurações do ponto de acesso do Outposts), insira o
nome do ponto de acesso.

Os pontos de acesso do S3 on Outposts simplificam o gerenciamento de acesso a dados em escala


para conjuntos de dados compartilhados no S3 on Outposts. Os pontos de acesso são endpoints
de rede nomeados que são anexados a buckets do Outposts que você pode usar para executar
operações de objeto S3. Para obter mais informações, consulte Operações de API compatíveis com o
Amazon S3 no Outposts (p. 1096).

Os nomes de pontos de acesso devem ser exclusivos dentro da conta para esta região e Outpost,
além de cumprir com o Restrições e limitações de pontos de acesso (p. 495).
8. Escolha a VPC para este ponto de acesso do Amazon S3 no Outposts.

A Amazon Virtual Private Cloud (Amazon VPC) permite executar recursos da AWS em uma rede
virtual definida por você. Essa rede virtual se assemelha a uma rede tradicional que você operaria no
seu próprio datacenter, com os benefícios de usar a infraestrutura dimensionável da AWS.

Se você não tiver uma VPC, escolha Create VPC (Criar VPC). Para obter mais informações, consulte
Criar pontos de acesso restritos a uma nuvem privada virtual (p. 487).
9. Escolha uma sub-rede para o seu endpoint.
Versão da API 2006-03-01
1105
Amazon Simple Storage Service Guia do usuário
Uso do console

Uma sub-rede é uma gama de endereços IP na VPC. Se você não tiver a sub-rede desejada, escolha
Create subnet (Criar sub-rede). Para obter mais informações, consulte Acessar buckets do S3 no
Outposts.
10. (Opcional) Especifique a política de ponto de acesso. O console exibe automaticamente o nome do
recurso da Amazon (ARN) do ponto de acesso, que você pode usar na política.
11. Escolha Create Outposts bucket (Criar bucket do Outposts).
Note
Pode levar até cinco minutos para que seu endpoint do Outposts seja criado e seu bucket
esteja pronto para uso. Para definir configurações de bucket adicionais, escolha View details
(Visualizar detalhes).

Como exibir e editar propriedades de buckets do Amazon S3 no


Outposts usando o console
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar
e recuperar facilmente objetos on-premisses para aplicações que exigem acesso a dados locais,
processamento de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de
armazenamento, OUTPOSTS, que usa as APIs do S3 e é projetada para armazenar dados de forma
duradoura e redundante em vários dispositivos e servidores em seu AWS Outposts. Você se comunica
com o bucket do Outposts usando um ponto de acesso e uma conexão de endpoint em uma Virtual Private
Cloud (VPC). É possível usar as mesmas APIs e recursos nos buckets do Outposts da mesma maneira
que no Amazon S3, como políticas de acesso, criptografia e marcação. É possível usar o S3 no Outposts
por meio do Console de Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para
obter mais informações, consulte Usar o Amazon S3 no Outposts (p. 1093).
Note
A conta da AWS que cria o bucket é proprietária dele e é a única que pode confirmar suas
ações. Os buckets têm propriedades de configuração, como Outpost, tags, criptografia padrão e
configurações de ponto de acesso. As configurações do ponto de acesso incluem a política de
VPC e ponto de acesso para acessar os objetos no bucket e outros metadados. Para obter mais
informações, consulte Especificações do Amazon S3 no Outposts (p. 1095).
O console do Amazon S3 não oferece suporte a ações de objeto do S3 on Outposts. Para isso,
você deve usar a API REST, AWS CLI ou AWS SDKs.

Como proprietário do bucket, você pode alterar o seguinte para o bucket do S3 on Outposts:

Tópicos
• Como adicionar e remover tags de buckets do Amazon S3 no Outposts usando o console (p. 1106)
• Como adicionar um bucket do Amazon S3 no Outposts ao AWS CloudTrail usando o console (p. 1107)
• Como gerenciar permissões de bucket do Amazon S3 no Outposts usando o console (p. 1107)
• Como gerenciar regras de ciclo de vida do bucket do S3 no Outposts usando o console (p. 1108)
• Como gerenciar os pontos de acesso do bucket do S3 no Outposts usando o console (p. 1110)

Como adicionar e remover tags de buckets do Amazon S3 no Outposts usando o


console
Você pode adicionar tags para seus buckets do S3 no Outpost para rastrear o custo de armazenamento ou
outros critérios para projetos individuais ou grupos de projetos.
Note
A conta da AWS que cria o bucket é proprietária dele e é a única que pode alterar suas tags.

Versão da API 2006-03-01


1106
Amazon Simple Storage Service Guia do usuário
Uso do console

Para adicionar ou remover tags de bucket do Outposts

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts com as tags que você deseja editar.
4. Adicione quaisquer tags opcionais que você gostaria de associar ao bucket do Outposts para
monitorar o custo de armazenamento ou outros critérios para projetos individuais ou grupos
de projetos, ou rotule seus buckets do S3 usando tags de alocação de custos. Para obter mais
informações, consulte Usar tags de alocação de custos para buckets do S3 (p. 693).

Como adicionar um bucket do Amazon S3 no Outposts ao AWS CloudTrail


usando o console
Você pode configurar o bucket do S3 no Outposts para emitir logs do CloudTrail.
Note

A conta da AWS que cria o bucket é proprietária dele e é a única que pode configurar eventos de
dados do Amazon S3 a serem enviados para o AWS CloudTrail.

Para adicionar seu bucket do S3 no Outposts ao CloudTrail

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts cujos eventos de dados você deseja registrar usando o CloudTrail.
4. Prossiga para a seção AWS CloudTrail data events (Eventos de dados do AWS CloudTrail) e escolha
Configure in CloudTrail (Configurar no CloudTrail).

Para obter mais informações, consulte Habilitar o log de eventos do CloudTrail para buckets e objetos
do S3 (p. 825).

Como gerenciar permissões de bucket do Amazon S3 no Outposts usando o


console
Você pode usar o console do Amazon S3 para gerenciar suas permissões de bucket do S3 no Outposts,
incluindo a criação, edição e exclusão de políticas de bucket.
Note

A conta da AWS que cria o bucket do Outposts é proprietária dele e é a única que pode alterar as
permissões de bucket.

Tópicos
• Como criar ou editar uma política de bucket do S3 no Outposts (p. 1107)
• Como excluir uma política de bucket do S3 no Outposts (p. 1108)

Como criar ou editar uma política de bucket do S3 no Outposts

Para criar ou editar uma política de bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.

Versão da API 2006-03-01


1107
Amazon Simple Storage Service Guia do usuário
Uso do console

2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).


3. Escolha o bucket do Outposts cuja permissão você deseja editar.
4. Escolha a guia Permissions.
5. Na seção Outposts bucket policy (Política de bucket do Outposts), siga um destes procedimentos:
• Para criar uma nova política, escolha Edit (Editar).
• Para editar uma política de bucket, escolha a política que deseja editar e, em seguida, escolha
Edit (Editar).

Em seguida, você pode adicionar ou editar a política de bucket do S3 on Outposts. Para obter
mais informações, consulte Usar o AWS Identity and Access Management com o Amazon S3 no
Outposts (p. 1097).

Como excluir uma política de bucket do S3 no Outposts

Para excluir uma política de bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts cuja permissão você deseja editar.
4. Escolha a guia Permissions.
5. Na seção Outposts bucket policy (Política de bucket do Outposts), escolha Delete (Excluir).
6. Confirme a exclusão.

Como gerenciar regras de ciclo de vida do bucket do S3 no Outposts usando o


console
As regras de ciclo de vida dos buckets S3 on Outposts são limitadas à exclusão de objetos e à interrupção
de multipart uploads incompletos. Você pode usar regras de ciclo de vida para definir quando iniciar a
exclusão de objetos com base na idade ou na data. Você pode criar, habilitar, desabilitar e excluir uma
regra de ciclo de vida.
Note

A conta da AWS que cria o bucket é proprietária dele e é a única que pode criar, habilitar,
desabilitar e excluir uma regra de ciclo de vida.

Tópicos
• Como criar uma regra de ciclo de vida do bucket do S3 no Outposts (p. 1108)
• Como habilitar e desabilitar uma regra de ciclo de vida do bucket do S3 no Outposts (p. 1109)
• Como excluir uma regra de ciclo de vida do bucket do S3 no Outposts (p. 1109)
• Como editar uma regra de ciclo de vida do bucket do S3 no Outposts (p. 1109)

Como criar uma regra de ciclo de vida do bucket do S3 no Outposts

Para criar uma regra de ciclo de vida de bucket

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts para o qual você deseja criar uma regra de ciclo de vida.
4. Escolha a guia Management (Gerenciamento) e escolha Create Lifecycle rule (Criar regra de ciclo de
vida).

Versão da API 2006-03-01


1108
Amazon Simple Storage Service Guia do usuário
Uso do console

5. Na seção Lifecycle rule configuration (Configuração da regra do ciclo de vida):

a. Insira o Lifecycle rule name (Nome da regra de ciclo de vida).


b. Escolha Rule scope (Escopo da regra).
Warning

Se você quiser que a regra se aplique a objetos específicos, você deve usar um filtro
para identificar esses objetos. Selecione Limit the scope to specific objects or tags
(Limitar o escopo a objetos ou tags específicos). Se selecionado, faça o seguinte:

• Adicione um filtro de prefixo para limitar o escopo dessa regra a um único prefixo.
• Adicione tags para limitar o escopo dessa regra aos pares de chave/valor adicionados
abaixo.
6. Na seção lifecycle rule trigger (acionador de regra de ciclo de vida), escolha o rule trigger (acionador
de regra) com base em uma data específica ou na idade do objeto.

Como habilitar e desabilitar uma regra de ciclo de vida do bucket do S3 no Outposts

Para habilitar e desabilitar uma regra de ciclo de vida de bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts para o qual deseja habilitar e desabilitar uma regra de ciclo de vida.
4. Escolha a guia Management (Gerenciamento) e escolha a Lifecycle rule (Regra de ciclo de vida) que
você deseja habilitar ou desabilitar.
5. Em Action (Ação), escolha Enable or disable rule (Habilitar e desabilitar regra).

Como excluir uma regra de ciclo de vida do bucket do S3 no Outposts

Para excluir uma regra de ciclo de vida de bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts para o qual você deseja excluir uma regra de ciclo de vida.
4. Escolha a guia Management (Gerenciamento) e escolha a Lifecycle rule (Regra de ciclo de vida) que
você deseja excluir.
5. Escolha Delete (Excluir).

Como editar uma regra de ciclo de vida do bucket do S3 no Outposts

Para editar uma regra de ciclo de vida de bucket

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts para o qual você deseja editar uma regra de ciclo de vida.
4. Escolha a guia Management (Gerenciamento) e escolha a Lifecycle rule (Regra de ciclo de vida) que
você deseja editar.
5. Na seção de lifecycle rule configuration (configuração da regra do ciclo de vida), faça o seguinte:

a. Atualize o lifecycle rule name (nome da regra do ciclo de vida).


b. Atualize o rule scope (escopo da regra).

Versão da API 2006-03-01


1109
Amazon Simple Storage Service Guia do usuário
Uso do console

Warning

Se você quiser que a regra se aplique a objetos específicos, você deve usar um filtro
para identificar esses objetos. Escolha “Limitar o escopo a objetos ou tags específicos”.

Se selecionado, faça o seguinte:

• Adicione um filtro de prefixo para limitar o escopo dessa regra a um único prefixo.
• Adicione tags para limitar o escopo dessa regra aos pares de chave/valor adicionados abaixo.
6. Na seção do lifecycle rule trigger (acionador de regra de ciclo de vida), atualize o rule trigger
(acionador de regra) com base em uma data específica ou na idade do objeto.

Como gerenciar os pontos de acesso do bucket do S3 no Outposts usando o


console
Você pode usar o console do Amazon S3 para configurar um ponto de acesso do Amazon S3 no Outposts.
Note

A conta da AWS que cria o bucket do Outposts é proprietária dele e é a única que pode atribuir
pontos de acesso a ele.

Tópicos
• Como criar seus pontos de acesso do bucket do S3 no Outposts (p. 1110)
• Como gerenciar uma política do ponto de acesso do bucket do S3 no Outposts (p. 1110)
• Excluir o ponto de acesso do S3 no Outposts (p. 1108)

Como criar seus pontos de acesso do bucket do S3 no Outposts

Como criar um ponto de acesso

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha o bucket do Outposts para o qual deseja criar um ponto de acesso do Outposts.
4. Escolha a aba Outposts access points (Pontos de acesso do Outposts).
5. Na seção Outposts access points (Pontos de acesso do Outposts), escolha Create Outposts access
point (Criar ponto de acesso do Outposts).
6. Em Outpost access point settings (Configurações do ponto de acesso do Outpost), insira um nome
para o ponto de acesso e escolha a nuvem privada virtual (VPC).
Note

Para usar um ponto de acesso com uma VPC, é necessário modificar a política de acesso
do VPC endpoint. Para obter mais informações, consulte Como acessar o Amazon S3 no
Outposts usando pontos de acesso somente para VPC (p. 1101).
7. Se você quiser adicionar uma política para o seu ponto de acesso, adicione-a na seção Outposts
access point policy (Política de ponto de acesso do Outposts). Para obter mais informações, consulte
Usar o AWS Identity and Access Management com o Amazon S3 no Outposts (p. 1097).

Como gerenciar uma política do ponto de acesso do bucket do S3 no Outposts

Para adicionar ou editar uma política de ponto de acesso

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

Versão da API 2006-03-01


1110
Amazon Simple Storage Service Guia do usuário
Uso do console

2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).


3. Escolha o bucket do Outposts para o qual você deseja editar a política de ponto de acesso.
4. Escolha a aba Outposts access points (Pontos de acesso do Outposts).
5. Na seção Outposts access points (Pontos de acesso do Outposts), selecione o ponto de acesso cuja
política você quer editar e escolha Edit policy (Editar política).
6. Adicione ou edite a política na seção da Outposts access point policy (Política do ponto de acesso do
Outposts). Para obter mais informações, consulte Usar o AWS Identity and Access Management com
o Amazon S3 no Outposts (p. 1097).

Excluir o ponto de acesso do S3 no Outposts

Como excluir uma chave de acesso:

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).
3. Escolha a aba Outposts access points (Pontos de acesso do Outposts).
4. Na seção dos Outposts access points (Pontos de acesso dos Outposts), escolha o ponto de acesso do
Outposts que você quer excluir, e escolha a Delete (Excluir).
5. Confirme a exclusão.

Como excluir um bucket do Amazon S3 no Outposts usando o


console
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar
e recuperar facilmente objetos on-premisses para aplicações que exigem acesso a dados locais,
processamento de dados local e residência de dados. O S3 no Outposts fornece uma nova classe de
armazenamento, OUTPOSTS, que usa as APIs do S3 e é projetada para armazenar dados de forma
duradoura e redundante em vários dispositivos e servidores em seu AWS Outposts. Você se comunica
com o bucket do Outposts usando um ponto de acesso e uma conexão de endpoint em uma Virtual Private
Cloud (VPC). É possível usar as mesmas APIs e recursos nos buckets do Outposts da mesma maneira
que no Amazon S3, como políticas de acesso, criptografia e marcação. É possível usar o S3 no Outposts
por meio do Console de Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para
obter mais informações, consulte Usar o Amazon S3 no Outposts (p. 1093).

A conta da AWS que cria o bucket é proprietária dele e é a única que pode excluí-lo.
Note

• Os buckets do Outposts devem estar vazios antes de serem excluídos.


• O console do Amazon S3 não oferece suporte a ações de objeto do S3 on Outposts. Para isso,
você deve usar a API REST, AWS CLI ou AWS SDKs.

A exclusão de um bucket do Outposts falhará se esse bucket tiver pontos de acesso do


Outposts.

Você não pode recuperar um bucket depois que ele foi excluído.

Para excluir um bucket do S3 no Outposts

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://


console.aws.amazon.com/s3/.
2. No painel de navegação, escolha Outposts buckets (Buckets do Outposts).

Versão da API 2006-03-01


1111
Amazon Simple Storage Service Guia do usuário
Uso do console

3. Escolha o bucket que você deseja excluir e escolha Delete (Excluir).


4. Confirme a exclusão.

Como gerenciar pontos de acesso do Amazon S3 no Outposts


usando o console
Você pode usar o console do Amazon S3 para gerenciar seus pontos de acesso do S3 no Outposts,
incluindo a criação e exclusão de pontos de acesso e gerenciamento de políticas.

Tópicos
• Como criar seus pontos de acesso do bucket do S3 no Outposts (p. 1110)
• Como gerenciar uma política do ponto de acesso do S3 no Outposts (p. 1112)
• Excluir o ponto de acesso do S3 no Outposts (p. 1108)

Como criar seus pontos de acesso do bucket do S3 no Outposts


Para criar um ponto de acesso do bucket do S3 no Outposts

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts access points (Pontos de acesso do Outposts).
3. Escolha Create Outposts Access point (Criar pontos de acesso do Outposts).
4. Na seção Outposts access point settings (Configurações do ponto de acesso do Outposts), insira um
nome para o ponto de acesso e escolha a nuvem privada virtual (VPC).
Note

Para usar um ponto de acesso com uma VPC, é necessário modificar a política de acesso
do VPC endpoint. Para obter mais informações, consulte Como acessar o Amazon S3 no
Outposts usando pontos de acesso somente para VPC (p. 1101).
5. Para adicionar uma política para o seu ponto de acesso, insira-a na seção Outposts access point
policy (Política de ponto de acesso do Outposts). Para obter mais informações, consulte Usar o AWS
Identity and Access Management com o Amazon S3 no Outposts (p. 1097).

Como gerenciar uma política do ponto de acesso do S3 no Outposts


Para adicionar ou editar uma política do ponto de acesso do S3 no Outposts

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.


2. No painel de navegação, escolha Outposts access points (Pontos de acesso do Outposts).
3. Escolha os pontos de acesso do Outposts para os quais deseja editar a política de ponto de acesso.
4. Na seção Outposts access points (Pontos de acesso do Outposts), escolha o ponto de acesso cuja
política você quer editar e escolha Edit policy (Editar política).
5. Adicione ou edite a política na seção da Outposts access point policy (Política do ponto de acesso do
Outposts). Para obter mais informações, consulte Usar o AWS Identity and Access Management com
o Amazon S3 no Outposts (p. 1097).

Excluir o ponto de acesso do S3 no Outposts


Como excluir uma chave de acesso:

1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

Versão da API 2006-03-01


1112
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

2. No painel de navegação, escolha Outposts access points (Pontos de acesso do Outposts).


3. Na seção Outposts access points (Pontos de acesso do Outposts), escolha o ponto de acesso do
Outposts que deseja excluir.
4. Escolha Delete (Excluir).
5. Confirme a exclusão.

Como gerenciar buckets e objetos do S3 no Outposts


usando a AWS CLI
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar e
recuperar facilmente objetos no local para aplicações que exigem acesso a dados locais, processamento
de dados local e residência de dados. É possível usar o S3 no Outposts por meio do Console de
Gerenciamento da AWS, da CLI da AWS, dos AWS SDKs ou da API REST. Para obter mais informações,
consulte Uso do Amazon S3 no Outposts.

Os exemplos a seguir mostram como você pode usar o S3 no Outposts com a interface da linha de
comando da AWS.

Tópicos
• Criar e gerenciar o bucket do Amazon S3 no Outposts (p. 1113)
• Trabalhar com objetos usando o Amazon S3 no Outposts (p. 1117)

Criar e gerenciar o bucket do Amazon S3 no Outposts


É possível usar a CLI da AWS para criar e gerenciar os buckets do S3 no Outposts. Com esses exemplos,
é possível criar e obter um bucket do Outposts, listar os buckets de um Outpost, criar e gerenciar pontos
de acesso, a lifecycleconfiguration e a política do bucket do Outpost.

Tópicos
• Criar um bucket do S3 no Outposts (p. 1113)
• Obter o bucket do S3 no Outposts (p. 1114)
• Obter uma lista de buckets do S3 no Outposts (p. 1114)
• Criar um ponto de acesso para um bucket do S3 no Outposts (p. 1114)
• Obter um ponto de acesso para um bucket do S3 no Outposts (p. 1114)
• Listar pontos de acesso para um Outpost (p. 1114)
• Put uma configuração de ciclo de vida para um bucket do S3 no Outposts (p. 1114)
• Obtenha uma configuração de ciclo de vida de um bucket do S3 no Outposts (p. 1115)
• Put uma política em um bucket do S3 no Outposts (p. 1115)
• Obter uma política para um bucket do S3 no Outposts (p. 1116)
• Colocar uma política em um ponto de acesso do S3 no Outposts (p. 1116)
• Obter uma política para um ponto de acesso do S3 no Outposts (p. 1117)
• Criar um endpoint em um Outpost (p. 1117)
• Listar endpoints para um Outpost (p. 1117)
• Excluir um endpoint em um Outpost (p. 1117)

Criar um bucket do S3 no Outposts


O exemplo a seguir cria um s3-outposts:CreateBucket do S3 no Outposts usando a CLI da AWS.

Versão da API 2006-03-01


1113
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

aws s3control create-bucket --bucket example-outpost-bucket --outpost-


id op-01ac5d28a6a232904

Obter o bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir obtém um bucket usando a CLI da AWS.

aws s3control get-bucket --account-id 123456789012 --bucket "arn:aws:s3-outposts:<your-


region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket"

Obter uma lista de buckets do S3 no Outposts


O exemplo da CLI da AWS a seguir obtém uma lista de buckets em um Outpost.

aws s3control list-regional-buckets --account-id 123456789012 --outpost-


id op-01ac5d28a6a232904

Criar um ponto de acesso para um bucket do S3 no Outposts


O exemplo da CLI da AWS a seguir cria um ponto de acesso para um bucket do Outposts.

aws s3control create-access-point --account-id 123456789012 --


name example-Outposts-Access-Point --bucket "arn:aws:s3-outposts:<your-
region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket" --vpc-
configuration VpcId=example-vpc-12345

Obter um ponto de acesso para um bucket do S3 no Outposts


O exemplo da CLI da AWS a seguir obtém um ponto de acesso para um bucket do Outposts.

aws s3control get-access-point --account-id 123456789012 --name arn:aws:s3-outposts:<your-


region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point

Listar pontos de acesso para um Outpost


O exemplo da AWS CLI a seguir lista os pontos de acesso de um bucket do Outposts.

aws s3control list-access-points --account-id 123456789012 --bucket arn:aws:s3-


outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-
bucket

Put uma configuração de ciclo de vida para um bucket do S3 no Outposts


O exemplo da AWS CLI a seguir apresenta uma configuração de ciclo de vida de um bucket do Outposts
em que todos os objetos com o prefixo e as tags sinalizados expiram após dez dias.

Versão da API 2006-03-01


1114
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

1. Salve a política da configuração do ciclo de vida em um arquivo JSON.

{
"Rules": [
{
"ID": "id-1",
"Filter": {
"And": {
"Prefix": "myprefix",
"Tags": [
{
"Value": "mytagvalue1",
"Key": "mytagkey1"
},
{
"Value": "mytagvalue2",
"Key": "mytagkey2"
}
]
}
},
"Status": "Enabled",
"Expiration": {
"Days": 10
}
}
]
}

2. Envie o arquivo JSON como parte do comando da CLI de colocar configuração do ciclo de vida.

aws s3control put-bucket-lifecycle-configuration --account-id 123456789012 --bucket


arn:aws:s3-outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/
bucket/example-outpost-bucket --lifecycle-configuration file://lifecycle1.json

Obtenha uma configuração de ciclo de vida de um bucket do S3 no Outposts


O exemplo da CLI da AWS a seguir obtém um ponto de acesso para um bucket do Outposts.

aws s3control get-bucket-lifecycle-configuration --account-id 123456789012 --bucket


arn:aws:s3-outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/
bucket/example-outpost-bucket

Put uma política em um bucket do S3 no Outposts


O exemplo da CLI da AWS a seguir coloca a política para um bucket do Outposts.

1. Salve a política de bucket em um arquivo JSON.

{
"Version":"2012-10-17",
"Id":"testBucketPolicy",
"Statement":[
{
"Sid":"st1",
"Effect":"Allow",

Versão da API 2006-03-01


1115
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

"Principal":{
"AWS":"123456789012"
},
"Action":"s3-outposts:*",
"Resource":"arn:aws:s3-outposts:<your-
region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket"
}
]
}

2. Envie o arquivo JSON como parte do comando da CLI de colocar a política de bucket.

aws s3control put-bucket-policy --account-id 123456789012 --bucket arn:aws:s3-


outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-
outpost-bucket --policy file://policy1.json

Obter uma política para um bucket do S3 no Outposts


O exemplo da CLI da AWS a seguir obtém uma política para um bucket do Outposts.

aws s3control get-bucket-policy --account-id 123456789012 --bucket arn:aws:s3-


outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-
bucket

Colocar uma política em um ponto de acesso do S3 no Outposts


O exemplo da CLI da AWS a seguir coloca política para um bucket do Outposts.

1. Salve a política de ponto de acesso em um arquivo JSON chamado appolicy1.json.

{
"Version":"2012-10-17",
"Id":"exampleAccessPointPolicy",
"Statement":[
{
"Sid":"st1",
"Effect":"Allow",
"Principal":{
"AWS":"123456789012"
},
"Action":"s3-outposts:*",
"Resource":"arn:aws:s3-outposts:<your-
region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-
Point
}
]
}

2. Envie o arquivo JSON como parte do comando da CLI da política de ponto de acesso.

aws s3control put-access-point-policy --account-id 123456789012 --name arn:aws:s3-


outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-
Outposts-Access-Point --policy file://appolicy1.json

Versão da API 2006-03-01


1116
Amazon Simple Storage Service Guia do usuário
Usar a CLI da AWS

Obter uma política para um ponto de acesso do S3 no Outposts


O exemplo da CLI da AWS a seguir obtém uma política para um bucket do Outposts.

aws s3control get-access-point-policy --account-id 123456789012 --name arn:aws:s3-


outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-
Outposts-Access-Point

Criar um endpoint em um Outpost


O exemplo da CLI da AWS a seguir cria um endpoint para um Outpost.

aws s3outposts create-endpoint --outpost-id op-01ac5d28a6a232904 --subnet-id


subnet-8c7a57c5 --security-group-id sg-ab19e0d1

Listar endpoints para um Outpost


O exemplo da CLI da AWS a seguir lista os endpoints de um Outpost.

aws s3outposts list-endpoints

Excluir um endpoint em um Outpost


O exemplo da CLI da AWS a seguir cria um endpoint para um Outpost.

aws s3outposts delete-endpoint --endpoint-id m3kvngonpdx2kadiusm --outpost-


id op-01ac5d28a6a232904

Trabalhar com objetos usando o Amazon S3 no Outposts


Você pode usar a CLI da AWS para colocar e gerenciar seus objetos do S3 no Outposts. A partir desses
exemplos, você pode colocar objetos e obter objetos de um bucket do Outpost.

Tópicos
• Colocar um objeto em um bucket do S3 no Outposts (p. 1117)
• Obter o bucket do S3 no Outposts (p. 1118)
• Listar objetos em um bucket do S3 no Outposts (p. 1118)

Colocar um objeto em um bucket do S3 no Outposts


O exemplo a seguir coloca um s3-outposts:PutObeject do S3 no Outposts usando a CLI da AWS.

aws s3api put-object --bucket arn:aws:s3-outposts:<your-


region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point
--key testkey --body sample-object.xml

Versão da API 2006-03-01


1117
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Obter o bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir obtém um bucket usando a CLI da AWS.

aws s3api get-object --bucket arn:aws:s3-outposts:<your-


region>:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point
--key testkey sample-object.xml

Listar objetos em um bucket do S3 no Outposts


O exemplo a seguir lista S3 no Outpostss3-outposts:ListObjectsV2 usando o AWS CLI.

aws s3api list-objects-v2 --bucket arn:aws:s3-outposts:us-


west-2:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point

Como gerenciar buckets e objetos do S3 no Outposts


usando o AWS SDK para Java
Com o Amazon S3 no Outposts, é possível criar buckets do S3 no AWS Outposts, além de armazenar e
recuperar facilmente objetos no local para aplicações que exigem acesso a dados locais, processamento
de dados local e residência de dados. Você pode usar o S3 no Outposts por meio do Console de
Gerenciamento da AWS, do SDK para Java, dos AWS SDKs ou da API REST. Para obter mais
informações, consulte Usar o Amazon S3 no Outposts (p. 1093).

Os exemplos a seguir mostram como você pode usar o S3 no Outposts com o AWS SDK para Java.

Tópicos
• Como criar e gerenciar buckets do Amazon S3 no Outposts (p. 1118)
• Trabalhar com objetos usando o Amazon S3 no Outposts (p. 1124)

Como criar e gerenciar buckets do Amazon S3 no Outposts


É possível usar o SDK para Java para criar e gerenciar os buckets do S3 no Outposts. Com esses
exemplos, é possível criar e obter um bucket do Outposts, listar os buckets de um Outpost, criar e
gerenciar pontos de acesso, a lifecycleconfiguration e a política do bucket do Outpost.

Tópicos
• Configurar o cliente de controle do S3 para S3 no Outposts (p. 1119)
• Criar um bucket do S3 no Outposts (p. 1119)
• Obter um bucket do S3 no Outposts (p. 1119)
• Obter uma lista de buckets em um Outpost (p. 1120)
• Criar um ponto de acesso para um bucket do S3 no Outposts (p. 1120)
• Obter um ponto de acesso para um bucket do S3 no Outposts (p. 1120)
• Listar pontos de acesso para um AWS Outpost (p. 1121)
• Adicionar uma configuração de ciclo de vida a um bucket do Outposts (p. 1121)
• Obtenha uma configuração de ciclo de vida de um bucket do S3 no Outposts (p. 1122)
• Colocar uma política no bucket do Outposts (p. 1122)
• Obter uma política para um bucket do S3 no Outposts (p. 1122)
• Colocar uma política no ponto de acesso do Outposts (p. 1123)

Versão da API 2006-03-01


1118
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

• Obter uma política para um ponto de acesso do S3 no Outposts (p. 1123)


• Criar um endpoint em um Outpost (p. 1123)
• Excluir um endpoint em um Outpost (p. 1124)
• Listar pontos de extremidade para o S3 no Outpost (p. 1124)

Configurar o cliente de controle do S3 para S3 no Outposts


O exemplo a seguir configura o cliente de controle do S3 para o S3 no Outposts usando o SDK para Java.

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;

public AWSS3Control createS3ControlClient() {

String accessKey = AWSAccessKey;


String secretKey = SecretAccessKey;
BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey);

return AWSS3ControlClient.builder().enableUseArnRegion()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();

Criar um bucket do S3 no Outposts


O exemplo a seguir cria um s3-outposts:CreateBucket do S3 no Outposts usando o SDK para Java.

import com.amazonaws.services.s3control.model.*;

public String createBucket(String bucketName) {

CreateBucketRequest reqCreateBucket = new CreateBucketRequest()


.withBucket(bucketName)
.withOutpostId(OutpostId)
.withCreateBucketConfiguration(new CreateBucketConfiguration());

CreateBucketResult respCreateBucket = s3ControlClient.createBucket(reqCreateBucket);


System.out.printf("CreateBucket Response: %s%n", respCreateBucket.toString());

return respCreateBucket.getBucketArn();

Obter um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir obtém um bucket usando o SDK para Java.

import com.amazonaws.services.s3control.model.*;

public void getBucket(String bucketArn) {

GetBucketRequest reqGetBucket = new GetBucketRequest()


.withBucket(bucketArn)
.withAccountId(AccountId);

GetBucketResult respGetBucket = s3ControlClient.getBucket(reqGetBucket);


System.out.printf("GetBucket Response: %s%n", respGetBucket.toString());

Versão da API 2006-03-01


1119
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Obter uma lista de buckets em um Outpost


O exemplo do SDK para Java a seguir obtém uma lista de buckets em um Outpost.

import com.amazonaws.services.s3control.model.*;

public void listRegionalBuckets() {

ListRegionalBucketsRequest reqListBuckets = new ListRegionalBucketsRequest()


.withAccountId(AccountId)
.withOutpostId(OutpostId);

ListRegionalBucketsResult respListBuckets =
s3ControlClient.listRegionalBuckets(reqListBuckets);
System.out.printf("ListRegionalBuckets Response: %s%n", respListBuckets.toString());

Criar um ponto de acesso para um bucket do S3 no Outposts


O exemplo do SDK para Java a seguir cria um ponto de acesso para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public String createAccessPoint(String bucketArn, String accessPointName) {

CreateAccessPointRequest reqCreateAP = new CreateAccessPointRequest()


.withAccountId(AccountId)
.withBucket(bucketArn)
.withName(accessPointName)
.withVpcConfiguration(new VpcConfiguration().withVpcId("vpc-12345"));

CreateAccessPointResult respCreateAP = s3ControlClient.createAccessPoint(reqCreateAP);


System.out.printf("CreateAccessPoint Response: %s%n", respCreateAP.toString());

return respCreateAP.getAccessPointArn();

Obter um ponto de acesso para um bucket do S3 no Outposts


O exemplo do SDK para Java a seguir obtém um ponto de acesso para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void getAccessPoint(String accessPointArn) {

GetAccessPointRequest reqGetAP = new GetAccessPointRequest()


.withAccountId(AccountId)
.withName(accessPointArn);

GetAccessPointResult respGetAP = s3ControlClient.getAccessPoint(reqGetAP);


System.out.printf("GetAccessPoint Response: %s%n", respGetAP.toString());

Versão da API 2006-03-01


1120
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Listar pontos de acesso para um AWS Outpost


O exemplo do SDK para Java a seguir lista os pontos de acesso de um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void listAccessPoints(String bucketArn) {

ListAccessPointsRequest reqListAPs = new ListAccessPointsRequest()


.withAccountId(AccountId)
.withBucket(bucketArn);

ListAccessPointsResult respListAPs = s3ControlClient.listAccessPoints(reqListAPs);


System.out.printf("ListAccessPoints Response: %s%n", respListAPs.toString());

Adicionar uma configuração de ciclo de vida a um bucket do Outposts


O exemplo do SDK para Java a seguir apresenta configurações do ciclo de vida para um bucket do
Outposts em que todos os objetos com o prefixo e as tags sinalizados expiram após dez dias.

import com.amazonaws.services.s3control.model.*;

public void putBucketLifecycleConfiguration(String bucketArn) {

S3Tag tag1 = new S3Tag().withKey("mytagkey1").withValue("mytagvalue1");


S3Tag tag2 = new S3Tag().withKey("mytagkey2").withValue("mytagvalue2");

LifecycleRuleFilter lifecycleRuleFilter = new LifecycleRuleFilter()


.withAnd(new LifecycleRuleAndOperator()
.withPrefix("myprefix")
.withTags(tag1, tag2));

LifecycleExpiration lifecycleExpiration = new LifecycleExpiration()


.withExpiredObjectDeleteMarker(false)
.withDays(1);

LifecycleRule lifecycleRule = new LifecycleRule()


.withStatus("Enabled")
.withFilter(lifecycleRuleFilter)
.withExpiration(lifecycleExpiration)
.withID("id-1");

LifecycleConfiguration lifecycleConfiguration = new LifecycleConfiguration()


.withRules(lifecycleRule);

PutBucketLifecycleConfigurationRequest reqPutBucketLifecycle = new


PutBucketLifecycleConfigurationRequest()
.withAccountId(AccountId)
.withBucket(bucketArn)
.withLifecycleConfiguration(lifecycleConfiguration);

PutBucketLifecycleConfigurationResult respPutBucketLifecycle =
s3ControlClient.putBucketLifecycleConfiguration(reqPutBucketLifecycle);
System.out.printf("PutBucketLifecycleConfiguration Response: %s%n",
respPutBucketLifecycle.toString());

Versão da API 2006-03-01


1121
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Obtenha uma configuração de ciclo de vida de um bucket do S3 no Outposts


O exemplo do SDK para Java a seguir obtém um ponto de acesso para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void getBucketLifecycleConfiguration(String bucketArn) {

GetBucketLifecycleConfigurationRequest reqGetBucketLifecycle = new


GetBucketLifecycleConfigurationRequest()
.withAccountId(AccountId)
.withBucket(bucketArn);

GetBucketLifecycleConfigurationResult respGetBucketLifecycle =
s3ControlClient.getBucketLifecycleConfiguration(reqGetBucketLifecycle);
System.out.printf("GetBucketLifecycleConfiguration Response: %s%n",
respGetBucketLifecycle.toString());

Colocar uma política no bucket do Outposts


O exemplo do SDK para Java a seguir coloca uma política para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void putBucketPolicy(String bucketArn) {

String policy = "{\"Version\":\"2012-10-17\",\"Id\":\"testBucketPolicy\",\"Statement


\":[{\"Sid\":\"st1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"" + AccountId+ "\"},
\"Action\":\"s3-outposts:*\",\"Resource\":\"" + bucketArn + "\"}]}";

PutBucketPolicyRequest reqPutBucketPolicy = new PutBucketPolicyRequest()


.withAccountId(AccountId)
.withBucket(bucketArn)
.withPolicy(policy);

PutBucketPolicyResult respPutBucketPolicy =
s3ControlClient.putBucketPolicy(reqPutBucketPolicy);
System.out.printf("PutBucketPolicy Response: %s%n", respPutBucketPolicy.toString());

Obter uma política para um bucket do S3 no Outposts


O exemplo do SDK para Java a seguir obtém uma política para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void getBucketPolicy(String bucketArn) {

GetBucketPolicyRequest reqGetBucketPolicy = new GetBucketPolicyRequest()


.withAccountId(AccountId)
.withBucket(bucketArn);

GetBucketPolicyResult respGetBucketPolicy =
s3ControlClient.getBucketPolicy(reqGetBucketPolicy);
System.out.printf("GetBucketPolicy Response: %s%n", respGetBucketPolicy.toString());

Versão da API 2006-03-01


1122
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Colocar uma política no ponto de acesso do Outposts


O exemplo do SDK para Java a seguir coloca uma política para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void putAccessPointPolicy(String accessPointArn) {

String policy = "{\"Version\":\"2012-10-17\",\"Id\":\"testAccessPointPolicy\",


\"Statement\":[{\"Sid\":\"st1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"" + AccountId
+ "\"},\"Action\":\"s3-outposts:*\",\"Resource\":\"" + accessPointArn + "\"}]}";

PutAccessPointPolicyRequest reqPutAccessPointPolicy = new PutAccessPointPolicyRequest()


.withAccountId(AccountId)
.withName(accessPointArn)
.withPolicy(policy);

PutAccessPointPolicyResult respPutAccessPointPolicy =
s3ControlClient.putAccessPointPolicy(reqPutAccessPointPolicy);
System.out.printf("PutAccessPointPolicy Response: %s%n",
respPutAccessPointPolicy.toString());
printWriter.printf("PutAccessPointPolicy Response: %s%n",
respPutAccessPointPolicy.toString());

Obter uma política para um ponto de acesso do S3 no Outposts


O exemplo do SDK para Java a seguir obtém uma política para um bucket do Outposts.

import com.amazonaws.services.s3control.model.*;

public void getAccessPointPolicy(String accessPointArn) {

GetAccessPointPolicyRequest reqGetAccessPointPolicy = new GetAccessPointPolicyRequest()


.withAccountId(AccountId)
.withName(accessPointArn);

GetAccessPointPolicyResult respGetAccessPointPolicy =
s3ControlClient.getAccessPointPolicy(reqGetAccessPointPolicy);
System.out.printf("GetAccessPointPolicy Response: %s%n",
respGetAccessPointPolicy.toString());
printWriter.printf("GetAccessPointPolicy Response: %s%n",
respGetAccessPointPolicy.toString());

Criar um endpoint em um Outpost


O exemplo do SDK para Java a seguir cria um endpoint para um Outpost.

import com.amazonaws.services.s3outposts.AmazonS3Outposts;
import com.amazonaws.services.s3outposts.AmazonS3OutpostsClientBuilder;
import com.amazonaws.services.s3outposts.model.CreateEndpointRequest;
import com.amazonaws.services.s3outposts.model.CreateEndpointResult;

public void createEndpoint() {

Versão da API 2006-03-01


1123
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

AmazonS3Outposts s3OutpostsClient = AmazonS3OutpostsClientBuilder


.standard().build();

CreateEndpointRequest createEndpointRequest = new CreateEndpointRequest()


.withOutpostId("op-0d79779cef3c30a40")
.withSubnetId("subnet-8c7a57c5")
.withSecurityGroupId("sg-ab19e0d1");
CreateEndpointResult createEndpointResult =
s3OutpostsClient.createEndpoint(createEndpointRequest);
System.out.println("Endpoint is created and its arn is " +
createEndpointResult.getEndpointArn());
}

Excluir um endpoint em um Outpost


O exemplo do SDK para Java a seguir exclui um endpoint de um Outpost.

import com.amazonaws.arn.Arn;
import com.amazonaws.services.s3outposts.AmazonS3Outposts;
import com.amazonaws.services.s3outposts.AmazonS3OutpostsClientBuilder;
import com.amazonaws.services.s3outposts.model.DeleteEndpointRequest;

public void deleteEndpoint(String endpointArnInput) {


String outpostId = "op-0d79779cef3c30a40";
AmazonS3Outposts s3OutpostsClient = AmazonS3OutpostsClientBuilder
.standard().build();

Arn endpointArn = Arn.fromString(endpointArnInput);


String[] resourceParts = endpointArn.getResource().getResource().split("/");
String endpointId = resourceParts[resourceParts.length - 1];
DeleteEndpointRequest deleteEndpointRequest = new DeleteEndpointRequest()
.withEndpointId(endpointId)
.withOutpostId(outpostId);
s3OutpostsClient.deleteEndpoint(deleteEndpointRequest);
System.out.println("Endpoint with id " + endpointId + " is deleted.");
}

Listar pontos de extremidade para o S3 no Outpost


O exemplo do SDK para Java a seguir lista endpoints para um Outpost.

import com.amazonaws.services.s3outposts.AmazonS3Outposts;
import com.amazonaws.services.s3outposts.AmazonS3OutpostsClientBuilder;
import com.amazonaws.services.s3outposts.model.ListEndpointsRequest;
import com.amazonaws.services.s3outposts.model.ListEndpointsResult;

public void listEndpoints() {


AmazonS3Outposts s3OutpostsClient = AmazonS3OutpostsClientBuilder
.standard().build();

ListEndpointsRequest listEndpointsRequest = new ListEndpointsRequest();


ListEndpointsResult listEndpointsResult =
s3OutpostsClient.listEndpoints(listEndpointsRequest);
System.out.println("List endpoints result is " + listEndpointsResult);
}

Trabalhar com objetos usando o Amazon S3 no Outposts


É possível usar o SDK para Java para colocar e gerenciar objetos do S3 no Outposts. A partir desses
exemplos, você pode colocar objetos e obter objetos de um bucket do Outpost.

Versão da API 2006-03-01


1124
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

Tópicos
• Colocar um objeto em um bucket do S3 no Outposts (p. 1125)
• Obter um bucket do S3 no Outposts (p. 1126)
• Copiar um objeto no S3 no Outposts (p. 1127)
• Excluir um objeto do S3 no Outposts (p. 1128)
• Excluir objetos do S3 no Outposts (p. 1128)
• Listar objetos em um bucket do S3 no Outposts (p. 1129)
• Iniciar um multipart upload de objetos em um bucket do S3 no Outposts (p. 1130)
• Copiar um objeto em um bucket do S3 no Outposts (p. 1132)
• Listar partes de um objeto em um bucket do S3 no Outposts (p. 1133)
• Recuperar uma lista de multipart uploads em andamento em um bucket do S3 no Outposts (p. 1134)
• Abortar um multipart upload de um objeto em um bucket do Amazon S3 no Outposts (p. 1135)
• Usar a operação HeadBucket para um bucket do S3 no Outposts (p. 1136)

Colocar um objeto em um bucket do S3 no Outposts


O exemplo a seguir coloca um objeto do S3 no Outposts usando o SDK para Java. Para obter mais
informações, consulte Fazer upload de objetos (p. 71).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;

import java.io.File;

public class PutObject {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";
String stringObjKeyName = "*** String object key name ***";
String fileObjKeyName = "*** File object key name ***";
String fileName = "*** Path to file to upload ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Upload a text string as a new object.


s3Client.putObject(accessPointArn, stringObjKeyName, "Uploaded String Object");

// Upload a file as a new object with ContentType and title specified.


PutObjectRequest request = new PutObjectRequest(accessPointArn, fileObjKeyName,
new File(fileName));
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("plain/text");
metadata.addUserMetadata("title", "someTitle");
request.setMetadata(metadata);
s3Client.putObject(request);
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();

Versão da API 2006-03-01


1125
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Obter um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir obtém um bucket usando o SDK para Java.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3Object;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class GetObject {


public static void main(String[] args) throws IOException {
String accessPointArn = "*** access point ARN ***";
String key = "*** Object key ***";

S3Object fullObject = null, objectPortion = null, headerOverrideObject = null;


try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Get an object and print its contents.


System.out.println("Downloading an object");
fullObject = s3Client.getObject(new GetObjectRequest(accessPointArn, key));
System.out.println("Content-Type: " +
fullObject.getObjectMetadata().getContentType());
System.out.println("Content: ");
displayTextInputStream(fullObject.getObjectContent());

// Get a range of bytes from an object and print the bytes.


GetObjectRequest rangeObjectRequest = new GetObjectRequest(accessPointArn, key)
.withRange(0, 9);
objectPortion = s3Client.getObject(rangeObjectRequest);
System.out.println("Printing bytes retrieved.");
displayTextInputStream(objectPortion.getObjectContent());

// Get an entire object, overriding the specified response headers, and print
the object's content.
ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides()
.withCacheControl("No-cache")
.withContentDisposition("attachment; filename=example.txt");
GetObjectRequest getObjectRequestHeaderOverride = new
GetObjectRequest(accessPointArn, key)
.withResponseHeaders(headerOverrides);
headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride);
displayTextInputStream(headerOverrideObject.getObjectContent());

Versão da API 2006-03-01


1126
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
} finally {
// To ensure that the network connection doesn't remain open, close any open
input streams.
if (fullObject != null) {
fullObject.close();
}
if (objectPortion != null) {
objectPortion.close();
}
if (headerOverrideObject != null) {
headerOverrideObject.close();
}
}
}

private static void displayTextInputStream(InputStream input) throws IOException {


// Read the text input stream one line at a time and display each line.
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println();
}
}

Copiar um objeto no S3 no Outposts


O exemplo do S3 no Outposts a seguir obtém um bucket usando o SDK para Java.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;

public class CopyObject {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";
String sourceKey = "*** Source object key ***";
String destinationKey = "*** Destination object key ***";

try {
// This code expects that you have AWS credentials set up per:// https://
docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Copy the object into a new object in the same bucket.


CopyObjectRequest copyObjectRequest = new CopyObjectRequest(accessPointArn,
sourceKey, accessPointArn, destinationKey);
s3Client.copyObject(copyObjectRequest);
} catch (AmazonServiceException e) {

Versão da API 2006-03-01


1127
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

// The call was transmitted successfully, but Amazon S3 couldn't process


// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Excluir um objeto do S3 no Outposts


O exemplo do S3 no Outposts a seguir exclui um objeto usando o SDK para Java.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectRequest;

public class DeleteObject {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";
String keyName = "*** Key name ****";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

s3Client.deleteObject(new DeleteObjectRequest(accessPointArn, keyName));


} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Excluir objetos do S3 no Outposts


O exemplo do S3 no Outposts a seguir exclui objetos usando o SDK para Java.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
import com.amazonaws.services.s3.model.DeleteObjectsResult;

import java.util.ArrayList;

Versão da API 2006-03-01


1128
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

public class DeleteObjects {

public static void main(String[] args) {


// String accessPointArn = "*** access point ARN ***";
String accessPointArn = "arn:aws:s3-outposts:us-east-1:785856369849:outpost/ec2/
accesspoint/mig-test-60";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Upload three sample objects.


ArrayList<KeyVersion> keys = new ArrayList<KeyVersion#();
for (int i = 0; i < 3; i++) {
String keyName = "delete object example " + i;
s3Client.putObject(accessPointArn, keyName, "Object number " + i + " to be
deleted.");
keys.add(new KeyVersion(keyName));
}
System.out.println(keys.size() + " objects successfully created.");

// Delete the sample objects.


DeleteObjectsRequest multiObjectDeleteRequest = new
DeleteObjectsRequest(accessPointArn)
.withKeys(keys)
.withQuiet(false);

// Verify that the objects were deleted successfully.


DeleteObjectsResult delObjRes =
s3Client.deleteObjects(multiObjectDeleteRequest);
int successfulDeletes = delObjRes.getDeletedObjects().size();
System.out.println(successfulDeletes + " objects successfully deleted.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Listar objetos em um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir lista objetos usando o SDK para Java no bucket do Outposts.
Important

Esta seção descreve a revisão mais recente da API. Recomendamos que você use essa API
revisada para o desenvolvimento de aplicações. Para compatibilidade com versões anteriores, o
Amazon S3 continua a oferecer suporte à versão anterior desta API, ListObjects.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsV2Request;

Versão da API 2006-03-01


1129
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

import com.amazonaws.services.s3.model.ListObjectsV2Result;
import com.amazonaws.services.s3.model.S3ObjectSummary;

public class ListObjectsV2 {

public static void main(String[] args) {


String accessPointArn = "*** access point ARN ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

System.out.println("Listing objects");

// maxKeys is set to 2 to demonstrate the use of


// ListObjectsV2Result.getNextContinuationToken()
ListObjectsV2Request req = new
ListObjectsV2Request().withBucketName(accessPointArn).withMaxKeys(2);
ListObjectsV2Result result;

do {
result = s3Client.listObjectsV2(req);

for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {


System.out.printf(" - %s (size: %d)\n", objectSummary.getKey(),
objectSummary.getSize());
}
// If there are more than maxKeys keys in the bucket, get a continuation
token
// and list the next objects.
String token = result.getNextContinuationToken();
System.out.println("Next Continuation Token: " + token);
req.setContinuationToken(token);
} while (result.isTruncated());
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Iniciar um multipart upload de objetos em um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir inicia, carrega e conclui um multipart upload usando o SDK para
Java no bucket do Outposts. Para obter mais informações, consulte Fazer upload de um objeto usando
multipart upload (p. 86).
Important

Esta seção descreve a revisão mais recente da API. Recomendamos que você use essa API
revisada para o desenvolvimento de aplicações. Para compatibilidade com versões anteriores, o
Amazon S3 continua a oferecer suporte à versão anterior desta API, ListObjects.

import com.amazonaws.AmazonServiceException;

Versão da API 2006-03-01


1130
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.ArrayList;
import java.util.List;

public class MultipartUploadCopy {


public static void main(String[] args) {
String accessPointArn = "*** Source access point ARN ***";
String sourceObjectKey = "*** Source object key ***";
String destObjectKey = "*** Target object key ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Initiate the multipart upload.


InitiateMultipartUploadRequest initRequest = new
InitiateMultipartUploadRequest(accessPointArn, destObjectKey);
InitiateMultipartUploadResult initResult =
s3Client.initiateMultipartUpload(initRequest);

// Get the object size to track the end of the copy operation.
GetObjectMetadataRequest metadataRequest = new
GetObjectMetadataRequest(accessPointArn, sourceObjectKey);
ObjectMetadata metadataResult = s3Client.getObjectMetadata(metadataRequest);
long objectSize = metadataResult.getContentLength();

// Copy the object using 5 MB parts.


long partSize = 5 * 1024 * 1024;
long bytePosition = 0;
int partNum = 1;
List<CopyPartResult> copyResponses = new ArrayList<CopyPartResult>();
while (bytePosition < objectSize) {
// The last part might be smaller than partSize, so check to make sure
// that lastByte isn't beyond the end of the object.
long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

// Copy this part.


CopyPartRequest copyRequest = new CopyPartRequest()
.withSourceBucketName(accessPointArn)
.withSourceKey(sourceObjectKey)
.withDestinationBucketName(accessPointArn)
.withDestinationKey(destObjectKey)
.withUploadId(initResult.getUploadId())
.withFirstByte(bytePosition)
.withLastByte(lastByte)
.withPartNumber(partNum++);
copyResponses.add(s3Client.copyPart(copyRequest));
bytePosition += partSize;
}

// Complete the upload request to concatenate all uploaded parts and make the
copied object available.
CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest(
accessPointArn,
destObjectKey,
initResult.getUploadId(),
getETags(copyResponses));

Versão da API 2006-03-01


1131
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

s3Client.completeMultipartUpload(completeRequest);
System.out.println("Multipart copy complete.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

// This is a helper function to construct a list of ETags.


private static List<PartETag> getETags(List<CopyPartResult> responses) {
List<PartETag> etags = new ArrayList<PartETag>();
for (CopyPartResult response : responses) {
etags.add(new PartETag(response.getPartNumber(), response.getETag()));
}
return etags;
}

Copiar um objeto em um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir copia um objeto usando o SDK para Java do bucket do Outposts.
Este é um exemplo adaptado do Copiar um objeto usando multipart upload (p. 110).

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.ArrayList;
import java.util.List;

public class MultipartUploadCopy {


public static void main(String[] args) {
String accessPointArn = "*** Source access point ARN ***";
String sourceObjectKey = "*** Source object key ***";
String destObjectKey = "*** Target object key ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Initiate the multipart upload.


InitiateMultipartUploadRequest initRequest = new
InitiateMultipartUploadRequest(accessPointArn, destObjectKey);
InitiateMultipartUploadResult initResult =
s3Client.initiateMultipartUpload(initRequest);

// Get the object size to track the end of the copy operation.
GetObjectMetadataRequest metadataRequest = new
GetObjectMetadataRequest(accessPointArn, sourceObjectKey);
ObjectMetadata metadataResult = s3Client.getObjectMetadata(metadataRequest);
long objectSize = metadataResult.getContentLength();

// Copy the object using 5 MB parts.

Versão da API 2006-03-01


1132
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

long partSize = 5 * 1024 * 1024;


long bytePosition = 0;
int partNum = 1;
List<CopyPartResult> copyResponses = new ArrayList<CopyPartResult>();
while (bytePosition < objectSize) {
// The last part might be smaller than partSize, so check to make sure
// that lastByte isn't beyond the end of the object.
long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

// Copy this part.


CopyPartRequest copyRequest = new CopyPartRequest()
.withSourceBucketName(accessPointArn)
.withSourceKey(sourceObjectKey)
.withDestinationBucketName(accessPointArn)
.withDestinationKey(destObjectKey)
.withUploadId(initResult.getUploadId())
.withFirstByte(bytePosition)
.withLastByte(lastByte)
.withPartNumber(partNum++);
copyResponses.add(s3Client.copyPart(copyRequest));
bytePosition += partSize;
}

// Complete the upload request to concatenate all uploaded parts and make the
copied object available.
CompleteMultipartUploadRequest completeRequest = new
CompleteMultipartUploadRequest(
accessPointArn,
destObjectKey,
initResult.getUploadId(),
getETags(copyResponses));
s3Client.completeMultipartUpload(completeRequest);
System.out.println("Multipart copy complete.");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}

// This is a helper function to construct a list of ETags.


private static List<PartETag> getETags(List<CopyPartResult> responses) {
List<PartETag> etags = new ArrayList<PartETag>();
for (CopyPartResult response : responses) {
etags.add(new PartETag(response.getPartNumber(), response.getETag()));
}
return etags;
}
}

Listar partes de um objeto em um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir lista as partes de um objeto usando o SDK para Java no bucket do
Outposts.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;

Versão da API 2006-03-01


1133
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.List;

public class ListParts {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";
String keyName = "*** Key name ***";
String uploadId = "*** Upload ID ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

ListPartsRequest listPartsRequest = new ListPartsRequest(accessPointArn,


keyName, uploadId);
PartListing partListing = s3Client.listParts(listPartsRequest);
List<PartSummary> partSummaries = partListing.getParts();

System.out.println(partSummaries.size() + " multipart upload parts");


for (PartSummary p : partSummaries) {
System.out.println("Upload part: Part number = \"" + p.getPartNumber() +
"\", ETag = " + p.getETag());
}

} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Recuperar uma lista de multipart uploads em andamento em um bucket do S3 no


Outposts
O exemplo do S3 no Outposts a seguir mostra como recuperar uma lista de multipart uploads em
andamento usando o SDK para Java em um bucket do Outposts. Este é um exemplo adaptado do Listar
multipart uploads (p. 102) para o Amazon S3.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
import com.amazonaws.services.s3.model.MultipartUpload;
import com.amazonaws.services.s3.model.MultipartUploadListing;

import java.util.List;

public class ListMultipartUploads {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";

Versão da API 2006-03-01


1134
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

// Retrieve a list of all in-progress multipart uploads.


ListMultipartUploadsRequest allMultipartUploadsRequest = new
ListMultipartUploadsRequest(accessPointArn);
MultipartUploadListing multipartUploadListing =
s3Client.listMultipartUploads(allMultipartUploadsRequest);
List<MultipartUpload> uploads = multipartUploadListing.getMultipartUploads();

// Display information about all in-progress multipart uploads.


System.out.println(uploads.size() + " multipart upload(s) in progress.");
for (MultipartUpload u : uploads) {
System.out.println("Upload in progress: Key = \"" + u.getKey() + "\", id =
" + u.getUploadId());
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Abortar um multipart upload de um objeto em um bucket do Amazon S3 no


Outposts
O exemplo do S3 no Outposts a seguir mostra como abortar o multipart upload de um objeto usando o
SDK para Java em um bucket do Outposts. Este é um exemplo adaptado do exemplo Abortar um multipart
upload (p. 106) do Amazon S3.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
import com.amazonaws.services.s3.model.MultipartUpload;
import com.amazonaws.services.s3.model.MultipartUploadListing;

import java.util.List;

public class ListMultipartUploads {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

Versão da API 2006-03-01


1135
Amazon Simple Storage Service Guia do usuário
Usar o SDK para Java

// Retrieve a list of all in-progress multipart uploads.


ListMultipartUploadsRequest allMultipartUploadsRequest = new
ListMultipartUploadsRequest(accessPointArn);
MultipartUploadListing multipartUploadListing =
s3Client.listMultipartUploads(allMultipartUploadsRequest);
List<MultipartUpload> uploads = multipartUploadListing.getMultipartUploads();

// Display information about all in-progress multipart uploads.


System.out.println(uploads.size() + " multipart upload(s) in progress.");
for (MultipartUpload u : uploads) {
System.out.println("Upload in progress: Key = \"" + u.getKey() + "\", id =
" + u.getUploadId());
}
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Usar a operação HeadBucket para um bucket do S3 no Outposts


O exemplo do S3 no Outposts a seguir mostra como determinar se existe um bucket e se você tem
permissão para acessá-lo.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.HeadBucketRequest;

public class HeadBucket {


public static void main(String[] args) {
String accessPointArn = "*** access point ARN ***";

try {
// This code expects that you have AWS credentials set up per:
// https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-
credentials.html
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.enableUseArnRegion()
.build();

s3Client.headBucket(new HeadBucketRequest(accessPointArn));
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

Versão da API 2006-03-01


1136
Amazon Simple Storage Service Guia do usuário
Solução de problemas do Amazon S3 por sintoma

Solução de problemas
Esta seção descreve como solucionar problemas do Amazon S3 e explica como obter os IDs de solicitação
necessários quando você entrar em contato com o AWS Support.

Tópicos
• Solução de problemas do Amazon S3 por sintoma (p. 1137)
• Como obter os IDs da solicitação do Amazon S3 para o AWS Support (p. 1138)
• Tópicos relacionados (p. 1141)

Para obter outros tópicos de como solucionar problemas e obter suporte, consulte o seguinte:

• Solução de problemas do CORS (p. 469)


• Tratar erros de REST e SOAP (p. 1052)
• Documentação do AWS Support

Para obter informações de como solucionar problemas relacionados a ferramentas de terceiros, consulte
Como obter os IDs de solicitação do Amazon S3 nos Fóruns do desenvolvedor da AWS.

Solução de problemas do Amazon S3 por sintoma


Os tópicos a seguir listam os sintomas para ajudar a solucionar alguns dos problemas que você pode
encontrar ao trabalhar com o Amazon S3.

Sintomas
• Aumentos significativos em respostas HTTP 503 para solicitações do Amazon S3 para buckets com o
versionamento habilitado (p. 1137)
• Comportamento inesperado ao acessar buckets definidos com CORS (p. 1138)

Aumentos significativos em respostas HTTP 503


para solicitações do Amazon S3 para buckets com o
versionamento habilitado
Se você perceber um aumento significativo do número de respostas HTTP 503 recebidas com lentidão do
Amazon S3 de solicitações PUT ou DELETE de objetos a um bucket que tenha versionamento habilitado,
talvez tenha um ou mais objetos no bucket para os quais há milhões de versões. Quando você tem objetos
com milhões de versões, o Amazon S3 limita automaticamente as solicitações ao bucket para proteger o
cliente de uma quantidade excessiva de tráfego de solicitação, o que pode potencialmente impedir outras
solicitações feitas ao mesmo bucket.

Para determinar quais objetos do S3 têm milhões de versões, use a ferramenta de inventário do Amazon
S3. A ferramenta de inventário gera um relatório que fornece uma lista de arquivos simples dos objetos em
um bucket. Para obter mais informações, consulte Inventário do Amazon S3 (p. 605).

A equipe do Amazon S3 incentiva os clientes a investigarem aplicações que sobrescrevem repetidamente


o mesmo objeto do S3, criando potencialmente milhões de versões desse objeto, para determinar se

Versão da API 2006-03-01


1137
Amazon Simple Storage Service Guia do usuário
Comportamento inesperado ao
acessar buckets definidos com CORS

a aplicação está funcionando conforme o esperado. Se você tiver um caso de uso que exija milhões
de versões para um ou mais objetos do S3, entre em contato com a equipe do AWS Support em AWS
Support para discutir seu caso de uso, para que possamos ajudá-lo a determinar a solução ideal para o
cenário do seu caso de uso.

Para ajudar a evitar esse problema, considere as seguintes práticas recomendadas:

• Habilite uma política de expiração “NonCurrentVersion” de gerenciamento do ciclo de vida e uma política
“ExpiredObjectDeleteMarker” para expirar as versões anteriores de objetos e marcadores de exclusão
sem objetos de dados associados no bucket.
• Mantenha sua estrutura de diretórios o mais plana possível e torne cada nome de diretório exclusivo.

Comportamento inesperado ao acessar buckets


definidos com CORS
Se você encontrar comportamento inesperado ao acessar buckets definidos com o compartilhamento de
recurso entre origens (CORS), consulte Solução de problemas do CORS (p. 469).

Como obter os IDs da solicitação do Amazon S3


para o AWS Support
Sempre que você precisar entrar em contato com o AWS Support devido a erros ou comportamento
inesperado no Amazon S3, você precisará obter os IDs das solicitações associadas à ação com falha.
A obtenção desses IDs permite que o AWS Support ajude você a resolver os problemas que está
enfrentando. Os IDs da solicitação são fornecidos em pares, são retornados em cada resposta que o
Amazon S3 processa (mesmo errôneas) e podem ser acessados por meio de logs detalhados. Há vários
métodos comuns para obter os IDs das solicitações incluindo logs de acesso do S3 e eventos/eventos de
dados do CloudTrail.

Depois de recuperar esses logs, copie e mantenha esses dois valores, pois você precisará deles ao entrar
em contato com o AWS Support. Para obter informações sobre o AWS Support, consulte Entre em contato
conosco.

Tópicos
• Usar o HTTP para obter IDs de solicitação (p. 1138)
• Usar um navegador da web para obter IDs de solicitação (p. 1139)
• Usar os AWS SDKs para obter IDs de solicitação (p. 1139)
• Como usar a AWS CLI para obter IDs de solicitação (p. 1141)

Usar o HTTP para obter IDs de solicitação


Você pode obter os IDs da solicitação, x-amz-request-id e x-amz-id-2, registrando os bits de uma
solicitação HTTP antes que ela chegue ao aplicativo de destino. Há várias ferramentas de terceiros que
podem ser usadas para recuperar logs detalhados de solicitações HTTP. Escolha uma de sua confiança
e execute-a, ouvindo na porta em que o tráfego do Amazon S3 viaja ao enviar outra solicitação HTTP do
Amazon S3.

Para solicitações HTTP, o par de IDs da solicitação será parecido com os exemplos a seguir.

x-amz-request-id: 79104EXAMPLEB723

Versão da API 2006-03-01


1138
Amazon Simple Storage Service Guia do usuário
Usar um navegador da web para obter IDs de solicitação

x-amz-id-2: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km

Note

As solicitações HTTP estão criptografadas e ocultas na maioria das capturas de pacotes.

Usar um navegador da web para obter IDs de


solicitação
A maioria dos navegadores da web têm ferramentas de desenvolvedor que permitem que você visualize os
cabeçalhos das solicitações.

Para solicitações baseadas em navegador da web que retornam um erro, o par de IDs de solicitações será
parecido com os exemplos a seguir.

<Error><Code>AccessDenied</Code><Message>Access Denied</Message>
<RequestId>79104EXAMPLEB723</RequestId><HostId>IOWQ4fDEXAMPLEQM
+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km</HostId></Error>

Para obter o par de IDs de solicitações bem-sucedidas, você precisa usar as ferramentas de
desenvolvedor para ver os cabeçalhos das respostas HTTP. Para obter informações sobre as ferramentas
de desenvolvedor para navegadores específicos, consulte Solução de problemas do Amazon S3 - como
recuperar os IDs de solicitações do S3 nos Fóruns do desenvolvedor da AWS.

Usar os AWS SDKs para obter IDs de solicitação


As seções a seguir incluem informações para configuração do log usando o AWS SDK. Embora seja
possível habilitar log detalhado em cada solicitação e resposta, você não deve habilitar o log em sistemas
de produção uma vez que solicitações/respostas grandes podem provocar lentidão significativa em um
aplicativo.

Para solicitações do AWS SDK, o par de IDs da solicitação será parecido com os exemplos a seguir.

Status Code: 403, AWS Service: Amazon S3, AWS Request ID: 79104EXAMPLEB723
AWS Error Code: AccessDenied AWS Error Message: Access Denied
S3 Extended Request ID: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km

Usar o SDK para PHP para obter IDs de solicitação


Você pode configurar o log usando o PHP. Para obter mais informações, consulte Como posso ver quais
dados são enviados pela rede? nas Perguntas frequentes sobre o AWS SDK para PHP.

Usar o SDK para Java para obter IDs de solicitação


Você pode habilitar o log para solicitações ou respostas específicas, para permitir a
captura e o retorno apenas de cabeçalhos relevantes. Para fazer isso, importe a classe
com.amazonaws.services.s3.S3ResponseMetadata. Mais tarde, você pode
armazenar a solicitação em uma variável antes de executar a solicitação real. Chame
getCachedResponseMetadata(AmazonWebServiceRequest request).getRequestID() para
obter a solicitação ou a resposta registrada em log.

Example

PutObjectRequest req = new PutObjectRequest(bucketName, key, createSampleFile());

Versão da API 2006-03-01


1139
Amazon Simple Storage Service Guia do usuário
Usar os AWS SDKs para obter IDs de solicitação

s3.putObject(req);
S3ResponseMetadata md = s3.getCachedResponseMetadata(req);
System.out.println("Host ID: " + md.getHostId() + " RequestID: " + md.getRequestId());

Como alternativa, você pode usar log detalhado de cada solicitação e resposta de Java. Para obter mais
informações, consulte Registro em log detalhado no tópico Registro de AWS SDK para Chamadas de Java
no Guia do desenvolvedor para o AWS SDK para Java.

Usar o AWS SDK para .NET para obter IDs de solicitação


Você pode configurar o registro em log no AWS SDK para .NET usando a ferramenta incorporada de
registro em log System.Diagnostics. Para obter mais informações, consulte a postagem Registrar em
log com o AWS SDK para .NET no blog do desenvolvedor da AWS.
Note

Por padrão, o log retornado contém somente informações de erros. O arquivo de configuração
precisa ter AWSLogMetrics (e, opcionalmente, AWSResponseLogging) adicionado para obter
os IDs de solicitação.

Usar o SDK para Python (Boto3) para obter IDs de solicitação


Com o SDK para Python (Boto3), é possível registrar em log respostas específicas, o que permite capturar
apenas os cabeçalhos relevantes. O código a seguir mostra como registrar em log partes da resposta para
um arquivo:

import logging
import boto3
logging.basicConfig(filename='logfile.txt', level=logging.INFO)
logger = logging.getLogger(__name__)
s3 = boto3.resource('s3')
response = s3.Bucket(bucket_name).Object(object_key).put()
logger.info("HTTPStatusCode: %s", response['ResponseMetadata']['HTTPStatusCode'])
logger.info("RequestId: %s", response['ResponseMetadata']['RequestId'])
logger.info("HostId: %s", response['ResponseMetadata']['HostId'])
logger.info("Date: %s", response['ResponseMetadata']['HTTPHeaders']['date'])

Também é possível capturar exceções e registrar em log informações relevantes quando uma exceção
é gerada. Para obter detalhes, consulte Discernir informações úteis de respostas de erro no Guia do
desenvolvedor do Boto3.

Além disso, é possível configurar o Boto3 para gerar logs de depuração detalhados usando o seguinte
código:

import boto3
boto3.set_stream_logger('', logging.DEBUG)

Para obter mais informações, consulte set_stream_logger na Referência do Boto3.

Usar o SDK para Ruby para obter IDs de solicitação


Você pode obter os IDs de solicitação usando o SDK para Ruby - versão 1, 2 ou 3.

• Como usar o SDK para Ruby - versão 1 – você pode habilitar o log da conexão HTTP globalmente com a
linha de código a seguir.

s3 = AWS::S3.new(:logger => Logger.new($stdout), :http_wire_trace => true)

Versão da API 2006-03-01


1140
Amazon Simple Storage Service Guia do usuário
Como usar a AWS CLI para obter IDs de solicitação

• Como usar o SDK para Ruby - versão 2 ou 3 – Você pode habilitar o log da conexão HTTP globalmente
com a linha de código a seguir.

s3 = Aws::S3::Client.new(:logger => Logger.new($stdout), :http_wire_trace => true)

Como usar a AWS CLI para obter IDs de solicitação


Você pode obter os IDs de solicitação na AWS CLI adicionando --debug ao comando.

Tópicos relacionados
Para obter outros tópicos de como solucionar problemas e obter suporte, consulte o seguinte:

• Solução de problemas do CORS (p. 469)


• Tratar erros de REST e SOAP (p. 1052)
• Documentação do AWS Support

Para obter informações de como solucionar problemas relacionados a ferramentas de terceiros, consulte
Como obter os IDs de solicitação do Amazon S3 nos Fóruns do desenvolvedor da AWS.

Versão da API 2006-03-01


1141
Amazon Simple Storage Service Guia do usuário

Histórico do documento
• Versão atual da API: 2006-03-01

A tabela a seguir descreve as alterações importantes em cada versão da Referência da API do Amazon
Simple Storage Service e do Guia do usuário do Amazon S3. Para receber notificações sobre atualizações
dessa documentação, você pode se inscrever em um feed RSS.

update-history-change update-history-description update-history-date

Aumento do suporte ao O S3 no Outposts agora suporta 29 de abril de 2021


endpoint do Amazon S3 no até 100 endpoints por Outpost.
Outposts (p. 1142) Para obter mais informações,
consulte Restrições de rede do
S3 no Outposts.

Como receber notificações Você pode usar o CloudWatch 19 de abril de 2021


de eventos do Amazon S3 no Events para criar uma regra
Outposts usando o Amazon para capturar qualquer evento
CloudWatch Events (p. 1142) da API do S3 no Outposts e ser
notificado por meio de todos
os destinos compatíveis do
CloudWatch. Para obter mais
informações, consulte Como
receber notificações de eventos
do S3 no Outposts usando o
CloudWatch Events.

S3 Object Lambda (p. 1142) Com o S3 Object Lambda, você 18 de março de 2021
pode adicionar seu próprio
código às solicitações GET
do Amazon S3 para modificar
e processar dados, conforme
eles são retornados para uma
aplicação. Você pode usar
o código personalizado para
modificar os dados retornados
por solicitações S3 GET padrão
para filtrar linhas, redimensionar
imagens dinamicamente, editar
dados confidenciais e muito mais.
Para obter mais informações,
consulte Transformar objetos.

AWS PrivateLink (p. 1142) Com o AWS PrivateLink para 2 de fevereiro de 2021
Amazon S3, você pode se
conectar diretamente ao S3
usando um endpoint de interface
em sua VPC em vez de se
conectar pela Internet. Os
endpoints de interface são
diretamente acessíveis a partir
de aplicativos que estão no
local ou em uma região da

Versão da API 2006-03-01


1142
Amazon Simple Storage Service Guia do usuário

AWS diferente. Para obter mais


informações, consulte AWS
PrivateLink for Amazon S3.

Como gerenciar a capacidade do Os eventos de gerenciamento do 21 de dezembro de 2020


Amazon S3 no Outposts com o S3 no Outposts estão disponíveis
AWS CloudTrail (p. 1142) por meio dos logs do CloudTrail.
Para obter mais informações,
consulte Como gerenciar a
capacidade do S3 no Outposts
com o CloudTrail.

Forte consistência (p. 1142) O Amazon S3 oferece uma forte 1º de dezembro de 2020
consistência de leitura após
gravação para PUTs e exclusões
de objetos no bucket do Amazon
S3 em todas as regiões da AWS.
Além disso, as operações de
leitura no Amazon S3 Select,
Listas de controle de acesso
do Amazon S3, Tags de objeto
do Amazon S3 e metadados
de objeto (por exemplo, objeto
HEAD) são muito consistentes.
Para obter mais informações,
consulte Modelo de consistência
de dados do Amazon S3.

Sincronização de modificação de A sincronização de modificação 1º de dezembro de 2020


réplica do Amazon S3 (p. 1142) de réplica do Amazon S3
mantém metadados de objeto,
como tags, ACLs e configurações
de bloqueio de objetos em
sincronia entre objetos de origem
e réplicas. Quando esse recurso
está habilitado, o Amazon
S3 replica as alterações de
metadados feitas no objeto de
origem ou nas cópias da réplica.
Para obter mais informações,
consulte Replicar alterações de
metadados com sincronização de
modificação de réplica.

Versão da API 2006-03-01


1143
Amazon Simple Storage Service Guia do usuário

Amazon S3 Bucket As chaves de bucket do 1º de dezembro de 2020


Keys (p. 1142) Amazon S3 reduzem o custo da
criptografia do lado do servidor
do Amazon S3 usando o AWS
Key Management Service (SSE-
KMS). Essa nova chave no nível
de bucket para criptografia no
lado do servidor pode reduzir os
custos de solicitações do AWS
KMS em até 99%, diminuindo
o tráfego de solicitações do
Amazon S3 para o AWS KMS.
Para obter mais informações,
consulte Reduzir o custo do SSE-
KMS usando chaves de bucket
do S3.

Amazon S3 Storage O Amazon S3 Storage Lens 18 de novembro de 2020


Lens (p. 1142) agrega suas métricas de uso e
atividade e exibe as informações
em um painel interativo no
console do Amazon S3 ou
por meio de uma exportação
de dados de métricas que
pode ser obtida por download
no formato CSV ou Parquet.
Você pode usar o painel para
visualizar insights e tendências,
sinalizar discrepâncias e fornecer
recomendações para otimizar
os custos de armazenamento e
aplicar as práticas recomendadas
de proteção de dados. É possível
usar o S3 Storage Lens por meio
do Console de Gerenciamento
da AWS, da CLI da AWS, dos
AWS SDKs ou da API REST.
Para obter mais informações,
consulte Avaliar a atividade e o
uso do armazenamento com o S3
Storage Lens.

Rastrear solicitações do S3 O Amazon S3 se integra ao X- 16 de novembro de 2020


usando o AWS X-Ray (p. 1142) Ray para obter uma cadeia de
solicitações que se integra ao X-
Ray para propagar o contexto
de rastreamento e fornecer uma
cadeia de solicitações com nós
upstream e downstream. Para
obter mais informações, consulte
Rastrear solicitações usando o X-
Ray.

Versão da API 2006-03-01


1144
Amazon Simple Storage Service Guia do usuário

Métricas de replicação do As métricas de replicação do S3 9 de novembro de 2020


S3 (p. 1142) são detalhadas e se destinam
às regras de replicação na
configuração de replicação.
Para obter mais informações,
consulte Métricas de replicação
e notificações de eventos do
Amazon S3.

Acesso ao arquivamento por O acesso ao arquivamento por 9 de novembro de 2020


camadas inteligentes do S3 camadas inteligentes e o acesso
e acesso a arquivamento ao arquivamento profundo do S3
profundo (p. 1142) são camadas de armazenamento
adicionais sob as camadas
inteligentes do S3. Para obter
mais informações, consulte
Classe de armazenamento para
otimizar automaticamente objetos
acessados com frequência e
pouca frequência.

Replicação de marcadores de Com a replicação de marcadores 9 de novembro de 2020


exclusão (p. 1142) de exclusão, você pode
garantir que os marcadores
de exclusão sejam copiados
para seus buckets de destino
para suas regras de replicação.
Para obter mais informações,
consulte Usando replicação de
marcadores de exclusão.

Propriedade de objetos do Propriedade de objetos é uma 2 de outubro de 2020


S3 (p. 1142) configuração de bucket do
S3 que pode ser usada para
controlar a propriedade de novos
objetos que são carregados
nos buckets. Para obter mais
informações, consulte Usar o S3
Object Ownership.

Amazon S3 on Com o Amazon S3 no Outposts, 30 de setembro de 2020


Outposts (p. 1142) é possível criar buckets do
S3 no AWS Outposts, além
de armazenar e recuperar
facilmente objetos no local para
aplicações que exigem acesso
a dados locais, processamento
de dados local e residência de
dados. É possível usar o S3 no
Outposts por meio do Console
de Gerenciamento da AWS, da
CLI da AWS, dos AWS SDKs ou
da API REST. Para obter mais
informações, consulte Usar o
Amazon S3 no Outposts.

Versão da API 2006-03-01


1145
Amazon Simple Storage Service Guia do usuário

Condição do proprietário do É possível usar a condição de 11 de setembro de 2020


bucket (p. 1142) proprietário do bucket do Amazon
S3 para garantir que os buckets
usados nas operações do S3
pertençam às contas da AWS
esperadas. Para obter mais
informações, consulte Condição
do proprietário do bucket.

Suporte a operações em lote do Agora você pode usar operações 4 de maio de 2020
S3 para retenção de bloqueio de em lote com bloqueio de objeto
objetos (p. 1142) do S3 para aplicar configurações
de retenção a muitos objetos do
Amazon S3 de uma só vez. Para
obter mais informações, consulte
Definir datas de retenção do S3
Object Lock com o S3 Batch
Operations.

Suporte a operações em lote Agora você pode usar operações 4 de maio de 2020
do S3 para retenção legal de em lote com bloqueio de objeto
bloqueio de objetos (p. 1142) do S3 para adicionar retenção
legal a muitos objetos do Amazon
S3 de uma só vez. Para obter
mais informações, consulte Usar
o S3 Batch Operations para
definir o S3 Object Lock Legal
Hold.

Tags de trabalho para operações Você pode adicionar tags aos 16 de março de 2020
em lote do S3 (p. 1142) trabalhos de operações em lote
do S3 para controlar e rotular
esses trabalhos. Para obter mais
informações, consulte Tags
para trabalhos do S3 Batch
Operations.

Pontos de acesso do Amazon Os pontos de acesso do Amazon 2 de dezembro de 2019


S3 (p. 1142) S3 simplificam o gerenciamento
do acesso a dados em escala
para conjuntos de dados
compartilhados no S3. Os
pontos de acesso são nomeados
endpoints de rede anexados a
buckets que podem ser usados
para executar operações de
objeto do S3. Para obter mais
informações, consulte Como
gerenciar o acesso a dados com
pontos de acesso do Amazon S3.

Versão da API 2006-03-01


1146
Amazon Simple Storage Service Guia do usuário

Analisador de acesso para O Analisador de acesso para o 2 de dezembro de 2019


Amazon S3 (p. 1142) Amazon S3 alerta sobre buckets
do S3 configurados para permitir
o acesso a qualquer pessoa na
Internet ou a outras contas da
AWS, incluindo contas fora da
organização. Para obter mais
informações, consulte Usar o
Access Analyzer para Amazon
S3.

Controle do tempo de replicação O recurso Controle do tempo 20 de novembro de 2019


do S3 (S3 RTC) (p. 1142) de replicação do S3 (S3 RTC)
replica a maioria dos objetos que
você carrega para o Amazon S3
em segundos, bem como 99,99%
desses objetos em 15 minutos.
Para obter mais informações,
consulte Replicar objetos usando
o S3 Replication Time Control
(S3 RTC).

Replicação para a mesma A replicação para a mesma 18 de setembro de 2019


região (p. 1142) região (SRR) é usada para copiar
objetos entre buckets do Amazon
S3 na mesma região da AWS.
Para obter informações sobre
as replicações entre regiões e
para a mesma região, consulte
Replicação.

Suporte da replicação entre A replicação entre regiões agora 28 de maio de 2019


regiões ao bloqueio de objetos oferece suporte ao bloqueio
do S3 (p. 1142) de objetos. Para obter mais
informações, consulte O que faz
o Amazon S3 Replicate?.

Operações em lote do Usando o recurso Operações em 30 de abril de 2019


S3 (p. 1142) lote do S3, você pode executar
operações em lote de grande
escala em objetos do Amazon
S3. O recurso Operações em
lote do S3 pode executar uma
única operação em listas de
objetos que você especificar.
Uma única tarefa pode realizar
a operação especificada em
bilhões de objetos contendo
exabytes de dados. Para obter
mais informações, consulte
Executar o S3 Batch Operations.

Versão da API 2006-03-01


1147
Amazon Simple Storage Service Guia do usuário

Região Ásia-Pacífico (Hong Agora o Amazon S3 está 24 de abril de 2019


Kong) (p. 1142) disponível na região Ásia-
Pacífico (Hong Kong). Para obter
mais informações sobre regiões
e endpoints do Amazon S3,
consulte Regiões e endpoints na
Referência geral da AWS.

Adição de um novo campo O Amazon S3 adicionou o 28 de março de 2019


aos logs de acesso ao seguinte campo aos logs de
servidor (p. 1142) acesso ao servidor: Transport
Layer Security (TLS) version
(Versão do Transport Layer
Security [TLS]). Para obter mais
informações, consulte Formato
do log de acesso ao servidor .

Nova classe de armazenamento Agora o Amazon S3 oferece uma 27 de março de 2019


de arquivos (p. 1142) nova classe de armazenamento
de arquivos, DEEP_ARCHIVE,
para armazenar objetos
raramente acessados. Para
obter mais informações, consulte
Classes de armazenamento

Adição de novos campos O Amazon S3 adicionou os 5 de março de 2019


aos logs de acesso ao seguintes novos campos aos
servidor (p. 1142) logs de acesso ao servidor: Host
Id (ID do host), Signature Version
(Versão do Signature), Cipher
Suite (Pacote de criptografia),
Authentication Type (Tipo de
autenticação) e Host Header
(Cabeçalho de host). Para obter
mais informações, consulte
Formato do log de acesso ao
servidor .

Suporte para arquivos de O Amazon S3 agora dá suporte 4 de dezembro de 2018


inventário do Amazon S3 no ao formato Apache Parquet
formato Parquet (p. 1142) (Parquet) além dos formatos
de arquivo Apache optimized
row columnar (ORC) e Comma-
Separated Values (CSV –
Valores separados por vírgulas)
para arquivos de saída de
inventário. Para obter mais
informações, consulte Inventário.

Bloqueio de objetos do O Amazon S3 agora oferece a 26 de novembro de 2018


S3 (p. 1142) funcionalidade do Bloqueio de
objetos que fornece proteções de
gravação única, leitura múltipla,
para objetos do Amazon S3. Para
obter mais informações, consulte
Bloquear objetos.

Versão da API 2006-03-01


1148
Amazon Simple Storage Service Guia do usuário

Restaurar atualização Usando a atualização rápida 26 de novembro de 2018


rápida (p. 1142) de restauração do Amazon
S3, altere a velocidade de
uma restauração da classe de
armazenamento S3 Glacier
para mais rapidez durante o
andamento da restauração. Para
obter mais informações, consulte
Restaurar objetos arquivados.

Restaurar notificações de As notificações de evento do 26 de novembro de 2018


evento (p. 1142) Amazon S3 agora oferecem
suporte a eventos de início e
conclusão durante a restauração
de objetos na classe de
armazenamento S3 Glacier. Para
obter mais informações, consulte
Notificações de eventos.

PUT diretamente para a A operação PUT do Amazon S3 26 de novembro de 2018


classe de armazenamento S3 agora dá suporte à especificação
Glacier (p. 1142) do S3 Glacier como a
classe de armazenamento
durante a criação de objetos.
Anteriormente, você tinha que
fazer a transição de objetos para
a classe de armazenamento
S3 Glacier de outra classe de
armazenamento do Amazon S3.
Além disso, ao usar a replicação
entre regiões (CRR) do S3, você
já especifica S3 Glacier como
a classe de armazenamento
para objetos replicados. Para
obter mais informações sobre
a classe de armazenamento
S3 Glacier, consulte Classes
de armazenamento. Para
obter mais informações sobre
como especificar a classe de
armazenamento para objetos
replicados, Visão geral da
configuração de replicação. Para
obter mais informações sobre
as alterações de PUT para API
REST do S3 Glacier, consulte
Histórico do documento: PUT
diretamente para S3 Glacier.

Versão da API 2006-03-01


1149
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Nova classe de O Amazon S3 agora 26 de novembro de 2018


armazenamento (p. 1142) oferece uma nova classe de
armazenamento chamada
INTELLIGENT_TIERING
projetada para dados
duradouros com padrões
de acesso alternados ou
desconhecidos. Para obter mais
informações, consulte Classes de
armazenamento

Bloqueio de acesso público do O Amazon S3 agora inclui a 15 de novembro de 2018


Amazon S3 (p. 1142) possibilidade de bloquear acesso
público a buckets e objetos por
bucket ou conta. Para obter mais
informações, consulte Usar o
Amazon S3 Block Public Access.

Filtrar melhorias nas regras Na configuração da regra de 19 de setembro de 2018


de replicação entre regiões CRR, você pode especificar o
(CRR) (p. 1142) filtro de um objeto para escolher
um subgrupo de objetos aos
quais a regra deve ser aplicada.
Antes, você poderia filtrar
somente por um prefixo de
chaves de objeto. Nesta versão,
você pode filtrar usando um
prefixo de chaves de objeto, uma
ou mais tags de objeto ou ambos.
Para obter mais informações,
consulte Configuração da CRR:
visão geral da configuração da
replicação.

Novos recursos do Seleção do O Seleção do Amazon S3 5 de setembro de 2018


Amazon S3 (p. 1142) agora é compatível com
entradas do Apache Parquet,
consultas em objetos JSON
aninhados e duas novas
métricas de monitoramento
do Amazon CloudWatch
(SelectScannedBytes e
SelectReturnedBytes).

Atualizações agora disponíveis Agora você pode assinar 19 de junho de 2018


em RSS (p. 1142) um RSS Feed para receber
notificações sobre atualizações
no Guia do usuário do Amazon
S3.

Atualizações anteriores
A tabela a seguir descreve as alterações importantes em cada versão do Guia do usuário do Amazon S3
antes de 19 de junho de 2018.

Versão da API 2006-03-01


1150
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Atualização de exemplos Exemplos de código atualizados: 30 de abril


de código de 2018
• C#: atualizamos todos os exemplos para usar o padrão
assíncrono baseado em tarefas. Para obter mais
informações, consulte APIs assíncronas da Amazon Web
Services para .NET noGuia do desenvolvedor do AWS SDK
para .NET. Agora os exemplos de código são compatíveis
com a versão 3 do AWS SDK para .NET.
• Java: atualizamos todos os exemplos a fim de usar o modelo
de criador do cliente. Para obter mais informações sobre
o modelo de criador do cliente, consulte Criar clientes de
serviço.
• PHP: atualização de todos os exemplos para usar o AWS
SDK para PHP 3.0. Para obter mais informações sobre o
AWS SDK para PHP 3.0, consulte AWS SDK para PHP.
• Ruby: atualização do código de exemplo para que os
exemplos funcionem com o AWS SDK para Ruby versão 3.

O Amazon S3 agora Além de relatar bytes reais, essas métricas de armazenamento 30 de abril
reporta classes de incluem sobrecarga de bytes por objeto para classes de de 2018
armazenamento S3 armazenamento aplicáveis (ONEZONE_IA, STANDARD_IA, e
Glacier e ONEZONE_IA S3 Glacier):
para métricas de
armazenamento do • Para objetos da classe de armazenamento ONEZONE_IA e
Amazon CloudWatch STANDARD_IA, o Amazon S3 relata objetos com menos de
Logs 128 KB como tendo 128 KB. Para obter mais informações,
consulte Uso de classes de armazenamento do Amazon
S3 (p. 563).
• Para objetos da classe de armazenamento S3 Glacier,
as métricas de armazenamento relatam as seguintes
sobrecargas:
• Uma sobrecarga de 32 KB por objeto, cobrada de acordo
com a definição de preço da classe de armazenamento S3
Glacier
• Uma sobrecarga de 8 KB por objeto, cobrada de acordo
com a definição de preço da classe de armazenamento
STANDARD

Para obter mais informações, consulte Transição de objetos


usando o ciclo de vida do Amazon S3 (p. 570).

Para obter mais informações sobre métricas de


armazenamento, consulte Monitoramento de métricas com o
Amazon CloudWatch (p. 855).

Nova classe de O Amazon S3 agora oferece uma nova classe de 4 de abril


armazenamento armazenamento, ONEZONE_IA (IA significa, em inglês, acesso de 2018
com pouca frequência), para armazenar objetos. Para obter
mais informações, consulte Uso de classes de armazenamento
do Amazon S3 (p. 563).

Seleção do Amazon S3 O Amazon S3 agora oferece suporte à recuperação de 4 de abril


conteúdo de objetos com base em uma expressão SQL. Para de 2018

Versão da API 2006-03-01


1151
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data


obter mais informações, consulte Filtragem e recuperação de
dados usando o Amazon S3 Select (p. 710).

Região Ásia-Pacífico O Amazon S3 agora está disponível na região Ásia-Pacífico 12 de


(Osaka-Local) (Osaka-Local). Para obter mais informações sobre regiões e fevereiro de
endpoints do Amazon S3, consulte Regiões e endpoints na 2018
Referência geral da AWS.
Important

Você pode usar a região Ásia-Pacífico (Osaka-


Local) apenas em conjunto com a região Ásia-
Pacífico (Tóquio). Para solicitar acesso à região Ásia-
Pacífico (Osaka-Local), entre em contato com seu
representante de vendas.

Timestamp de criação O inventário do Amazon S3 agora inclui um timestamp da 16 de


de inventário do Amazon data e da hora de início da criação do relatório de inventário janeiro de
S3 do Amazon S3. Você pode usar o timestamp para determinar 2018
alterações no armazenamento do Amazon S3 a partir da hora
de início em que o relatório de inventário foi gerado.

Região Europa (Paris) O Amazon S3 já está disponível na região Europa (Paris). Para 18 de
obter mais informações sobre regiões e endpoints do Amazon dezembro
S3, consulte Regiões e endpoints na Referência geral da AWS. de 2017

Região da China Agora o Amazon S3 está disponível na região da China 11 de


(Ningxia) (Ningxia). Para obter mais informações sobre regiões e dezembro
endpoints do Amazon S3, consulte Regiões e endpoints na de 2017
Referência geral da AWS.

Consulta de arquivos O Amazon S3 agora oferece suporte à consulta de arquivos de 29 de


com SQL dados do S3 Glacier com SQL. Para obter mais informações, novembro
consulte Consultar objetos arquivados (p. 551). de 2017

Suporte para arquivos Agora, o Amazon S3 é compatível com arquivos de saída de 17 de


de inventário do Amazon inventário no formato colunar de linhas otimizado do Apache novembro
S3 no formato ORC (ORC) e no formato de valores separados por vírgulas (CSV). de 2017
Além disso, agora você pode consultar o inventário do Amazon
S3 usando o SQL padrão usando o Amazon Athena, o Amazon
Redshift Spectrum e outras ferramentas como Presto, Apache
Hive e Apache Spark. Para obter mais informações, consulte
Inventário do Amazon S3 (p. 605).

Criptografia padrão para A criptografia padrão do Amazon S3 fornece uma forma 06 de


buckets do S3 de configurar o comportamento de criptografia padrão novembro
para um bucket do S3. Você pode configurar a criptografia de 2017
padrão em um bucket para que todos os objetos sejam
criptografados quando forem armazenados nele. Os objetos
são criptografados usando a criptografia do lado do servidor
com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou chaves
gerenciadas pelo AWS KMS (SSE-KMS). Para obter mais
informações, consulte Definir o comportamento padrão de
criptografia do lado do servidor para buckets do Amazon
S3 (p. 43).

Versão da API 2006-03-01


1152
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Status de criptografia no Agora, o Amazon S3 é compatível e inclui o status da 06 de


inventário do Amazon criptografia no inventário do Amazon S3 para que você possa novembro
S3 ver como seus objetos são criptografados em repouso para a de 2017
auditoria de conformidade e outras finalidades. Você também
pode configurar para criptografar o inventário do S3 com a
criptografia do lado do servidor (SSE) ou o SSE-KMS para
que todos os arquivos do inventário sejam criptografados
apropriadamente. Para obter mais informações, consulte
Inventário do Amazon S3 (p. 605).

Melhorias da replicação Agora, a replicação entre regiões oferece suporte ao seguinte: 06 de


entre regiões (CRR) novembro
• Em um cenário entre contas, você pode adicionar uma de 2017
configuração da CRR a fim de alterar a propriedade da
réplica para a conta da AWS que tem o bucket de destino.
Para obter mais informações, consulte Alterar o proprietário
da réplica (p. 670).
• Por padrão, o Amazon S3 não replica objetos no seu bucket
de origem que foram criados usando a criptografia no lado do
servidor usando chaves armazenadas no AWS KMS. Mas,
na sua configuração de CRR, você pode orientar o Amazon
S3 a replicar esses objetos. Para obter mais informações,
consulte Replicação de objetos criados com criptografia no
lado do servidor (SSE) usando CMKs do AWS KMS (p. 672).

Região Europa O Amazon S3 já está disponível na região Europa (Londres). 13 de


(Londres) Para obter mais informações sobre regiões e endpoints do dezembro
Amazon S3, consulte Regiões e endpoints na Referência geral de 2016
da AWS.

Região do Canadá O Amazon S3 já está disponível na região Canadá (Central). 8 de


(Central) Para obter mais informações sobre regiões e endpoints do dezembro
Amazon S3, consulte Regiões e endpoints na Referência geral de 2016
da AWS.

Versão da API 2006-03-01


1153
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Marcação de objetos O Amazon S3 agora oferece suporte para marcação de 29 de


objetos. Ela permite classificar o armazenamento. Os prefixos novembro
de nome de chave de objeto também permitem classificar o de 2016
armazenamento, mas a marcação de objetos adiciona outra
dimensão a isso.

Há benefícios adicionados oferecidos pela marcação. Dentre


elas estão:

• As tags de objeto permitem um controle de acesso rigoroso


das permissões (por exemplo, você pode conceder
permissões de usuário do IAM a objetos somente leitura com
tags específicas).
• Controle fino para especificar a configuração de ciclo de vida.
Você pode especificar tags para selecionar um subconjunto
de objetos aos quais a regra de ciclo de vida se aplica.
• Se você tiver a replicação entre regiões (CRR) configurada,
o Amazon S3 poderá replicar as tags. Você deve conceder
a permissão necessária para a função do IAM criada para o
Amazon S3 assumir que é preciso replicar objetos em seu
nome.
• Você também pode personalizar métricas do CloudWatch e
eventos do CloudTrail para exibir informações por filtros de
tags específicos.

Para obter mais informações, consulte Categorizando seu


armazenamento usando tags (p. 683).

Agora, o ciclo de Agora, o Amazon S3 oferece suporte para filtragem com 29 de


vida do Amazon S3 base em tag na configuração de ciclo de vida. Você já pode novembro
oferece suporte a filtros especificar regras do ciclo de vida nas quais é possível de 2016
baseados em tags determinar um prefixo de chave, uma ou mais tags de objeto
ou uma combinação das duas para selecionar um subconjunto
de objetos ao qual a regra do ciclo de vida se aplica. Para obter
mais informações, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).

Métricas de solicitação O Amazon S3 agora oferece suporte a métricas do CloudWatch 29 de


do CloudWatch para para solicitações feitas em buckets. Quando você habilita essas novembro
buckets métricas para um bucket, elas são registradas em intervalos de 2016
de 1 minuto. Você também pode configurar quais objetos em
um bucket registrarão essas métricas de solicitação. Para obter
mais informações, consulte Monitoramento de métricas com o
Amazon CloudWatch (p. 855).

Versão da API 2006-03-01


1154
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Inventário do Amazon O Amazon S3 agora oferece suporte para inventário de 29 de


S3 armazenamento. O inventário do Amazon S3 fornece uma novembro
saída de arquivo sem formatação de seus objetos e dos de 2016
metadados correspondentes diária ou semanalmente para um
bucket do S3 ou um prefixo compartilhado (ou seja, objetos que
têm nomes que começam com uma string comum).

Para obter mais informações, consulte Inventário do Amazon


S3 (p. 605).

Análise do Amazon S3: O novo recurso de análise do Amazon S3: análise de classe 29 de
análise de classe de de armazenamento observa padrões de acesso de dados novembro
armazenamento para ajudar você a determinar quando fazer a transição do de 2016
armazenamento STANDARD acessado menos frequentemente
para a classe de armazenamento STANDARD_IA (IA,
para acesso raro). Depois que a análise de classe de
armazenamento observa os padrões incomuns de acesso a um
conjunto filtrado de dados em um período, você pode usar os
resultados da análise para ajudá-lo a melhorar suas políticas
de ciclo de vida. Esse recurso também inclui uma análise
diária detalhada do uso de armazenamento no nível de bucket,
prefixo ou tag especificado que você pode exportar para um
bucket do S3.

Para obter mais informações, consulte Análise do Amazon


S3 – Análise de classe de armazenamento (p. 894) o Guia do
usuário do Amazon S3.

Novas recuperações O Amazon S3 agora oferece suporte para recuperações de 21 de


de dados expressas e dados expressas e em massa, além de recuperações padrão novembro
em massa ao restaurar ao restaurar objetos arquivados no S3 Glacier. Para obter mais de 2016
objetos arquivados no informações, consulte Restaurar um objeto arquivado (p. 547).
S3 Glacier

Registro de objetos do O CloudTrail oferece suporte ao registro em log de operações 21 de


CloudTrail de API no nível do objeto do Amazon S3, como GetObject, novembro
PutObject e DeleteObject. Você pode configurar seletores de 2016
de eventos para registrar operações de API no nível do
objeto. Para obter mais informações, consulte Registrar
em log chamadas de API do Amazon S3 usando o AWS
CloudTrail (p. 815).

Região do Leste dos O Amazon S3 já está disponível na região Leste dos EUA 17 de
EUA (Ohio) (Ohio). Para obter mais informações sobre regiões e endpoints outubro de
do Amazon S3, consulte Regiões e endpoints na Referência 2016
geral da AWS.

Suporte a IPv6 para o O Amazon S3 agora oferece suporte ao Protocolo de Internet 6 de


Amazon S3 Transfer versão 6 (IPv6) para o Amazon S3 Transfer Acceleration. outubro de
Acceleration Você pode se conectar ao Amazon S3 por IPv6 usando o novo 2016
endpoint de pilha dupla para Transfer Acceleration. Para obter
mais informações, consulte Conceitos básicos do Amazon S3
Transfer Acceleration (p. 50).

Versão da API 2006-03-01


1155
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Suporte a IPv6 O Amazon S3 agora oferece suporte ao Protocolo de Internet 11 de


versão 6 (IPv6). Você pode acessar o Amazon S3 por IPv6 agosto de
usando endpoints de pilha dupla. Para obter mais informações, 2016
consulte Fazer solicitações para o Amazon S3 por meio do
IPv6 (p. 992).

Região da Ásia-Pacífico O Amazon S3 já está disponível na região da Ásia-Pacífico 27 de junho


(Mumbai) (Mumbai). Para obter mais informações sobre regiões e de 2016
endpoints do Amazon S3, consulte Regiões e endpoints na
Referência geral da AWS.

Amazon S3 Transfer O Amazon S3 Transfer Acceleration possibilita transferências 19 de abril


Acceleration de arquivos rápidas, fáceis e seguras em longas distâncias de 2016
entre o seu cliente e um bucket do S3. O Transfer Acceleration
aproveita os pontos de presença distribuídos globalmente do
Amazon CloudFront.

Para obter mais informações, consulte Configurar


transferências de arquivos rápidas e seguras usando o Amazon
S3 Transfer Acceleration (p. 48).

Suporte de ciclo de A ação Expiration de configuração de ciclo de vida 16 de


vida para remover os agora permite que você instrua o Amazon S3 a remover os março de
marcadores de exclusão marcadores de exclusão de objeto expirado em um bucket com 2016
de objeto expirado versões. Para obter mais informações, consulte Elementos
para descrever ações de ciclo de vida (p. 591).

Versão da API 2006-03-01


1156
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

A configuração de ciclo A configuração de ciclo de vida de bucket agora oferece 16 de


de vida de bucket agora suporte para a ação AbortIncompleteMultipartUpload, março de
oferece suporte para que você pode usar para instruir o Amazon S3 a parar os 2016
parar multipart uploads multipart uploads não concluídos em um número específico de
incompletos dias após serem iniciados. Quando um multipart upload torna-
se qualificado para uma operação de interrupção, o Amazon S3
exclui todas as partes carregadas e para o multipart upload.

Para obter informações conceituais, consulte os seguintes


tópicos no Guia do usuário do Amazon S3:

• Abortar um multipart upload (p. 106)


• Elementos para descrever ações de ciclo de vida (p. 591)

As seguintes operações de API foram atualizadas para oferecer


suporte à nova ação:

• Ciclo de vida de PUT Bucket: a configuração de


XML agora permite que você especifique a ação
AbortIncompleteMultipartUpload em uma regra de
configuração de ciclo de vida.
• Listar partes e Iniciar o multipart upload: essas duas
operações de API agora retornarão dois cabeçalhos de
resposta adicionais (x-amz-abort-date e x-amz-abort-
rule-id) se o bucket tiver uma regra de ciclo de vida que
especifique a ação AbortIncompleteMultipartUpload.
Esses cabeçalhos de resposta indicam quando o multipart
upload iniciado se tornará qualificado para a operação de
interrupção e qual regra de ciclo de vida é aplicável.

Região da Ásia-Pacífico O Amazon S3 já está disponível na região Ásia-Pacífico (Seul). 6 de janeiro


(Seul) Para obter mais informações sobre regiões e endpoints do de 2016
Amazon S3, consulte Regiões e endpoints na Referência geral
da AWS.

Nova chave de condição As políticas do IAM agora oferecem suporte para a chave 14 de
e uma alteração do de condição s3:x-amz-storage-class do Amazon S3. dezembro
multipart upload Para obter mais informações, consulte Exemplos de chave de de 2015
condição do Amazon S3 (p. 278).

Você não precisa mais ser o iniciador de um multipart upload


para fazer upload de partes e terminar o upload. Para
obter mais informações, consulte API de multipart upload e
permissões (p. 83).

Região Padrão dos EUA A string de nome de região mudou de "Padrão dos EUA" 11 de
renomeada para "Leste dos EUA (Norte da Virgínia)". Essa é só uma dezembro
atualização de nome de região, não há nenhuma alteração na de 2015
funcionalidade.

Versão da API 2006-03-01


1157
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Nova classe de O Amazon S3 agora oferece uma nova classe de 16 de


armazenamento armazenamento, STANDARD_IA (IA, para acesso raro), setembro
para armazenar objetos. Essa classe de armazenamento de 2015
é otimizada para dados armazenados por longo tempo
e acessados com menos frequência. Para obter mais
informações, consulte Uso de classes de armazenamento do
Amazon S3 (p. 563).

As atualizações de recurso de configuração de ciclo de


vida agora permitem fazer a transição de objetos para a
classe de armazenamento STANDARD_IA. Para obter mais
informações, consulte Gerenciando seu ciclo de vida de
armazenamento (p. 569).

Anteriormente, o recurso de replicação entre regiões usava a


classe de armazenamento do objeto de origem para réplicas
de objeto. Agora, ao configurar a replicação entre regiões,
você pode especificar uma classe de armazenamento para a
réplica de objeto criada no bucket de destino. Para obter mais
informações, consulte Replicação de objetos (p. 617).

Integração ao AWS A nova integração do AWS CloudTrail permite registrar a 1 de


CloudTrail atividade da API do Amazon S3 em seu bucket do S3. Você setembro
pode usar o CloudTrail para acompanhar criações ou exclusões de 2015
de bucket do S3, modificações de controle de acesso ou
alterações de política de ciclo de vida. Para obter mais
informações, consulte Registrar em log chamadas de API do
Amazon S3 usando o AWS CloudTrail (p. 815).

Aumento do limite do O Amazon S3 agora oferece suporte para aumentos de limite 4 de agosto
bucket de bucket. Por padrão, os clientes podem criar até 100 buckets de 2015
na conta da AWS. Os clientes que precisarem de buckets
adicionais poderão aumentar esse limite enviando um aumento
de limite de serviço. Para obter informações sobre como
aumentar o limite do seu bucket, consulte AWS Service Quotas
na Referência geral da AWS. Para obter mais informações,
consulte Uso dos AWS SDKs (p. 32) e Restrições e limitações
do bucket (p. 60).

Atualização do modelo O Amazon S3 agora oferece suporte para consistência de 4 de agosto


de consistência leitura após gravação para novos objetos adicionados ao de 2015
Amazon S3 na região Leste dos EUA (Norte da Virgínia). Antes
dessa atualização, todas as regiões menos a região Leste dos
EUA (Norte da Virgínia) permitiam a consistência de leitura
após gravação para novos objetos carregados no Amazon S3.
Com esse aprimoramento, o Amazon S3 agora oferece suporte
para consistência de leitura após gravação em todas as regiões
para novos objetos adicionados ao Amazon S3. A consistência
de leitura após gravação permite que você recupere objetos
imediatamente após a criação no Amazon S3. Para obter mais
informações, consulte Regiões (p. 3).

Versão da API 2006-03-01


1158
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Notificações de eventos As notificações de evento do Amazon S3 foram atualizadas 28 de julho


para adicionar notificações quando objetos são excluídos de 2015
e para adicionar a filtragem em nomes de objeto com
correspondência de prefixo e sufixo. Para obter mais
informações, consulte Notificações de eventos do Amazon
S3 (p. 869).

Integração do Amazon A nova integração do Amazon CloudWatch permite monitorar 28 de julho


CloudWatch e definir alarmes de uso do Amazon S3 por meio de métricas de 2015
do CloudWatch para o Amazon S3. As métricas compatíveis
incluem total de bytes para armazenamento padrão, total
de bytes para armazenamento com menos redundância e o
número total de objetos para um determinado bucket do S3.
Para obter mais informações, consulte Monitoramento de
métricas com o Amazon CloudWatch (p. 855).

Suporte para excluir e O Amazon S3 agora oferece suporte para excluir e esvaziar 16 de julho
esvaziar buckets não buckets não vazios. Para obter mais informações, consulte de 2015
vazios Esvaziar um bucket (p. 38).

Políticas de bucket para O Amazon S3 adicionou suporte para políticas de bucket para 29 de abril
VPC endpoints Amazon VPC endpoints. Você pode usar políticas de bucket do S3 para de 2015
controlar o acesso a buckets de VPC endpoints específicos ou
VPCs específicas. Os VPC endpoints são fáceis de configurar,
são extremamente confiáveis e fornecem uma conexão segura
com o Amazon S3 sem exigir um gateway ou uma instância
NAT. Para obter mais informações, consulte Controlar o acesso
a partir de VPC endpoints com políticas de bucket (p. 377).

Notificações de eventos As notificações de evento do Amazon S3 foram atualizadas 9 de abril


para oferecer suporte à alternância para permissões com base de 2015
em recursos para funções do AWS Lambda. Para obter mais
informações, consulte Notificações de eventos do Amazon
S3 (p. 869).

Replicação entre regiões O Amazon S3 já oferece suporte à replicação entre regiões. A 24 de


replicação entre regiões é a cópia assíncrona automática de março de
objetos em buckets, em diferentes regiões da AWS. Para obter 2015
mais informações, consulte Replicação de objetos (p. 617).

Notificações de eventos O Amazon S3 agora oferece suporte para novos 13 de


tipos e destinos de evento em uma configuração de novembro
notificação de bucket. Antes dessa versão, o Amazon de 2014
S3 era compatível somente com o tipo de evento
s3:ReducedRedundancyLostObject e um tópico do Amazon
SNS como o destino. Para obter mais informações sobre os
novos tipos de evento, consulte Notificações de eventos do
Amazon S3 (p. 869).

Versão da API 2006-03-01


1159
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Criptografia do lado do Criptografia no lado do servidor com o AWS Key Management 12 de


servidor com chaves Service (AWS KMS) novembro
fornecidas pelo cliente de 2014
O Amazon S3 agora oferece suporte para criptografia do lado
do servidor usando o AWS KMS. Esse recurso permite que
você gerencie a chave de envelope por meio do AWS KMS e
o Amazon S3 chama o AWS KMS para acessar a chave de
envelope nas permissões definidas.

Para obter mais informações sobre criptografia no lado do


servidor com o AWS KMS, consulte Proteger dados usando
criptografia no lado do servidor com o AWS Key Management
Service.

Região Europa O Amazon S3 já está disponível na região Europa (Frankfurt). 23 de


(Frankfurt) outubro de
2014

Criptografia do lado do O Amazon S3 agora oferece suporte para criptografia de 12 de junho


servidor com chaves servidor com chaves de criptografia fornecidas pelo cliente de 2014
fornecidas pelo cliente (SSE-C). A criptografia do lado do servidor permite que você
solicite ao Amazon S3 para criptografar seus dados em
repouso. Ao usar SSE-C, o Amazon S3 criptografa os objetos
com chaves de criptografia personalizadas que você fornece.
Como o Amazon S3 executa a criptografia, você obtém os
benefícios de usar suas próprias chaves de criptografia sem
o custo de gravação ou execução de seu próprio código de
criptografia.

Para obter mais informações sobre SSE-C, consulte


Criptografia do servidor (com chaves de criptografia fornecidas
pelo cliente).

Suporte de ciclo de vida Antes dessa versão, a configuração de ciclo de vida era 20 de maio
para versionamento permitida somente em buckets sem versões. Agora você pode de 2014
configurar o ciclo de vida em buckets sem versões e com o
versionamento ativado. Para obter mais informações, consulte
Gerenciando seu ciclo de vida de armazenamento (p. 569).

Tópicos de controle de Documentação revisada de controle de acesso do Amazon 15 de abril


acesso revisados S3. Para obter mais informações, consulte Identity and Access de 2014
Management no Amazon S3 (p. 252).

Tópico de registro de Documentação revisada de registro de acesso de servidor. 26 de


acesso de servidor Para obter mais informações, consulte Registrar em log as novembro
revisado solicitações com registro em log de acesso ao servidor (p. 833). de 2013

Exemplos de SDK Os exemplos de SDK do .NET neste guia agora são 26 de


do .NET atualizados compatíveis com a versão 2.0. novembro
para a versão 2.0 de 2013

Suporte de SOAP via O suporte de SOAP via HTTP está obsoleto, mas continua 20 de
HTTP obsoleto disponível via HTTPS. Novos recursos do Amazon S3 não setembro
serão compatíveis com o SOAP. Recomendamos que você use de 2013
a API REST ou os AWS SDKs.

Versão da API 2006-03-01


1160
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Suporte para variáveis Agora, a linguagem de política de acesso do IAM oferece 3 de abril
de política do IAM suporte para variáveis. Quando uma política é avaliada, todas de 2013
as variáveis de política são substituídas por valores fornecidos
por informações baseadas no contexto da sessão do usuário
autenticado. Você pode usar variáveis de política para definir
políticas de uso geral sem, explicitamente, listar todos os
componentes da política. Para obter mais informações sobre
variáveis de política, consulte Visão geral das variáveis de
política do IAM no Guia do usuário do IAM.

Para obter exemplos de variáveis de políticas no Amazon S3,


consulte Exemplos de política de usuário (p. 405).

Suporte do console Agora você pode configurar seu bucket para pagamentos pelo 31 de
para Pagamento pelo solicitante usando o console do Amazon S3. Para obter mais dezembro
solicitante informações, consulte Configuração de buckets de Pagamento de 2012
pelo solicitante para transferências de armazenamento e
uso (p. 56).

Suporte de domínio raiz O Amazon S3 agora oferece suporte a hospedagem de sites 27 de


para hospedagem de estáticos no domínio raiz. Os visitantes podem acessar seu dezembro
sites site do navegador sem especificar "www" no endereço da web de 2012
(por exemplo, "example.com"). Muitos clientes já hospedam
sites estáticos no Amazon S3 que podem ser acessados em
um subdomínio "www" (por exemplo, "www.example.com").
Anteriormente, para oferecer suporte para acesso de domínio
raiz, você precisava executar seu próprio servidor da web
para as solicitações de domínio raiz de proxy de navegadores
para seu site no Amazon S3. Executar um servidor da web
para solicitações de proxy introduz custos adicionais, carga
operacional e outro ponto de falha em potencial. Agora, você
pode aproveitar a alta disponibilidade e a durabilidade do
Amazon S3 para endereços "www" e de domínio raiz. Para
obter mais informações, consulte Hospedagem de um site
estático usando o Amazon S3 (p. 945).

Revisão do console O console do Amazon S3 foi atualizado. Os tópicos de 14 de


documentação que se referem ao console foram revisados dezembro
conforme necessário. de 2012

Suporte para Agora, o Amazon S3 oferece suporte a uma opção 13 de


arquivamento de dados de armazenamento que permite utilizar o serviço de novembro
no S3 Glacier armazenamento de baixo custo do S3 Glacier para de 2012
arquivamento de dados. Para arquivar objetos, você define
regras de arquivamento e identifica objetos e um cronograma
quando deseja que o Amazon S3 arquive esses objetos
no S3 Glacier. Você pode definir regras facilmente em
um bucket usando o console do Amazon S3 ou usando
programaticamente a API do Amazon S3 ou SDKs da AWS.

Para obter mais informações, consulte Gerenciando seu ciclo


de vida de armazenamento (p. 569).

Versão da API 2006-03-01


1161
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Suporte para Para um bucket que é configurado como um site, o Amazon 4 de


redirecionamentos de S3 agora oferece suporte ao redirecionamento de uma outubro de
página de site solicitação de um objeto para outro objeto no mesmo bucket 2012
ou um URL externo. Para obter mais informações, consulte
(Opcional) Configurar um redirecionamento de uma página da
Web (p. 959).

Para obter informações sobre a hospedagem de sites,


consulte Hospedagem de um site estático usando o Amazon
S3 (p. 945).

Suporte para O Amazon S3 oferece suporte para compartilhamento de 31 de


compartilhamento de recursos de origem cruzada (CORS). O CORS define uma agosto de
recursos de origem maneira de os aplicativos web clientes carregados em um 2012
cruzada (CORS) domínio poderem interagir com ou acessar recursos em
outro domínio. Com suporte a CORS no Amazon S3, você
pode criar aplicações Web cliente avançados no Amazon S3
e permitir seletivamente o acesso de domínio cruzado aos
recursos do Amazon S3. Para obter mais informações, consulte
Usar o compartilhamento de recursos de origem cruzada
(CORS) (p. 458).

Suporte para tags de O Amazon S3 agora oferece suporte para tags de alocação de 21 de
alocação de custos custos, o que permite identificar buckets do S3 para facilitar agosto de
o acompanhamento de custos de projetos ou outros critérios. 2012
Para obter mais informações sobre o uso de tags para buckets,
consulte Usar tags de alocação de custos para buckets do
S3 (p. 693).

Suporte para acesso à O Amazon S3 agora oferece suporte para acesso à API 10 de julho
API protegido por MFA protegido por MFA, um recurso que pode impor a AWS Multi- de 2012
nas políticas de bucket Factor Authentication para um nível de segurança extra
ao acessar os recursos do Amazon S3. É um recurso de
segurança que exige que os usuários comprovem a posse
física de um dispositivo MFA fornecendo um código válido de
MFA. Para obter mais informações, consulte AWS Multi-Factor
Authentication. Agora você pode exigir a autenticação de MFA
para todas as solicitações de acesso aos recursos do Amazon
S3.

Para aplicar a autenticação de MFA, o Amazon S3 agora


oferece suporte para a chave aws:MultiFactorAuthAge
em uma política de bucket. Para ver um exemplo de política de
bucket, consulte Adicionar uma política de bucket para exigir
MFA (p. 384).

Suporte para expiração Você pode usar a expiração de objeto para programar a 27 de
de objeto remoção automática de dados após um período configurado. dezembro
Para definir a expiração de objeto, adicione a configuração de de 2011
ciclo de vida a um bucket.

Nova região compatível O Amazon S3 agora oferece suporte à região da América 14 de


do Sul (São Paulo). Para obter mais informações, consulte dezembro
Acessar um bucket (p. 36). de 2011

Versão da API 2006-03-01


1162
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Exclusão de vários O Amazon S3 agora oferece suporte para a API de exclusão 7 de


objetos de vários objetos que permite excluir vários objetos em uma dezembro
única solicitação. Com esse recurso, você pode remover um de 2011
grande número de objetos do Amazon S3 mais rapidamente
do que usando várias solicitações DELETE individuais. Para
obter mais informações, consulte Excluir objetos do Amazon
S3 (p. 128).

Nova região compatível O Amazon S3 agora oferece suporte à região do Oeste dos 8 de
EUA (Oregon). Para obter mais informações, consulte Buckets novembro
e regiões (p. 36). de 2011

Atualização da Correções de erros de documentação. 8 de


documentação novembro
de 2011

Atualização da Além de correções de erros de documentação, esta versão 17 de


documentação inclui os seguintes aprimoramentos: outubro de
2011
• Novas seções de criptografia do lado do servidor usando
o AWS SDK para PHP e o AWS SDK para Ruby (consulte
Especificação de criptografia do Amazon S3 (p. 214)).
• Nova seção sobre como criar e testar amostras de Ruby
(consulte Usar o AWS SDK para Ruby versão 3 (p. 1045)).

Suporte para criptografia O Amazon S3 agora oferece suporte para criptografia do 4 de


do lado do servidor lado do servidor. Ela permite solicitar ao Amazon S3 para outubro de
criptografar seus dados em repouso, ou seja, criptografar seus 2011
dados de objeto quando o Amazon S3 grava seus dados em
discos nos datacenters. Além das atualizações de API REST,
o AWS SDK para Java e o .NET oferecem a funcionalidade
necessária para solicitar criptografia do lado do servidor. Você
também pode solicitar a criptografia de servidor ao fazer upload
de objetos usando o Console de Gerenciamento da AWS.
Para saber mais sobre a criptografia de dados, acesse Usar
criptografia de dados.

Atualização da Além de correções de erros de documentação, esta versão 22 de


documentação inclui os seguintes aprimoramentos: setembro
de 2011
• Adição de exemplos de Ruby e PHP à seção Fazer
solicitações (p. 990).
• Adição de seções que descrevem como gerar e usar
pre-signed URLs. Para obter mais informações, consulte
Compartilhar um objeto com uma pre-signed URL (p. 159) e
Compartilhar um objeto com uma pre-signed URL (p. 159).
• Atualização de uma seção existente para apresentar o
AWS Explorer para Eclipse e Visual Studio. Para obter mais
informações, consulte Desenvolvimento com o Amazon S3
usando os AWS SDKs e exploradores (p. 1034).

Versão da API 2006-03-01


1163
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Suporte para enviar Além de usar suas credenciais de segurança de conta da AWS 3 de agosto
solicitações usando e de usuário do IAM para enviar solicitações autenticadas de 2011
credenciais de ao Amazon S3, agora você pode enviar solicitações usando
segurança temporárias credenciais de segurança temporárias obtidas no AWS Identity
and Access Management (IAM). Você pode usar a API do AWS
Security Token Service ou bibliotecas de wrapper do SDK da
AWS para solicitar essas credenciais temporárias no IAM. Você
pode solicitar essas credenciais de segurança temporárias para
seu próprio uso ou para enviá-las para usuários federados e
aplicativos. Esse recurso permite que você gerencie usuários
fora da AWS e forneça a eles as credenciais de segurança
temporárias para acessar os recursos da AWS.

Para obter mais informações, consulte Fazer


solicitações (p. 990).

Para obter mais informações sobre o suporte do IAM para


credenciais de segurança temporárias, consulte Credenciais de
segurança temporárias no Guia do usuário do IAM.

API de multipart upload Antes dessa versão, a API do Amazon S3 permitia a cópia 21 de junho
estendida para permitir a de objetos de até 5 GB. Para permitir a cópia de objetos com de 2011
cópia de objetos de até mais de 5 GB, o Amazon S3 agora estende a API de multipart
5 TB upload com uma nova operação, Upload Part (Copy).
Você pode usar essa operação do multipart upload para copiar
objetos com até 5 TB. Para obter mais informações, consulte
Cópia de objetos (p. 114).

Para obter informações conceituais sobre a API do multipart


upload, consulte Carregar e copiar objetos usando multipart
upload (p. 80).

Chamadas de API Para aumentar a segurança, as chamadas de API SOAP via 6 de junho
SOAP via HTTP HTTP são desativadas. As solicitações SOAP autenticadas e de 2011
desativadas anônimas devem ser enviadas para o Amazon S3 usando SSL.

O IAM habilita a Anteriormente, para acessar um recurso do Amazon S3, um 6 de junho


delegação entre contas usuário do IAM precisava de permissões da conta da AWS de 2011
pai e do proprietário do recurso do Amazon S3. Com o acesso
entre contas, o usuário do IAM agora só precisa da permissão
da conta do proprietário. Isto é, se o proprietário de um recurso
conceder acesso a uma conta da AWS, a conta da AWS
agora poderá conceder aos usuários do IAM acesso a esses
recursos.

Para obter mais informações, consulte Criar uma função para


delegar permissões a um usuário do IAM no Guia do usuário do
IAM.

Para obter mais informações sobre como especificar principais


em uma política de bucket, consulte Principais (p. 271).

Novo link As informações de endpoint deste serviço agora estão 1 de março


localizadas na Referência geral da AWS. Para obter mais de 2011
informações, consulte Regiões e endpoints em Referência
geral da AWS.

Versão da API 2006-03-01


1164
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Suporte para a O Amazon S3 introduz o suporte aprimorado para hospedagem 17 de


hospedagem de sites de sites estáticos. Isso inclui suporte para documentos fevereiro de
estáticos no Amazon S3 de índice e documentos de erros personalizados. Ao usar 2011
esses recursos, as solicitações para a raiz de seu bucket ou
uma subpasta (por exemplo, http://mywebsite.com/
subfolder) retornam o documento de índice em vez da
lista de objetos em seu bucket. Se um erro for encontrado, o
Amazon S3 retornará sua mensagem de erro personalizada em
vez de uma mensagem de erro do Amazon S3. Para obter mais
informações, consulte Hospedagem de um site estático usando
o Amazon S3 (p. 945).

Suporte para API do A API REST do objeto GET agora permite alterar os 14 de
cabeçalho de resposta cabeçalhos de resposta da solicitação REST do objeto GET janeiro de
para cada solicitação. Isto é, você pode alterar metadados 2011
de objeto na resposta, sem modificar o objeto em si. Para
obter mais informações, consulte Fazer download de um
objeto (p. 122).

Suporte para objetos O Amazon S3 aumentou o tamanho máximo de um objeto que 9 de


grandes você pode armazenar em um bucket do S3 de 5 GB para 5 dezembro
TB. Se estiver usando a API REST, você poderá fazer upload de 2010
de objetos de até 5 GB em uma única operação PUT. Para
objetos maiores, você deve usar a API REST do multipart
upload para fazer upload de objetos em partes. Para obter
mais informações, consulte Carregar e copiar objetos usando
multipart upload (p. 80).

Multipart upload O multipart upload permite fazer uploads mais flexíveis 10 de


mais rapidamente no Amazon S3. Ele permite carregar um novembro
único objeto como um conjunto de partes. Para obter mais de 2010
informações, consulte Carregar e copiar objetos usando
multipart upload (p. 80).

Suporte de ID canônico Agora você pode especificar IDs canônicos em políticas de 17 de


em políticas de bucket bucket. Para obter mais informações, consulte Políticas de setembro
bucket e políticas de usuário (p. 268) de 2010

O Amazon S3 funciona Esse serviço agora se integra ao AWS Identity and Access 2 de
com o IAM Management (IAM). Para obter mais informações, acesse setembro
Serviços da AWS que trabalham com o IAM no Guia do usuário de 2010
do IAM.

Notificações O recurso de notificações do Amazon S3 permite configurar 14 de julho


um bucket para que o Amazon S3 publique uma mensagem de 2010
em um tópico do Amazon Simple Notification Service (Amazon
SNS) quando o Amazon S3 detecta um evento-chave em um
bucket. Para obter mais informações, consulte Configuração de
notificação de eventos de bucket (p. 869).

Políticas de buckets As políticas de bucket são um sistema de gerenciamento 6 de julho


de acesso usado para definir permissões de acesso em de 2010
buckets, objetos e conjuntos de objetos. Essa funcionalidade
suplementa e, em muitos casos, substitui as listas de controle
de acesso. Para obter mais informações, consulte Políticas de
bucket e políticas de usuário (p. 268).

Versão da API 2006-03-01


1165
Amazon Simple Storage Service Guia do usuário
Atualizações anteriores

Alteração Descrição Data

Sintaxe de estilo de O Amazon S3 agora oferece suporte para a sintaxe de caminho 9 de junho
caminho disponível em para qualquer bucket na região clássica dos EUA ou se o de 2010
todas as regiões bucket estiver na mesma região do endpoint da solicitação.
Para obter mais informações, consulte Hospedagem
virtual (p. 1025).

Novo endpoint para a O Amazon S3 agora fornece um endpoint para a Europa 9 de junho
Europa (Irlanda) (Irlanda): http://s3-eu-west-1.amazonaws.com. de 2010

Console Agora você pode usar o Amazon S3 por meio do Console 9 de junho
de Gerenciamento da AWS. Você pode ler sobre toda a de 2010
funcionalidade do Amazon S3 no console no Guia do usuário
do console do Amazon Simple Storage Service.

Redundância reduzida O Amazon S3 agora permite reduzir seus custos de 12 de maio


armazenamento armazenando objetos no Amazon S3 com de 2010
redundância reduzida. Para obter mais informações, consulte
Reduced Redundancy Storage (RRS) (p. 6).

Nova região compatível O Amazon S3 agora oferece suporte à região Ásia-Pacífico 28 de abril
(Cingapura). Para obter mais informações, consulte Buckets e de 2010
regiões (p. 36).

Versionamento de objeto Essa versão apresenta o versionamento de objeto. Todos 8 de


os objetos agora podem ter uma chave e uma versão. Se fevereiro de
você habilitar o versionamento para um bucket, o Amazon 2010
S3 fornecerá a todos os objetos adicionados a um bucket
um ID exclusivo de versão. Esse recurso permite que você
se recupere de substituições e exclusões indesejadas. Para
obter mais informações, consulte Versionamento (p. 8) e Usar
versionamento (p. 516).

Nova região compatível O Amazon S3 agora oferece suporte à região Oeste dos EUA 2 de
(Norte da Califórnia). O novo endpoint para solicitações para dezembro
essa região é s3-us-west-1.amazonaws.com. Para obter mais de 2009
informações, consulte Buckets e regiões (p. 36).

AWS SDK para .NET A AWS agora fornece bibliotecas, códigos de exemplo, tutoriais 11 de
e outros recursos para os desenvolvedores de software novembro
que preferem criar aplicativos usando operações de API de 2009
específicas da linguagem .NET em vez de REST ou SOAP.
Essas bibliotecas oferecem as funções básicas (não incluídas
nas APIs REST ou SOAP), como autenticação de solicitação,
novas tentativas de solicitação e processamento de erros,
para que você possa começar a usar com mais facilidade.
Para obter mais informações sobre bibliotecas e recursos
específicos da linguagem, consulte Desenvolvimento com o
Amazon S3 usando os AWS SDKs e exploradores (p. 1034).

Versão da API 2006-03-01


1166
Amazon Simple Storage Service Guia do usuário

Glossário da AWS
Para obter a terminologia mais recente da AWS, consulte o Glossário da AWS na Referência geral da
AWS.

Versão da API 2006-03-01


1167

Você também pode gostar