#python #python-3.x #amazon-web-services #aws-lambda #amazon-cloudformation
Вопрос:
У меня есть проект со структурой, подобной этой:
.
├── README.md
└── src/
├── some_package_1/
| ├── setup.py
| └── some_module_1/
| ├── __init__.py
| ├── some_module_1.py
├── some_package_2/
| ├── setup.py
| └── some_module_2/
| ├── __init__.py
| ├── some_module_2.py
├── some_lambda/
| ├── lambda_function.py
| └── cfn-templates
| ├── my_template.yml
Моя функция lambda_function.пай выглядит так:
from src.some_package_1.some_module_1 import some_module_1
from src.some_package_2.some_module_2 import some_module_2
def lambda_handler(event, context):
# Ofc logic here is simplified
some_module_1()
some_module_2()
Мой вопрос: Как импортировать вещи, расположенные в родительском каталоге, в функцию lambda?
Что я пробовал: Следуя этому руководству, чтобы создать zip-архив для моих зависимостей, однако эта функция lambda будет развернута с использованием шаблона CloudFormation, и я не знаю, как реализовать шаги по установке моих пакетов в один каталог и их архивации в шаблоне CloudFormation.
Существует ли какой-либо стандарт для обработки импорта, подобного этому, с помощью лямбда-функций?
Комментарии:
1. А как насчет использования СЭМА?
2. @Marcin Все примеры на github примеров СЭМА github.com/amazon-archives/serverless-app-examples похоже, это не относится к моему варианту использования. У меня есть личные пакеты в моем репозитории, и я задаюсь вопросом, как разрешить их в моем шаблоне. Не могли бы вы, пожалуйста, дать мне дополнительную информацию о том, с чего начать? Я должен добавить, что я новичок в работе с AWS в целом. Должен ли я указать
some_module_1
в requirements.txt, илиsam build
должен распознавать импорт сам по себе3. Как все прошло? Сработал ли пакет?
4. @Marcin Частично да, мне пришлось написать сценарий оболочки для установки других моих модулей в
some_lambda/
директорию, а затем упаковать его и развернуть. Спасибо 🙂5. рад, что это сработало. Если да, то мы будем признательны за принятие ответа.
Ответ №1:
CloudFormation поддерживает автоматическое создание zip-пакетов для lambda, как описано в:
Для этого вам необходимо использовать команду пакета aws cloudformation.
Комментарии:
1. Это выглядит многообещающе. Большое спасибо 🙂
2. @w8eight Без проблем. Пожалуйста, дайте мне знать, как все пройдет.