Configurar a replicação de tabelas do S3 - Amazon Simple Storage Service

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.

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:PutTableBucketReplication no bucket de tabela de origem.

  • s3tables:GetTableBucketReplication no bucket de tabela de origem.

  • iam:PassRole para o perfil do IAM de replicação.

Para replicação em nível de tabela:
  • s3tables:PutTableReplication na tabela de origem.

  • s3tables:GetTableReplication na tabela de origem.

  • iam:PassRole para 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.

  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação, escolha Buckets de tabela.

  3. Na lista Buckets de tabela, escolha o nome do bucket de tabela para o qual deseja configurar a replicação.

  4. Escolha a guia Gerenciamento.

  5. Na seção Configuração de replicação do bucket de tabela, escolha Criar configuração de replicação de bucket de tabela.

  6. Na seção Destino, configure os destinos da replicação:

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

      Também é possível escolher Procurar no S3 para selecionar um bucket de tabela de sua conta.

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

  7. Na seção Perfil do IAM, configure o perfil de replicação:

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

    2. Se você optou por Escolher entre perfis do IAM existentes, selecione um perfil na lista suspensa Perfil do IAM.

    3. (Opcional) Escolha Visualizar para analisar as permissões do perfil selecionado no console do IAM.

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

  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação, escolha Buckets de tabela.

  3. Na lista Buckets de tabela, escolha o nome do bucket de tabela que contém a tabela que você deseja replicar.

  4. Escolha a guia Tabelas.

  5. Na lista Tabelas, escolha o nome da tabela que você deseja replicar.

  6. Escolha a guia Gerenciamento.

  7. Na seção Configuração de replicação de tabelas, escolha Criar configuração de replicação de tabela.

  8. Na seção Destino, configure os destinos da replicação:

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

      Também é possível escolher Procurar no S3 para selecionar um bucket de tabela de sua conta.

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

  9. Na seção Perfil do IAM, configure o perfil de replicação:

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

    2. Se você optou por Escolher entre perfis do IAM existentes, selecione um perfil na lista Perfil do IAM.

    3. (Opcional) Escolha Visualizar para analisar as permissões do perfil selecionado no console do IAM.

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

  1. 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" } ] }
  2. Crie o perfil do IAM:

    aws iam create-role \ --role-name S3TablesReplicationRole \ --assume-role-policy-document file://trust-policy.json \ --description "Role for S3 Tables replication"
  3. 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/*" } ] }
  4. Anexe a política de permissões ao perfil:

    aws iam put-role-policy \ --role-name S3TablesReplicationRole \ --policy-name S3TablesReplicationPermissions \ --policy-document file://replication-permissions.json
  5. (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.

  1. 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" } ] }
  2. 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/amzn-s3-demo-table-bucket-cross-account-destination \ --policy file://destination-bucket-policy.json \ --profile destination-account
  3. 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" } ] }
  4. 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.

  1. 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/amzn-s3-demo-table-bucket-dr" }, { "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu" }, { "destinationTableBucketARN": "arn:aws:s3tables:ap-south-1:111122223333:bucket/amzn-s3-demo-table-bucket-apac" } ] } ] }
    exemplo: 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" } ] } ] }
  2. 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.json

    Saída esperada:

    { "versionToken": "3HL4kqtJl40Nr8X8gdRQBpUMLUo", "status": "Success" }

Use essa abordagem para replicar tabelas específicas ou substituir a replicação em nível de bucket.

  1. 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-bucket" } ] } ] }
    exemplo: tabela com vários destinos
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" }, { "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu" } ] } ] }
  2. 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/amzn-s3-demo-table-bucket-sales-data \ --configuration file://table-replication-config.json

    Saída esperada:

    { "versionToken": "xT2LZkFZ0UuTC2h8XqtGLx2Ak6M", "status": "Success" }