gpt4 book ai didi

amazon-web-services - sam.yml 文件中的多个 Lambda 函数

转载 作者:行者123 更新时间:2023-12-04 08:10:16 53 4
gpt4 key购买 nike

仍在等待 AWS 对此的实际支持: https://github.com/aws-samples/aws-serverless-samfarm/issues/5

这应该如何工作?

我的用例是我有一个 API 网关前端 lambda,它将事件写入 SNS 主题。我有另一个 lambda 订阅了该主题。

这些 lambda 表达式可以位于单独的存储库中吗?是的。首先使用发布/订阅模式来分离这两个应用程序的目的是一部分吗?是的。

但这是一个简单的应用程序。该主题不会与其他功能共享,并且整个内容是独立的。最好将其全部部署在同一个模板中。

我可以轻松地将我想要的所有功能添加到 SAM 模板中,但如何部署它们?他们每个人都应该有不同的 CodeURI 吗?这意味着我需要编写脚本复制并将每个 lambda 依赖项安装到不同的文件夹中,然后将模板中每个 lambda 的 CodeURI 指向不同的文件夹。

对此有更好的支持吗?

最佳答案

您可以在单个模板中拥有任意数量的 AWS::Serverless::Function 资源,只要它们具有唯一的逻辑 ID。

如果您希望在单个存储库中保留多个 lambda 函数,则必须为每个 lambda 提供不同的 CodeUri。例如CodeUri:./handler-my-lambda-one.zipCodeUri:./handler-my-lambda-two.zip

通常,在存储库中拥有一个 Makefile 是一个很好的做法,其中包含一个 build 目标,负责准备 handler-my-lambda-*。 zip 类似:

build: 
rm -rf node_modules
npm install
zip -r handler.zip index.js lib node_modules

和一个deploy目标,它将打包您的代码(将代码上传到s3)并部署cloudformation。

package 命令负责上传 CodeUri 中指定的 zip 工件,并将其替换为 sam.txt 中的 s3 URL。 out.yaml

deploy:
aws cloudformation package \
--template-file sam.yaml \
--output-template-file sam.out.yaml \
--s3-bucket my-artifact-bucket-name

aws cloudformation deploy \
--template-file sam.out.yaml

由于您决定在单个存储库中使用多个 lambda,因此您可能会对每个 lambda 函数有两个 build 命令以及一些用于更改工作目录的 cd ... 逻辑每个功能

关于amazon-web-services - sam.yml 文件中的多个 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449627/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com