자습서: 다중 계정 글로벌 테이블 생성 - Amazon DynamoDB

자습서: 다중 계정 글로벌 테이블 생성

이 섹션에서는 여러 AWS 계정에 걸쳐 있는 DynamoDB 글로벌 테이블을 생성하기 위한 단계별 지침을 제공합니다.

다음 단계에 따라 AWS Management Console을 사용하여 다중 계정 글로벌 테이블을 생성합니다. 다음 예제에서는 미국의 복제본 테이블로 글로벌 테이블을 만듭니다.

  1. AWS Management Console에 로그인하고 첫 번째 계정(예: 111122223333)에 대해 DynamoDB 콘솔(https://console.aws.amazon.com/dynamodb/)을 엽니다.

  2. 이 예제에서는 탐색 모음의 리전 선택기에서 미국 동부(오하이오)를 선택합니다.

  3. 콘솔 왼쪽의 탐색 창에서 테이블을 선택합니다.

  4. Create Table(테이블 생성)을 선택합니다.

  5. 테이블 생성 페이지에서 다음을 수행합니다.

    1. 테이블 이름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 Management Console에 로그인하고 두 번째 계정(예: 444455556666)에 대해 DynamoDB 콘솔(https://console.aws.amazon.com/dynamodb/)을 엽니다.

  11. 이 예제에서는 탐색 모음의 리전 선택기에서 미국 동부(버지니아 북부)를 선택합니다.

  12. 콘솔은 선택한 리전에 동일한 이름의 테이블이 존재하지 않는지 확인합니다. 이름이 동일한 테이블이 있는 경우 해당 리전에서 새 복제본 테이블을 생성하려면 먼저 기존 테이블을 삭제해야 합니다.

  13. 테이블 생성 근처의 드롭다운에서 다른 계정에서 생성을 선택합니다.

  14. 다른 계정에서 테이블 생성 페이지에서 다음을 수행합니다.

    1. 소스 테이블에 대한 테이블 ARN으로 arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable을 추가합니다.

    2. 복제본 테이블 ARN에서 소스 테이블의 ARN arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable을 다시 추가합니다. 다중 계정 글로벌 테이블의 일부로 이미 여러 복제본이 있는 경우 모든 기존 복제본을 ReplicaTableARN에 추가해야 합니다.

    3. 기타 기본 설정을 유지하고 제출을 선택합니다.

  15. 음악 테이블의 글로벌 테이블 탭 및 다른 복제본 테이블의 글로벌 테이블 탭은 테이블이 여러 리전에서 복제되었음을 나타냅니다.

  16. 복제를 테스트하려면 다음을 수행합니다.

    1. 이 테이블에 복제본이 있는 모든 리전을 사용할 수 있습니다.

    2. 테이블 항목 탐색을 선택합니다.

    3. 항목 생성을 선택합니다.

    4. Artistitem_1을 입력하고 SongTitle에는 Song Value 1을 입력합니다.

    5. 항목 생성을 선택합니다.

    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