

# DynamoDB グローバルテーブルのバージョン
<a name="V2globaltables_versions"></a>

DynamoDB グローバルテーブルには、グローバルテーブルバージョン 2019.11.21 (現行) とグローバルテーブルバージョン 2017.11.29 (レガシー) の 2 つのバージョンがあります。グローバルテーブルバージョン 2019.11.21 (現行) を使用することをお勧めします。これは、バージョン 2017.11.29 (レガシー) と比較して、使いやすく、より多くのリージョンでサポートされ、ほとんどのワークロードでコストが低いためです。

## グローバルテーブルのバージョンを確認する
<a name="globaltables.DetermineVersion"></a>

### AWS CLI を使用したバージョンの確認
<a name="globaltables.CLI"></a>

#### バージョン 2019.11.21 (現行) グローバルテーブルレプリカの特定
<a name="globaltables.CLI.current"></a>

テーブルがグローバルテーブルバージョン 2019.11.21 (現行) レプリカかどうかを判断するには、テーブルの `describe-table` コマンドを呼び出します。出力に「2019.11.21」の値を持つ `GlobalTableVersion` 属性が含まれている場合、テーブルはバージョン 2019.11.21 (現行) グローバルテーブルレプリカです。

`describe-table` の CLI コマンドの例:

```
aws dynamodb describe-table \
--table-name users \
--region us-east-2
```

(省略された) 出力には、値が「2019.11.21」の `GlobalTableVersion` 属性が含まれているため、このテーブルはバージョン 2019.11.21 (現行) グローバルテーブルレプリカです。

```
{
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "id",
                "AttributeType": "S"
            },
            {
                "AttributeName": "name",
                "AttributeType": "S"
            }
        ],
        "TableName": "users",
        ...
        "GlobalTableVersion": "2019.11.21",
        "Replicas": [
            {
                "RegionName": "us-west-2",
                "ReplicaStatus": "ACTIVE",
            }
        ],
        ...
    }
}
```

#### バージョン 2017.11.29 (レガシー) グローバルテーブルレプリカの識別
<a name="globaltables.CLI.legacy"></a>

グローバルテーブルバージョン 2017.11.29 (レガシー) では、グローバルテーブル管理専用のコマンドセットが使用されます。テーブルがグローバルテーブルバージョン 2017.11.29 (レガシー) レプリカであるかどうかを確認するには、テーブルの `describe-global-table` コマンドを呼び出します。正常なレスポンスを受け取った場合、テーブルはバージョン 2017.11.29 (レガシー) グローバルテーブルレプリカです。`describe-global-table` コマンドが `GlobalTableNotFoundException` エラーを返した場合、テーブルはバージョン 2017.11.29 (レガシー) レプリカではありません。

`describe-global-table` の CLI コマンドの例:

```
aws dynamodb describe-global-table \
--table-name users \
--region us-east-2
```

コマンドは正常なレスポンスを返すため、このテーブルはバージョン 2017.11.29 (レガシー) グローバルテーブルレプリカです。

```
{
    "GlobalTableDescription": {
        "ReplicationGroup": [
            {
                "RegionName": "us-west-2"
            },
            {
                "RegionName": "us-east-2"
            }
        ],
        "GlobalTableArn": "arn:aws:dynamodb::123456789012:global-table/users",
        "CreationDateTime": "2025-06-10T13:55:53.630000-04:00",
        "GlobalTableStatus": "ACTIVE",
        "GlobalTableName": "users"
    }
}
```

### DynamoDB コンソールを使用したバージョンの確認
<a name="globaltables.console"></a>

グローバルテーブルレプリカのバージョンを特定するには、以下を実行します。

