Configurar a replicação de tabelas do S3
É possível configurar a replicação para criar automaticamente réplicas de tabela de uma tabela de origem para até cinco buckets de tabela de destino. A replicação pode ser configurada em nível de bucket (aplicada a todas as tabelas no bucket) ou em nível de tabela (para tabelas específicas). Este tópico explica como configurar a replicação usando o console do Amazon S3 ou AWS Command Line Interface (AWS CLI).
Para ter mais informações sobre como configurar a replicação, consulte os tópicos a seguir.
Tópicos
Pré-requisitos para configurar a replicação
Antes de configurar a replicação, é necessário ter o seguinte:
Recursos necessários
-
Bucket de tabela de origem: o bucket de tabela que contém uma ou mais tabelas que você deseja replicar.
-
Buckets de tabela de destino: um ou mais buckets de tabela nos quais você deseja replicar suas tabelas (até cinco buckets de tabela de destino).
-
Tabelas de origem: tabelas existentes no bucket de tabela de origem para replicação.
-
Perfis do IAM: perfis do IAM que concedem ao Amazon S3 permissões para replicar tabelas em seu nome.
Permissões obrigatórias
A identidade do IAM que usada para configurar a replicação precisa ter as seguintes permissões:
Para replicação em nível de bucket:
-
s3tables:PutTableBucketReplicationno bucket de tabela de origem. -
s3tables:GetTableBucketReplicationno bucket de tabela de origem. -
iam:PassRolepara o perfil do IAM de replicação.
Para replicação em nível de tabela:
-
s3tables:PutTableReplicationna tabela de origem. -
s3tables:GetTableReplicationna tabela de origem. -
iam:PassRolepara o perfil do IAM de replicação.
Para replicação entre contas:
-
Permissões da política de bucket da conta de destino.
Requisitos adicionais para replicação entre contas
Se os buckets de tabela de origem e destino estiverem em contas diferentes da AWS, você também precisará:
-
De uma política de bucket no bucket de tabela de destino que conceda à conta de origem permissões para replicar tabelas.
-
Do ID da conta de destino e do nome do recurso da Amazon (ARN) do bucket de tabela.
Requisitos adicionais para tabelas criptografadas
Se você quiser criptografar tabelas de réplica com o AWS KMS:
-
Uma chave do KMS na região de destino.
-
Permissões para usar a chave do KMS em seu perfil de replicação do IAM.
-
Uma política de chave do KMS que permita que o perfil de replicação criptografe dados.
Noções básicas sobre as configurações de replicação
Uma configuração de replicação define como o Amazon S3 replica tabelas do bucket de tabela de origem. A replicação pode ser configurada em dois níveis:
Para replicação em nível de bucket
Uma configuração de replicação em nível de bucket se aplica a todas as tabelas no bucket de tabela de origem. Quando a replicação é configurada em nível de bucket, o Amazon S3 replica automaticamente qualquer tabela existente e qualquer tabela nova criada no bucket.
Use a replicação em nível de bucket quando:
-
Quiser replicar todas as tabelas em um bucket.
-
Quiser um comportamento de replicação consistente em todas as tabelas.
-
Quiser simplificar o gerenciamento com uma única configuração.
Replicação em nível de tabela
Uma configuração de replicação em nível de tabela se aplica a uma tabela específica. As configurações em nível de tabela substituem as configurações em nível de bucket para essa tabela específica.
Use a replicação em nível de tabela quando:
-
Quiser replicar apenas tabelas específicas.
-
Precisar de destinos de replicação diferentes para tabelas diferentes.
-
Quiser substituir uma configuração em nível de bucket para determinadas tabelas.
Elementos da configuração de replicação
Cada configuração de replicação contém:
-
Perfil do IAM: o perfil que o Amazon S3 assume para realizar operações de replicação.
-
Regras: uma ou mais regras de replicação (com o limite de uma regra na execução). Cada regra contém:
-
Destinos: lista de ARNs de bucket de tabela de destino (até cinco destinos).
-
Status: se a regra está habilitada ou desabilitada.
-
-
Token de versão: um token usado para evitar conflitos de gravação ao atualizar as configurações.
Escolher entre replicação em nível de bucket e em nível de tabela
Precedência de configuração
Quando existem configurações em nível de bucket e em nível de tabela:
-
A configuração em nível de tabela tem precedência para essa tabela específica.
-
Outras tabelas seguem a configuração em nível de bucket.
Configurar a replicação usando o console do Amazon S3
Este procedimento mostra como configurar a replicação usando o console do Amazon S3.
Este procedimento mostra como criar uma replicação de bucket de tabela usando o console do Amazon S3. Uma configuração de replicação de bucket de tabela se aplica a todas as tabelas no bucket de tabela de origem.
-
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
No painel de navegação, escolha Buckets de tabela.
-
Na lista Buckets de tabela, escolha o nome do bucket de tabela para o qual deseja configurar a replicação.
-
Escolha a guia Gerenciamento.
-
Na seção Configuração de replicação do bucket de tabela, escolha Criar configuração de replicação de bucket de tabela.
-
Na seção Destino, configure os destinos da replicação:
-
No campo ARN do bucket de tabela, insira o ARN do bucket de tabela de destino. O formato de é:
arn:aws:s3tables:region:account-id:bucket/table-bucket-nameTambém é possível escolher Procurar no S3 para selecionar um bucket de tabela de sua conta.
-
(Opcional) Para adicionar outros destinos, escolha Adicionar destino. É possível adicionar mais quatro buckets de tabela, no máximo, para um total de cinco destinos.
-
-
Na seção Perfil do IAM, configure o perfil de replicação:
-
Em Método de seleção de perfil do IAM, escolha uma das seguintes opções:
-
Criar um perfil do IAM: o Amazon S3 cria um perfil com as permissões necessárias para replicação.
-
Escolher entre perfis do IAM existentes: selecione um perfil existente que tenha as permissões de replicação necessárias.
-
Inserir ARN do perfil do IAM: insira manualmente o ARN de um perfil do IAM existente.
-
-
Se você optou por Escolher entre perfis do IAM existentes, selecione um perfil na lista suspensa Perfil do IAM.
-
(Opcional) Escolha Visualizar para analisar as permissões do perfil selecionado no console do IAM.
-
-
Escolha Criar configuração de replicação.
Após a criação da configuração de replicação, o Amazon S3 inicia o processo de preenchimento inicial. É possível monitorar o status da replicação na seção Status de replicação da tabela, que exibe informações sobre cada destino, como status da replicação, ARN da tabela de destino e última vez em que os metadados foram replicados.
Este procedimento mostra como criar uma replicação de tabela usando o console do Amazon S3. Uma configuração de replicação de tabela se aplica a uma tabela específica e substitui qualquer configuração de replicação em nível de bucket para essa tabela.
-
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
No painel de navegação, escolha Buckets de tabela.
-
Na lista Buckets de tabela, escolha o nome do bucket de tabela que contém a tabela que você deseja replicar.
-
Escolha a guia Tabelas.
-
Na lista Tabelas, escolha o nome da tabela que você deseja replicar.
-
Escolha a guia Gerenciamento.
-
Na seção Configuração de replicação de tabelas, escolha Criar configuração de replicação de tabela.
-
Na seção Destino, configure os destinos da replicação:
-
No campo ARN do bucket de tabela, insira o ARN do bucket de tabela de destino. O formato de é:
arn:aws:s3tables:region:account-id:bucket/table-bucket-nameTambém é possível escolher Procurar no S3 para selecionar um bucket de tabela de sua conta.
-
(Opcional) Para adicionar outros destinos, escolha Adicionar destino. É possível adicionar mais quatro buckets de tabela, no máximo, para um total de cinco destinos.
-
-
Na seção Perfil do IAM, configure o perfil de replicação:
-
Em Método de seleção de perfil do IAM, escolha uma das seguintes opções:
-
Criar um perfil do IAM: o Amazon S3 cria um perfil com as permissões necessárias para replicação.
-
Escolher entre perfis do IAM existentes: selecione um perfil existente que tenha as permissões de replicação necessárias.
-
Inserir ARN do perfil do IAM: insira manualmente o ARN de um perfil do IAM existente.
-
-
Se você optou por Escolher entre perfis do IAM existentes, selecione um perfil na lista Perfil do IAM.
-
(Opcional) Escolha Visualizar para analisar as permissões do perfil selecionado no console do IAM.
-
-
Escolha Criar configuração de replicação.
O que ocorre em seguida?
Após a criação da configuração de replicação:
-
O Amazon S3 inicia o processo inicial de preenchimento, criando tabelas de réplica em cada bucket de destino.
-
O status da replicação muda para Replicando depois que o preenchimento é iniciado.
-
É possível monitorar o andamento da replicação na guia Gerenciamento.
-
O tempo de replicação inicial depende do tamanho da tabela de origem.
Configurar a replicação usando a AWS CLI
Este procedimento mostra como configurar a replicação usando a AWS CLI. Substitua os IDs de conta, as regiões e os nomes de bucket por seus valores reais. Adicione todos os buckets de destino às permissões.
Etapa 1: criar um perfil do IAM para replicação
Primeiro, crie um perfil do IAM que o Amazon S3 possa assumir para replicar tabelas.
-
Crie um documento de política de confiança que permita que a funcionalidade Tabelas do S3 assuma o perfil. Salve-o como
trust-policy.json:{ "Version": "2012-10-17" "Statement": [ { "Effect": "Allow", "Principal": { "Service": "replication.s3tables.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Crie o perfil do IAM:
aws iam create-role \ --role-nameS3TablesReplicationRole\ --assume-role-policy-document file://trust-policy.json \ --description "Role for S3 Tables replication" -
Crie uma política de permissões que conceda permissões de replicação. Salve-a como
replication-permissions.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableMaintenanceConfiguration", "s3tables:GetTableData" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source/table/*" }, { "Effect": "Allow", "Action": [ "s3tables:ListTables" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source" }, { "Effect": "Allow", "Action": [ "s3tables:CreateTable", "s3tables:CreateNamespace" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination" }, { "Effect": "Allow", "Action": [ "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination/table/*" } ] } -
Anexe a política de permissões ao perfil:
aws iam put-role-policy \ --role-nameS3TablesReplicationRole\ --policy-nameS3TablesReplicationPermissions\ --policy-document file://replication-permissions.json -
(Opcional) Se estiver usando a criptografia do KMS, adicione permissões do KMS à política:
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" ] }
(Somente entre contas) Etapa 2: configurar uma política de bucket de destino
Se você estiver replicando para uma conta da AWS diferente, a conta de destino deverá conceder permissões à conta de origem.
-
Na conta de destino, crie uma política de bucket para o bucket de tabela de destino. Salve-a como
destination-bucket-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/cross-account-test" }, "Action": [ "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination/table/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/cross-account-test" }, "Action": [ "s3tables:CreateTable", "s3tables:CreateNamespace" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination" } ] } -
Aplique a política usando a API da funcionalidade Tabelas do S3:
aws s3tables put-table-bucket-policy \ --table-bucket-arn arn:aws:s3tables:us-west-2:444455556666:bucket/\ --policy file://amzn-s3-demo-table-bucket-cross-account-destinationdestination-bucket-policy.json\ --profiledestination-account -
Modifique a chave do KMS de origem para permitir a replicação e a manutenção de tabelas do S3:
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "allow replication to decrypt", "Effect": "Allow", "Principal": { "AWS": "replication_role_arn" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" }, { "Sid": "allow maintenance", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" } ] } -
Da mesma forma, adicione permissões em sua política de chave do KMS de destino.
{ "Version": "2012-10-17", "Id": "key-policy-3", "Statement": [ { "Sid": "allow maintenance", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" }, { "Sid": "allow replication to encrypt/decrypt", "Effect": "Allow", "Principal": { "AWS": "replication_role_arn" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" } ]
Etapa 3: criar uma configuração de replicação
É possível a AWS CLI para criar uma configuração de replicação em nível de bucket de tabela ou em nível de tabela. Para ter mais informações, consulte os procedimentos a seguir.
Use essa abordagem para replicar todas as tabelas em um bucket.
-
Crie um arquivo de configuração de replicação. Salve-o como
bucket-replication-config.json:exemplo: destino único na mesma conta
{ "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" } ] } ] }exemplo: vários destinos em todas as regiões
{ "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/" }, { "destinationTableBucketARN": "arn:aws:s3tables:amzn-s3-demo-table-bucket-dreu-west-1:111122223333:bucket/" }, { "destinationTableBucketARN": "arn:aws:s3tables:amzn-s3-demo-table-bucket-euap-south-1:111122223333:bucket/" } ] } ] }amzn-s3-demo-table-bucket-apacexemplo: replicação entre contas
{ "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-east-1:444455556666:bucket/" } ] } ] }amzn-s3-demo-table-bucket-partner -
Aplique uma configuração de replicação em nível de bucket:
aws s3tables put-table-bucket-replication \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket\ --configuration file://bucket-replication-config.jsonSaída esperada:
{ "versionToken": "3HL4kqtJl40Nr8X8gdRQBpUMLUo", "status": "Success" }
Use essa abordagem para replicar tabelas específicas ou substituir a replicação em nível de bucket.
-
Crie um arquivo de configuração de replicação. Salve-o como
table-replication-config.json:exemplo: replicação de tabela única
{ "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/" } ] } ] }amzn-s3-demo-table-bucket-analytics-bucketexemplo: tabela com vários destinos
{ "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/" }, { "destinationTableBucketARN": "arn:aws:s3tables:amzn-s3-demo-table-bucket-dreu-west-1:111122223333:bucket/" } ] } ] }amzn-s3-demo-table-bucket-eu -
Aplique uma configuração de replicação em nível de tabela:
aws s3tables put-table-replication \ --table-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/\ --configuration file://amzn-s3-demo-table-bucket-sales-datatable-replication-config.jsonSaída esperada:
{ "versionToken": "xT2LZkFZ0UuTC2h8XqtGLx2Ak6M", "status": "Success" }