一位 DevOps 工程师部署了一个 CloudFormation 模板,该模板启动了一个 Web 应用程序(ALB、目标组、使用 Amazon Linux 2 AMI 的启动模板、Auto Scaling 组、安全组和 RDS MySQL 数据库)。启动模板的用户数据运行一个脚本来安装和启动应用程序。在将用户数据更新到新的应用程序版本并通过 CI/CD 管道重新部署后,ALB 健康检查失败,所有目标都显示不健康。CloudFormation 堆栈显示 UPDATE_COMPLETE,但 EC2 实例日志显示 Apache 因配置错误而未能启动。如果用户数据脚本未能成功完成,工程师如何让 CloudFormation 部署失败?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 使用 cfn-signal 助手向 CloudFormation 发送成功或失败信号。将 WaitOnResourceSignals 更新策略添加到 CloudFormation 模板中的资源,并为更新策略配置适当的超时。.
为什么这是答案
正确答案是使用 cfn-signal 助手。当用户数据脚本执行时,cfn-signal 可以根据脚本的成功或失败向 CloudFormation 发送信号。将 WaitOnResourceSignals 更新策略应用于 Auto Scaling 组或实例,并设置适当的超时,CloudFormation 会等待这些信号。如果脚本失败或超时,CloudFormation 堆栈更新将回滚,从而准确反映部署失败。 其他选项不正确: CloudWatch 警报在部署失败后才触发,无法阻止 CloudFormation 报告 UPDATECOMPLETE。 Auto Scaling 生命周期挂钩主要用于在实例生命周期事件期间执行自定义操作,不直接用于在用户数据脚本失败时使 CloudFormation 堆栈更新失败。 CloudWatch 代理和 Lambda 的组合过于复杂,且不是 CloudFormation 专门用于处理用户数据脚本失败的标准机制。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