Несмотря на то, что документация четко описывает шаги, используемые для создания артефакта zip вручную для вашей лямбда-функции.Это решение не очень масштабируемое.Я использовал очень маленький пакет под названием juniper для бесшовной упаковки лямбда-функций Python.
В вашем конкретном случае вам необходимо выполнить следующие шаги:
Предполагая, чтоэто ваша структура папок:
.
├── manifest.yml
├── src
│ ├── requirements.txt
│ ├── lambda_function.py
В файле needs.txt вы бы включили только зависимости вашей лямбда-функции, в данном случае библиотеки PIL.
Pillow==6.0.0
Теперь,вам просто нужно создать небольшой файл, чтобы сообщить Juniper, что включать в zip-файл.Файл manifest.yml будет выглядеть так:
functions:
reko:
requirements: ./src/requirements.txt.
include:
- ./src/lambda_function.py
Теперь вам нужно pip install juniper
в вашей локальной среде.Выполните команду cli:
juni build
Juniper создаст: ./dist/reko.zip
.Этот файл будет содержать ваш исходный код, а также любые зависимости, которые вы включите в файл needs.txt.
По умолчанию juniper использует контейнеры docker, а команда build будет использовать python3.6.Вы можете изменить это значение по умолчанию.