创建全局表 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建全局表

DynamoDB 全局表有两种版本:版本 2019.11.21(当前)版本 2017.11.29。要了解您正在使用的版本,请参阅确定版本

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

创建全局表 (控制台)

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

  1. 通过以下网址打开 DynamoDB 控制台:https://console.amazonaws.cn/dynamodb/home。对于本示例,请 us-east-2(美国东部俄亥俄州)区域。

  2. 在控制台左侧的导航窗格中,选择 Tables (表)

  3. 选择 Create Table

    对于表名称,输入 Music

    对于 Primary key (主键),输入 Artist。 选择 Add sort key (添加排序键),然后输入 SongTitle。(ArtistSongTitle 均应为字符串。)

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

  4. 选择全局表选项卡,然后选择启用流。保留视图类型的默认值(新旧映像)。

  5. 选择 Add region,然后选择 Global table 2017.11.29 mode。您现在可以选择要在其中部署另一个副本表的另一个区域。在这种情况下,请选择 美国西部(俄勒冈),然后选择 Continue (继续)。这将在 美国西部(俄勒冈) 中启动表创建过程。

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

    所选表(以及任何其他副本表)的 Global Table (全局表) 选项卡将显示该表已在多个区域中复制。

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

  7. 在 us-east-2(美国东部俄亥俄州)区域,您应仍使用 AWS 管理控制台。对于音乐表,选择项目选项卡,然后选择创建项目。对于 Artist,输入 item_1。 对于 SongTitle,输入 Song Value 1。 要写入项目,请选择 Save (保存)

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

    对 美国西部(俄勒冈) 重复此步骤。

创建全局表 (AWS CLI)

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

  1. 在美国东部(俄亥俄州)中创建新表(Music),同时启用 DynamoDB 流 (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
  2. 在美国东部(弗吉尼亚北部)中创建相同的 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
  3. Musicus-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) 的名称匹配。有关更多信息,请参阅管理全局表的最佳实践和要求

  4. 在 欧洲(爱尔兰) 中创建另一个表,其设置与您在步骤 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
  5. 要验证复制是否正常工作,请将一个新项添加到Music中的 美国东部(俄亥俄州) 表。

    aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
  6. 等待几秒钟,然后检查该项目是否已成功复制到美国东部(弗吉尼亚北部)和欧洲(爱尔兰)。

    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