资讯中心

AWS CLI 之 register-scalable-target:注册 Application Auto Scaling 伸缩目标、设定容量边界与暂停/恢复伸缩

📅 2026/10/9 19:29:10
AWS CLI 之 register-scalable-target:注册 Application Auto Scaling 伸缩目标、设定容量边界与暂停/恢复伸缩
AWS CLI 之 register-scalable-target注册 Application Auto Scaling 伸缩目标、设定容量边界与暂停/恢复伸缩【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文围绕 AWS CLI 仓库中 register-scalable-target 示例文档 展开讲解如何用aws application-autoscaling register-scalable-target命令把 ECS 服务、DynamoDB 表等资源注册为 Application Auto Scaling 的伸缩目标scalable target如何设定最小/最大容量与标签以及如何通过同一命令暂停和恢复伸缩活动。文中所有参数语义均对照仓库内置的服务模型文件 service-2.json 与机器可读示例 examples-1.json 进行了源码级验证读完你可以直接复制命令完成伸缩目标的注册与生命周期管理。这份示例文档在仓库中的位置与生效机制register-scalable-target.rst位于 awscli/examples/application-autoscaling/ 目录是该目录下 13 个 Application Auto Scaling 操作示例之一同目录还有 deregister-scalable-target.rst、describe-scalable-targets.rst、put-scaling-policy.rst 等。从源码结构看这些手写示例并非仅作为静态文件存放。awscli/handlers.py 中将add_examples函数注册到doc-examples.*.*事件event_handlers.register(doc-examples.*.*, add_examples)而该事件由 awscli/bcdoc/docevents.py 在构建帮助页时统一 emit。add_examples的实现位于 awscli/customizations/addexamples.py它根据帮助命令的event_class即service.operation如application-autoscaling.RegisterScalableTarget拼出examples/service/service-operation.rst路径若文件存在就在--help输出末尾插入一个 “Examples” 二级标题并把 ReST 片段原样写入文档。因此你在终端执行aws application-autoscaling register-scalable-target help看到的全部示例内容正是来自本文所讲的这份 .rst 文件。示例一将 ECS 服务注册为伸缩目标原文档的第一个示例将 Amazon ECS 服务web-app运行在default集群注册为伸缩目标同时给目标附加一个键为environment、值为production的标签aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/default/web-app \ --min-capacity 1 --max-capacity 10 \ --tags environmentproduction各参数含义对照 service-2.json 中RegisterScalableTargetRequest的定义参数必填说明--service-namespace是提供资源的服务的命名空间此处为ecs自定义资源用custom-resource--resource-id是资源标识ECS 服务格式为service/集群名/服务名此处为service/default/web-app--scalable-dimension是可伸缩维度由“命名空间:资源类型:伸缩属性”组成此处为ecs:service:DesiredCountECS 服务的期望任务数--min-capacity注册新目标时必填计划缩容到的下限本例为 1--max-capacity注册新目标时必填计划扩容到的上限本例为 10--tags否创建时为伸缩目标打标签键值均区分大小写同一目标不允许出现重复标签键命令成功后的输出是一个包含ScalableTargetARN的 JSON即新注册伸缩目标的 ARN{ ScalableTargetARN: arn:aws:application-autoscaling:us-west-2:123456789012:scalable-target/1234abcd56ab78cd901ef1234567890ab123 }该响应结构与RegisterScalableTargetResponse模型一致模型定义见 service-2.jsonmembers中仅含ScalableTargetARN字段。关于容量边界API 文档同文件的RegisterScalableTarget条目说明给出了两个值得注意的行为注册新目标时必须指定最小/最大容量。若指定资源在目标服务中处于非活动状态操作不会改变资源当前容量否则会把当前容量调整到该范围之内。添加伸缩策略后伸缩活动只会在最小/最大范围内调整容量策略不会把容量伸缩到范围之外。这个示例在机器可读层面也有对应examples-1.json 的RegisterScalableTarget条目记录了同样的输入MaxCapacity: 10、MinCapacity: 1、ResourceId: service/default/web-app描述为“注册运行在默认集群、名为 web-app 的 ECS 服务为伸缩目标最小期望任务数为 1、最大为 10”。示例二暂停伸缩目标的伸缩活动同一register-scalable-target命令也承担“暂停伸缩”的职责。原文档第二个示例对已注册的 DynamoDB 表伸缩目标暂停全部伸缩活动aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:ReadCapacityUnits \ --resource-id table/my-table \ --suspended-state DynamicScalingInSuspendedtrue,DynamicScalingOutSuspendedtrue,ScheduledScalingSuspendedtrue输出同样是目标的 ARN{ ScalableTargetARN: arn:aws:application-autoscaling:us-west-2:123456789012:scalable-target/1234abcd56ab78cd901ef1234567890ab123 }--suspended-state对应模型中的SuspendedState结构是“嵌入式对象 属性值”的形式包含三个可独立开关的布尔属性设为true即暂停对应活动DynamicScalingInSuspended暂停所有由伸缩策略触发的缩容活动DynamicScalingOutSuspended暂停所有由伸缩策略触发的扩容活动ScheduledScalingSuspended暂停所有涉及计划伸缩动作scheduled action的活动。这三个属性的定义见 service-2.json。也就是说你可以只暂停缩容而保留扩容例如故障期间只允许系统扩容自救也可以同时挂起动态伸缩与计划伸缩。示例三恢复伸缩活动恢复伸缩只需把三个属性全部置回false对同一个目标重新执行register-scalable-targetaws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:ReadCapacityUnits \ --resource-id table/my-table \ --suspended-state DynamicScalingInSuspendedfalse,DynamicScalingOutSuspendedfalse,ScheduledScalingSuspendedfalse输出结构与暂停时相同返回该目标的ScalableTargetARN。由于未指定MinCapacity/MaxCapacity本次调用只更新暂停状态不改动容量边界——这正是该 API“更新语义”的体现见下一节。从服务模型看 RegisterScalableTarget 的完整请求/响应结构结合 service-2.json 中RegisterScalableTarget操作定义与请求结构体可以确认该接口的完整契约操作定义input为RegisterScalableTargetRequestoutput为RegisterScalableTargetResponseservice-2.json。请求结构体必填项ServiceNamespace、ResourceId、ScalableDimension三者共同唯一标识一个伸缩目标required数组定义见 service-2.json。可选参数MinCapacity、MaxCapacity、RoleARN、SuspendedState、Tags。其中RoleARN对不支持服务关联角色的服务如 Amazon EMR是必需的需指定一个允许 Application Auto Scaling 代为修改伸缩目标的 IAM 角色 ARN支持服务关联角色的服务则会自动创建并使用服务关联角色。更新语义要更新已有伸缩目标只需带上三个标识参数加你要修改的参数未指定的参数保持不变。模型文档还提示更新已有目标时若当前容量落在新的最小/最大范围之外Application Auto Scaling 会主动把容量调整回范围内即使请求中未包含MinCapacity/MaxCapacity。最终一致性提示模型文档以 note 形式说明新建伸缩目标后可能存在短暂的最终一致性延迟连续调用相关操作时可能遇到意外错误通常的重试策略即可解决部分 AWS SDK 自带退避重试逻辑。验证注册结果模型文档建议使用DescribeScalableTargets查看已注册资源。对应的 CLI 示例见 describe-scalable-targets.rst其输出中可以看到MinCapacity、MaxCapacity、RoleARN、SuspendedState、ScalableTargetARN等完整字段可与本文注册命令一一对照。ResourceId 与 ScalableDimension 的格式速查--resource-id的取值格式因服务而异服务模型service-2.json 中ResourceId成员文档列出了各服务的“资源类型 唯一标识符”组合常见的有服务资源resource-id 格式示例ECS 服务service/my-cluster/my-serviceSpot Fleetspot-fleet-request/sfr-73fbd2ce-...EMR 实例组instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0AppStream 2.0 fleetfleet/sample-fleetDynamoDB 表 / 全局二级索引table/my-table、table/my-table/index/my-table-indexAurora 集群cluster:my-db-clusterSageMaker 端点变体endpoint/my-end-point/variant/KMeansClusteringLambda 预留并发function:my-function:prod须带版本号或别名不能是$LATESTAmazon Keyspaces 表keyspace/mykeyspace/table/mytableMSK 集群集群 ARNElastiCachereplication-group/mycluster、cache-cluster/myclusterNeptune 集群cluster:myclusterWorkSpaces 池workspacespool/wspool-123456自定义资源不带资源类型需使用 CloudFormation 模板栈的OutputValue作为标识--scalable-dimension的合法取值同样在模型中完整列出service-2.json典型值包括ecs:service:DesiredCount、dynamodb:table:ReadCapacityUnits、dynamodb:index:WriteCapacityUnits、elasticmapreduce:instancegroup:InstanceCount、ec2:spot-fleet-request:TargetCapacity、appstream:fleet:DesiredCapacity、rds:cluster:ReadReplicaCount、sagemaker:variant:DesiredInstanceCount、lambda:function:ProvisionedConcurrency、cassandra:table:ReadCapacityUnits、kafka:broker-storage:VolumeSize、elasticache:cache-cluster:Nodes、neptune:cluster:ReadReplicaCount、workspaces:workspacespool:DesiredUserSessions以及自定义资源的custom-resource:ResourceType:Property形式。关于MinCapacity的取值还有细节约束模型文档指出 AppStream 2.0 fleet、Aurora 集群、ECS 服务、EMR 集群、Lambda 预留并发、SageMaker 端点变体、SageMaker 推理组件、Spot Fleet 及自定义资源的最小容量允许为 0但强烈建议取大于 0 的值否则 CloudWatch 没有持续数据点可供策略使用其余资源取低于其可接受下限时会报错错误信息会给出该资源允许的最小值。MaxCapacity虽然可以设置很大但受各服务自身配额约束需要更高上限时须按服务文档申请配额提升。周边命令与延伸阅读伸缩目标的完整生命周期在仓库示例目录中有成体系的覆盖均可在 awscli/examples/application-autoscaling/ 下查看注册后配置伸缩策略put-scaling-policy.rstexamples-1.json中还给出了对 ECS 服务按 CPU 75% 目标跟踪策略的完整输入/输出示例查询伸缩目标describe-scalable-targets.rst、describe-scaling-activities.rst计划伸缩put-scheduled-action.rst、delete-scheduled-action.rst标签管理tag-resource.rst、untag-resource.rst、list-tags-for-resource.rst删除策略与注销目标delete-scaling-policy.rst、deregister-scalable-target.rst其中注销自定义资源时可用file://引用外部存放 Resource ID 的文件这一点与本文注册时的--resource-id参数解析方式一致。小结register-scalable-target是 Application Auto Scaling 的核心入口命令一条命令完成伸缩目标注册、容量边界设定、标签附加与暂停/恢复伸缩四类操作三个标识参数命名空间 资源 ID 伸缩维度决定“操作谁”MinCapacity/MaxCapacity与SuspendedState决定“能怎么扩”。所有命令参数、示例输出与服务模型定义都可以直接在本仓库中核对示例文档在 awscli/examples/application-autoscaling/register-scalable-target.rst权威的服务契约在 awscli/botocore/data/application-autoscaling/2016-02-06/service-2.json机器可读示例在 awscli/botocore/data/application-autoscaling/2016-02-06/examples-1.json而把示例注入--help输出的机制则实现在 awscli/customizations/addexamples.py 与 awscli/handlers.py 中。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案