

# グローバルテーブルのベストプラクティス
<a name="globaltables-bestpractices"></a>

以下のセクションでは、グローバルテーブルをデプロイして使用するためのベストプラクティスについて説明します。

## バージョン
<a name="globaltables-bestpractices-version"></a>

DynamoDB グローバルテーブルには、バージョン 2019.11.21 (現行) と[バージョン 2017.11.29 (レガシー)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html) の 2 つのバージョンがあります。可能な限り、バージョン 2019.11.21 (現行) を使用する必要があります。

## 削除保護
<a name="globaltables-bestpractices-deletionprotection"></a>

誤って削除されないように保護するグローバルテーブルレプリカの削除保護を有効にする必要があります。レプリカごとに削除保護を有効にする必要があります。

## AWS CloudFormationの使用
<a name="globaltables-bestpractices-cloudformation"></a>

CloudFormation は現在、スタック間のグローバルテーブルなどのマルチリージョンリソースの調整をサポートしていません。別のリージョンのスタックでグローバルテーブルの各レプリカを定義すると、レプリカの更新の実行時にスタック間で検出されたドリフトが原因でエラーが発生します。この問題を回避するには、グローバルテーブルをデプロイするためのリファレンスリージョンとして 1 つのリージョンを選択し、そのリージョンのスタックでグローバルテーブルのすべてのレプリカを定義する必要があります。

**重要**  
タイプ `AWS::DynamoDB::Table` のリソースは、テンプレート内でタイプを変更してタイプ `AWS::DynamoDB::GlobalTable` のリソースに変換できません。CloudFormation リソースタイプを変更して単一リージョンテーブルをグローバルテーブルに変換しようとすると、DynamoDB テーブルが削除される可能性があります。

`AWS::DynamoDB::GlobalTable` リソースを使用して、単一のリージョンでテーブルを作成できます。このテーブルは、他の単一リージョンテーブルと同様にデプロイされます。後でスタックを更新して他のリージョンをリソースに追加すると、レプリカがテーブルに追加され、グローバルテーブルに安全に変換されます。

既存の `AWS::DynamoDB::Table` リソースを `AWS::DynamoDB::GlobalTable` リソースに変換する場合、リソースタイプを変換するための推奨ステップは次のとおりです。

1. `AWS::DynamoDB::Table` 削除ポリシーを保持するように設定します。

1. テーブルをスタック定義から削除します。

1. AWS コンソールの単一リージョンテーブルにレプリカを追加し、グローバルテーブルに変換します。

1. 新しいグローバルテーブルを新しい `AWS::DynamoDB::GlobalTable` リソースとしてスタックにインポートします。

## バックアップとポイントインタイムリカバリ
<a name="globaltables-bestpractices-backups"></a>

グローバルテーブル内の 1 つのレプリカの自動バックアップとポイントインタイムリカバリ (PITR) を有効にすることで、ディザスタリカバリの目標を達成できる場合があります。AWS-Backup で作成されたレプリカバックアップは、リージョン間で自動的にレプリケートできるため、耐障害性が向上します。バックアップと PITR 有効化戦略を選択する際は、マルチリージョンの高可用性の観点からディザスタリカバリ計画の目標を検討してください。

## マルチリージョンの高可用性のための設計
<a name="globaltables-bestpractices-multiregion"></a>

グローバルテーブルのデプロイに関する規範的ガイダンスについては、「[DynamoDB グローバルテーブル設計のベストプラクティス](bp-global-table-design.md)」を参照してください。