ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

aws-cli 实战:使用 `autoscaling describe-lifecycle-hooks` 查看 Auto Scaling 生命周期钩子配置

aws-cli 实战:使用 `autoscaling describe-lifecycle-hooks` 查看 Auto Scaling 生命周期钩子配置 aws-cli 实战使用autoscaling describe-lifecycle-hooks查看 Auto Scaling 生命周期钩子配置【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读本文以 AWS CLI本项目为 aws-cli 官方仓库中autoscaling describe-lifecycle-hooks命令的官方示例文档为主体讲解如何查询 Auto Scaling 组上已配置的生命周期钩子Lifecycle Hooks及其完整返回结构。你将掌握该命令的语法、必选参数、返回字段含义如GlobalTimeout、HeartbeatTimeout、DefaultResult与LifecycleTransition并了解生命周期钩子与put-lifecycle-hook、complete-lifecycle-action等配套命令在实例生命周期编排中的协作方式从而能够直接用于日常的 Auto Scaling 运维与排障。命令概览一次性列出 Auto Scaling 组的全部生命周期钩子describe-lifecycle-hooks用于获取指定 Auto Scaling 组上生命周期钩子的配置信息。其功能定义见 service-2.json该操作通过 HTTPPOST请求调用输入模型DescribeLifecycleHooksType将AutoScalingGroupName标记为必填字段输出模型DescribeLifecycleHooksAnswer仅包含一个LifecycleHooks列表成员。官方示例文档 describe-lifecycle-hooks.rst 给出的基本用法如下aws autoscaling describe-lifecycle-hooks \ --auto-scaling-group-name my-asg这是该命令最简单的形态仅传入 Auto Scaling 组名称即可返回该组下所有生命周期钩子的详细信息。对应示例的自动化测试数据也保存在仓库中见 examples-1.json其中输入参数同样为my-auto-scaling-group二者结构完全一致。请求参数详解必填与可选根据 DescribeLifecycleHooksType 模型该命令支持两个参数参数必填类型说明--auto-scaling-group-name是字符串最长 255 字符要查询的 Auto Scaling 组名称--lifecycle-hook-names否字符串列表最多 50 个一个或多个生命周期钩子名称省略时返回该组全部钩子其中--lifecycle-hook-names在官方示例中未使用属于可选参数。若只想查看某一个钩子的配置可像下面这样按名称过滤aws autoscaling describe-lifecycle-hooks \ --auto-scaling-group-name my-asg \ --lifecycle-hook-names my-launch-hook注意LifecycleHookNames列表的成员模型为AsciiStringMaxLen255最长 255 字符且列表上限为 50 个名称见 LifecycleHookNames 定义。返回结果逐字段解读官方示例文档给出了包含两个生命周期钩子的典型输出{ LifecycleHooks: [ { GlobalTimeout: 3000, HeartbeatTimeout: 30, AutoScalingGroupName: my-asg, LifecycleHookName: my-launch-hook, DefaultResult: ABANDON, LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING }, { GlobalTimeout: 6000, HeartbeatTimeout: 60, AutoScalingGroupName: my-asg, LifecycleHookName: my-termination-hook, DefaultResult: CONTINUE, LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING } ] }下面结合 LifecycleHook 结构体定义 逐一解释每个字段LifecycleHookName生命周期钩子的名称用于唯一标识该钩子。AutoScalingGroupName该钩子所属的 Auto Scaling 组名称。LifecycleTransition生命周期过渡类型决定钩子触发的时机。合法值为autoscaling:EC2_INSTANCE_LAUNCHING实例启动、即扩容时触发或autoscaling:EC2_INSTANCE_TERMINATING实例终止、即缩容时触发。HeartbeatTimeout心跳超时时间秒。如果钩子超过该时间没有收到来自自定义操作的心跳Auto Scaling 将执行DefaultResult中指定的动作。它是你自定义代码如 Lambda调用record-lifecycle-action-heartbeat续期的时间窗口。GlobalTimeout全局超时时间秒即实例最多能停留在 wait 状态的总时长。模型文档明确指出其上限为172800 秒48 小时或 100 倍的HeartbeatTimeout取二者较小值见 GlobalTimeout 字段文档。示例中启动钩子为 3000 秒、终止钩子为 6000 秒均在合法范围内。DefaultResult超时或发生意外失败时 Auto Scaling 组采取的动作。合法值为CONTINUE继续完成实例生命周期或ABANDON放弃实例终止其生命周期。NotificationTargetARN与RoleARN钩子处于 wait 状态时发送通知的目标资源 ARNSNS Topic 或 SQS 队列以及允许 Auto Scaling 组发布到该目标的 IAM 角色 ARN。官方示例输出中未展示这两个字段但在实际配置了通知的钩子上describe-lifecycle-hooks会一并返回与之结构一致的完整返回示例可见 examples-1.json其中包含NotificationTargetARN: arn:aws:sns:us-west-2:123456789012:my-sns-topic与RoleARN字段。NotificationMetadata随通知消息附带的自定义元数据最长 4000 字符可用于在消息中传递上下文信息。理解示例中的两组配置示例输出的两个钩子分别对应实例生命周期的两个关键阶段my-launch-hookLifecycleTransition为autoscaling:EC2_INSTANCE_LAUNCHINGHeartbeatTimeout为 30 秒、GlobalTimeout为 3000 秒。当新实例启动进入 Pending 状态时该钩子会将实例挂起在 wait 状态等待自定义操作如用户数据脚本完成、初始化配置通过心跳续期或直接完成动作。my-termination-hookLifecycleTransition为autoscaling:EC2_INSTANCE_TERMINATINGHeartbeatTimeout为 60 秒、GlobalTimeout为 6000 秒DefaultResult为CONTINUE。当实例因缩容即将被终止时触发常用于在实例真正销毁前完成日志收集、指标上报或状态清理。二者的DefaultResult也形成了对照启动钩子默认ABANDON初始化失败即放弃实例终止钩子默认CONTINUE清理超时也不阻塞缩容这是两种常见的最佳实践组合。在实例生命周期编排中的位置与配套命令配合使用describe-lifecycle-hooks属于查询类命令它的价值在于验证钩子是否按预期创建、排查钩子超时行为。而钩子的完整生命周期工作流由以下配套命令构成相关示例均在本仓库 examples/autoscaling 目录下创建/更新钩子put-lifecycle-hook用于创建或覆盖一个生命周期钩子。例如创建一个在实例启动时触发、心跳超时 4800 秒的钩子aws autoscaling put-lifecycle-hook \ --auto-scaling-group-name my-asg \ --lifecycle-hook-name my-launch-hook \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING \ --heartbeat-timeout 4800也可以同时指定--notification-target-arnSNS 主题或 SQS 队列与--role-arnIAM 角色让钩子进入 wait 状态时发送通知配合--notification-metadata可附带自定义元数据。注意HeartbeatTimeout的取值范围为30 到 7200 秒默认 3600 秒DefaultResult默认值为ABANDON见 LifecycleHookSpecification 定义。续期心跳自定义操作处理时间较长时可调用record-lifecycle-action-heartbeat通知 Auto Scaling 继续等待避免在HeartbeatTimeout到期后被中断。完成动作complete-lifecycle-action在自定义操作结束后显式告知 Auto Scaling 可以继续例如aws autoscaling complete-lifecycle-action \ --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-action-result CONTINUE \ --lifecycle-action-token bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635删除钩子delete-lifecycle-hook用于移除不再需要的钩子。查询钩子本文主角describe-lifecycle-hooks随时用于确认上述操作的结果。describe-lifecycle-hook-types则用于列出当前支持的钩子类型即autoscaling:EC2_INSTANCE_LAUNCHING与autoscaling:EC2_INSTANCE_TERMINATING见 service-2.json 中的DescribeLifecycleHookTypes定义。典型排查流程当实例卡在Pending:Wait或Terminating:Wait状态时先用describe-lifecycle-hooks核对HeartbeatTimeout、GlobalTimeout与DefaultResult是否符合预期再检查通知目标与角色配置是否正确最后确认自定义操作端的心跳续期与完成动作是否按约定调用。小结describe-lifecycle-hooks是 Auto Scaling 生命周期钩子运维中的基础查询命令一条命令即可返回指定组的全部钩子及其超时、默认动作、过渡类型与通知配置。结合本仓库中的 describe-lifecycle-hooks.rst 官方示例、put-lifecycle-hook.rst 与 complete-lifecycle-action.rst 配套示例以及 service-2.json 中的字段级定义你可以完整掌握钩子的创建—查询—续期—完成闭环为基于事件驱动的实例生命周期编排如初始化、清理、通知提供可靠的命令级支撑。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进