Tutoriales: Creación de tablas globales de varias cuentas - Amazon DynamoDB

Tutoriales: Creación de tablas globales de varias cuentas

En esta sección, se proporcionan instrucciones paso a paso para crear tablas globales de DynamoDB que abarquen varias cuentas de AWS.

Siga estos pasos para crear una tabla global de varias cuentas mediante la Consola de administración de AWS. En el ejemplo siguiente, se crea una tabla global con tablas de réplica en Estados Unidos.

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/ para la primera cuenta (diga 111122223333).

  2. Para este ejemplo, elija Este de EE. UU. (Ohio) en el selector de regiones en la barra de navegación.

  3. En el panel de navegación del lado izquierdo de la consola, elija Tablas.

  4. Seleccione Create Table (Crear tabla).

  5. En la página Crear tabla:

    1. En Nombre de la tabla, introduzca MusicTable.

    2. En Partition key (Clave de partición), ingrese Artist.

    3. Para Clave de clasificación, ingrese SongTitle.

    4. Deje los demás valores predeterminados y elija Crear tabla.

  6. Adición de la siguiente política de recursos a la tabla

    { "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. Esta nueva tabla le servirá de primera tabla de réplica en una nueva tabla global. Será el prototipo para crear otras tablas de réplica que quiera añadir más tarde.

  8. Espere que la tabla pase a Activa. Para la tabla recién creada, en la pestaña Tablas globales, vaya a Configuración y replicación y haga clic en Habilitar.

  9. Cierre sesión en esta cuenta (111122223333 aquí).

  10. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/ para la segunda cuenta (diga 444455556666).

  11. Para este ejemplo, elija Este de EE. UU. (Norte de Virginia) en el selector de regiones en la barra de navegación.

  12. La consola asegura que no haya ninguna tabla con el mismo nombre en la región seleccionada. Si ya existe una tabla con el mismo nombre, debe eliminar la tabla existente antes de crear una nueva tabla de réplica en esa región.

  13. En el menú desplegable situado junto a Crear tabla, elija Crear desde otra cuenta

  14. En la página Crear una tabla desde otra cuenta:

    1. Agregue arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable como arn de tabla para la tabla de origen.

    2. En los ARN de la tabla de réplica, vuelva a agregar el ARN de la tabla de origen arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable. Si ya existen varias réplicas como parte de una tabla global de varias cuentas, debe agregar todas las réplicas existentes a ReplicaTableARN.

    3. Deje los demás valores predeterminados y elija Enviar.

  15. La pestaña Tablas globales de la tabla Música (y de cualquier otra tabla de réplica) indica que la tabla se ha replicado en varias regiones.

  16. Para probar la replicación:

    1. Puede usar cualquiera de las regiones en las que existe una réplica para esta tabla

    2. Elija Explorar elementos de la tabla.

    3. Seleccione Crear elemento.

    4. Ingrese item_1 para Artista y Song Value 1 para Título de la canción.

    5. Seleccione Crear elemento.

    6. Compruebe la replicación cambiando a las otras regiones:

    7. Compruebe que la tabla Música contiene el elemento que ha creado.

En los siguientes ejemplos, se muestra cómo crear una tabla global de varias cuentas mediante la AWS CLI. Estos ejemplos muestran el flujo de trabajo completo para configurar la replicación entre cuentas.

CLI

Use los comandos de la AWS CLI siguientes para crear una tabla global de varias cuentas con replicación entre cuentas.

# 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