

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

# 在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表
<a name="tables-mrr-create-provisioned"></a>

本节将举例说明如何使用自动扩缩功能在预置模式下创建多区域表。您可以使用 Amazon Keyspaces 控制台、CQL 或 AWS CLI执行此操作。

有关支持的配置和多区域复制功能的更多信息，请参阅[Amazon Keyspaces 多区域复制使用说明](multiRegion-replication_usage-notes.md)。

要创建多区域键空间，请参阅[在 Amazon Keyspaces 中创建多区域键空间](keyspaces-mrr-create.md)。

当您在预置模式下使用自动扩缩设置创建新的多区域表时，您可以为该表指定对复制了该表的所有 AWS 区域 都有效的常规设置。然后，您可以覆盖每个副本的读取容量设置和读取自动扩缩设置。但是，写入容量在所有副本之间保持同步，以确保有足够的容量在所有区域中复制写入。

**注意**  
Amazon Keyspaces 自动扩缩需要存在一个代表您执行自动扩缩操作的服务相关角色 (`AWSServiceRoleForApplicationAutoScaling_CassandraTable`)。将自动为您创建此角色。有关更多信息，请参阅 [对 Amazon Keyspaces 使用服务相关角色](using-service-linked-roles.md)。

------
#### [ Console ]

**创建启用自动扩缩的多区域表**

