【发布时间】:2022-01-09 13:05:00
【问题描述】:
我正在开发一个具有 10 个 Lambda 函数的无服务器应用程序。
我使用 sam build & sam package & sam deploy 部署代码更改
SAM 创建代码和所有依赖项的 zip 文件并将其上传到 S3。每次调用 Lambda 函数时都会下载此 ZIP。
这会产生 2 个问题。
1) 构建时间增加
运行sam deploy 会打印File with same data already exists at(Lambda 函数编号 - 1)次,因为它会为所有 Lambda 函数上传相同的 ZIP 包。由于所有 Lambda 函数都在同一个存储库中,因此所有函数的 ZIP 包都是相同的。出于某种原因,SAM 不明白这一点。我们是否希望为每个 Lambda 函数创建一个新的代码仓库?
2) ZIP 文件大小增加
正如我上面所说,每次调用 Lambda 函数时(如果是冷启动)都会下载 ZIP。这增加了延迟。 ZIP 包还有一个limit of 50MB。
Lambda Layers 似乎是一个潜在的解决方案,但看起来设置并不容易。
有没有办法使用 SAM 创建特定于 Lambda 函数的 ZIP 文件?在我的例子中,每个 Lambda 函数会有 10 个 ZIP 文件,每个 Lambda 会在调用它们时下载相应的 ZIP。
是否可以让 SAM 为每个 Lambda 进行构建,并且只包含每个 Lambda 中实际使用的依赖项,而不是将所有依赖项打包在一起?
【问题讨论】:
-
改用
sam build && sam deploy -
这种情况下部署不包含依赖?如果我不运行
sam package,ZIP 将如何生成?
标签: amazon-web-services aws-lambda aws-codepipeline aws-sam