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

使用aws cloudformation package上传Lambda时如何自动删除旧版本?

方案1:配置S3生命周期规则(最简便,无需修改现有工作流)

这是无侵入的原生方案,不需要调整你现有的打包部署流程:

  • 进入存放Lambda部署包的S3存储桶配置页,找到「生命周期规则」选项
  • 新增规则,应用到你存放Lambda包的特定前缀(比如统一存lambda-packages/前缀下就指定该前缀)
  • 按你的需求配置过期策略:
    • 未开启存储桶版本控制:设置对象创建后N天自动删除,根据回滚需求一般设7~30天即可
    • 已开启存储桶版本控制:额外添加非当前版本在变为非当前后N天自动删除规则,还可以配置最多保留N个最新版本,自动淘汰更早的版本
  • 规则生效后S3会在后台自动清理符合条件的旧对象,无需手动操作。

方案2:在CI/CD工作流中增加清理步骤

如果你需要更精准的控制(比如只删除特定Lambda的旧版本,保留其他部署包),可以在部署流程中插入清理脚本:

  • 执行aws cloudformation package命令时,捕获输出中生成的新S3对象地址
  • 用aws s3 ls s3://<你的桶名>/<对应Lambda的前缀>/命令列出该路径下所有历史部署包
  • 过滤掉本次新上传的包,以及你想要保留的最近N个版本的包
  • 对剩下的旧包执行aws s3 rm批量删除
  • 简化的脚本参考示例(保留最近3个版本):
aws s3 ls s3://my-bucket/lambda/my-function/ | sort -r | awk 'NR>3 {print $4}' | xargs -I {} aws s3 rm s3://my-bucket/lambda/my-function/{}

注意事项

  • 不要删除过新的部署包:CloudFormation栈回滚时需要用到对应版本的部署包,提前删除会导致回滚失败,建议至少保留最近5个版本或者7天内的所有版本
  • aws cloudformation package默认会用部署包内容的SHA256作为S3对象名,相同内容的包不会重复上传,所以重复打包相同代码不会产生冗余对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:24:01