如何更新CloudFormation栈中的cfn-response模块?解决Lambda部署报错
解决CloudFormation自定义资源无响应问题及栈更新操作指南
一、直接更新CloudFormation栈的步骤
- 登录AWS控制台,打开CloudFormation服务
- 在栈列表里找到main环境对应的栈,点击更新按钮
- 选择模板更新方式:
- 如果你有和test环境一致的最新模板,选上传模板文件,上传该文件
- 如果模板存在S3,直接输入对应的模板URL
- 要是想基于现有模板修改,选使用当前模板,后续手动调整配置
- 点击下一步,核对所有参数(比如Lambda的内存、超时时间、执行角色等),确保和test环境完全一致
- 进入配置选项页面,建议勾选启用回滚(防止更新失败后无法恢复),其他配置保持不变
- 到确认更新页面,滚动到底部,勾选“我确认CloudFormation可能创建IAM资源”(如果栈涉及IAM角色),最后点击更新栈
二、针对报错的关键排查点
既然test环境正常,main环境出问题,重点查这几个差异:
- Lambda执行角色权限:对比test和main的Lambda执行角色,确保main的角色有
cloudformation:SignalResource权限——哪怕你没用到cfn-response,自定义资源必须给CloudFormation发送执行信号才能完成部署 - Lambda超时设置:检查main环境Lambda的超时时间,是不是比test环境短?如果执行时间超过超时时间,Lambda会直接终止,没法发响应。建议先设成30秒试试,之后再根据实际执行时长调整
- Lambda版本配置:如果main环境的Lambda用了固定版本(test用的是$LATEST),可能旧版本没同步新代码。要么把模板里Lambda的
Version改成$LATEST,要么指定最新的版本号 - 自定义资源的ServiceToken:检查模板里自定义资源的
ServiceToken是不是指向正确的Lambda ARN,有没有拼写错误 - VPC网络权限:如果main的Lambda部署在VPC里,得确保它能访问CloudFormation——要么通过NAT网关走公网,要么配置CloudFormation的VPC端点
三、验证更新结果
更新完成后,去CloudFormation的事件日志里看自定义资源的状态,如果成功就没问题。要是还报错,直接去CloudWatch Logs里看Lambda的执行日志,找具体的错误信息(比如权限不足、代码报错、超时),再针对性修复
内容的提问来源于stack exchange,提问作者Nisha Vijayakumar
相关产品推荐
相关产品推荐

