

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

# 使用 Amazon Keyspaces 自动扩缩自动管理吞吐能力
<a name="autoscaling"></a>

许多数据库工作负载本质上是周期性的，或者难以提前进行预测。例如，考虑一个大多数用户在白天处于活跃状态的社交网络应用程序。数据库必须能够处理白天活动，但夜间不需要相同级别的吞吐量。

另一个示例是面临快速采用的新移动游戏应用程序。如果此游戏变得极受欢迎，它可能会超出可用的数据库资源，从而导致性能降低并使客户感到不满。这些类型的工作负载通常需要手动干预来扩展或缩减数据库资源，以便响应不断变化的使用量级别。

Amazon Keyspaces（Apache Cassandra 兼容）可以根据实际应用程序流量自动调整吞吐容量，从而帮助您有效地为可变工作负载预置吞吐容量。Amazon Keyspaces 使用 Application Auto Scaling 服务来代表您增加或减少表的读写容量。有关 Application Auto Scaling 的更多信息，请参阅 [Application Auto Scaling 用户指南](https://docs.aws.amazon.com/autoscaling/application/userguide/)。

**注意**  
要快速开始使用 Amazon Keyspaces 自动扩缩，请参阅[配置和更新 Amazon Keyspaces 自动扩缩策略](autoscaling.configure.md)。

## Amazon Keyspaces 自动扩缩的工作原理
<a name="autoscaling.HowItWorks"></a>

下图简要概述了 Amazon Keyspaces 自动扩缩如何管理表的吞吐容量。

![\[显示用户对 Amazon Keyspaces 表进行更改时所涉及的不同服务的示意图。这些服务包括亚马逊 CloudWatch、Amazon SNS和Application Auto Scaling，后者会根据用户的读取或写入使用情况发出ALTER TABLE语句来更改容量。\]](http://docs.aws.amazon.com/zh_cn/keyspaces/latest/devguide/images/keyspaces_auto-scaling.png)




要为表启用自动扩展，请创建*扩展策略*。扩展策略指定是要扩展读取容量还是写入容量（或二者），并为表指定最小的和最大的预置容量单位设置。

扩展策略还定义了 *目标利用率*。目标利用率是在某个时间点使用的容量单位与预置容量单位的比率（以百分比表示）。自动扩展使用*目标跟踪* 算法向上或向下调整表的预置吞吐量以响应实际工作负载。这样做的目的是使实际容量利用率保持在目标利用率或接近目标利用率。

 您可以为读取和写入容量设置介于 20% 和 90% 之间的自动扩展目标利用率值。默认的目标利用率为 70%。如果您的流量快速变化，并且您希望容量能够尽快开始扩展，则可以将目标利用率设置为较低的百分比。如果您的应用程序流量变化较慢，并且您希望降低吞吐量成本，则也可以将目标利用率设置为较高的百分比。

有关自动扩缩策略的更多信息，请参阅 [Application Auto Scaling 用户指南](https://docs.aws.amazon.com/autoscaling/application/userguide/)**中的 [Target tracking scaling policies for Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

当您创建扩展策略时，Amazon Keyspaces 会代表您创建两对亚马逊 CloudWatch 警报。每对警报均表示预置和使用的吞吐量设置的上限和下限。当表的实际利用率持续偏离目标利用率时，就会触发这些 CloudWatch 警报。要了解有关亚马逊的更多信息 CloudWatch，请参阅[亚马逊 CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

当其中一个 CloudWatch 警报被触发时，亚马逊简单通知服务 (Amazon SNS) Service 会向您发送通知（如果您已启用）。然后， CloudWatch 警报会调用 Application Auto Scaling 来评估您的扩展策略。这进而会向 Amazon Keyspaces 发出 Alter Table 请求，以便根据情况增加或减少表的预置容量。要了解有关 Amazon SNS 通知的更多信息，请参阅[设置 Amazon SNS 通知](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)。

Amazon Keyspaces 会处理 Alter Table 请求，方式是动态增加（或减少）表的预置吞吐容量，使它接近目标利用率。

**注意**  
仅当实际工作负载持续数分钟保持提高（或降低）时，Amazon Keyspaces 自动扩缩才会修改预置吞吐量设置。 目标跟踪算法寻求使目标使用率长期达到或接近选定值。表的内置容量暴增将容纳活动的短时间突增峰值。

## 多区域表的自动扩缩工作原理
<a name="autoscaling.multi-region"></a>

为确保在预配置容量模式下所有多区域表中的所有 AWS 区域 表副本始终有足够的读取和写入容量，我们建议您配置 Amazon Keyspaces 自动扩展。

在预置模式下使用启用自动扩缩的多区域表时，您无法为单个表副本禁用自动扩缩。但是您可以针对不同区域调整表的读取自动扩缩设置。例如，您可以针对复制了该表的每个区域，指定不同的读取容量和读取自动扩缩设置。

您为指定区域中的表副本配置的读取自动扩缩设置会覆盖该表的常规自动扩缩设置。但是，写入容量必须在所有表副本之间保持同步，以确保有足够的容量在所有区域中复制写入。

Amazon Keyspaces 自动扩缩会根据每个 AWS 区域 中的使用情况，独立更新该区域中的表的预置容量。因此，当自动扩缩处于活动状态时，每个区域中多区域表的预置容量可能会有所不同。

您可以使用 Amazon Keyspaces 控制台、API 或 CQL 配置多区域表及其副本的自动扩展设置。 AWS CLI有关如何创建和更新多区域表的自动扩缩设置的更多信息，请参阅[在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置](tables-mrr-autoscaling.md)。

**注意**  
如果您对多区域表使用自动扩缩功能，则必须始终使用 Amazon Keyspaces API 操作来配置自动扩缩设置。如果您直接使用 Application Auto Scaling API 操作来配置自动缩放设置，则无法指定多区域表的。 AWS 区域 这可能会导致配置不受支持。

## 使用说明
<a name="autoscaling.UsageNotes"></a>

在开始使用 Amazon Keyspaces 自动扩缩之前，您应了解以下内容：
+ Amazon Keyspaces 的自动扩展功能不适用于中东（阿联酋）地区。
+ Amazon Keyspaces 自动扩缩会根据您的扩缩策略在必要时增加读取容量或写入容量。所有 Amazon Keyspaces 配额仍将有效，如 [Amazon Keyspaces（Apache Cassandra 兼容）限额](quotas.md)中所述。
+ Amazon Keyspaces 自动扩缩不会阻止您手动修改预置的吞吐量设置。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 警报。
+ 如果您使用控制台创建预置了吞吐容量的表，则默认情况下将启用 Amazon Keyspaces 自动扩缩。您可以随时修改自动扩展设置。有关更多信息，请参阅 [为表关闭 Amazon Keyspaces 自动扩缩](autoscaling.turnoff.md)。
+ 如果您使用 CloudFormation 创建扩展策略，则应从中管理扩展策略， CloudFormation 以便堆栈与堆栈模板同步。如果您更改了 Amazon Keyspaces 的扩展策略，则在重置堆栈时，这些策略将被 CloudFormation 堆栈模板中的原始值覆盖。
+ 如果您使用 CloudTrail 监控Amazon Keyspaces的自动扩展，则可能会看到Application Auto Scaling在配置验证过程中拨打的呼叫提醒。您可以使用 `invokedBy` 字段筛选掉这些警报，其中包含用于这些验证检查的 `application-autoscaling.amazonaws.com`。

# 配置和更新 Amazon Keyspaces 自动扩缩策略
<a name="autoscaling.configure"></a>

您可以使用控制台、CQL 或 AWS Command Line Interface (AWS CLI) 为新表和现有表配置 Amazon Keyspaces 的自动扩展。您还可以修改自动扩缩设置或禁用自动扩缩。

 要获得更高级的功能，例如设置缩减和横向扩展冷却时间，我们建议您使用 CQL 或来管理 AWS CLI Amazon Keyspaces 扩展策略。

**Topics**
+ [配置 Amazon Keyspaces 自动扩缩的权限](autoscaling.permissions.md)
+ [创建启用了自动扩缩的新表](autoscaling.createTable.md)
+ [在现有表上配置自动扩缩](autoscaling.configureTable.md)
+ [查看表的 Amazon Keyspaces 自动扩缩配置](autoscaling.viewPolicy.md)
+ [为表关闭 Amazon Keyspaces 自动扩缩](autoscaling.turnoff.md)
+ [在亚马逊中查看 Amazon Keyspaces 表的自动扩展活动 CloudWatch](autoscaling.activity.md)

# 配置 Amazon Keyspaces 自动扩缩的权限
<a name="autoscaling.permissions"></a>

要开始使用，请确认主体具有创建和管理自动扩缩设置所需的适当权限。在 AWS Identity and Access Management (IAM) 中，需要使用 AWS 托管策略来管理 Amazon Keys `AmazonKeyspacesFullAccess` paces 扩展策略。

**重要**  
 需要 `application-autoscaling:*` 权限才能对表禁用自动扩展。您必须首先关闭表的自动扩缩，然后才能将其删除。

要针对 Amazon Keyspaces 控制台访问和 Amazon Keyspaces 自动扩缩设置 IAM 用户或角色，请添加以下策略。

**附加 `AmazonKeyspacesFullAccess` 策略**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台控制面板上，选择**用户**，然后从列表中选择您的 IAM 用户或角色。

1. 在 **Summary (摘要)** 页上，选择 **Add permissions (添加权限)**。

1. 选择**直接附加现有策略**。

1. 从策略列表中选择 **AmazonKeyspacesFullAccess**，然后选择**下一步：查看**。

1. 选择**添加权限**。

# 创建启用了自动扩缩的新表
<a name="autoscaling.createTable"></a>

创建新的 Amazon Keyspaces 表时，您可以自动为表的写入或读取容量启用自动扩缩功能。如此，Amazon Keyspaces 便可以代表您联系 Application Auto Scaling，将该表注册为可扩展目标并调整预置的写入或读取容量。

有关如何创建多区域表以及如何为表副本配置不同的自动扩缩设置的更多信息，请参阅[在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表](tables-mrr-create-provisioned.md)。

**注意**  
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. 对于 **Capacity mode (容量模式)**，选择 **Provisioned (预置)**。

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

   在此步骤中，您将选择表的最小和最大读取容量单位以及目标利用率。
   + **最小容量单位**：输入表应始终支持的最小吞吐量级别的值。该值必须介于 1 和账户的每秒最大吞吐量配额（默认为 40000）之间。
   + **最大容量单位**：输入要为表预置的最大吞吐量。该值必须介于 1 和账户的每秒最大吞吐量配额（默认为 40000）之间。
   + **目标利用率**：输入介于 20% 和 90% 之间的目标利用率。当流量超过定义的目标利用率时，容量将自动扩展。当流量低于定义的目标时，容量将自动重新缩减。
**注意**  
要了解有关账户的默认配额以及如何增加此配额的更多信息，请参阅 [Amazon Keyspaces（Apache Cassandra 兼容）限额](quotas.md)。

1. 在**写入容量**部分中，选择上一步中为读取容量定义的设置，或手动配置容量值。

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

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

**使用 CQL 创建启用 Amazon Keyspaces 自动扩缩功能的新表**

要以编程方式为表配置自动扩缩设置，您可以使用包含 Amazon Keyspaces 自动扩缩参数的 `AUTOSCALING_SETTINGS` 语句。这些参数定义了指示 Amazon Keyspaces 调整表的预置吞吐量的条件，以及要采取的额外可选操作。在此示例中，您可以定义 *mytable* 的自动扩缩设置。

该策略包含以下元素：
+ `AUTOSCALING_SETTINGS` - 指定是否允许 Amazon Keyspaces 代表您调整吞吐能力。必需的值如下：
  + `provisioned_write_capacity_autoscaling_update`:
    + `minimum_units`
    + `maximum_units`
  + `provisioned_read_capacity_autoscaling_update`:
    + `minimum_units`
    + `maximum_units`
  + `scaling_policy` - Amazon Keyspaces 支持目标跟踪策略。要定义目标跟踪策略，请配置以下参数。
    + `target_value` – Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将 `target_value` 定义为百分比。
    + `disableScaleIn`:（可选）一个 `boolean`，指定是否为该表禁用或启用 `scale-in`。默认情况下，将禁用此参数。要开启 `scale-in`，请将 `boolean` 值设置为 `FALSE`。这表示会代表您自动缩减表的容量。
    + `scale_out_cooldown` – 横向扩展活动会增加表的预置吞吐量。要为横向扩展活动增加冷却时间，请为 `scale_out_cooldown` 指定一个值（以秒为单位）。如果您不指定值，则默认值为 0。有关目标跟踪和冷却时间的更多信息，请参阅《Application Auto Scaling 用户指南》中的 [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。
    + `scale_in_cooldown` – 横向缩减活动会减小表的预置吞吐量。要为缩减活动增加冷却时间，请为 `scale_in_cooldown` 指定一个值（以秒为单位）。如果您不指定值，则默认值为 0。有关目标跟踪和冷却时间的更多信息，请参阅《Application Auto Scaling 用户指南》中的 [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

**注意**  
为了进一步了解 `target_value` 的工作原理，假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略，并使用 `target_value` 的 70%。  
现在假设您开始将写入流量驱动到表，以便实际写入吞吐量为 150 个容量单位。现在的 consumed-to-provisioned比率是（150/200），即75％。此比率超出了您的目标，因此自动扩缩会将预置写入容量增加到 215，使该比率为（150/215）或 69.77%，尽可能接近 `target_value`，但不超过该值。

对于 *mytable*，您可以将读取和写入容量的 `TargetValue` 都设置为 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量，使该 consumed-to-provisioned比率保持在或接近 50%。对于读取容量，您可以将 `ScaleOutCooldown` 和 `ScaleInCooldown` 值设置为 60 秒。

您可以使用以下语句创建启用自动扩缩功能的新 Amazon Keyspaces 表。

```
CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck))
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
            }  
        }  
    }
};
```

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

**使用 Amazon Keyspaces 自动缩放创建新表 AWS CLI**

要以编程方式为表配置自动扩缩设置，您可以使用定义 Amazon Keyspaces 自动扩缩参数的 `autoScalingSpecification` 操作。这些参数定义了指示 Amazon Keyspaces 调整表的预置吞吐量的条件，以及要采取的额外可选操作。在此示例中，您可以定义 *mytable* 的自动扩缩设置。

该策略包含以下元素：
+ `autoScalingSpecification` - 指定是否允许 Amazon Keyspaces 代表您调整容量吞吐量。您可以分别为读取和写入容量启用自动扩缩。然后，您必须指定 `autoScalingSpecification` 的以下参数：
  + `writeCapacityAutoScaling` - 最大和最小写入容量单位数。
  + `readCapacityAutoScaling` - 最大和最小读取容量单位数。
  + `scalingPolicy` - Amazon Keyspaces 支持目标跟踪策略。要定义目标跟踪策略，请配置以下参数。
    + `targetValue` – Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将 `targetValue` 定义为百分比。
    + `disableScaleIn`:（可选）一个 `boolean`，指定是否为该表禁用或启用 `scale-in`。默认情况下，将禁用此参数。要开启 `scale-in`，请将 `boolean` 值设置为 `FALSE`。这表示会代表您自动缩减表的容量。
    + `scaleOutCooldown` – 横向扩展活动会增加表的预置吞吐量。要为横向扩展活动增加冷却时间，请为 `ScaleOutCooldown` 指定一个值（以秒为单位）。默认值是 0。有关目标跟踪和冷却时间的更多信息，请参阅《Application Auto Scaling 用户指南》中的 [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。
    + `scaleInCooldown` – 横向缩减活动会减小表的预置吞吐量。要为缩减活动增加冷却时间，请为 `ScaleInCooldown` 指定一个值（以秒为单位）。默认值是 0。有关目标跟踪和冷却时间的更多信息，请参阅《Application Auto Scaling 用户指南》中的 [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

**注意**  
为了进一步了解 `TargetValue` 的工作原理，假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略，并使用 `TargetValue` 的 70%。  
现在假设您开始将写入流量驱动到表，以便实际写入吞吐量为 150 个容量单位。现在的 consumed-to-provisioned比率是（150/200），即75％。此比率超出了您的目标，因此自动扩缩会将预置写入容量增加到 215，使该比率为（150/215）或 69.77%，尽可能接近 `TargetValue`，但不超过该值。

对于 *mytable*，您可以将读取和写入容量的 `TargetValue` 都设置为 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量，使该 consumed-to-provisioned比率保持在或接近 50%。对于读取容量，您可以将 `ScaleOutCooldown` 和 `ScaleInCooldown` 值设置为 60 秒。

创建具有复杂自动扩缩设置的表时，建议从 JSON 文件加载自动扩缩设置。对于下面的示例，您可以从 [auto-scaling.zip](samples/auto-scaling.zip) 下载示例 JSON 文件并提取 `auto-scaling.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
```

------

# 在现有表上配置自动扩缩
<a name="autoscaling.configureTable"></a>

您可以更新现有 Amazon Keyspaces 表，为表的写入或读取容量开启自动扩缩功能。如果您要更新当前处于按需容量模式的表，则必须先将表的容量模式更改为预置容量模式。

有关如何更新多区域表的自动扩缩设置的更多信息，请参阅[在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置](tables-mrr-autoscaling.md)。

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

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

**为现有表配置 Amazon Keyspaces 自动扩缩**

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

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

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

1. 在**容量模式**下，确保表使用**预置**容量模式。

1. 选择**自动扩展**，然后按照[创建启用了自动扩缩的新表](autoscaling.createTable.md)中的步骤 6 操作来编辑读取和写入容量。

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

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

**使用 CQL 配置启用 Amazon Keyspaces 自动扩缩的现有表**

您可以使用现有 Amazon Keyspaces 表的 `ALTER TABLE` 语句为表的写入或读取容量配置自动扩缩。如果您要更新当前处于按需容量模式的表，则必须将 `capacity_mode` 设置为预置模式。如果您的表已经处于预置容量模式，则可以忽略此字段。

在以下示例中，该语句更新了处于按需容量模式的表 *mytable*。该语句将表的容量模式更改为启用自动扩缩的预置模式。

写入容量配置为 5 到 10 个容量单位，目标值为 50%。读取容量也配置为 5 到 10 个容量单位，目标值为 50%。对于读取容量，您可以将 `scale_out_cooldown` 和 `scale_in_cooldown` 值设置为 60 秒。

```
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
            }  
        }  
    }
};
```

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

**使用 Amazon Keyspaces 自动缩放配置现有表 AWS CLI**

对于现有 Amazon Keyspaces 表，您可以使用 `UpdateTable` 操作为表的写入或读取容量开启自动扩缩功能。

您可以使用以下命令为现有表开启 Amazon Keyspaces 自动扩缩。表的自动扩缩设置从 JSON 文件加载。对于下面的示例，您可以从 [auto-scaling.zip](samples/auto-scaling.zip) 下载示例 JSON 文件并提取 `auto-scaling.json`，记下文件路径。在本示例中，JSON 文件位于当前目录下。有关不同的文件路径选项，请参阅[如何从文件加载参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)。

有关以下示例中所用的自动扩缩设置的更多信息，请参阅[创建启用了自动扩缩的新表](autoscaling.createTable.md)。

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

------

# 查看表的 Amazon Keyspaces 自动扩缩配置
<a name="autoscaling.viewPolicy"></a>

您可以使用控制台、CQL 或 AWS CLI 来查看和更新表的 Amazon Keyspaces 自动缩放设置。

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

****

**使用控制台查看自动扩缩设置**

1. 选择要查看的表，然后转到**容量**选项卡。

1. 在**容量设置**部分中，选择**编辑**。现在可以修改**读取容量**或**写入容量**部分中的设置。有关这些设置的更多信息，请参阅 [创建启用了自动扩缩的新表](autoscaling.createTable.md)。

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

**使用 CQL 查看表的 Amazon Keyspaces 自动扩缩策略**

要查看表的自动扩缩配置的详细信息，请使用以下命令。

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

该命令的输出如下所示。

```
 keyspace_name | table_name | provisioned_read_capacity_autoscaling_update                                                                                                                                                                      | provisioned_write_capacity_autoscaling_update
---------------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 mykeyspace    | mytable    | {'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 ]

**使用以下命令查看您的表的 Amazon Keyspaces 自动扩展策略 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:111122223333:/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": 10,
            "scalingPolicy": {
                "targetTrackingScalingPolicyConfiguration": {
                    "disableScaleIn": false,
                    "scaleInCooldown": 60,
                    "scaleOutCooldown": 60,
                    "targetValue": 50.0
                }
            }
        }
    }
}
```

------

# 为表关闭 Amazon Keyspaces 自动扩缩
<a name="autoscaling.turnoff"></a>

您可以随时为表关闭 Amazon Keyspaces 自动扩缩。如果不再需要扩缩表的读取或写入容量，您应考虑关闭自动扩缩策略，这样 Amazon Keyspaces 就不会继续修改表的读取或写入容量设置。您可以使用控制台、CQL 或 AWS CLI更新表。

关闭 auto scaling 也会删除以您的名义创建的 CloudWatch 警报。

要删除 Application Auto Scaling 用于访问 Amazon Keyspaces 表的服务相关角色，请按照[删除适用于 Amazon Keyspaces 的服务相关角色](using-service-linked-roles-app-auto-scaling.md#delete-service-linked-role-app-auto-scaling)中的步骤操作。

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

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

**使用控制台为表关闭 Amazon Keyspaces 自动扩缩功能**

**使用 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 中取消将表注册为可扩展目标。

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

**使用 CQL 为表关闭 Amazon Keyspaces 自动扩缩**

以下语句可关闭表 *mytable* 写入容量的自动扩缩。

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

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

**使用 “关闭 Amazon Keyspaces 自动缩放表格” AWS CLI**

以下命令可关闭表读取容量的自动扩缩。它还会删除以您的名义创建的 CloudWatch 警报。

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

------

# 在亚马逊中查看 Amazon Keyspaces 表的自动扩展活动 CloudWatch
<a name="autoscaling.activity"></a>

您可以使用亚马逊来监控 Amazon Keyspaces 自动扩展如何使用资源 CloudWatch，亚马逊会生成有关您的使用情况和性能的指标。按照《[Application Auto Scaling 用户指南](https://docs.aws.amazon.com/autoscaling/application/userguide/monitoring-cloudwatch.html)》中的步骤创建 CloudWatch仪表板。