1. [登录并在家中打开 Amazon Keyspaces 控制台。 AWS 管理控制台 https://console.aws.amazon.com/keyspaces/](https://console.aws.amazon.com/keyspaces/home)

1. 选择一个多区域键空间。

1. 在**表**选项卡上，选择**创建表**。

1. 在**创建表**页面的**表详细信息**部分中，选择一个键空间并为新表提供一个名称。

1. 在**列**部分，为您的表创建架构。

1. 在**主键**部分中，定义表的主键并选择可选的集群列。

1. 在**表设置**部分，选择**自定义设置**。

1. 继续**读取/写入容量设置**。

1. 对于 **Capacity mode (容量模式)**，选择 **Provisioned (预置)**。

1. 在 **Read capacity (读取容量)** 部分中，确认已选择 **Scale automatically(自动扩展)**。

   您可以选择为复制了该表的所有 AWS 区域 配置相同的读取容量单位。或者，您可以清除该复选框，并以不同的方式配置每个区域的读取容量。

   如果您选择以不同的方式配置每个区域的读取容量，则可以为每个表副本选择最小和最大读取容量单位以及目标利用率。
   + **最小容量单位**：输入表应始终支持的最小吞吐量级别的值。该值必须介于 1 和账户的每秒最大吞吐量配额（默认为 40000）之间。
   + **最大容量单位** - 输入要为表预置的最大吞吐量。该值必须介于 1 和账户的每秒最大吞吐量配额（默认为 40000）之间。
   + **目标利用率**：输入介于 20% 和 90% 之间的目标利用率。当流量超过定义的目标利用率时，容量将自动扩展。当流量低于定义的目标时，容量将自动重新缩减。
   + 如果要手动预置表的读取容量，请清除**自动扩展**复选框。此设置适用于表的所有副本。
**注意**  
为确保所有副本都有足够的读取容量，建议为预置多区域表配置 Amazon Keyspaces 自动扩缩。
**注意**  
要了解有关账户的默认配额以及如何增加此配额的更多信息，请参阅 [Amazon Keyspaces（Apache Cassandra 兼容）限额](quotas.md)。

1. 在**写入容量**部分中，确认已选择**自动扩展**。然后为表配置容量单位。写入容量单位在所有 AWS 区域 之间保持同步，以确保有足够的容量在所有区域中复制写入事件。
   + 如果要手动预置表的写入容量，请清除**自动扩展**复选框。此设置适用于表的所有副本。
**注意**  
为确保所有副本都有足够的写入容量，建议为预置多区域表配置 Amazon Keyspaces 自动扩缩。

1. 选择**创建表**。使用指定的自动扩展参数创建表。

------
#### [ Cassandra Query Language (CQL) ]

**通过 CQL 使用自动扩缩功能在预置容量模式下创建多区域表**
+ 要使用自动扩缩在预置模式下创建多区域表，必须先通过为表定义 `CUSTOM_PROPERTIES` 来指定容量模式。指定预置容量模式后，您可以使用 `AUTOSCALING_SETTINGS` 配置表的自动扩缩设置。

  有关自动扩缩设置、目标跟踪策略、目标值和可选设置的详细信息，请参阅[创建启用了自动扩缩的新表](autoscaling.createTable.md)。

  要定义特定区域中表副本的读取容量，您可以在表的 `replica_updates` 中配置以下参数：
  + 区域
  + 预置读取容量单位（可选）
  + 读取容量的自动扩缩设置（可选）

  以下示例显示了预置模式下多区域表的 `CREATE TABLE` 语句。一般写入和读取容量自动扩缩设置相同。但是，在扩展或缩减表的读取容量之前，读取自动扩缩设置指定了 60 秒的额外冷却时间。此外，美国东部（弗吉尼亚州北部）区域的读取容量自动扩缩设置高于其他副本的该设置。此外，目标值设置为 70% 而不是 50%。

  ```
  CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck))
  WITH CUSTOM_PROPERTIES = {  
      'capacity_mode': {  
          'throughput_mode': 'PROVISIONED',  
          'read_capacity_units': 5,  
          'write_capacity_units': 5  
      }
  } AND AUTOSCALING_SETTINGS = {
      'provisioned_write_capacity_autoscaling_update': {
          'maximum_units': 10,  
          'minimum_units': 5,  
          'scaling_policy': {
              'target_tracking_scaling_policy_configuration': {
                  'target_value': 50
              }  
          }  
      },
      'provisioned_read_capacity_autoscaling_update': {  
          'maximum_units': 10,  
          'minimum_units': 5,  
          'scaling_policy': {  
              'target_tracking_scaling_policy_configuration': {  
                  'target_value': 50,
                  'scale_in_cooldown': 60,  
                  'scale_out_cooldown': 60
              }  
          }  
      },
      'replica_updates': {
          'us-east-1': {
              'provisioned_read_capacity_autoscaling_update': {
                  'maximum_units': 20,
                  'minimum_units': 5,
                  'scaling_policy': {
                      'target_tracking_scaling_policy_configuration': {
                          'target_value': 70
                      } 
                  }
              }
          }
      }
  };
  ```

------
#### [ CLI ]

**使用 auto Scaling 在预配置模式下创建新的多区域表 AWS CLI**
+ 要在预置模式下使用自动扩缩配置创建多区域表，您可以使用 AWS CLI。请注意，必须使用 Amazon Keyspaces CLI `create-table` 命令来配置多区域自动扩缩设置。这是因为 Amazon Keyspaces 用来代表您执行自动扩缩的 Application Auto Scaling 服务不支持多个区域。

  有关自动扩缩设置、目标跟踪策略、目标值和可选设置的更多信息，请参阅[创建启用了自动扩缩的新表](autoscaling.createTable.md)。

  要定义特定区域中表副本的读取容量，您可以在表的 `replicaSpecifications` 中配置以下参数：
  + 区域
  + 预置读取容量单位（可选）
  + 读取容量的自动扩缩设置（可选）

  当您使用复杂的自动扩缩设置和不同的表副本配置创建预置多区域表时，建议从 JSON 文件加载表的自动扩缩设置和副本配置。

  要使用以下代码示例，您可以从 [auto-scaling.zip](samples/auto-scaling.zip) 下载示例 JSON 文件，然后提取 `auto-scaling.json` 和 `replication.json`。记下文件路径。

  在本示例中，JSON 文件位于当前目录下。有关不同的文件路径选项，请参阅[如何从文件加载参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)。

  ```
  aws keyspaces create-table --keyspace-name mykeyspace --table-name mytable \
  --schema-definition 'allColumns=[{name=pk,type=int},{name=ck,type=int}],partitionKeys=[{name=pk},{name=ck}]' \
  --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 \
  --auto-scaling-specification file://auto-scaling.json \
  --replica-specifications file://replication.json
  ```

------