用 cloudformation 替换 terraform 部署的 lambda

Posted

技术标签:

【中文标题】用 cloudformation 替换 terraform 部署的 lambda【英文标题】:Replacing a terraform deployed lambda in place with cloudformation 【发布时间】:2021-04-18 09:33:21 【问题描述】:

我需要从现有的 lambdas terraform/gocd 部署结构转移到使用 codepipeline 和 cloudformation。

我遇到的主要障碍是 cloudformation 无法部署具有现有名称的 lambda,这意味着我目前需要删除现有的 lambda,因为我们的测试环境和较少使用的 lambda 不是一个大问题,但有一些关键我宁愿有一种更清洁的移动方式,有没有办法将其替换到位?

【问题讨论】:

aws.amazon.com/blogs/aws/… !?一般来说,Cloudformation 在移动、重构、导入资源方面真的很糟糕。这是在决定转投 CF 之前应该清楚的事情。请注意,使用 CodePipeline 不是 CF 的参数,您可以在 CodePipeline 中轻松运行 terraform。 【参考方案1】:

唯一的方法是import现有资源到 CloudFormation。请注意,并非所有资源都可以导入。支持的列表是here。

在lambda方面,可以导入以下资源:

AWS::Lambda::别名 AWS::Lambda::CodeSigningConfig AWS::Lambda::Function AWS::Lambda::Version

但是,导入过程并不是那么简单。要使其正常工作,您已经需要具有与现有资源匹配的适当模板。

因此,在尝试使用生产功能之前,最好先在 测试功能 和其他资源上进行一些练习,以熟悉流程及其要求。此外,您可以考虑使用former2 来帮助您从现有的 lambda 生成这些初始模板作为起点。

【讨论】:

以上是关于用 cloudformation 替换 terraform 部署的 lambda的主要内容,如果未能解决你的问题,请参考以下文章

当自定义命名资源需要替换时,CloudFormation 无法更新堆栈

无服务器错误,当自定义命名资源需要替换时,CloudFormation 无法更新堆栈

无服务器版本 > 2.35 Cloudformation 模板的变量替换错误

无法使用 CloudFormation 将 GSI 添加到 DynamoDB 表

terra 包在尝试运行并行操作时返回错误

如何将 RDS 快照恢复到 cloudformation?