グローバルテーブル FAQ - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

グローバルテーブル FAQ

このセクションでは、DynamoDB グローバルテーブルのよくある質問に回答します。

グローバルテーブルの料金はいくらですか?

  • 従来の DynamoDB テーブルの書き込みオペレーションは、プロビジョニングされたテーブルの書き込みキャパシティーユニット (WCUs) またはオンデマンドテーブルの書き込みリクエストユニット (WRUs) で料金が設定されます。5 KB のアイテムを書き込むと、5 ユニットの料金が発生します。グローバルテーブルへの書き込みの料金は、プロビジョニングされたテーブルの場合はレプリケートされた書き込みキャパシティーユニット (rWCUs) で、オンデマンドテーブルの場合はレプリケートされた書き込みリクエストユニット (rWRUs) で設定されます。

  • rWCU および rWRU の料金は、項目が直接書き込まれるか、レプリケーションによって書き込まれるすべてのリージョンで発生します。

  • グローバルセカンダリインデックス (GSI) への書き込みは、ローカル書き込みオペレーションと見なされ、通常の書き込み単位を使用します。

  • 現時点では、 for rWCUs で利用できるリザーブドキャパシティーはありません。WCUs 用にリザーブドキャパシティーを購入することは、GSIs が書き込み単位を消費するテーブルにとって依然として有益である可能性があります。

  • グローバルテーブルに新しいリージョンを追加すると、DynamoDB は新しいリージョンを自動的にブートストラップし、テーブルの GB サイズに基づいてテーブルを復元したかのように料金が発生します。リージョン間のデータ転送料金もかかります。

グローバルテーブルはどのリージョンでサポートされていますか?

グローバルテーブルはすべての AWS リージョンでサポートされています。

GSIs はグローバルテーブルでどのように処理されますか?

グローバルテーブル (現行バージョン 2019) では、あるリージョンで GSI を作成すると、他の参加リージョンで自動的に作成され、自動的にバックフィルされます。

グローバルテーブルのレプリケーションを停止するにはどうしたらいいですか?

レプリカテーブルは、他のテーブルを削除するのと同じ方法で削除できます。グローバルテーブルを削除すると、そのリージョンへのレプリケーションが停止し、そのリージョンに保持されているテーブルのコピーが削除されます。ただし、テーブルのコピーを独立したエンティティとして保持している間は、レプリケーションを停止または一時停止することはできません。

Amazon DynamoDB Streams はグローバルテーブルとどのようにやり取りするのですか?

各グローバルテーブルは、書き込み元に関係なく、すべての書き込みオペレーションに基づいて独立したストリームを生成します。DynamoDB ストリームを 1 つのリージョンで使用するか、すべてのリージョンで (個別に) 使用するかを選択できます。レプリケートされた書き込みオペレーションではなく、ローカル書き込みオペレーションを処理する場合は、各項目に独自のリージョン属性を追加して、書き込みリージョンを識別できます。次に、 AWS Lambda イベントフィルターを使用して、ローカルリージョンでの書き込みオペレーションに対してのみ Lambda 関数を呼び出すことができます。これは挿入および更新オペレーションには役立ちますが、削除オペレーションには役立ちません。

グローバルテーブルはトランザクションをどのように処理するのですか?

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

グローバルテーブルは DynamoDB Accelerator (DAX) キャッシュとどのように相互作用しますか?

グローバルテーブルは DynamoDB を直接更新することで DAX をバイパスするため、DAX は古いデータを保持していることを認識しません。DAX キャッシュは、キャッシュの TTL の有効期限が切れた場合にのみ更新されます。

テーブルのタグは伝播されますか?

いいえ、タグは自動的には伝播されません。

すべてのリージョンのテーブルをバックアップすべきですか、それとも 1 つのリージョンだけでよいですか?

答えはバックアップの目的によって異なります。

  • データの耐久性を確保したい場合、DynamoDB には既に保護手段が用意されています。このサービスにより、耐久性が保証されます。

  • 履歴記録のスナップショットを保持する場合 (規制要件を満たすためなど)、1 つのリージョンでバックアップすれば十分です。AWS Backup を使用してバックアップを別のリージョンにコピーできます。

  • 誤って削除または変更されたデータを復元する場合は、1 つのリージョンで DynamoDB point-in-time Recovery (PITR) を使用します。

を使用してグローバルテーブルをデプロイする方法 AWS CloudFormation

  • CloudFormation は、DynamoDB テーブルとグローバルテーブルを AWS::DynamoDB::Tableと の 2 つの個別のリソースとして表しますAWS::DynamoDB::GlobalTable。1 つの方法としては、GlobalTable コンストラクトを使用してグローバルになる可能性のあるすべてのテーブルを作成します。これらのテーブルは、最初はスタンドアロンテーブルのままにし、必要に応じて後でリージョンを追加します。

  • In CloudFormation では、レプリカの数に関係なく、各グローバルテーブルは 1 つのリージョンの 1 つのスタックによって制御されます。テンプレートをデプロイすると、 CloudFormation は単一のスタックオペレーションの一部としてすべてのレプリカを作成および更新します。同じ AWS::DynamoDB::GlobalTable リソースを複数のリージョンにデプロイしないでください。これは、エラーとなるため、サポートされていません アプリケーションテンプレートを複数のリージョンにデプロイする場合は、条件を使用して単一リージョンに AWS::DynamoDB::GlobalTable リソースを作成できます。または、アプリケーションスタックとは別のスタック内に AWS::DynamoDB::GlobalTable リソースを定義し、それが単一リージョンにのみデプロイされるようにします。

  • 通常のテーブルがあり、 CloudFormation で管理しながらグローバルテーブルに変換する場合: 削除ポリシーを に設定しRetain、スタックからテーブルを削除して、コンソールでテーブルをグローバルテーブルに変換してから、グローバルテーブルを新しいリソースとしてスタックにインポートします。詳細については、 AWS GitHub リポジトリの amazon-dynamodb-table-to-global-table-cdk を参照してください。

  • クロスアカウントレプリケーションは現在サポートされていません。