Как разрешить внутренний импорт в функции лямбда

#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 Без проблем. Пожалуйста, дайте мне знать, как все пройдет.