Ответ 1
Переменные среды AWS Lambda могут быть определены с помощью консоли AWS, CLI или SDK. Вот как вы бы определили ЛВЛС AWS, которая использует переменную среды LD_LIBRARY_PATH с помощью AWS CLI:
aws lambda create-function \
--region us-east-1
--function-name myTestFunction
--zip-file fileb://path/package.zip
--role role-arn
--environment Variables={LD_LIBRARY_PATH=/usr/bin/test/lib64}
--handler index.handler
--runtime nodejs4.3
--profile default
После создания переменные среды могут быть прочитаны с использованием поддержки, которую ваш язык предоставляет для доступа к среде, например. используя process.env для Node.js. При использовании Python вам нужно будет импортировать библиотеку os, как в следующем примере:
...
import os
...
print("environment variable: " + os.environ['variable'])
Ссылка на ресурс:
AWS Lambda теперь поддерживает переменные среды
Предполагая, что вы создали файл .env вдоль вашего модуля настроек.
.
├── .env
└── settings.py
Добавьте следующий код в свой settings.py
# settings.py
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
В качестве альтернативы вы можете использовать метод find_dotenv(), который попытается найти файл .env, выполнив (а) угадав, с чего начать использовать файл или рабочий каталог - файлов, таких как ноутбуки IPython и REPL, а затем (b) подойдя к дереву каталогов, ища указанный файл по имени .env по умолчанию.
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
Теперь вы можете получить доступ к переменным либо из переменной системной среды, либо загрузиться из файла .env.
Ссылка на ресурс:
https://github.com/theskumar/python-dotenv
gepoggio ответил в этом сообщении: https://github.com/serverless/serverless/issues/577#issuecomment-192781002
Обходным путем является использование python-dotenv: https://github.com/theskumar/python-dotenv
import os import dotenv dotenv.load_dotenv(os.path.join(here, "../.env")) dotenv.load_dotenv(os.path.join(here, "../../.env"))
Он пытается загрузить его дважды, потому что при локальном запуске он project/.env и при запуске un Lambda.env находится в Проект/компонент/.env