

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

# 为 Amazon Keyspaces 配置多区域复制（适用于 Apache Cassandra）
<a name="multiRegion-replication-configure"></a>

您可以使用控制台、Cassandra 查询语言 (CQL) 或，在 Amazon Keyspaces 中创建和管理多区域密钥空间和表。 AWS Command Line Interface 

本节将举例说明如何创建和管理多区域键空间和表。在多区域键空间中创建的所有表都会自动从键空间继承多区域设置。

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

**Topics**
+ [配置创建多区域键空间和表所需的 IAM 权限](howitworks_replication_permissions.md)
+ [配置向密钥空间添加所需的 AWS 区域 IAM 权限](howitworks_replication_permissions_addReplica.md)
+ [在 Amazon Keyspaces 中创建多区域键空间](keyspaces-mrr-create.md)
+ [在 Amazon Keyspaces 的密钥空间中添加一个 AWS 区域](keyspaces-multi-region-add-replica.md)
+ [向密钥空间添加新区域时检查复制进度](keyspaces-multi-region-replica-status.md)
+ [使用 Amazon Keyspaces 中的默认设置创建多区域表](tables-mrr-create-default.md)
+ [在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表](tables-mrr-create-provisioned.md)
+ [在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置](tables-mrr-autoscaling.md)
+ [在 Amazon Keyspaces 中查看多区域表的预置容量和自动扩缩设置](tables-mrr-view.md)
+ [在 Amazon Keyspaces 中关闭表的自动扩缩](tables-mrr-autoscaling-off.md)
+ [在 Amazon Keyspaces 中手动设置多区域表的预置容量](tables-mrr-capacity-manually.md)

# 配置创建多区域键空间和表所需的 IAM 权限
<a name="howitworks_replication_permissions"></a>

要成功创建多区域键空间和表，IAM 主体需要能够创建服务相关角色。该服务相关角色是一种独特的 IAM 角色类型，由 Amazon Keyspaces 预定义。它包括 Amazon Keyspaces 代表您执行操作所需的所有权限。有关服务相关角色的更多信息，请参阅 [使用角色进行 Amazon Keyspaces 多区域复制](using-service-linked-roles-multi-region-replication.md)。

要创建多区域复制所需的服务相关角色，IAM 委托人的策略需要以下元素：
+ `iam:CreateServiceLinkedRole`：主体可以执行的**操作**。
+ `arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication`：可对其执行操作的**资源**。
+ `iam:AWSServiceName": "replication.cassandra.amazonaws.com`— 此角色可以附加到的唯一 AWS 服务是 Amazon Keyspaces。

以下是向主体授予创建多区域键空间和表所需的最低权限的策略示例。

```
{
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication",
            "Condition": {"StringLike": {"iam:AWSServiceName": "replication.cassandra.amazonaws.com"}}
}
```

有关多区域键空间和表的其他 IAM 权限，请参阅《服务授权参考》**中的 [Amazon Keyspaces（Apache Cassandra 兼容）的操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkeyspacesforapachecassandra.html)。

# 配置向密钥空间添加所需的 AWS 区域 IAM 权限
<a name="howitworks_replication_permissions_addReplica"></a>

要向密钥空间添加区域，IAM 委托人需要以下权限：
+ `cassandra:Alter`
+ `cassandra:AlterMultiRegionResource`
+ `cassandra:Create`
+ `cassandra:CreateMultiRegionResource`
+ `cassandra:Select`
+ `cassandra:SelectMultiRegionResource`
+ `cassandra:Modify`
+ `cassandra:ModifyMultiRegionResource`

