如何通过AWS CLI查看CloudFormation堆栈创建错误
如何通过AWS CLI查看CloudFormation堆栈回滚的根因错误
不需要使用Web界面,通过AWS CLI完全可以获取所有报错详情。执行原生aws cloudformation describe-stack-events看不到具体错误,是因为该命令默认按时间倒序返回最新事件,回滚阶段产生的大量连锁事件会把最早触发回滚的根因错误压在返回列表底部,默认返回条目数量不足时就无法定位根因。
具体操作步骤
- 直接执行带过滤规则的查询命令,跳过所有回滚过程的无效事件,只拉取失败状态的事件详情:
aws cloudformation describe-stack-events \ --stack-name 替换为你的堆栈名称 \ --query 'StackEvents[?contains(ResourceStatus, `FAILED`)].[Timestamp, LogicalResourceId, ResourceType, ResourceStatusReason]' \ --output table
这个命令会筛出所有状态带FAILED标识的事件,按时间排序后最早出现的失败事件就是触发回滚的根因,事件里的ResourceStatusReason字段会写明具体错误原因,比如参数不合法、IAM权限缺失、资源配额不足、资源依赖冲突等,和控制台展示的信息完全一致。
- 如果查询的是嵌套堆栈,主堆栈的失败事件只会提示子堆栈创建/更新失败,你需要把命令里的
--stack-name参数值替换为事件里提示的子堆栈ID/名称,再执行一次相同的查询,就能拿到子堆栈内部的具体错误。 - 如果堆栈回滚完成后状态变为
ROLLBACK_COMPLETE,只要你没有手动删除这个已回滚的堆栈,事件记录会保留90天,随时可以用上面的命令查询,不会因为堆栈回滚完成就丢失错误信息。
常见误区
不要顺着返回的事件列表从最新的开始看,列表最顶部最新的事件全是回滚流程触发的资源删除、回滚完成类的通知,没有任何根因参考价值,直接过滤所有FAILED状态的事件是最高效的排查方式。
内容的提问来源于stack exchange,提问作者Ken - Enough about Monica
相关产品推荐
相关产品推荐

