red*_*888 5 amazon-web-services aws-cloudformation aws-lambda aws-sam-cli aws-sam
仍在等待对此的实际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 函数,则必须CodeUri为每个 lambda提供不同的值。例如CodeUri: ./handler-my-lambda-one.zip和CodeUri: ./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
Run Code Online (Sandbox Code Playgroud)
以及deploy将package您的代码(将代码上传到 s3)并部署 cloudformation 的目标。
该package命令负责上传 中指定的 zip 工件CodeUri并将其替换s3为sam.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
Run Code Online (Sandbox Code Playgroud)
由于您决定在单个存储库中拥有多个 lambda,您可能会build为每个 lambda 函数提供两个命令以及一些cd ...更改每个函数工作目录的逻辑
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |