You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation中如何回滚AWS Lambda通过SDK做出的资源变更

关于AWS Lambda动态创建资源的回滚问题解答

核心问题解答

原生CloudFormation的堆栈回滚能力无法自动同步回滚Lambda运行时通过AWS SDK创建的资源。
原因是CloudFormation仅会跟踪自身模板中显式定义的资源,Lambda在运行过程中动态调用API创建的S3桶、IAM策略等资源,不在CloudFormation的堆栈资源清单内,因此执行stack rollback操作时,CloudFormation无法感知这些动态资源的存在,自然不会自动处理。

自定义回滚方案实现步骤

你可以通过「资源记录+CloudFormation自定义资源」的方式实现需求,具体操作如下:

  • 提前在你的CloudFormation模板中创建一个DynamoDB表,作为动态资源的元数据存储库。每次Lambda通过SDK创建资源后,立即将资源的ARN、所属区域、创建时间、关联堆栈ID等信息写入该表,确保所有动态创建的资源都有可追溯的记录。
  • 将该Lambda配置为CloudFormation**自定义资源(Custom Resource)**的处理函数。配置完成后,CloudFormation在执行堆栈创建、更新、删除/回滚操作时,都会主动向该Lambda发送对应事件类型的触发请求,删除/回滚场景下发送的事件类型为Delete。
  • 在Lambda代码中新增Delete事件的处理逻辑:
    1. 收到Delete事件时,首先从DynamoDB表中筛选出所有关联当前堆栈ID的资源记录
    2. 按照「创建顺序倒序」的规则调用对应AWS SDK删除资源,存在依赖关系的资源要优先清理依赖(比如删除S3桶前要先清空桶内所有对象、版本文件)
    3. 每成功删除一个资源就删除DynamoDB中对应的记录,所有资源清理完成后向CloudFormation回传操作成功的信号,堆栈回滚/删除流程即可正常完成
  • 额外注意:删除逻辑中要加入重试和错误捕获机制,遇到资源被占用、权限不足等异常时要记录错误日志并发送告警,避免直接返回失败导致整个CloudFormation堆栈卡住。

内容的提问来源于stack exchange,提问作者Dean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:18:03