资讯动态

AWS CLI describe-scaling-policies 实战:查看 Application Auto Scaling 弹性伸缩策略并解析其 API 模型

发布时间:2026/9/14 2:04:04 来源:尧图企业网站定制
AWS CLI describe-scaling-policies 实战查看 Application Auto Scaling 弹性伸缩策略并解析其 API 模型【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文以 aws-cli 仓库中的示例文档 describe-scaling-policies.rst 为核心围绕aws application-autoscaling describe-scaling-policies命令展开完整给出命令用法与输出样例、逐项解读返回的伸缩策略字段并深入仓库内置的 API 模型与分页配置说明该命令的可选参数、分页机制及错误类型。读完后可独立使用该命令审计 ECS及其他服务命名空间下的自动伸缩策略并理解 AWS CLI 背后由 botocore 服务模型驱动的命令构建方式。命令与示例原始示例文档给出的用法是描述ecs服务命名空间下的伸缩策略aws application-autoscaling describe-scaling-policies --service-namespace ecs这是所有可选参数中唯一必填的一项。命令执行后返回该命名空间下注册的伸缩策略集合示例输出如下完整继承自原文档{ ScalingPolicies: [ { PolicyName: web-app-cpu-gt-75, ScalableDimension: ecs:service:DesiredCount, ResourceId: service/default/web-app, CreationTime: 1462561899.23, StepScalingPolicyConfiguration: { Cooldown: 60, StepAdjustments: [ { ScalingAdjustment: 200, MetricIntervalLowerBound: 0.0 } ], AdjustmentType: PercentChangeInCapacity }, PolicyARN: arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75, PolicyType: StepScaling, Alarms: [ { AlarmName: web-app-cpu-gt-75, AlarmARN: arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75 } ], ServiceNamespace: ecs }, { PolicyName: web-app-cpu-lt-25, ScalableDimension: ecs:service:DesiredCount, ResourceId: service/default/web-app, CreationTime: 1462562575.099, StepScalingPolicyConfiguration: { Cooldown: 1, StepAdjustments: [ { ScalingAdjustment: -50, MetricIntervalUpperBound: 0.0 } ], AdjustmentType: PercentChangeInCapacity }, PolicyARN: arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-lt-25, PolicyType: StepScaling, Alarms: [ { AlarmName: web-app-cpu-lt-25, AlarmARN: arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-lt-25 } ], ServiceNamespace: ecs } ] }输出中的两条策略是一对典型的 ECS 阶梯StepScaling伸缩策略web-app-cpu-gt-75在 CPU 超过阈值时按容量增加 200% 扩容ScalingAdjustment: 200配合PercentChangeInCapacityweb-app-cpu-lt-25在低于阈值时缩减 50% 容量ScalingAdjustment: -50。两条策略各自关联了一个 CloudWatch 告警告警名称与策略名称一一对应。同一个示例数据也内嵌在仓库 API 模型中examples-1.json 的DescribeScalingPolicies条目约 L113 起包含同样的ServiceNamespace: ecs输入和完整的ScalingPolicies输出结构。该文件是 botocore 生成 CLI 帮助与示例的机器可读来源可视为文档与实现的“同一事实的两种表达”。参数详解来自服务模型该命令的完整参数定义位于 service-2.json 的DescribeScalingPoliciesRequest结构L503-L532。结合其中的文档说明各参数含义如下参数CLI 形式必填说明ServiceNamespace--service-namespace是提供资源的服务命名空间如ecs自研应用提供的自定义资源使用custom-resourcePolicyNames--policy-names否按策略名称列表过滤只描述指定的伸缩策略ResourceId--resource-id否资源标识符由资源类型与唯一标识组成如 ECS 服务的service/my-cluster/my-service、EMR 的instancegroup/j-xxx/ig-xxx、DynamoDB 表的table/my-table等ScalableDimension--scalable-dimension否可伸缩维度由“命名空间:资源类型:伸缩属性”三段组成如ecs:service:DesiredCount、dynamodb:table:ReadCapacityUnits指定该参数时必须同时指定 ResourceIdMaxResults--max-results否单次返回的最大策略数取值 1~10默认 10提供该参数时操作会附带NextToken返回NextToken--next-token否下一页结果的分页游标从服务模型的required字段可以确认整个请求结构中只有ServiceNamespace是必填项这也解释了为什么原文档示例只带一个参数即可运行。响应结构DescribeScalingPoliciesResponseL533-L545则包含ScalingPolicies列表与NextToken游标两个成员——当没有更多结果时NextToken为 null。--resource-id与--scalable-dimension两个过滤参数的说明文字里附带了各支持服务的标识格式清单ECS、Spot Fleet、EMR、AppStream 2.0、DynamoDB 表与全局二级索引、Aurora 集群、SageMaker 端点变体、Lambda 预留并发、Keyspaces、MSK、ElastiCache、Neptune、WorkSpaces 池等在按资源维度审计策略时可直接对照。分页机制从仓库数据模型看实现describe-scaling-policies是一个分页 API其分页行为由 paginators-1.json 声明DescribeScalingPolicies: { input_token: NextToken, output_token: NextToken, limit_key: MaxResults, result_key: ScalingPolicies }从这段声明可以确认四件事输入游标是NextToken输出游标同样是NextToken每页条数由MaxResults控制结果列表取自ScalingPolicies键。基于此该命令支持 AWS CLI 的分页参数例如用--page-size 5将每页限制为 5 条策略、用--starting-token指定起始游标、或省略参数让 CLI 自动翻页取回全部结果。由于MaxResults上限为 10默认值当某一命名空间下策略数超过 10 条时手动分页或启用自动分页都不可或缺。同目录中describe-scalable-targets、describe-scaling-activities、describe-scheduled-actions也共享同样的NextToken/MaxResults模式说明该 API 族的查询类操作在设计上统一采用 token 分页。返回字段解读一条 ScalingPolicy 里有什么ScalingPolicy结构定义在 service-2.json L1546-L1604其必填字段为PolicyARN、PolicyName、ServiceNamespace、ResourceId、ScalableDimension、PolicyType、CreationTime七项。逐字段说明PolicyName / PolicyARN策略名称与其 ARN。ARN 中嵌入了resource/...与policyName/...两个片段可反解出策略作用的目标资源与名称便于在告警、审计日志中做关联匹配。ServiceNamespace / ResourceId / ScalableDimension三元组唯一定位策略作用的伸缩目标与register-scalable-target注册时使用的标识一致。CreationTime策略创建时间的 Unix 时间戳原始示例中形如1462561899.23的浮点秒值。PolicyType策略类型。模型文档明确列出三种取值及支持范围TargetTrackingScaling— 目标追踪型不支持 Amazon EMRStepScaling— 阶梯型不支持 DynamoDB、Comprehend、Lambda、Keyspaces、MSK、ElastiCache、NeptunePredictiveScaling— 预测型目前仅支持 Amazon ECS。 在describe-scaling-policies的输出中PolicyType 决定下面出现哪一个配置块。StepScalingPolicyConfiguration / TargetTrackingScalingPolicyConfiguration / PredictiveScalingPolicyConfiguration按 PolicyType 三选一的配置块。Alarms与该策略关联的 CloudWatch 告警列表名称 ARN。目标追踪型策略通常自带系统生成的 AlarmHigh/AlarmLow 一对告警阶梯型策略则关联用户预先创建、触发策略的告警这正是示例输出中每条策略只有一个同名告警的原因。以示例中的阶梯策略配置为例StepScalingPolicyConfiguration的成员定义见 service-2.json L1717-L1742AdjustmentType解释ScalingAdjustment数值的方式取值为ChangeInCapacity绝对数量增减、ExactCapacity设置为目标容量、PercentChangeInCapacity按当前容量百分比增减。示例中为百分比模式。StepAdjustments一组按告警越限幅度分档的调整步骤通过MetricIntervalLowerBound/MetricIntervalUpperBound划定指标区间示例中一条策略只有单步未设区间上下界。Cooldown上一次伸缩活动生效后等待的秒数未指定时默认 300 秒示例中分别为 60 秒与 1 秒。MinAdjustmentMagnitude当 AdjustmentType 为百分比时的最小调整量例如 4 个任务扩 25% 本应扩 1 个设置最小调整量为 2 则按 2 个执行。MetricAggregationTypeCloudWatch 指标聚合方式取值Minimum、Maximum、Average为 null 时按Average处理。与同族示例的对照策略的完整生命周期describe-scaling-policies只是查询动作。仓库的示例目录 awscli/examples/application-autoscaling/ 提供了同一服务的完整命令族其中与本命令直接衔接的有put-scaling-policy.rst创建策略。该示例给出了三种典型写法——基于预定义指标ECSServiceAverageCPUUtilization的目标追踪策略、基于自定义 CloudWatch 指标的策略、以及带DisableScaleIn: true的仅扩容策略输出中返回的PolicyARN与Alarms正是describe-scaling-policies后续要展示的内容。delete-scaling-policy.rst删除策略可与 describe 命令配合做策略变更后的清理验证。其余 describe-scalable-targets.rst、describe-scaling-activities.rst、register-scalable-target.rst 等则覆盖伸缩目标注册与伸缩活动审计。一个实用的排查闭环是先用register-scalable-target确认伸缩目标已注册再用describe-scaling-policies --service-namespace ecs --resource-id service/default/web-app按资源过滤出该目标的策略确认 PolicyType 与配置符合预期后用describe-scaling-activities验证策略是否实际触发了伸缩。错误处理与适用前提服务模型为DescribeScalingPolicies声明了五种错误见 service-2.json L106-L112ValidationException参数校验失败例如--scalable-dimension未与--resource-id同时提供、命名空间拼写错误FailedResourceAccessException对目标资源无访问权限需要检查当前凭证的 IAM 授权InvalidNextTokenException传入的--next-token已失效或不合法重新发起不带 token 的查询即可ConcurrentUpdateException并发更新冲突重试即可InternalServiceException服务端内部错误。需要说明的适用前提本文所有参数与字段事实均取自当前仓库内置的 Application Auto Scaling API 模型API 版本2016-02-06见 awscli/botocore/data/application-autoscaling/2016-02-06/ 目录与示例文档实际支持的命名空间、资源类型以线上 AWS 文档与账号可用区域为准示例输出中的账号 ID、ARN、告警名称均为文档示例数据。此外AWS CLI 的application-autoscaling子命令由 botocore 依据该 JSON 模型自动生成命令参数、帮助文本与示例即来源于此这也是从源码结构看“模型文件即文档”的直接体现。小结aws application-autoscaling describe-scaling-policies只需一个必填参数--service-namespace即可列出该命名空间下的全部伸缩策略配合--resource-id/--policy-names可精确过滤配合--max-results与NextToken分页可稳定处理策略数超过 10 条的场景。结合 describe-scaling-policies.rst 的输出样例与 service-2.json 中的结构定义可以完整解读返回的策略类型、阶梯配置AdjustmentType、StepAdjustments、Cooldown与关联告警把“命令输出”真正读成一份可审计的伸缩配置清单。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价