

# 创建全局表（版本 2017.11.29）
<a name="globaltables.tutorial"></a>

**重要**  
 本文档适用于版本 2017.11.29（旧版）的全局表，对于新的全局表，应避免使用该版本。客户应尽可能使用[全局表版本 2019.11.21（当前版）](GlobalTables.md)，因为相比 2017.11.29（旧版），它提供了更大的灵活性、更高的效率并且消耗的写入容量更少。  
要确定正在使用的版本，请参阅[确定全局表的版本](V2globaltables_versions.md#globaltables.DetermineVersion)。要将现有全局表从版本 2017.11.29（旧版）更新到版本 2019.11.21（当前版），请参阅[DynamoDB 全局表版本](V2globaltables_versions.md)。

本节介绍如何使用 Amazon DynamoDB 控制台或 AWS Command Line Interface (AWS CLI) 创建全局表。

**Topics**
+ [创建全局表（控制台）](#creategt_console)
+ [创建全局表（AWS CLI）](#creategt_cli)

## 创建全局表（控制台）
<a name="creategt_console"></a>

按照以下步骤，使用控制台创建全局表。以下示例创建一个全局表，其副本表位于美国和欧洲。

1. 打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/home](https://console.aws.amazon.com/dynamodb/home)。对于本示例，请选择 us-east-2（美国东部俄亥俄州）区域。

1. 在控制台左侧的导航窗格中，选择**表**。

1. 选择**创建表**。

   对于 **表名称**，输入 **Music**。

   对于**主键**，输入 **Artist**。选择**添加排序键**，然后输入 **SongTitle**。（**Artist** 和 **SongTitle** 均应为字符串。）

   要创建表，请选择**创建**。此表在新全局表中用作第一个副本表。这是您稍后添加的其他副本表的原型。

1. 选择**全局表**选项卡，然后选择**创建版本 2017.11.29（旧版）副本**。  
![\[显示“创建版本 2017.11.29（旧版）副本”按钮的控制台屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/images/GlobalTables-old.png)

1. 从**可用复制区域**下拉菜单，选择**美国西部（俄勒冈州）**。

   控制台将进行检查，以确保所选区域中不存在同名的表。如果有同名的表，则必须删除现有表，然后才能在该区域创建新的副本表。

1. 选择**创建副本**。这将启动美国西部（俄勒冈州）的表创建过程。

   选定表（以及任何其他副本表）的**全局表**选项卡将显示该表已在多个区域中复制。

1. 现在，添加另一个区域，以便您跨美国和欧洲复制并同步您的全局表。为此，请重复步骤 5，不过这次指定**欧洲地区（法兰克福）**而非**美国西部（俄勒冈州）**。

1. 在美国东部（俄亥俄）区域，您应仍使用 AWS 管理控制台。选择左侧导航菜单中的**项目**，选择 **Music** 表，然后选择**创建项目**。

   1. 对于 **Artist**，输入 **item\$11**。

   1. 对于 **SongTitle**，输入 **Song Value 1**。

   1. 要写入该项目，请选择**创建项目**。

1. 稍后，该项目将跨您的全局表的所有三个区域复制。要验证这一点，请在控制台中，转到右上角的区域选择器，并选择**欧洲地区（法兰克福）**。欧洲地区（法兰克福）的 `Music` 表应包含新的项目。

1. 重复步骤 9，然后选择**美国西部（俄勒冈州）**以验证该区域中的复制。

## 创建全局表（AWS CLI）
<a name="creategt_cli"></a>

按照以下步骤，使用 AWS CLI 创建全局表 `Music`。以下示例创建一个全局表，其副本表位于美国和欧洲。

1. 创建新表 (`Music`)，并启用 DynamoDB Streams (`NEW_AND_OLD_IMAGES`)。

   ```
   aws dynamodb create-table \
       --table-name Music \
       --attribute-definitions \
           AttributeName=Artist,AttributeType=S \
           AttributeName=SongTitle,AttributeType=S \
       --key-schema \
           AttributeName=Artist,KeyType=HASH \
           AttributeName=SongTitle,KeyType=RANGE \
       --provisioned-throughput \
           ReadCapacityUnits=10,WriteCapacityUnits=5 \
       --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \
       --region us-east-2
   ```

1. 在美国东部（弗吉尼亚州北部）创建相同 `Music` 表。

   ```
   aws dynamodb create-table \
       --table-name Music \
       --attribute-definitions \
           AttributeName=Artist,AttributeType=S \
           AttributeName=SongTitle,AttributeType=S \
       --key-schema \
           AttributeName=Artist,KeyType=HASH \
           AttributeName=SongTitle,KeyType=RANGE \
       --provisioned-throughput \
           ReadCapacityUnits=10,WriteCapacityUnits=5 \
       --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \
       --region us-east-1
   ```

1. 创建全局表 (`Music`)，由副本表组成 `us-east-2` 和 `us-east-1` 区域。

   ```
   aws dynamodb create-global-table \
       --global-table-name Music \
       --replication-group RegionName=us-east-2 RegionName=us-east-1 \
       --region us-east-2
   ```
**注意**  
 全局表名称 (`Music`) 必须与每个副本表的名称匹配 (`Music`)。有关更多信息，请参阅 [全局表的最佳实践](globaltables-bestpractices.md)。

1. 在欧洲地区（爱尔兰）中创建另一个表，其设置与您在步骤 1 和步骤 2 中创建的设置相同。

   ```
   aws dynamodb create-table \
       --table-name Music \
       --attribute-definitions \
           AttributeName=Artist,AttributeType=S \
           AttributeName=SongTitle,AttributeType=S \
       --key-schema \
           AttributeName=Artist,KeyType=HASH \
           AttributeName=SongTitle,KeyType=RANGE \
       --provisioned-throughput \
           ReadCapacityUnits=10,WriteCapacityUnits=5 \
       --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \
       --region eu-west-1
   ```

   执行此步骤后，将新表添加到 `Music` 全局表。

   ```
   aws dynamodb update-global-table \
       --global-table-name Music \
       --replica-updates 'Create={RegionName=eu-west-1}' \
       --region us-east-2
   ```

1. 要验证复制是否正常工作，请将一个新项添加到美国东部（俄亥俄）的 `Music` 表。

   ```
   aws dynamodb put-item \
       --table-name Music \
       --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
       --region us-east-2
   ```

1. 等待几秒钟，然后检查该项目是否已成功复制到美国东部（弗吉尼亚州北部）和欧洲地区（爱尔兰）。

   ```
   aws dynamodb get-item \
       --table-name Music \
       --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
       --region us-east-1
   ```

   ```
   aws dynamodb get-item \
       --table-name Music \
       --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
       --region eu-west-1
   ```