将现有 AWS Lambda 和 API Gateway 导出到 Cloudformation 模板

Posted

技术标签:

【中文标题】将现有 AWS Lambda 和 API Gateway 导出到 Cloudformation 模板【英文标题】:Export existing AWS Lambda and API Gateway to Cloudformation template 【发布时间】:2018-11-27 02:24:01 【问题描述】:

如何将现有配置和测试的基础设施(包括 AWS Lambda 函数、API 网关、ElastiCache 集群、Cloudwatch 规则)导出到 Cloudformation 模板?

我知道 Cloudformer 工具,但它支持数量有限的 AWS 服务(Amazon VPC、DynamoDB 等)并且不支持我们使用的某些服务。在我的案例中,我可以使用哪些工具和方法来生成 Cloudformation 模板?

【问题讨论】:

根据我的经验,在没有进行逆向工程的工具的情况下从头开始编写所有内容更有意义。当然,这意味着您需要花费更多时间,但另一方面,您可以重新思考(并理解)您的整个基础架构。 是的,我寻找导出现有资源的方法的主要原因是为了节省时间 【参考方案1】:

部分解决方案:可以将 Lambda 函数导出到 AWS SAM 文件

然后

我们将获得将您的 Lambda 函数描述为“AWS::Serverless::Function”的 YAML 文件。但是很少有事情——我们不能用这种方法导出 Lambda 别名。这也无助于 API Gateway 导出。

【讨论】:

不知道为什么,但导出函数选项没有显示在我的函数中。看来我也得从头开始了。我希望至少有一个起始模板可以尝试节省一些时间。【参考方案2】:

CloudFormer 是为此而构建的,但是,我同意 @MaiKaY 的观点,即您应该重写所有内容。 CloudFormer 将创建带有 ID 的硬链接,您必须在其中将这些替换为引用、添加参数和/或映射。它可以帮助您入门,因此您知道模板中需要什么。

【讨论】:

但 CloudFormer 不支持 Lambda 函数和 API 网关 它至少可以让你开始。 CloudFormation 值得学习,从长远来看将为您节省更多时间。我们要做的是建立一个我们想要的 POC,然后将其转移到 CF 并继续构建该模板。

以上是关于将现有 AWS Lambda 和 API Gateway 导出到 Cloudformation 模板的主要内容,如果未能解决你的问题,请参考以下文章

CloudFormation 模板 - 将现有 IAM 角色用于 Lambda 函数

如何将无服务器 Step Function/状态机/Lambda 构建嵌套到现有 AWS CloudFormation ElasticBeanstalk 应用程序中?

如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名

如何将AWS API网关阶段指向特定的lambda函数别名?

AWS Lambda:如何将秘密存储到外部 API?

如何使用 JSON 格式将 lambda 请求 ID 记录到 AWS CloudWatch Api 网关日志组中?