【问题标题】:Deploy at once multiple aws netcore lambda functions一次部署多个 aws netcore lambda 函数
【发布时间】:2019-01-13 08:25:56
【问题描述】:
是否有任何使用无服务器框架或 AWS CloudFormation 模板的解决方案来发布多个 lambda,这些 lambda 分别位于单独的 Visual Studio .proj 和单独的 Visual Studio .sln 中
我能找到的任何示例都包含同一类或项目中的 lambda 函数。
【问题讨论】:
标签:
visual-studio
.net-core
aws-lambda
amazon-cloudformation
serverless-framework
【解决方案1】:
我不久前研究过这个。根据我的记忆,我认为您可以使用相同的 CloudFormation 模板以两种方式之一部署多个 lambda 函数。
- 为每个函数手动创建单独的 zip 包,将它们加载到 S3 中,然后在每个 Lambda 函数的 CloudFormation 模板中显式引用该包。
- 将所有已发布项目的文件合并到同一个文件夹中(CloudFormation 模板也必须在同一个文件夹中),然后使用“aws cloudformation package”命令创建 zip,将其加载到 S3,然后更新带有包的 S3 路径的模板。由于 Lambda 调用方法的方式,我不确定您是否能够为每个项目创建嵌套文件夹。
#1 的问题在于它更多地是手动过程,或者需要编写更多的脚本。
#2 的问题在于,创建的每个 Lambda 函数都将包含属于该包的所有函数的文件,即使您只访问一个函数处理程序。此外,如果在不同项目中使用同一程序集的不同版本,则可能会发生文件冲突。可以为 Lambda 函数加载的包大小也有限制(50MB 压缩,250MB 未压缩),因此这对某些人来说可能也是一个因素。
由于这些增加的复杂性和潜在问题,我们决定为每个 Lambda 函数使用单独的 CloudFormation 模板和堆栈。
Lambda limits - see "AWS Lambda Deployment Limits"