如何为我的 Lambda 函数创建可重复使用的 CloudFormation 模板?

Posted

技术标签:

【中文标题】如何为我的 Lambda 函数创建可重复使用的 CloudFormation 模板?【英文标题】:How can I create a re-usable CloudFormation template for my Lambda functions? 【发布时间】:2021-11-29 05:48:43 【问题描述】:

作为单个 CloudFormation 项目的一部分,我有 9 个 lambda 函数。

我觉得每个 Lambda 函数的 CloudFormation 模板在很多地方都开始变得相同,并且感觉就像是重复的 YAML 代码。

有没有办法通过参数化输入来创建单个 Lambda 配置并重用相同的代码?

【问题讨论】:

【参考方案1】:

是的,CloudFormation Nested Stacks 可以帮助您将共享 Lambda 配置声明为一个组件,然后您可以将其用于多个资源

您可以创建一个专用的子“Lambda”模板,而不是为您的 Lambda 函数复制和粘贴相同的配置。

然后,您可以从一个封装 CloudFormation 模板(通常称为“根堆栈”)多次指向您的 Lambda CloudFormation (CF) 堆栈。

ParametersOutputs & !GetAtt 将是帮助您在子堆栈和根堆栈之间共享数据以及函数名称、内存、运行时等方面的参数化方面的核心工具。


组织规模上,AWS CloudFormation Modules 会更合适,它允许您在更大范围内封装和重用资源配置。

Here's how AWS describes them:

模块是可以在多个 CloudFormation 模板中重复使用的构建块,并且可以像原生 CloudFormation 资源一样使用。

...

这意味着您可以创建一个模块来定义贵组织的 Lambda 函数标准,然后在另一个定义无服务器 Amazon API Gateway 实施模式的模块中使用该 Lambda 模块。

【讨论】:

嵌套麻袋怎么样?在这种情况下似乎更容易。 @Marcin 非常正确,我也会将其添加到我的答案中:) Ermiya Eskandary 与我的团队讨论了解决方案。他们建议全局部分适合用例。docs.aws.amazon.com/serverless-application-model/latest/…

以上是关于如何为我的 Lambda 函数创建可重复使用的 CloudFormation 模板?的主要内容,如果未能解决你的问题,请参考以下文章

如何为JSON创建错误处理函数[重复]

AWS Lambda:如何为具有 VPC 访问权限的 lambda 函数设置 NAT 网关

如何为AWS Lambda创建和压缩docker容器

AWS CloudFormation:如何为 Lambda 代码指定来自另一个 AWS 账户的存储桶?

如何为具有依赖关系的Java程序创建cmd文件[重复]

如何为 AWS API Gateway Custom Authorizer 提供 Lambda 权限?