概要
-
DynamoDB のリージョンレベルでのレプリカテーブルを作成する機能。
-
アプリケーションがあるリージョンのレプリカテーブルにデータを書き込むと、DynamoDB は書き込みを他の AWSリージョンのレプリカテーブルに自動的に伝播する。
利点
-
ローカルの読み取りと書き込みで、グローバルなデータアクセスができる。
-
あるリージョンで発生した更新が他のリージョンにも伝播し、最終的に全リージョンのデータの一貫性が保たれる。
=世界各地に分散しているアプリケーションそれぞれでローカルにアクセスされるテーブルが最新の状態が保たれる。
-
-
パフォーマンス
- 1 桁ミリ秒のレイテンシーで提供される。
新しいレプリカテーブルを追加するための要件
新しいレプリカテーブルをグローバルテーブルに追加するには、以下の全ての条件を満たす必要がある。
- その他すべてのレプリカと同じパーティションキーがテーブルに含まれている。
- テーブルは、同じ指定した書き込みキャパシティー管理設定とする。
- テーブル名が、その他全てのレプリカと同じ名前である。
- 項目の新しいイメージと古いイメージの両方を含むストリーミングで、テーブルの DynamoDB Streams が有効になっている。
- このグローバルテーブルの新規または既存のレプリカテーブルにデータが含まれていない。
CloudWatchモニタリング
-
ReplicationLatency
- 更新された項目が1つのレプリカテーブルの DynamoDB ストリームに表示されてから、その項目がグローバルテーブルの別レプリカに表示されるまでの時間。
- ミリ秒単位で表し、すべての送信元リージョンと送信先リージョンのペアに対して出力される。
-
PendingReplicationCount
- 1 つのレプリカテーブルに書き込まれているが、グローバルテーブル内の別のレプリカにはまだ書き込まれていない項目の更新数。
- 項目数で表し、全送信元と送信先のリージョンのペアに対して発行される。
AWS CLIを用いた作成方法
作成
-
DynamoDB Streams を有効にして米国東部 (オハイオ)に新規テーブル (
Music
)を作成する。aws dynamodb create-table \ --table-name Music \ --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 \ --region us-east-2
-
米国東部 (バージニア北部) に同じ
Music
テーブルを作成する。aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Create": { "RegionName": "us-east-1" } } ] }'
-
ステップ 2 を繰り返して、欧州 (アイルランド) (eu-west-1) にテーブルを作成する。
動作確認
-
作成されたレプリカのリストを表示する。
aws dynamodb describe-table --table-name Music --region us-east-2
-
新しい項目を米国東部 (オハイオ) の
Music
テーブルに追加し、レプリケーションが機能していることを確認する。aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
-
項目が米国東部 (バージニア北部) および欧州 (アイルランド) に正常にレプリケートされたかどうかを確認する。
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region eu-west-1