создать лямбду используя файл .env - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть четыре лямбда для создания. моя структура папок как показано ниже

folder1ForLambda1
  index.js
  package.json
  .env
folder2ForLambda2
  index.js
  package.json
  .env
folder3ForLambda3
  index.js
  package.json
  .env
folder4ForLambda4
  index.js
  package.json
  .env
build.sh

У меня есть скрипт сборки для всех лямбд в файле build.sh. Я хотел бы использовать соответствующий файл .env для установки переменных среды для каждой лямбды.

pushd ./folder1ForLambda1
aws lambda create-function \
  --function-name $PREFIX-$MODULE_NAME \
  --runtime nodejs6.10 \
  --handler "index.handler" \
  --code S3Bucket=$BUCKET_NAME,S3Key=$ZIP_NAME.zip \
  --environment Variables="" \
  --memory-size 512 \
  --timeout 5 \
  --publish
popd

У меня есть этот код для каждой лямбды. Как я могу использовать .env для установки переменных окружения?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать source для чтения переменных окружения из файла ( .env в вашем случае)

source ./folder1ForLambda1/.env

Обновление

Попробуйте это:

--environment Variables="{`cat .env | xargs | sed 's/ /,/g'`}" \
  • Использование cat для кормления xargs
  • Используя xargs для получения переменных из stdin , вывод выглядит как k1=v11 k2=v33
  • Использование sed для замены пробелов на запятые отдельными переменными k1=v11 k2=v33

Итак, ваш сценарий будет выглядеть как

pushd ./folder1ForLambda1
aws lambda create-function \
--function-name $PREFIX-$MODULE_NAME \
--runtime nodejs6.10 \
--handler "index.handler" \
--code S3Bucket=$BUCKET_NAME,S3Key=$ZIP_NAME.zip \
--environment Variables="{`cat .env | xargs | sed 's/ /,/g'`}" \
--memory-size 512 \
--timeout 5 \
--publish
popd
...