AWS Educate场景下AWS CLI创建CloudFormation栈异常转ROLLBACK_COMPLETE问题
CloudFormation栈创建后回滚至ROLLBACK_COMPLETE的排查操作
第一步:定位具体失败原因
仅查看栈整体状态无法直接定位根因,需通过CLI拉取栈的全量事件记录,找到首个状态为CREATE_FAILED的资源条目,提取对应错误描述。执行查询命令:aws cloudformation describe-stack-events --stack-name my-internet-button
高频触发回滚的场景与对应修复方式
- 权限不足类问题
使用AWS Educate账户时,若当前CLI绑定的凭证没有对应服务的创建权限,会直接触发资源创建失败:- 确认当前CLI凭证属于Educate项目提供的沙箱权限边界,而非自定义的无权限IAM用户
- 检查Educate账户配额内已开通SNS邮件推送、Lambda、IoT规则服务,避免因服务未初始化导致的创建拦截
- 注意AWS Educate账户通常默认禁止用户自主创建新的IAM角色,若模板要求新建IAM执行角色,会直接触发权限拒绝报错,这类情况可直接使用Educate预置的权限角色替换模板内的自建角色配置。
- 参数传值错误
重新校验创建命令中两个参数的实际传入值,避免环境变量未正确赋值导致的传空/格式错误:- 检查
TopicName参数值的格式,确认内容为合法的IoT MQTT主题名,无特殊字符、首尾空格 - 检查
SubscriptionEmail参数值为合法邮箱格式,不存在漏写、错写的字符
- 检查
- 本地文件读取错误
确认执行CLI命令的当前工作目录下,存在完整可读的aws_button_template.json模板文件,未出现文件损坏、路径不对的问题 - 资源依赖冲突
若同区域内已存在同名的IAM角色、SNS主题、Lambda函数,会因AWS资源名区域内全局唯一的规则触发创建失败。创建前可检查目标区域的现有资源,重名时调整栈参数中对应的资源命名规则
重新部署的注意事项
每次重新创建栈前,必须先执行删除命令确认旧的回滚栈完全清理:
aws cloudformation delete-stack --stack-name my-internet-button,待栈状态完全消失后再执行新的创建命令,避免残留的回滚资源引发二次冲突。
内容的提问来源于stack exchange,提问作者thank_u
相关产品推荐
相关产品推荐

