Вы можете иметь столько AWS::Serverless::Function
ресурсов в одном шаблоне, сколько хотите, если они имеют уникальный логический идентификатор.
Если вы предпочитаете хранить несколько лямбда-функций в одном репозитории, у вас будетпредоставить разные CodeUri
для каждой лямбды.Например, 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
и deploy
цель, которая будет package
ваш код (загрузить код на s3) и развернуть облачную информацию.
Команда package
отвечает за загрузку артефакта zip, указанного в CodeUri
, и заменит его на s3
URL в 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
Поскольку вы решили иметьнесколько лямбд в одном репозитории, вероятно, у вас будет две build
команды для каждой лямбда-функции и немного cd ...
логики для изменения рабочего каталога для каждой функции