グローバルテーブルに関するよくある質問 - AWS 規範ガイダンス

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

グローバルテーブルに関するよくある質問

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

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

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

  • rWCU と rWRU には、レプリケーションの管理に必要なストリーミングインフラストラクチャのコストが含まれます。そのため、WCU や WRU よりも料金が 50% 高くなります。リージョン間のデータ転送料金が適用されます。

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

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

  • 現在、rWCU に利用できるリザーブドキャパシティはありません。WCU 用のリザーブドキャパシティの購入は、GSI が書き込みユニットを消費するテーブルでは依然として有益な場合があります。

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

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

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

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

グローバルテーブル (現在、バージョン 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 リカバリ (PITR) を使用します。

AWS CloudFormation を使用してグローバルテーブルをデプロイするにはどうすればいいですか?

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

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

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

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