Application Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS CLI 使用入门

在本教程中,您将使用 AWS CLI 探索 Application Auto Scaling。开始之前,请确保您已经有 AWS 账户并且已设置 AWS CLI。有关更多信息,请参阅 设置。在本教程中,您将创建计划操作,以基于计划扩展可扩展的资源。通过计划的扩展,您可以指定一次性操作或重复性操作。

本教程中的练习假定您使用在设置 AWS CLI中设置的管理员凭证(adminuser 配置文件) 。如果您未提供此配置文件,系统会使用默认配置文件。请注意,如果要创建、更新、删除或列出 Application Auto Scaling 资源,您需要有权执行该操作,并且您需要有权访问相应的资源。有关更多信息,请参阅 Application Auto Scaling 的身份验证和访问控制

本教程中的 CLI 命令在 Linux 上进行了测试。要在 Microsoft Windows 中使用这些示例,请将换行符从反斜杠 (\) 改为插入符号 (^)。有关在 Windows 上使用 CLI 命令的信息,请参阅 AWS Command Line Interface 用户指南 中的为 AWS 命令行界面指定参数值

注意

使用本教程的过程中,您可能会产生 AWS 费用。请监控您的免费套餐使用情况并确保您了解所涉及的 AWS 费用。

步骤 1:注册您的可扩展目标

首先,通过 Application Auto Scaling 将您的资源注册为可扩展的目标。可扩展目标是 Application Auto Scaling 可以扩大或缩小的资源。

您可以使用任何能处理 Application Auto Scaling 的资源 ,但对于这些示例,我们假设您要扩展名为 my-table 的 DynamoDB 表。如果您还没有 DynamoDB 表,您可以现在创建一个(Amazon DynamoDB 开发人员指南 中的步骤 1:创建 DynamoDB 表)。

要将 DynamoDB 全局二级索引或资源用于不同的服务,请相应地更新示例。在 --service-namespace 中指定其命名空间,在 --scalable-dimension 中指定其扩展维度,并在 --resource-id 中指定其资源 ID。有关每个选项的有效值的列表,请参阅 register-scalable-target

向 Application Auto Scaling 注册您的可扩展目标

  1. (可选)使用 describe-scalable-targets 命令来检查是否已注册了任何 DynamoDB 资源。这可帮助您验证是否注册 my-table 表。例如,如果您之前从 DynamoDB 控制台为此表配置了自动扩展功能,此表可能已向 Application Auto Scaling 注册了。

    aws application-autoscaling describe-scalable-targets \ --service-namespace dynamodb \ --profile adminuser

    如果没有现有的可扩展目标,则这是系统的响应。

    { "ScalableTargets": [] }
  2. 使用以下 register-scalable-target 命令来注册或更新名为 my-table 的 DynamoDB 表的写入容量。将最小所需容量设置为 5 个写入容量单位,将最大所需容量设置为 10 个写入容量单位。

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --min-capacity 5 --max-capacity 10 \ --profile adminuser

    如果此命令成功执行,将不会返回任何输出。

步骤 2:创建两个计划操作

Application Auto Scaling 可让您安排扩展操作应发生的时间。您可以指定可扩展目标、扩展计划、最小容量和最大容量。在指定的时间,Application Auto Scaling 会更新可扩展目标的最小值和最大值。如果当前容量超出此范围,这会导致一个扩展活动。

如果您决定创建扩展策略,计划更新最小和最大容量也会有所帮助。扩展策略允许基于当前资源利用率来动态扩展您的资源。扩展策略的一种常见保护措施是设置适当的最小和最大容量值。

在本练习中,我们将创建两个一次性操作来分别进行扩展和缩减。