如果在启用了 auto Scaling 的预配置模式下配置表，则需要以下额外权限。
+ `application-autoscaling:RegisterScalableTarget`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:DescribeScalingPolicies`

要成功将区域添加到单区域密钥空间，IAM 委托人还需要能够创建服务相关角色。该服务相关角色是一种独特的 IAM 角色类型，由 Amazon Keyspaces 预定义。它包括 Amazon Keyspaces 代表您执行操作所需的所有权限。有关服务相关角色的更多信息，请参阅 [使用角色进行 Amazon Keyspaces 多区域复制](using-service-linked-roles-multi-region-replication.md)。

要创建多区域复制所需的服务相关角色，IAM 委托人的策略需要以下元素：
+ `iam:CreateServiceLinkedRole`：主体可以执行的**操作**。
+ `arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication`：可对其执行操作的**资源**。
+ `iam:AWSServiceName": "replication.cassandra.amazonaws.com`— 此角色可以附加到的唯一 AWS 服务是 Amazon Keyspaces。

以下是向委托人授予向密钥空间添加区域所需的最低权限的策略示例。

```
{
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication",
            "Condition": {"StringLike": {"iam:AWSServiceName": "replication.cassandra.amazonaws.com"}}
}
```

# 在 Amazon Keyspaces 中创建多区域键空间
<a name="keyspaces-mrr-create"></a>

本节将举例说明如何创建多区域键空间。您可以使用 Amazon Keyspaces 控制台、CQL 或 AWS CLI执行此操作。在多区域键空间中创建的所有表都会自动从键空间继承多区域设置。

**注意**  
当您创建多区域键空间时，Amazon Keyspaces 会在您的账户中创建一个名为 `AWSServiceRoleForAmazonKeyspacesReplication` 的服务相关角色。此角色允许 Amazon Keyspaces 代表您将写入复制到多区域表的所有副本。要了解更多信息，请参阅[使用角色进行 Amazon Keyspaces 多区域复制](using-service-linked-roles-multi-region-replication.md)。

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

**创建多区域键空间（控制台）**

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

1. 在导航窗格中，选择 **Keyspaces (键空间)**，然后选择 **Create keyspace (创建键空间)**。

1. 对于**键空间名称**，输入键空间的名称。

1. 在**多区域复制**部分，您可以添加列表中可用的其他区域。

1. 要完成操作，请选择**创建键空间**。

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

**使用 CQL 创建多区域键空间**

1. 要创建多区域密钥空间，请使用指定`NetworkTopologyStrategy` AWS 区域 要在其中复制密钥空间。您必须包括您当前的区域和至少一个其他区域。

   键空间中的所有表都会从键空间继承复制策略。您无法更改表级别的复制策略。

   `NetworkTopologyStrategy`— 每个区域的重复系数为三，因为默认情况下，Amazon Keyspaces 会在同一个[AWS 区域区域内的三个可用区](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)之间复制数据。

   下面是一个示例 CQL 语句。

   ```
   CREATE KEYSPACE mykeyspace
   WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3' };
   ```

1. 您可以使用 CQL 语句查询 `system_multiregion_info` 键空间中的 `tables` 表，以编程方式列出您指定的多区域表的区域和状态。下面是一个代码示例。

   ```
   SELECT * from system_multiregion_info.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
   ```

   语句的输出如下所示：

   ```
    keyspace_name  | table_name     | region         | status
   ----------------+----------------+----------------+--------
    mykeyspace     | mytable        | us-east-1      | ACTIVE
    mykeyspace     | mytable        | ap-southeast-1 | ACTIVE
    mykeyspace     | mytable        | eu-west-1      | ACTIVE
   ```

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

**使用创建新的多区域密钥空间 AWS CLI**
+ 要创建多区域键空间，您可以使用以下 CLI 语句。请指定您当前的区域和 `regionList` 中的至少一个其他区域。

  ```
  aws keyspaces create-keyspace --keyspace-name mykeyspace \
  --replication-specification replicationStrategy=MULTI_REGION,regionList=us-east-1,eu-west-1
  ```

------

要创建多区域表，请参阅[使用 Amazon Keyspaces 中的默认设置创建多区域表](tables-mrr-create-default.md)和[在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表](tables-mrr-create-provisioned.md)。

# 在 Amazon Keyspaces 的密钥空间中添加一个 AWS 区域
<a name="keyspaces-multi-region-add-replica"></a>

您可以 AWS 区域 向密钥空间添加新的单区域密钥空间或多区域密钥空间。新的副本区域将应用于密钥空间中的所有表。

要将单区域更改为多区域密钥空间，必须为密钥空间中的所有表启用客户端时间戳。有关更多信息，请参阅 [Amazon Keyspaces 中的客户端时间戳](client-side-timestamps.md)。

如果您要向多区域密钥空间添加其他区域，Amazon Keyspaces 必须使用对每个现有表进行一次性跨区域还原来将现有表复制到新区域。每个表的恢复费用按每 GB 计费，有关更多信息，请参阅 Amazon Keyspaces（适用于 Apache Cassandra）定价页面上的[备份和恢复](https://aws.amazon.com/keyspaces/pricing/#:~:text=per%20GB-month-,Restoring%20a%20table,-Restoring%20a%20table)。此恢复操作不收取跨区域数据传输费用。除数据外，除标签之外的所有表属性都将复制到新区域。

您可以使用 CQL 中的`ALTER KEYSPACE`语句、带的`update-keyspace`命令或控制台将新区域添加到 Amazon Keyspaces 中的单个或多区域密钥空间。 AWS CLI为了成功运行对账单，你使用的账户必须位于密钥空间已经可用的区域之一。在添加副本时，您无法对正在更新和复制的资源执行任何其他数据定义语言 (DDL) 操作。

有关添加区域所需权限的更多信息，请参阅[配置向密钥空间添加所需的 AWS 区域 IAM 权限](howitworks_replication_permissions_addReplica.md)。

**注意**  
向单区域密钥空间添加其他区域时，Amazon Keyspaces 会在您的账户中使用该名称创建一个与服务相关的角色。`AWSServiceRoleForAmazonKeyspacesReplication`此角色允许 Amazon Keyspaces 将表复制到新区域，并代表您将写入从一个表复制到多区域表的所有副本。要了解更多信息，请参阅[使用角色进行 Amazon Keyspaces 多区域复制](using-service-linked-roles-multi-region-replication.md)。

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

按照以下步骤使用 Amazon Keyspaces 控制台向密钥空间添加区域。

**向密钥空间添加区域（控制台）**

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

1. 在导航窗格中，选择 **Keyspaces**，然后从列表中选择一个密钥空间。

1. 选择 **AWS 区域** 选项卡。

1. 在**AWS 区域**选项卡上，选择**添加区域**。

1. 在 “**添加区域**” 对话框中，选择要添加到密钥空间的其他区域。

1. 要完成操作，请选择 “**添加**”。

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

**使用 CQL 向密钥空间添加区域**
+ 要向密钥空间添加新区域，可以使用以下语句。在此示例中，密钥空间已在美国东部（弗吉尼亚北部）地区和美国西部（俄勒冈）地区可用，CQL 语句正在添加美国西部区域（加利福尼亚北部）区域。

  ```
  ALTER KEYSPACE my_keyspace
  WITH REPLICATION = {
      'class': 'NetworkTopologyStrategy',
      'us-east-1': '3',
      'us-west-2': '3',
      'us-west-1': '3'
  } AND CLIENT_SIDE_TIMESTAMPS = {'status': 'ENABLED'};
  ```

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

**使用向密钥空间添加区域 AWS CLI**
+ 要使用 CLI 向密钥空间添加新区域，可以使用以下示例。请注意，`client-side-timestamps` 默认值为 `DISABLED`。使用`update-keyspace`命令时，必须将值更改为`ENABLED`。

  ```
  aws keyspaces update-keyspace \
  --keyspace-name my_keyspace \
  --replication-specification '{"replicationStrategy": "MULTI_REGION", "regionList": ["us-east-1", "eu-west-1", "eu-west-3"] }' \
  --client-side-timestamps '{"status": "ENABLED"}'
  ```

------

# 向密钥空间添加新区域时检查复制进度
<a name="keyspaces-multi-region-replica-status"></a>

向 Amazon Keyspaces 密钥空间添加新区域是一项长期运行的操作。要跟踪进度，您可以使用本节中显示的查询。

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

**使用 CQL 验证添加区域的进度**
+  要验证在给定密钥空间中创建新表副本的进度，可以查询该`system_multiregion_info.keyspaces`表。下面是一个示例 CQL 语句。

  ```
  SELECT keyspace_name, region, status, tables_replication_progress
  FROM system_multiregion_info.keyspaces
  WHERE keyspace_name = 'my_keyspace';
  ```

  当复制操作正在进行时，状态会显示新区域中表创建的进度。这是一个示例，其中 10 张表中有 5 张已复制到新区域。

  ```
   keyspace_name | region    | status    | tables_replication_progress
  ---------------+-----------+-----------+-------------------------
     my_keyspace | us-east-1 | Updating  | 
     my_keyspace | us-west-2 | Updating  | 
     my_keyspace | eu-west-1 | Creating  | 50%
  ```

  成功完成复制过程后，输出应类似于此示例。

  ```
   keyspace_name | region    | status
  ---------------+-----------+-----------
     my_keyspace | us-east-1 | Active
     my_keyspace | us-west-2 | Active
     my_keyspace | eu-west-1 | Active
  ```

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

**使用验证 AWS CLI 添加区域的进度**
+ 要确认给定密钥空间的表副本创建状态，可以使用以下示例。

  ```
  aws keyspaces get-keyspace \
  --keyspace-name my_keyspace
  ```

  输出应类似于以下示例：

  ```
  {
      "keyspaceName": "my_keyspace",
      "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/",
      "replicationStrategy": "MULTI_REGION",
      "replicationRegions": [
          "us-east-1",
          "eu-west-1"
      ]
      "replicationGroupStatus": [
          {
              "RegionName": "us-east-1",
              "KeyspaceStatus": "Active"
          },
          {
              "RegionName": "eu-west-1",
              "KeyspaceStatus": "Creating",
              "TablesReplicationProgress": "50.0%"
          }
      ]
  }
  ```

------

# 使用 Amazon Keyspaces 中的默认设置创建多区域表
<a name="tables-mrr-create-default"></a>

本节将举例说明如何使用所有默认设置在按需模式下创建多区域表。您可以使用 Amazon Keyspaces 控制台、CQL 或 AWS CLI执行此操作。在多区域键空间中创建的所有表都会自动从键空间继承多区域设置。

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

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

**使用默认设置创建多区域表（控制台）**

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

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

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

1. 对于**表名称**，输入表的名称。正在其中复制此表的 AWS 区域 会显示在信息框中。

1. 继续设置表架构。

1. 在**表格设置**下，继续使用**默认设置**选项。请注意多区域表的以下默认设置。
   + **容量模式** - 默认容量模式为**按需**。有关配置**预置**模式的更多信息，请参阅[在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表](tables-mrr-create-provisioned.md)。
   + **加密密钥管理**：仅支持 **AWS 拥有的密钥**选项。
   + **客户端时间戳**：多区域表需要此功能。
   + 如果您需要为该表及其所有副本启用生存时间 (TTL)，请选择**自定义设置**。
**注意**  
您将无法更改现有多区域表的 TTL 设置。

1. 要完成操作，请选择**创建表**。

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

**使用默认设置在按需模式下创建多区域表**
+ 要使用默认设置创建多区域表，可以使用以下 CQL 语句。

  ```
  CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck))
      WITH CUSTOM_PROPERTIES = {
  	'capacity_mode':{
  		'throughput_mode':'PAY_PER_REQUEST'
  	},
  	'point_in_time_recovery':{
  		'status':'enabled'
  	},
  	'encryption_specification':{
  		'encryption_type':'AWS_OWNED_KMS_KEY'
  	},
  	'client_side_timestamps':{
  		'status':'enabled'
  	}
  };
  ```

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

**使用 AWS CLI**

1. 要使用默认设置创建多区域表，您只需要指定架构即可。您可以使用以下示例：

   ```
   aws keyspaces create-table --keyspace-name mykeyspace --table-name mytable \
   --schema-definition 'allColumns=[{name=pk,type=int}],partitionKeys={name= pk}'
   ```

   命令的输出如下：

   ```
   {
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable"
   }
   ```

1. 要确认表的设置，可以使用以下语句。

   ```
   aws keyspaces get-table --keyspace-name mykeyspace --table-name mytable
   ```

   输出显示多区域表的所有默认设置。

   ```
   {
       "keyspaceName": "mykeyspace",
       "tableName": "mytable",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable",
       "creationTimestamp": "2023-12-19T16:50:37.639000+00:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "pk",
                   "type": "int"
               }
           ],
           "partitionKeys": [
               {
                   "name": "pk"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2023-12-19T16:50:37.639000+00:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       },
       "clientSideTimestamps": {
           "status": "ENABLED"
       },
       "replicaSpecifications": [
           {
               "region": "us-east-1",
               "status": "ACTIVE",
               "capacitySpecification": {
                   "throughputMode": "PAY_PER_REQUEST",
                   "lastUpdateToPayPerRequestTimestamp": 1702895811.469
               }
           },
           {
               "region": "eu-north-1",
               "status": "ACTIVE",
               "capacitySpecification": {
                   "throughputMode": "PAY_PER_REQUEST",
                   "lastUpdateToPayPerRequestTimestamp": 1702895811.121
               }
           }
       ]
   }
   ```

------

# 在 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
  ```

