仍在等待实际的AWS支持:
https://github.com/aws-samples/aws-serverless-samfarm/issues/5
这假设是如何工作的?
我的用例是我有一个API网关前端lambda,它将事件写入SNS主题.我有另一个订阅该主题的lambda.
这些lambdas可以在单独的回购中吗?是.是否首先使用pub / sub模式来分隔这两个应用程序?是.
但这是一个简单的应用程序.该主题不会与其他功能共享,整个事情是自包含的.理想情况下,它们应该全部放在同一个模板中.
我可以轻松地将我想要的所有功能添加到我的SAM模板中,但是如何部署它们?他们每个人都应该有不同的CodeURI吗?这意味着我需要脚本复制并将每个lambda依赖项安装到不同的文件夹中,然后将模板中每个lambda的codeuri指向不同的文件夹.
对此没有更好的支持吗?
最佳答案 只要具有唯一的逻辑ID,您就可以在单个模板中拥有尽可能多的AWS :: Serverless :: Function资源.
如果您希望在单个存储库中保留多个lambda函数,则必须为每个lambda提供不同的CodeUri.例如CodeUri:./ handler-my-lambda-one.zip和CodeUri:./ handler-my-lambda-two.zip.
通常,在您的存储库中有一个Makefile是一个很好的做法,它有一个构建目标,负责准备handler-my-lambda – * .zip,例如:
build:
rm -rf node_modules
npm install
zip -r handler.zip index.js lib node_modules
和一个部署目标,它将打包您的代码(将代码上传到s3)并部署cloudformation.
package命令负责上传CodeUri中指定的zip工件,并将其替换为sam.out.yaml中的s3 URL
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
既然你决定在一个存储库中有多个lambdas,那么你可能会为每个lambda函数提供两个构建命令,并且有一些cd …逻辑来更改每个函数的工作目录