Tutoriais: criar de tabelas globais de várias contas - Amazon DynamoDB

Tutoriais: criar de tabelas globais de várias contas

Esta seção fornece instruções passo a passo para criar tabelas globais do DynamoDB que abrangem várias contas da AWS.

Siga estas etapas para criar uma tabela global de várias contas usando o Console de gerenciamento da AWS. O exemplo a seguir cria uma tabela global com tabelas-réplica nos Estados Unidos.

  1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em https://console.aws.amazon.com/dynamodb/ para a primeira conta (por exemplo, 111122223333).

  2. Para este exemplo, escolha Leste dos EUA (Ohio) no seletor de região na barra de navegação.

  3. No painel de navegação, no lado esquerdo do console, selecione Tables (Tabelas).

  4. Selecione Create Table (Criar tabela).

  5. Na página Criar tabela:

    1. Em Table name (Nome da tabela), insira MusicTable.

    2. Em Partition key, (Chave de partição), insira Artist.

    3. Em Chave de classificação, insira SongTitle.

    4. Mantenha o restante das configurações padrão e escolha Criar tabela.

  6. Adicione a seguinte política de recursos à tabela.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": ["444455556666","111122223333"], "aws:SourceArn": [ "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable", "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable", "Principal": {"AWS": ["444455556666"]} } ] }
  7. Essa nova tabela serve como a primeira tabela de réplica em uma nova tabela global. Ela é o protótipo das outras tabelas-réplica que serão adicionadas posteriormente.

  8. Aguarde a tabela se tornar ativa. Para a tabela recém-criada, na guia Tabelas globais, acesse Replicação de configurações e clique em Habilitar.

  9. Saia dessa conta (aqui, 111122223333).

  10. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em https://console.aws.amazon.com/dynamodb/ para a segunda conta (por exemplo, 444455556666).

  11. Para este exemplo, escolha Leste dos EUA (Norte da Virgínia) no seletor de região na barra de navegação.

  12. O console garante que não exista uma tabela com o mesmo nome na região selecionada. Se existir uma tabela com o mesmo nome, será necessário excluir a tabela existente para criar outra tabela-réplica nessa região.

  13. No menu suspenso próximo a Criar tabela, escolha Criar de outra conta

  14. Na página Criar tabela de outra conta:

    1. Adicione arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable como ARN da tabela de origem.

    2. Em ARNs das réplicas da tabela, adicione novamente o ARN arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable da tabela de origem. Se já existirem várias réplicas como parte de uma tabela global de várias contas, será necessário adicionar todas as réplicas existentes a ReplicaTableARN.

    3. Mantenha o restante das configurações padrão e escolha Enviar.

  15. A guia Tabelas globais da tabela “Music” (e de qualquer outra tabela-réplica) mostra que a tabela foi replicada em várias regiões.

  16. Como testar a replicação:

    1. É possível usar qualquer uma das regiões em que exista uma réplica para essa tabela.

    2. Escolha Explore table items (Explorar itens da tabela).

    3. Selecione Create Item (Criar item).

    4. Insira item_1 para Artist (Artista) e Song Value 1 para SongTitle (Título da música).

    5. Selecione Create Item (Criar item).

    6. Verifique a replicação mudando para outras regiões:

    7. Verifique se a tabela Music (Música) contém o item que você criou.

Os exemplos a seguir mostram como criar uma tabela global de várias contas usando a AWS CLI. Esses exemplos demonstram o fluxo de trabalho completo para configurar a replicação entre contas.

CLI

Use os comandos da AWS CLI a seguir para criar uma tabela global de várias contas com replicação entre contas.

# STEP 1: Setting resource policy for the table in account 111122223333 cat > /tmp/source-resource-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": ["444455556666","111122223333"], "aws:SourceArn": [ "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable", "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable", "Principal": {"AWS": ["444455556666"]} } ] } EOF # Step 2: Create a new table (MusicTable) in US East (Ohio), # with DynamoDB Streams enabled (NEW_AND_OLD_IMAGES), # and Settings Replication ENABLED on the account 111122223333 aws dynamodb create-table \ --table-name MusicTable \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --global-table-settings-replication-mode ENABLED \ --resource-policy file:///tmp/source-resource-policy.json \ --region us-east-2 # Step 3: Creating replica table in account 444455556666 # Resource policy for account 444455556666 cat > /tmp/dest-resource-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": ["444455556666","111122223333"], "aws:SourceArn": [ "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable", "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable" ] } } } ] } EOF # Execute the replica table creation aws dynamodb create-table \ --table-name MusicTable \ --global-table-source-arn "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable" \ --resource-policy file:///tmp/dest-resource-policy.json \ --global-table-settings-replication-mode ENABLED \ --region us-east-1 # Step 4: View the list of replicas created using describe-table aws dynamodb describe-table \ --table-name MusicTable \ --region us-east-2 \ --query 'Table.{TableName:TableName,TableStatus:TableStatus,MultiRegionConsistency:MultiRegionConsistency,Replicas:Replicas[*].{Region:RegionName,Status:ReplicaStatus}}' # Step 5: To verify that replication is working, add a new item to the Music table in US East (Ohio) aws dynamodb put-item \ --table-name MusicTable \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2 # Step 6: Wait for a few seconds, and then check to see whether the item has been # successfully replicated to US East (N. Virginia) and Europe (Ireland) aws dynamodb get-item \ --table-name MusicTable \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1 aws dynamodb get-item \ --table-name MusicTable \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2 # Step 7: Delete the replica table in US East (N. Virginia) Region aws dynamodb delete-table \ --table-name MusicTable \ --region us-east-1 # Clean up: Delete the primary table aws dynamodb delete-table \ --table-name MusicTable \ --region us-east-2