开始使用 Amazon CLI - Application Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

开始使用 Amazon CLI

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

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

当使用Amazon CLI,请记住您的命令在Amazon为您的个人资料配置的区域。如果您想要在不同的区域中运行命令,可以为配置文件更改默认区域,或者与命令一起使用 --region 参数。

注意

您可能会产生Amazon费用作为本教程的一部分。请监控免费套餐使用情况,并确保您了解与 DynamoDB 数据库使用的读取和写入容量单位数相关的成本。

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

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

您可以使用 Application Auto Scaling 功能并支持计划扩展的任何资源,但对于这些示例,我们假设您要扩展名为的 DynamoDB 表。my-table。如果您还没有 DynamoDB 表,您可以现在创建一个表(第 1 步:创建 DynamoDB 表中的Amazon 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 注册了。

    Linux、macOS 或 Unix

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

    Windows

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

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

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

    Linux、macOS 或 Unix

    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

    Windows

    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 命令。

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

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

    Linux、macOS 或 Unix

    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

    Windows

    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 个写入容量单位的所需范围。

    Linux、macOS 或 Unix

    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

    Windows

    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 命令获得指定服务命名空间的计划操作列表。

    Linux、macOS 或 Unix

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

    Windows

    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 命令确认计划操作在正常运行。

    Linux、macOS 或 Unix

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

    Windows

    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 控制台并选择要处理的表。查看写入容量单位Capacity选项卡。在第二个扩展操作运行后,写入容量单位应已从 15 变为 10。

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

    使用 DynamoDB 验证表的当前写入容量describe-table命令。加入--query选项来筛选输出。有关输出筛选功能的详细信息Amazon CLI,请参阅控制 的命令输出Amazon CLI中的Amazon Command Line Interface用户指南

    Linux、macOS 或 Unix

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

    Windows

    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 命令将删除指定的计划操作。如果您要将此计划操作保留供将来使用,您可以跳过此操作。

Linux、macOS 或 Unix

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

Windows

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

Linux、macOS 或 Unix

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

Windows

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

删除 DynamoDB 表

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

Linux、macOS 或 Unix

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

Windows

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