グローバルテーブル – DynamoDB の複数リージョンレプリケーション - Amazon DynamoDB

グローバルテーブル – DynamoDB の複数リージョンレプリケーション

DynamoDB グローバルテーブルには、バージョン 2019.11.21 (現行)バージョン 2017.11.29 の 2 つのバージョンがあります。ご使用のバージョンを確認するには、バージョンを確認する を参照してください。

Amazon DynamoDB グローバルテーブルは、マルチリージョンにマルチアクティブデータベースをデプロイするための完全マネージド型のソリューションです。独自のレプリケーションソリューションを構築および管理する必要はありません。テーブルを利用したい AWS リージョンを指定すると、DynamoDB が進行中のデータ変更をそれらすべてに伝播します。

DynamoDB グローバルテーブルは、グローバルに分散したユーザーがいる場合など、大規模にスケールされたアプリケーションを使用する場合に最適です。このような環境では、ユーザーは、非常に高速なアプリケーションパフォーマンスを期待します。グローバルテーブルでは、マルチアクティブレプリケーションを世界中の AWS リージョンに自動的に提供できます。ユーザーがどこにいても、低レイテンシーでデータを提供することができます。

グローバルテーブルを使用してリージョン間でシームレスにデータをレプリケートする

米国東海岸、米国西海岸、西ヨーロッパという 3 つの地域領域にわたる大規模な顧客ベースがあるとします。これらのユーザーは、アプリケーションの使用中に自分のプロファイル情報を更新できます。このユースケースを満たすには、ユーザーが所在する 3 つの異なる CustomerProfiles リージョンで、AWS という名前の同一の DynamoDB テーブルを 3 つ作成する必要があります。これらの 3 つのテーブルは互いに完全に分離され、1 つのテーブルのデータを変更しても他のテーブルに反映されることはありません。マネージド型のレプリケーションソリューションを使用しない場合、コードを書き込んで、データ変更をレプリケートする必要があります。ただし、これを行うには時間も労力もかかります。

独自のコードを書き込む代わりに、3 つのリージョン固有の CustomerProfiles テーブルで構成されるグローバルテーブルを作成できます。DynamoDB は、これらのテーブル間でデータの変更を自動的にレプリケートし、1 つのリージョンの CustomerProfiles データへの変更が他のリージョンにシームレスに伝播されるようにします。さらに、いずれかの AWS リージョンが一時的に利用できない場合は、顧客は他のリージョンの同じ CustomerProfiles データにアクセスできます。

異なるリージョンのレプリカのアクセスパターンが異なる場合、各レプリカは異なるテーブルクラスを使用してコストとパフォーマンスを最適化できます。たとえば、アクセス頻度の低いレプリカでは DynamoDB Standard-Infrequent Access (DynamoDB 標準 – IA) テーブルクラスを使用し、他のレプリカでは DynamoDB 標準テーブルクラスを使用して、頻繁にアクセスされるデータに DynamoDB 標準テーブルクラスを使用できます。この場合、スループットが主要なコストになります。

注記
  • グローバルテーブル バージョン 2017.11.29 のリージョンのサポートは、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、欧州 (アイルランド)、欧州 (ロンドン)、欧州 (フランクフルト)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、アジアパシフィック (ソウル) に制限されています。

  • トランザクションオペレーションは、書き込みが最初に行われたリージョン内でのみ、不可分性、一貫性、分離性、および耐久性 (ACID) を保証します。グローバルテーブルのリージョン間では、トランザクションはサポートされていません。たとえば、米国東部(オハイオ)および米国西部(オレゴン)リージョンにレプリカを持つグローバルテーブルがあり、米国東部(バージニア北部)リージョンで TransactWriteItems オペレーションを実行する場合、変更がレプリケートされると米国西部(オレゴン)で部分的に完了したトランザクションを確認できます。変更は、ソースリージョンでコミットされると、他のリージョンにのみレプリケートされます。

  • AWS リージョンを無効にすると、DynamoDB は、AWS リージョンにアクセスできないことが検出されてから 20 時間後に、このレプリカをレプリケーショングループから削除します。レプリカは削除されず、このリージョンとの間でレプリケーションが停止します。

  • ソーステーブルを正常に削除するには、リードレプリカを追加してから 24 時間待つ必要があります。リードレプリカを追加してから最初の 24 時間以内にテーブルを削除しようとすると、「過去 24 時間以内にテーブルに追加された新しいレプリカのソースリージョンとして機能しているため、レプリカを削除できません」というエラーメッセージが表示されます。

AWS リージョンの対応状況と料金については、「Amazon DynamoDB 料金」を参照してください。

AWS KMS を使用してグローバルテーブルにセキュリティとアクセスを提供する

  • カスタマーマネージドキーまたはレプリカの暗号化に使用される AWS マネージドキー に対して AWSServiceRoleForDynamoDBReplication サービスにリンクされたロールを使用して、グローバルテーブルの AWS KMS オペレーションを実行できます。

  • レプリカの暗号化に使用されるカスタマーマネージドキーにアクセスできない場合、DynamoDB はこのレプリカをレプリケーショングループから削除します。KMS キーにアクセスできないことが検出されてから 20 時間後に、レプリカは削除されず、このリージョンとの間でレプリケーションが停止します。

  • レプリカテーブルの暗号化に使用されるカスタマーマネージドキー を無効にする場合は、キーがレプリカテーブルの暗号化に使用されなくなった場合にのみ無効にする必要があります。レプリカテーブルを削除するコマンドを発行した後、キーを無効にする前に、削除オペレーションが完了し、グローバルテーブルが Active になるのを待つ必要があります。そうしないと、レプリカテーブルとの間で部分的なデータレプリケーションが行われる可能性があります。

  • レプリカテーブルの IAM ロールポリシーを変更または削除する場合は、レプリカテーブルが Active 状態のときに行う必要があります。この操作を行わないと、レプリカテーブルの作成、更新、削除が失敗する可能性があります。

注記

カスタマーマネージドキー (CMK) は、バージョン 2017.11.29 ではサポートされていません。DynamoDB グローバルテーブルで CMK を使用する場合は、テーブルを バージョン 2019.11.21 (現行) にアップグレードしてから有効にする必要があります。