1. DynamoDB コンソール ([https://console.aws.amazon.com/dynamodb/home](https://console.aws.amazon.com/dynamodb/home)) を開きます。

1. コンソールの左側のナビゲーションペインで、[**テーブル**] を選択します。

1. グローバルテーブルのバージョンを識別するテーブルを選択します。

1. [**グローバルテーブル**] タブを選択します。

   *[概要]* セクションには、使用中のグローバルテーブルのバージョンが表示されます。

## レガシーバージョンと現行バージョンの動作の違い
<a name="DiffLegacyVsCurrent"></a>

以下のリストは、グローバルテーブルのレガシーバージョンと現行バージョンの動作の違いを示しています。
+ いくつかの DynamoDB オペレーションにおいて、バージョン 2019.11.21 (現行) は、バージョン 2017.11.29 (レガシー) よりも書き込みキャパシティの消費が少ないため、ほとんどのユーザーにとってコスト効率が向上します。DynamoDB オペレーションの違いは次のとおりです。
  + あるリージョンの 1KB アイテムに対して [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) を呼び出し、他のリージョンにレプリケートする場合、2017.11.29 (レガシー) ではリージョンごとに 2 rWRU が必要ですが、2019.11.21 (現行) では 1 rWRU のみ必要です。
  + 1KB アイテムに対して [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) を呼び出す場合、2017.11.29 (レガシー) ではソースリージョンで 2 rWRU、送信先リージョンで 1 rWRU が必要ですが、2019.11.21 (現行) ではソースリージョンおよび送信先リージョンでそれぞれ 1 rWRU のみ必要です。
  + 1KB アイテムに対して [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html) を呼び出す場合、2017.11.29 (レガシー) ではソースリージョンで 1 rWRU、送信先リージョンで 2 rWRU が必要ですが、2019.11.21 (現行) ではソースリージョンおよび送信先リージョンでそれぞれ 1 rWRU のみ必要です。

  次の表は、2 つのリージョンの 1 KB 項目に対する 2017.11.29 (レガシー) テーブルと 2019.11.21 (現行) テーブルの rWRU 消費量を示しています。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/V2globaltables_versions.html)
+ バージョン 2017.11.29 (レガシー) は、11 か所の AWS リージョンでのみ利用可能です。一方、バージョン 2019.11.21 (現行) は、すべての AWS リージョンで使用可能です。
+ バージョン 2017.11.29 (レガシー) グローバルテーブルを作成するには、まず空のリージョンテーブルのセットを作成し、次に [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html) API を呼び出してグローバルテーブルを作成します。バージョン 2019.11.21 (現行) グローバルテーブルを作成するには、[UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) API を呼び出して、既存のリージョンテーブルにレプリカを追加します。
+ バージョン 2017.11.29 (レガシー) では、新しいリージョンにレプリカを追加する前 (作成時を含む) に、テーブル内のすべてのレプリカを空にする必要があります。バージョン 2019.11.21 (現行) では、データが既に含まれているリージョンのテーブルに対してレプリカを追加および削除できます。
+ バージョン 2017.11.29 (レガシー) では、以下の専用コントロールプレーン API のセットを使用してレプリカを管理します。
  + [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)
  + [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)
  + [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)
  + [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)
  + [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)
  + [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)

  バージョン 2019.11.21 (現行) は、[DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html) API および [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) API を使用してレプリカを管理します。
+ バージョン 2017.11.29 (レガシー) は、書き込みごとに 2 つの DynamoDB Streams レコードを発行します。バージョン 2019.11.21 (現行) は、書き込みごとに 1 つの DynamoDB Streams レコードのみを発行します。
+ バージョン 2017.11.29 (レガシー) は、`aws:rep:deleting`、`aws:rep:updateregion`、`aws:rep:updatetime` の各属性を入力および更新します。バージョン 2019.11.21 (現行) は、これらの属性を入力または更新しません。
+ バージョン 2017.11.29 (レガシー) は、レプリカ間で [DynamoDB での Time to Live (TTL) の使用](TTL.md) 設定を同期しません。バージョン 2019.11.21 (現行) は、レプリカ間で TTL 設定を同期します。
+ バージョン 2017.11.29 (レガシー) は、TTL 削除を他のレプリカにレプリケートしません。バージョン 2019.11.21 (現行) は、TTL 削除をすべてのレプリカにレプリケートします。
+ バージョン 2017.11.29 (レガシー) は、レプリカ間で[自動スケーリング](AutoScaling.md)設定を同期しません。バージョン 2019.11.21 (現行) は、レプリカ間で自動スケーリング設定を同期します。
+ バージョン 2017.11.29 (レガシー) は、レプリカ間で[グローバルセカンダリインデックス (GSI)](GSI.md) 設定を同期しません。バージョン 2019.11.21 (現行) は、レプリカ間で GSI 設定を同期します。
+ バージョン 2017.11.29 (レガシー) は、レプリカ間で[保管中の暗号化](encryption.usagenotes.md)設定を同期しません。バージョン 2019.11.21 (現行) は、レプリカ間で保管中の暗号化設定を同期します。
+ バージョン 2017.11.29 (レガシー) は `PendingReplicationCount` メトリクスを発行します。バージョン 2019.11.21 (現行) は同メトリクスを発行しません。

## 現行バージョンへのアップグレード
<a name="upgrading-to-current-version"></a>

### グローバルテーブルのアップグレードに必要なアクセス許可
<a name="V2globaltables_versions.Notes-permissions"></a>

バージョン 2019.11.21 (現行) にアップグレードするには、レプリカがあるすべてのリージョンで `dynamodb:UpdateGlobalTableversion` アクセス許可が必要です。DynamoDB コンソールへのアクセス許可、およびテーブル表示に必要なアクセス許可に加えて、このアクセス許可が必要です。

次の IAM ポリシーは、グローバルテーブルをバージョン 2019.11.21 (現行) にアップグレードするアクセス許可を付与します。

```
{
    "version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:UpdateGlobalTableversion",
            "Resource": "*"
        }
    ]
}
```

次の IAM ポリシーは、2 つのリージョンにレプリカがある `Music` グローバルテーブルのみをバージョン 2019.11.21 (現行) にアップグレードするアクセス許可を付与します。

```
{
    "version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:UpdateGlobalTableversion",
            "Resource": [
                "arn:aws:dynamodb::123456789012:global-table/Music",
                "arn:aws:dynamodb:ap-southeast-1:123456789012:table/Music",
                "arn:aws:dynamodb:us-east-2:123456789012:table/Music"
            ]
        }
    ]
}
```

### アップグレード中の注意点
<a name="V2GlobalTablesUpgradeExpectations"></a>
+ すべてのグローバルテーブルレプリカは、アップグレード中も読み取りと書き込みのトラフィックを処理します。
+ テーブルのサイズとレプリカの数にもよりますが、アップグレードプロセスには、数分から数時間かかります。
+ アップグレードプロセス中、[TableStatus](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TableDescription.html#DDB-Type-TableDescription-TableStatus) の値は `ACTIVE` から `UPDATING` に変わります。テーブルのステータスを表示するには、[DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html) API を呼び出すか、DynamoDB コンソールの **[テーブル]** ビューを使用します。
+ テーブルのアップグレード中、自動スケーリングはグローバルテーブルのプロビジョニング済のキャパシティ設定を調整しません。アップグレード中は、テーブルを[オンデマンド](capacity-mode.md#capacity-mode-on-demand)キャパシティモードに設定することを強くお勧めします。
+ アップグレード中に自動スケーリングで[プロビジョニングされた](provisioned-capacity-mode.md)容量を使用する場合は、アップグレード中に予想されるトラフィックの増加に対応しスロットリングを回避するために、ポリシーの最小読み取りスループットと最小書き込みスループットを増やす必要があります。
+ `ReplicationLatency` メトリクスは、アップグレードプロセス中にレイテンシーのスパイクを一時的に報告したり、メトリクスデータのレポートを停止したりする場合があります。詳細については、「[ReplicationLatency](metrics-dimensions.md#ReplicationLatency)」を参照してください。
+ アップグレードプロセスが完了すると、テーブルのステータスは `ACTIVE` に変わります。

### アップグレード前、アップグレード中、アップグレード後の DynamoDB Streams の動作
<a name="V2GlobalTablesUpgradeDDBStreamsBehavior"></a>



- ****Put または Update****
  - **レプリカリージョン:** **ソース** / **アップグレード前の動作:** タイムスタンプの生成は [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) を使用して行われます。 / **アップグレード中の動作:** タイムスタンプの生成は [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) を使用して行われます。 / **アップグレード後の動作:** カスタマー表示タイムスタンプは生成されません。
  - **アップグレード前の動作:** 2 つの Streams レコードが生成されます。最初のレコードには、お客様が書き込んだ属性が含まれます。2 つ目のレコードには、aws:rep:\* 属性が含まれます。 / **アップグレード中の動作:** 2 つの Streams レコードが生成されます。最初のレコードには、お客様が書き込んだ属性が含まれます。2 つ目のレコードには、aws:rep:\* 属性が含まれます。 / **アップグレード後の動作:** お客様が作成した属性を含む 1 つの Streams レコードが生成されます。
  - **アップグレード前の動作:** お客様による書き込みごとに 2 つの rWCU が消費されます。 / **アップグレード中の動作:** お客様による書き込みごとに 2 つの rWCU が消費されます。 / **アップグレード後の動作:** お客様による書き込みごとに 1 つの rWCU が消費されます。
  - **アップグレード前の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード中の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード後の動作:** ReplicationLatency メトリクスは、CloudWatch に公開されます。
  - **レプリカリージョン:** **目的地** / **アップグレード前の動作:** レプリケーションは PutItem を使用して行われます。 / **アップグレード中の動作:** レプリケーションは PutItem を使用して行われます。 / **アップグレード後の動作:** レプリケーションは PutItem を使用して行われます。
  - **アップグレード前の動作:** お客様が作成した属性と aws:rep:\* 属性の両方を含む 1 つの Streams レコードが生成されます。 / **アップグレード中の動作:** お客様が作成した属性と aws:rep:\* 属性の両方を含む 1 つの Streams レコードが生成されます。 / **アップグレード後の動作:** お客様が作成した属性のみを含みレプリケーション属性を含まない 1 つの Streams レコードが生成されます。
  - **アップグレード前の動作:** アイテムが送信先のリージョンに存在する場合、1 rWCU が消費されます。アイテムが送信先のリージョンに存在しない場合、2 rWCU が消費されます。 / **アップグレード中の動作:** アイテムが送信先のリージョンに存在する場合、1 rWCU が消費されます。アイテムが送信先のリージョンに存在しない場合、2 rWCU が消費されます。 / **アップグレード後の動作:** お客様による書き込みごとに 1 つの rWCU が消費されます。
  - **アップグレード前の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード中の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード後の動作:** ReplicationLatency メトリクスは、CloudWatch に公開されます。

- ****削除**\***
  - **レプリカリージョン:** **ソース** / **アップグレード前の動作:** [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html) を使用して、より小さいタイムスタンプを持つすべてのアイテムを削除します。 / **アップグレード中の動作:** DeleteItem を使用して、より小さいタイムスタンプを持つすべてのアイテムを削除します。 / **アップグレード後の動作:** DeleteItem を使用して、より小さいタイムスタンプを持つすべてのアイテムを削除します。
  - **アップグレード前の動作:** お客様が作成した属性と aws:rep:\* 属性の両方を含む 1 つの Streams レコードが生成されます。 / **アップグレード中の動作:** お客様が作成した属性と aws:rep:\* 属性の両方を含む 1 つの Streams レコードが生成されます。 / **アップグレード後の動作:** お客様が作成した属性を含む 1 つの Streams レコードが生成されます。
  - **アップグレード前の動作:** お客様による削除ごとに 1 rWCU が消費されます。 / **アップグレード中の動作:** お客様による削除ごとに 1 rWCU が消費されます。 / **アップグレード後の動作:** お客様による削除ごとに 1 rWCU が消費されます。
  - **アップグレード前の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード中の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード後の動作:** ReplicationLatency メトリクスは、CloudWatch に公開されます。
  - **レプリカリージョン:** **目的地** / **アップグレード前の動作:** 2 つのフェーズでの削除が行われます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/V2globaltables_versions.html) / **アップグレード中の動作:** DeleteItem を使用してアイテムを削除します。 / **アップグレード後の動作:** DeleteItem を使用してアイテムを削除します。
  - **アップグレード前の動作:** 2 つの Streams レコードが生成されます。1 つ目のレコードには、aws:rep:deleting フィールドへの変更が含まれます。2 つ目のレコードには、お客様が作成した属性と aws:rep:\* 属性が含まれます。 / **アップグレード中の動作:** お客様が作成した属性を含む 1 つの Stream レコードが生成されます。 / **アップグレード後の動作:** お客様が作成した属性を含む 1 つの Stream レコードが生成されます。
  - **アップグレード前の動作:** お客様による削除ごとに 2 つの rWCU が消費されます。 / **アップグレード中の動作:** お客様による削除ごとに 1 rWCU が消費されます。 / **アップグレード後の動作:** お客様による削除ごとに 1 rWCU が消費されます。
  - **アップグレード前の動作:** ReplicationLatency メトリクスおよび PendingReplicationCount メトリクスは、CloudWatch に公開されます。 / **アップグレード中の動作:** ReplicationLatency メトリクスは、CloudWatch に公開されます。 / **アップグレード後の動作:** ReplicationLatency メトリクスは、CloudWatch に公開されます。



### バージョン 2019.11.21 (現行) へのアップグレード
<a name="V2globaltables_versions.upgrade"></a>

AWS マネジメントコンソール を使用して DynamoDB グローバルテーブルのバージョンをアップグレードするには、次の手順に従います。

**グローバルテーブルをバージョン 2019.11.21 (現行) にアップグレードするには**

1. DynamoDB コンソール ([https://console.aws.amazon.com/dynamodb/home](https://console.aws.amazon.com/dynamodb/home)) を開きます。

1. コンソールの左側のナビゲーションペインで、**[テーブル]** を選択し、バージョン 2019.11.21 (現行) にアップグレードするグローバルテーブルを選択します。

1. [**グローバルテーブル**] タブを選択します。

1. [**Update version (バージョンの更新)**] を選択します。  
![[Update version (バージョンの更新)] ボタンを示すコンソールのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/images/GlobalTables-upgrade.png)

1. 新しい要件を読んで同意してから、[**バージョンを更新**] を選択します。

1. アップグレードプロセスが完了すると、コンソールに表示されるグローバルテーブルのバージョンが **2019.11.21** に変更されます。