教學課程:建立多帳戶全域資料表 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:建立多帳戶全域資料表

本節提供step-by-step說明。 DynamoDB AWS

請依照下列步驟,使用 建立多帳戶全域資料表 AWS 管理主控台。下列範例會在美國建立具有複本資料表的全域資料表。

  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/dynamodb/:// 開啟第一個帳戶的 DynamoDB 主控台 (例如 111122223333)。

  2. 在此範例中,請從導覽列的區域選擇器選擇美國東部 (俄亥俄)

  3. 在主控台左側的導覽窗格中,選擇 Tables (資料表)。

  4. 選擇 Create Table (建立資料表)。

  5. 建立資料表頁面上:

    1. 對於 Table name (資料表名稱),請輸入 MusicTable

    2. 對於 Partition key (分割區索引鍵),請輸入 Artist

    3. 對於排序索引鍵,請輸入 SongTitle

    4. 保留其他預設設定,並選擇建立資料表

  6. 將下列資源政策新增至資料表

    { "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. 此新資料表會做為新全域資料表中的第一個複本資料表。這是您稍後新增其他複本資料表的原型。

  8. 等待資料表變為作用中。對於新建立的資料表,從全域資料表索引標籤導覽至設定複寫,然後按一下啟用

  9. 此帳戶的登出 (此處為 111122223333)。

  10. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/dynamodb/:// 開啟第二個帳戶的 DynamoDB 主控台 (例如 444455556666)。

  11. 在此範例中,從導覽列的區域選擇器中選擇美國東部 (維吉尼亞北部)

  12. 主控台會確認選取區域中沒有同名的資料表。若有同名的資料表,您必須先刪除現有的資料表,才可在該區域中建立新的複本資料表。

  13. 建立資料表附近的下拉式清單中,選擇從另一個帳戶建立

  14. 從另一個帳戶建立資料表頁面上:

    1. 新增 arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable做為來源資料表的資料表 Arn。

    2. 複本資料表 ARNs 中,再次新增來源資料表的 ARNarn:aws:dynamodb:us-east-2:111122223333:table/MusicTable。如果已存在多個複本做為多帳戶全域資料表的一部分,您必須將每個現有的複本新增至 ReplicaTableARN。

    3. 保留其他預設設定,然後選擇提交

  15. 音樂資料表 (以及任何其他複本資料表) 的全域資料表索引標籤會顯示資料表已在多個區域中複寫。

  16. 若要測試複寫:

    1. 您可以使用此資料表存在複本的任何區域

    2. 選擇探索資料表項目

    3. 選擇 Create item (建立項目)。

    4. Artist 輸入 item_1,為 SongTitle 輸入 Song Value 1

    5. 選擇 Create item (建立項目)。

    6. 切換到其他區域來驗證複寫:

    7. 確認 Music 資料表包含您建立的項目。

下列範例示範如何使用 建立多帳戶全域資料表 AWS CLI。這些範例示範設定跨帳戶複寫的完整工作流程。

CLI

使用以下 AWS CLI 命令建立具有跨帳戶複寫的多帳戶全域資料表。

# 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