View a markdown version of this page

Tutorial: creazione di tabelle globali con più account - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: creazione di tabelle globali con più account

Questa sezione fornisce istruzioni dettagliate per la creazione di tabelle globali DynamoDB che si estendono su più account. AWS

Segui questi passaggi per creare una tabella globale con più account utilizzando. Console di gestione AWS L'esempio seguente crea una tabella globale con tabelle di replica negli Stati Uniti.

  1. Accedi Console di gestione AWS e apri la console DynamoDB all'indirizzo https://console.aws.amazon.com/dynamodb/ per il primo account (ad esempio111122223333).

  2. Per questo esempio, seleziona Stati Uniti orientali (Ohio) dal selettore delle Regioni nella barra di navigazione.

  3. Nel riquadro di navigazione sul lato sinistro della console scegli Tables (Tabelle).

  4. Scegliere Create Table (Crea tabella).

  5. Nella pagina Crea tabella:

    1. Nel campo Table name (Nome tabella) immetti MusicTable.

    2. In Partition key (Chiave di partizione), inserisci Artist.

    3. Per Chiave di ordinamento, immetti SongTitle.

    4. Mantieni le restanti impostazioni predefinite e seleziona Crea tabella.

  6. Aggiungi la seguente politica sulle risorse alla tabella

    JSON
    { "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. Questa nuova tabella funge da prima tabella di replica in una nuova tabella globale. È il prototipo per altre tabelle di replica che verranno aggiunte in seguito.

  8. Attendi che la tabella diventi attiva. Per la tabella appena creata, dalla scheda Tabelle globali, vai a Impostazioni > Replica e fai clic su Abilita.

  9. Esci da questo account (111122223333qui).

  10. Accedi Console di gestione AWS e apri la console DynamoDB dall'indirizzo https://console.aws.amazon.com/dynamodb/ per il secondo account (ad esempio). 444455556666

  11. Per questo esempio, scegli Stati Uniti orientali (Virginia settentrionale) dal selettore di regione nella barra di navigazione.

  12. La console verifica che non esista una tabella con lo stesso nome nella Regione selezionata. Se esiste una tabella con lo stesso nome, è necessario eliminare la tabella esistente prima di poter creare una nuova tabella di replica in quella regione.

  13. Nel menu a discesa vicino a Crea tabella, scegli Crea da un altro account

  14. Nella pagina Crea tabella da un altro account:

    1. Aggiungi arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable come numero di tabella per la tabella di origine.

    2. Negli ARN della tabella di replica, aggiungete nuovamente l'ARN della tabella di origine. arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable Se sono già presenti più repliche come parte di una tabella globale con più account, è necessario aggiungere tutte le repliche esistenti all'ARN. ReplicaTable

    3. Nella sezione Resource-based policy, aggiungi la seguente policy sulle risorse per la tabella di questo account (). 444455556666 Multi-account la replica globale delle tabelle è bidirezionale, quindi ogni tabella di replica deve concedere al servizio di replica DynamoDB e all'altro account partecipante le autorizzazioni necessarie per la replica. Ciò rispecchia la policy che hai aggiunto nel primo account, con i riferimenti dell'account invertiti:

      { "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" ] } } } ] }
    4. Mantieni le altre impostazioni predefinite e scegli Invia.

  15. La scheda Tabelle globali per la tabella Musica (e per qualsiasi altra tabella di replica) mostra che la tabella è stata replicata in più regioni.

  16. Per testare la replica:

    1. È possibile utilizzare una qualsiasi delle regioni in cui esiste una replica per questa tabella

    2. Scegli Explore table items (Esplora elementi della tabella).

    3. Scegli Crea elemento.

    4. Inserisci item_1 per Artista e Song Value 1 per SongTitle.

    5. Scegli Crea elemento.

    6. Verifica la replica passando alle altre Regioni:

    7. Verifica che la tabella Musica contenga l’elemento creato.

Gli esempi seguenti mostrano come creare una tabella globale con più account utilizzando. AWS CLI Questi esempi dimostrano il flusso di lavoro completo per l'impostazione della replica tra account.

CLI

Utilizza i seguenti AWS CLI comandi per creare una tabella globale con più account con replica su più account.

# 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