------

# 在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置
<a name="tables-mrr-autoscaling"></a>

本节包括如何使用控制台、CQL 和来管理已配置的多区域表的 Amazon Keyspaces 自动扩展设置的示例。 AWS CLI 有关常规自动扩缩配置选项及其工作原理的更多信息，请参阅[使用 Amazon Keyspaces 自动扩缩自动管理吞吐能力](autoscaling.md)。

请注意，如果您对多区域表使用预置容量模式，则必须始终使用 Amazon Keyspaces API 调用来配置自动扩缩。这是因为底层的 Application Auto Scaling API 操作不支持区域感知。

有关如何估算预置多区域表的写入容量吞吐量的更多信息，请参阅[在 Amazon Keyspaces 中为多区域表估算和预置容量](tables-multi-region-capacity.md)。

有关该 Amazon Keyspaces API 的更多信息，请参阅 [https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html)。

更新多区域表的预置模式或自动扩缩设置时，可以更新表每个副本的读取容量设置和读取自动扩缩配置。

但是，写入容量在所有副本之间保持同步，以确保有足够的容量在所有区域中复制写入。

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

**使用 CQL 更新多区域表的预置容量和自动扩缩设置**
+  您可以使用 `ALTER TABLE` 更新现有表的容量模式和自动扩缩设置。如果您要更新当前处于按需容量模式的表，则 `capacity_mode` 为必需。如果您的表已经处于预置容量模式，则可以忽略此字段。

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

  在同一语句中，您还可以通过更新表的 `replica_updates` 属性来更新特定区域中表副本的读取容量和自动扩缩设置。下面是一个示例语句。

  ```
  ALTER TABLE mykeyspace.mytable
  WITH CUSTOM_PROPERTIES = {  
      'capacity_mode': {  
          'throughput_mode': 'PROVISIONED',  
          'read_capacity_units': 1,  
          'write_capacity_units': 1  
      }
  } 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**
+ 要更新现有表的预配置模式和 auto Scaling 配置，您可以使用 AWS CLI `update-table`命令。

  请注意，您必须使用 Amazon Keyspaces CLI 命令来创建或修改多区域自动扩缩设置。这是因为 Amazon Keyspaces 用来代表您执行表容量自动扩缩的 Application Auto Scaling 服务不支持多个 AWS 区域。

   要更新特定区域中表副本的读取容量，您可以为表的 `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 update-table --keyspace-name mykeyspace --table-name mytable \
  --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 \
  --auto-scaling-specification file://auto-scaling.json \
  --replica-specifications file://replication.json
  ```

------

# 在 Amazon Keyspaces 中查看多区域表的预置容量和自动扩缩设置
<a name="tables-mrr-view"></a>

您可以使用 Amazon Keyspaces 控制台、CQL 或 AWS CLI查看多区域表的预置容量和自动扩缩设置。本节提供了如何使用 CQL 和执行此操作的 AWS CLI示例。

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

**使用 CQL 查看多区域表的预置容量和自动扩缩设置**
+ 要查看多区域表的自动扩缩配置，请使用以下命令。

  ```
  SELECT * FROM system_multiregion_info.autoscaling WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
  ```

  此命令的输出如下所示：

  ```
   keyspace_name  | table_name | region         | provisioned_read_capacity_autoscaling_update                                                                                                                                                                      | provisioned_write_capacity_autoscaling_update
  ----------------+------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    mykeyspace    |  mytable   | ap-southeast-1 | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}
    mykeyspace    |  mytable   | us-east-1      | {'minimum_units': 5, 'maximum_units': 20, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 70, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}
    mykeyspace    |  mytable   | eu-west-1      | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}
  ```

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

**使用查看多区域表的预配置容量和 auto scaling 设置 AWS CLI**
+ 要查看多区域表的自动扩缩配置，您可以使用 `get-table-auto-scaling-settings` 操作。下面是一个 CLI 命令示例。

  ```
  aws keyspaces get-table-auto-scaling-settings --keyspace-name mykeyspace --table-name mytable
  ```

  您应当看到如下输出。

  ```
  {
      "keyspaceName": "mykeyspace",
      "tableName": "mytable",
      "resourceArn": "arn:aws:cassandra:us-east-1:777788889999:/keyspace/mykeyspace/table/mytable",
      "autoScalingSpecification": {
          "writeCapacityAutoScaling": {
              "autoScalingDisabled": false,
              "minimumUnits": 5,
              "maximumUnits": 10,
              "scalingPolicy": {
                  "targetTrackingScalingPolicyConfiguration": {
                      "disableScaleIn": false,
                      "scaleInCooldown": 0,
                      "scaleOutCooldown": 0,
                      "targetValue": 50.0
                  }
              }
          },
          "readCapacityAutoScaling": {
              "autoScalingDisabled": false,
              "minimumUnits": 5,
              "maximumUnits": 20,
              "scalingPolicy": {
                  "targetTrackingScalingPolicyConfiguration": {
                      "disableScaleIn": false,
                      "scaleInCooldown": 60,
                      "scaleOutCooldown": 60,
                      "targetValue": 70.0
                  }
              }
          }
      },
      "replicaSpecifications": [
          {
              "region": "us-east-1",
              "autoScalingSpecification": {
                  "writeCapacityAutoScaling": {
                      "autoScalingDisabled": false,
                      "minimumUnits": 5,
                      "maximumUnits": 10,
                      "scalingPolicy": {
                          "targetTrackingScalingPolicyConfiguration": {
                              "disableScaleIn": false,
                              "scaleInCooldown": 0,
                              "scaleOutCooldown": 0,
                              "targetValue": 50.0
                          }
                      }
                  },
                  "readCapacityAutoScaling": {
                      "autoScalingDisabled": false,
                      "minimumUnits": 5,
                      "maximumUnits": 20,
                      "scalingPolicy": {
                          "targetTrackingScalingPolicyConfiguration": {
                              "disableScaleIn": false,
                              "scaleInCooldown": 60,
                              "scaleOutCooldown": 60,
                              "targetValue": 70.0
                          }
                      }
                  }
              }
          },
          {
              "region": "eu-north-1",
              "autoScalingSpecification": {
                  "writeCapacityAutoScaling": {
                      "autoScalingDisabled": false,
                      "minimumUnits": 5,
                      "maximumUnits": 10,
                      "scalingPolicy": {
                          "targetTrackingScalingPolicyConfiguration": {
                              "disableScaleIn": false,
                              "scaleInCooldown": 0,
                              "scaleOutCooldown": 0,
                              "targetValue": 50.0
                          }
                      }
                  },
                  "readCapacityAutoScaling": {
                      "autoScalingDisabled": false,
                      "minimumUnits": 5,
                      "maximumUnits": 10,
                      "scalingPolicy": {
                          "targetTrackingScalingPolicyConfiguration": {
                              "disableScaleIn": false,
                              "scaleInCooldown": 60,
                              "scaleOutCooldown": 60,
                              "targetValue": 50.0
                          }
                      }
                  }
              }
          }
      ]
  }
  ```

------

# 在 Amazon Keyspaces 中关闭表的自动扩缩
<a name="tables-mrr-autoscaling-off"></a>

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

**重要**  
我们建议对使用预置容量模式的多区域表使用自动扩缩。有关更多信息，请参阅 [在 Amazon Keyspaces 中为多区域表估算和预置容量](tables-multi-region-capacity.md)。

**注意**  
要删除 Application Auto Scaling 使用的服务相关角色，您必须在所有 AWS 区域中禁用账户中所有表的自动扩缩。

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

**在控制台上关闭现有多区域表的 Amazon Keyspaces 自动扩缩**

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

1. 选择要处理的表，然后选择**容量**选项卡。

1. 在**容量设置**部分中，选择**编辑**。

1. 要禁用 Amazon Keyspaces 自动扩缩，请清除**自动扩展**复选框。禁用自动扩缩会在 Application Auto Scaling 中取消将表注册为可扩展目标。要删除 Application Auto Scaling 用于访问 Amazon Keyspaces 表的服务相关角色，请按照[删除适用于 Amazon Keyspaces 的服务相关角色](using-service-linked-roles-app-auto-scaling.md#delete-service-linked-role-app-auto-scaling)中的步骤操作。

1. 在定义自动扩展设置时，选择 **Save (保存)**。

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

**使用 CQL 关闭多区域表的自动扩缩**
+  您可以使用 `ALTER TABLE` 关闭现有表的自动扩缩。请注意，您无法为单个表副本关闭自动扩缩。

  在以下示例中，为表的读取容量关闭了自动扩缩。

  ```
  ALTER TABLE mykeyspace.mytable
  WITH AUTOSCALING_SETTINGS = {
      'provisioned_read_capacity_autoscaling_update': {
          'autoscaling_disabled': true
      }
  };
  ```

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

**使用关闭多区域表的 auto 缩放 AWS CLI**
+  您可以使用 AWS CLI `update-table`命令关闭现有表的 auto 缩放。请注意，您无法为单个表副本关闭自动扩缩。

  在以下示例中，为表的读取容量关闭了自动扩缩。

  ```
  aws keyspaces update-table --keyspace-name mykeyspace --table-name mytable 
             \ --auto-scaling-specification readCapacityAutoScaling={autoScalingDisabled=true}
  ```

------

# 在 Amazon Keyspaces 中手动设置多区域表的预置容量
<a name="tables-mrr-capacity-manually"></a>

如果您必须关闭多区域表的自动扩缩，则可以使用 CQL 或 AWS CLI手动为副本表预置表的读取容量。

**注意**  
我们建议对使用预置容量模式的多区域表使用自动扩缩。有关更多信息，请参阅 [在 Amazon Keyspaces 中为多区域表估算和预置容量](tables-multi-region-capacity.md)。

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

**使用 CQL 手动设置多区域表的预置容量**
+ 您可以使用 `ALTER TABLE` 手动为副本表预置表的读取容量。

  ```
  ALTER TABLE mykeyspace.mytable
  WITH CUSTOM_PROPERTIES = {  
      'capacity_mode': {  
          'throughput_mode': 'PROVISIONED',  
          'read_capacity_units': 1,  
          'write_capacity_units': 1  
      },
      'replica_updates': {
          'us-east-1': {
              'read_capacity_units': 2
           }
      }
  };
  ```

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

**使用手动设置多区域表的预配置容量 AWS CLI**
+ 如果您必须关闭多区域表的自动扩缩，则可以使用 `update-table` 手动为副本表预置表的读取容量。

  ```
  aws keyspaces update-table --keyspace-name mykeyspace --table-name mytable \
  --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 \
  --replica-specifications region="us-east-1",readCapacityUnits=5
  ```

------