创建和查看计划操作

  1. 要创建第一个计划操作,请使用以下 put-scheduled-action 命令。

    --schedule 中的 at 命令安排操作在将来的指定日期和时间执行一次。小时采用世界标准时间 24 小时格式。将操作安排在当前时间开始约 5 分钟后发生。

    在指定的日期和时间,Application Auto Scaling 将更新 MinCapacityMaxCapacity 的值。假设表当前有 5 个写入容量单位,Application Auto Scaling 扩展到 MinCapacity,以使表拥有 15-20 个写入容量单位的新所需范围。

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --scheduled-action-name my-first-scheduled-action \ --schedule "at(2019-05-20T17:05:00)" \ --scalable-target-action MinCapacity=15,MaxCapacity=20 \ --profile adminuser

    如果此命令成功执行,将不会返回任何输出。

  2. 要创建第二个计划操作供 Application Auto Scaling 来进行缩减,请使用以下 put-scheduled-action 命令。

    将操作安排在当前时间开始约 10 分钟后发生。

    在指定的日期和时间,Application Auto Scaling 将更新 MinCapacityMaxCapacity 的值,并且缩减到 MaxCapacity 以将表恢复到初始 5 到 10 个写入容量单位的所需范围。

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --scheduled-action-name my-second-scheduled-action \ --schedule "at(2019-05-20T17:10:00)" \ --scalable-target-action MinCapacity=5,MaxCapacity=10 \ --profile adminuser
  3. (可选)您可以使用以下 describe-scheduled-actions 命令获得指定服务命名空间的计划操作列表。

    aws application-autoscaling describe-scheduled-actions \ --service-namespace dynamodb \ --profile adminuser

    下面是示例输出。

    { "ScheduledActions": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:35:00)", "ResourceId": "table/my-table", "CreationTime": 1561571888.361, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/my-table:scheduledActionName/my-first-scheduled-action", "ScalableTargetAction": { "MinCapacity": 15, "MaxCapacity": 20 }, "ScheduledActionName": "my-first-scheduled-action", "ServiceNamespace": "dynamodb" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:40:00)", "ResourceId": "table/my-table", "CreationTime": 1561571946.021, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/my-table:scheduledActionName/my-second-scheduled-action", "ScalableTargetAction": { "MinCapacity": 5, "MaxCapacity": 10 }, "ScheduledActionName": "my-second-scheduled-action", "ServiceNamespace": "dynamodb" } ] }

步骤 3:查看扩展活动

在此步骤中,您将查看计划操作触发的扩展活动,并验证 DynamoDB 是否已更改表的写入容量。

查看扩展活动

  1. 等到您选择的时间,使用以下 describe-scaling-activities 命令确认计划操作在正常运行。

    aws application-autoscaling describe-scaling-activities \ --service-namespace dynamodb \ --profile adminuser

    以下是第一个计划操作在计划操作正在执行时的示例输出。

    扩展活动按创建日期排序,首先返回最新的扩展活动。

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/my-table", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Waiting for change to be fulfilled by dynamodb.", "StatusCode": "InProgress" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/my-table", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }

    以下是两个计划操作都运行完成后的示例输出。

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "table/my-table", "ActivityId": "4d1308c0-bbcf-4514-a673-b0220ae38547", "StartTime": 1561574415.086, "ServiceNamespace": "dynamodb", "EndTime": 1561574449.51, "Cause": "maximum capacity was set to 10", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 5 and max capacity to 10", "ResourceId": "table/my-table", "ActivityId": "f2b7847b-721d-4e01-8ef0-0c8d3bacc1c7", "StartTime": 1561574414.644, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-second-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 5 and max capacity to 10", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/my-table", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "EndTime": 1561574140.255, "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/my-table", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }
  2. 成功运行计划操作后,请转至 DynamoDB 控制台并选择要处理的表。在容量选项卡下查看写入容量单位。在第二个扩展操作运行后,写入容量单位应已从 15 变为 10。

    您还可以通过 AWS CLI 查看此信息。

    请使用 DynamoDB describe-table 命令验证表的当前写入容量。

    aws dynamodb describe-table --table-name my-table \ --query "Table.[TableName,TableStatus,ProvisionedThroughput]" \ --profile adminuser

    下面是示例输出。

    [ "my-table", "ACTIVE", { "NumberOfDecreasesToday": 1, "WriteCapacityUnits": 10, "LastIncreaseDateTime": 1561574133.264, "ReadCapacityUnits": 5, "LastDecreaseDateTime": 1561574435.607 } ]

步骤 4:后续步骤

现在您已经熟悉了 Application Auto Scaling 及其部分功能,请考虑执行以下操作:

第 5 步:清除

当您完成入门练习后,可以按照如下步骤清除关联的资源。

删除计划的操作

下面的 delete-scheduled-action 命令将删除指定的计划操作。如果您要将此计划操作保留供将来使用,您可以跳过此操作。

aws application-autoscaling delete-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --scheduled-action-name my-second-scheduled-action \ --profile adminuser

撤消可扩展目标的注册

使用如下 deregister-scalable-target 命令来取消注册可扩展目标。如果您有任何您创建的扩展策略或尚未删除的计划操作,这条命令会将它们删除。如果您要将此可扩展目标保留供将来使用,您可以跳过此操作。

aws application-autoscaling deregister-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/my-table \ --profile adminuser

删除 DynamoDB 表

使用以下 delete-table 命令删除本教程中使用的表。如果您要保留该表供将来使用,可以跳过此步骤。

aws dynamodb delete-table --table-name my-table \ --profile adminuser