{DynamoDB}グローバルテーブル: DynamoDB を使用した複数リージョンレプリケーション

グローバルテーブルは 1 つ以上のレプリカテーブルの集合体であり、すべて単一の AWS アカウントが所有します。

アプリケーションが 1 つのリージョンのレプリカテーブルにデータを書き込むと、
DynamoDB はその書き込みを他の AWS リージョンの他のレプリカテーブルに自動的に伝播します。

グローバルテーブルでは、新しく書き込まれた項目は通常、1 秒以内にすべてのレプリカテーブルに伝播されます。

 

-- 1. テーブル作成(東京リージョン)
export AWS_DEFAULT_REGION=ap-northeast-1

aws dynamodb create-table \
--table-name tab1 \
--attribute-definitions \
AttributeName=col1,AttributeType=S \
AttributeName=col2,AttributeType=S \
--key-schema \
AttributeName=col1,KeyType=HASH \
AttributeName=col2,KeyType=RANGE \
--billing-mode=PAY_PER_REQUEST \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES

aws dynamodb describe-table --table-name tab1
aws dynamodb list-tables


-- 2. テーブル作成(大阪リージョン)
export AWS_DEFAULT_REGION=ap-northeast-1

aws dynamodb update-table --table-name tab1 --cli-input-json \
'{
"ReplicaUpdates":
[
{
"Create": {
"RegionName": "ap-northeast-3"
}
}
]
}'

export AWS_DEFAULT_REGION=ap-northeast-3

aws dynamodb describe-table --table-name tab1
aws dynamodb list-tables


-- 3. 動作確認
export AWS_DEFAULT_REGION=ap-northeast-1

aws dynamodb put-item \
--table-name tab1 \
--item \
'{"col1": {"S": "val11"}, "col2": {"S": "val12"}, "col3": {"S": "val13"}, "col4": {"N": "1"}}'

 

aws dynamodb get-item \
--consistent-read \
--table-name tab1 \
--key '{ "col1": {"S": "val11"}, "col2": {"S": "val12"}}'


export AWS_DEFAULT_REGION=ap-northeast-3

aws dynamodb get-item \
--consistent-read \
--table-name tab1 \
--key '{ "col1": {"S": "val11"}, "col2": {"S": "val12"}}'

aws dynamodb put-item \
--table-name tab1 \
--item \
'{"col1": {"S": "val21"}, "col2": {"S": "val22"}, "col3": {"S": "val23"}, "col4": {"N": "2"} }'

aws dynamodb get-item \
--consistent-read \
--table-name tab1 \
--key '{ "col1": {"S": "val21"}, "col2": {"S": "val22"}}'

export AWS_DEFAULT_REGION=ap-northeast-1

aws dynamodb get-item \
--consistent-read \
--table-name tab1 \
--key '{ "col1": {"S": "val21"}, "col2": {"S": "val22"}}'


-- 4. クリーンアップ
export AWS_DEFAULT_REGION=ap-northeast-3

-- テーブル一覧
aws dynamodb list-tables

-- テーブル削除
aws dynamodb delete-table --table-name tab1

export AWS_DEFAULT_REGION=ap-northeast-1

-- テーブル一覧
aws dynamodb list-tables

-- テーブル削除
aws dynamodb delete-table --table-name tab1