ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AWS CLI 实战指南:使用 describe-auto-scaling-groups 查询 Auto Scaling 组(附示例与源码解析)

2026/9/14 19:30:56 拓冰建站 浏览量
AWS CLI 实战指南:使用 describe-auto-scaling-groups 查询 Auto Scaling 组(附示例与源码解析) AWS CLI 实战指南使用 describe-auto-scaling-groups 查询 Auto Scaling 组附示例与源码解析【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cliaws autoscaling describe-auto-scaling-groups是 AWS CLI 中用于查询 Auto Scaling 组核心配置与实例状态的关键命令。本文以 AWS CLI 官方示例文档awscli/examples/autoscaling/describe-auto-scaling-groups.rst为骨架完整覆盖按名称查询、批量查询、按区域查询、分页控制与--query过滤五种实战场景并结合当前仓库中 botocore 服务模型awscli/botocore/data/autoscaling/2011-01-01/service-2.json、分页器定义awscli/botocore/data/autoscaling/2011-01-01/paginators-1.json与分页参数实现awscli/customizations/paginate.py进行原理级解读。读完本文你将能熟练查询、过滤、分页输出 Auto Scaling 组并理解每个输出字段的含义与底层参数映射。一、命令概览DescribeAutoScalingGroups 能做什么从当前仓库的 botocore 服务模型看DescribeAutoScalingGroups操作位于 awscli/botocore/data/autoscaling/2011-01-01/service-2.json 的operations中其官方语义为获取当前账户与区域内的 Auto Scaling 组信息。该操作具有以下行为特征指定组名如果指定了AutoScalingGroupNames输出仅包含这些指定组的信息指定过滤器如果指定了Filters输出仅包含满足过滤条件的组不指定任何条件如果组名与过滤器均未指定则返回区域内所有 Auto Scaling 组实例信息该操作同时返回组内 EC2 实例的信息但暖池warm pool中的实例需另行调用DescribeWarmPool才能获取。从 service-2.json 中的输入 shapeAutoScalingGroupNamesType可以看到命令行可用的输入参数为参数Shape 成员类型说明AutoScalingGroupNameslist要查询的 Auto Scaling 组名称列表IncludeInstancesboolean是否在输出中包含组内实例信息NextTokenXmlString分页令牌用于获取下一页结果MaxRecordsinteger单次返回的最大记录数Filterslist过滤器每个过滤器包含Name与Values输出 shapeAutoScalingGroupsType包含AutoScalingGroups列表与NextToken字段其中AutoScalingGroups中的每个元素由AutoScalingGroup结构描述字段包括组名、ARN、启动模板/启动配置、最小/最大/期望容量、可用区、健康检查配置、实例列表、终止策略、标签等详见下文第七节。二、Example 1查询指定的 Auto Scaling 组含完整输出解析官方示例文档的第一条示例演示了最常见的用法按组名查询单个 Auto Scaling 组。aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-names my-asg对应的 API 输入在 awscli/botocore/data/autoscaling/2011-01-01/examples-1.json 中有同样的记录其 JSON 形式为{ AutoScalingGroupNames: [ my-auto-scaling-group ] }输出结构完整解读命令输出为一个 JSON 对象顶层包含AutoScalingGroups数组。以下是对示例输出的逐字段解析{ AutoScalingGroups: [ { AutoScalingGroupName: my-asg, AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-asg, LaunchTemplate: { LaunchTemplateName: my-launch-template, Version: 1, LaunchTemplateId: lt-1234567890abcde12 }, MinSize: 0, MaxSize: 1, DesiredCapacity: 1, DefaultCooldown: 300, AvailabilityZones: [ us-west-2a, us-west-2b, us-west-2c ], LoadBalancerNames: [], TargetGroupARNs: [], HealthCheckType: EC2, HealthCheckGracePeriod: 0, Instances: [ { InstanceId: i-06905f55584de02da, InstanceType: t2.micro, AvailabilityZone: us-west-2a, HealthStatus: Healthy, LifecycleState: InService, ProtectedFromScaleIn: false, LaunchTemplate: { LaunchTemplateName: my-launch-template, Version: 1, LaunchTemplateId: lt-1234567890abcde12 } } ], CreatedTime: 2023-10-28T02:39:22.152Z, SuspendedProcesses: [], VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782, EnabledMetrics: [], Tags: [], TerminationPolicies: [ Default ], NewInstancesProtectedFromScaleIn: false, ServiceLinkedRoleARN: arn, TrafficSources: [] } ] }各关键字段的业务含义如下AutoScalingGroupName / AutoScalingGroupARN组的名称与全局唯一资源标识符ARNARN 是后续许多自动化脚本用于标识该组的可靠 IDLaunchTemplate该组使用的启动模板名称、版本、ID。若组改用启动配置则该字段会被LaunchConfigurationName取代见 Example 5MinSize / MaxSize / DesiredCapacity最小、最大容量与期望容量共同决定了伸缩的边界与目标实例数DefaultCooldown默认冷却时间秒两次扩容/缩容活动之间的最短间隔AvailabilityZones组可用的可用区列表伸缩出的实例会分布在这些可用区中LoadBalancerNames / TargetGroupARNs / TrafficSources与该组关联的 Classic Load Balancer、目标组及流量来源均未配置时为空数组HealthCheckType / HealthCheckGracePeriod健康检查类型EC2或ELB及新实例的健康检查宽限期秒Instances组内实例数组包含实例 ID、类型、所在可用区、健康状态Healthy、生命周期状态InService、是否受缩容保护ProtectedFromScaleIn及实例使用的启动模板CreatedTime组创建时间ISO 8601 格式SuspendedProcesses / EnabledMetrics / Tags已挂起的伸缩流程、已启用的监控指标、标签列表VPCZoneIdentifier组使用的子网 ID 列表逗号分隔TerminationPolicies终止策略列表Default表示使用默认策略NewInstancesProtectedFromScaleIn新实例是否默认开启缩容保护ServiceLinkedRoleARN服务相关角色的 ARN。三、Example 2一次查询最多 100 个指定的组当需要同时确认多个组的配置时可在--auto-scaling-group-names后传入多个组名并用--max-items限制返回数量上限。官方示例文档指出单次调用最多可指定 100 个组名aws autoscaling describe-auto-scaling-groups \ --max-items 100 \ --auto-scaling-group-names group1 group2 group3 group4输出与 Example 1 相同AutoScalingGroups数组包含所查询各组的信息。这里需要注意--max-items与 API 层的MaxRecords的对应关系。从 awscli/botocore/data/autoscaling/2011-01-01/paginators-1.json 可以看到该操作的分页配置为{ input_token: NextToken, output_token: NextToken, limit_key: MaxRecords, result_key: AutoScalingGroups }也就是说--max-items会映射到 API 请求中的MaxRecords字段用于限制本次返回的记录条数。--max-items 100表示本次最多返回 100 个组若组数超过该值返回结果会附带NextToken供继续翻页详见第五节。四、Example 3在指定区域查询 Auto Scaling 组Auto Scaling 组是区域级资源。默认情况下 AWS CLI 使用~/.aws/config或环境变量中配置的默认区域也可以通过--region参数临时指定区域aws autoscaling describe-auto-scaling-groups \ --max-items 75 \ --region us-east-1该命令查询us-east-1区域内的 Auto Scaling 组并将返回数量限制在最多 75 个。若区域参数被省略将回退到 AWS CLI 的默认区域配置可通过 awscli/customizations/configure 相关配置命令查看与修改。五、Example 4分页控制 ——--max-items、NextToken与--starting-token当一个区域内的 Auto Scaling 组数量很多时单次响应会被截断需要通过分页逐批获取。官方示例演示了三种配合方式1. 只返回指定数量的组aws autoscaling describe-auto-scaling-groups \ --max-items 1--max-items 1让本次调用只返回 1 个组便于脚本逐个处理或快速验证环境。2. 使用 NextToken 继续翻页如果输出中包含NextToken字段说明仍有更多组未返回。将返回的NextToken值传给下一次调用的--starting-token即可获取后续批次aws autoscaling describe-auto-scaling-groups \ --starting-token Z3M3LMPEXAMPLE输出结构与 Example 1 相同但返回的是令牌之后的下一批组。3. 底层实现原理分页参数是 AWS CLI 的通用能力实现在 awscli/customizations/paginate.py 中。该模块会为支持分页的操作自动注入三个参数--starting-token分页起始令牌对应 API 的NextToken--page-size每次底层 API 请求拉取的记录数--max-items整个命令最终输出的最大记录数。需要特别注意的是--max-items是“整个分页过程的输出上限”而--page-size是“单次底层请求的大小”。当--max-items小于--page-size时CLI 会提前终止拉取两者配合可以精确控制内存占用与网络请求次数。在 paginate.py 中可以分别看到这三个参数的注入逻辑。此外分页器配置中result_key为AutoScalingGroups意味着分页器会自动从每页结果中抽取AutoScalingGroups数组合并输出这也是为什么--max-items按“组”而不是按“页”计数的原因。六、Example 5使用 --query 过滤出使用启动配置的组Auto Scaling 组既可以绑定启动模板Launch Template也可以绑定旧的启动配置Launch Configuration。若想批量找出所有仍在使用启动配置的组官方示例使用--query配合 JMESPath 语法aws autoscaling describe-auto-scaling-groups \ --query AutoScalingGroups[?LaunchConfigurationName!null]该查询表达式的含义是从AutoScalingGroups数组中筛选出LaunchConfigurationName字段不为 null 的元素即绑定了启动配置的组。示例输出[ { AutoScalingGroupName: my-asg, AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-asg, LaunchConfigurationName: my-lc, MinSize: 0, MaxSize: 1, DesiredCapacity: 1, DefaultCooldown: 300, AvailabilityZones: [ us-west-2a, us-west-2b, us-west-2c ], LoadBalancerNames: [], TargetGroupARNs: [], HealthCheckType: EC2, HealthCheckGracePeriod: 0, Instances: [ { InstanceId: i-088c57934a6449037, InstanceType: t2.micro, AvailabilityZone: us-west-2c, HealthStatus: Healthy, LifecycleState: InService, LaunchConfigurationName: my-lc, ProtectedFromScaleIn: false } ], CreatedTime: 2023-10-28T02:39:22.152Z, SuspendedProcesses: [], VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782, EnabledMetrics: [], Tags: [], TerminationPolicies: [ Default ], NewInstancesProtectedFromScaleIn: false, ServiceLinkedRoleARN: arn, TrafficSources: [] } ]注意输出中的两个关键差异点组级与实例级均出现LaunchConfigurationName字段值为my-lc而不再出现LaunchTemplate字段——这正是 Example 1 输出与本次输出的结构性区别也验证了--query过滤条件的正确性。这一技巧非常适用于迁移审计场景例如在将旧启动配置批量迁移到启动模板之前先用该命令盘点出所有LaunchConfigurationName不为 null 的组。关于 AWS CLI--query过滤与输出定制的更多用法可参考 awscli/topics/config-vars.rst 与仓库中其他服务的示例文档如 awscli/examples/autoscaling/describe-launch-configurations.rst。七、输出字段全景AutoScalingGroup 结构源码视角从前述 service-2.json 中的AutoScalingGroup结构定义来看一个组对象除示例中出现的字段外还可能包含以下按需出现的字段未配置时通常不返回或返回空值MixedInstancesPolicy混合实例策略同时使用按需与 Spot 实例PredictedCapacity预测容量使用预测式伸缩时出现AvailabilityZoneIds可用区 ID 列表PlacementGroup放置组名称Status组状态如删除中MaxInstanceLifetime实例最大生命周期秒到期后自动替换CapacityRebalance容量再平衡开关WarmPoolConfiguration/WarmPoolSize暖池配置与当前暖池大小DesiredCapacityType期望容量类型units或vCPUmemoryDefaultInstanceWarmup默认实例预热时间InstanceMaintenancePolicy实例维护策略DeletionProtection删除保护开关AvailabilityZoneDistribution/AvailabilityZoneImpairmentPolicy可用区分布与故障策略CapacityReservationSpecification容量预留相关配置InstanceLifecyclePolicy实例生命周期策略。借助--query与--output的组合你可以从这些字段中提取任意所需信息例如仅输出组名与期望容量的映射关系aws autoscaling describe-auto-scaling-groups \ --query AutoScalingGroups[].[AutoScalingGroupName, DesiredCapacity] \ --output table八、小结aws autoscaling describe-auto-scaling-groups是运维 Auto Scaling 组时的高频只读命令。回顾本文要点按名称查询--auto-scaling-group-names my-asg精准定位单个组输出包含组配置与组内实例批量查询一次可传入最多 100 个组名配合--max-items控制返回数量区域控制通过--region指定区域默认使用 CLI 配置的默认区域分页--max-items控制输出上限NextToken--starting-token实现连续翻页底层由 awscli/customizations/paginate.py 统一处理过滤--queryJMESPath可在客户端侧过滤输出例如筛选使用启动配置的组原理依据所有参数与字段均可在仓库的 service-2.json 与 paginators-1.json 中追溯其类型、约束与分页映射关系。无论是日常巡检、批量审计还是编写自动化脚本掌握该命令的查询、过滤与分页技巧都能让你更高效地掌握 Auto Scaling 组的真实运行状态。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考