Lambda-слой AWS (Amazon Web Service) — это механизм распределения библиотек, пользовательских сред выполнения и других зависимостей, которые можно добавить к функции Lambda. Он позволяет отделить код приложения от зависимостей, которые можно повторно использовать в нескольких функциях.
Lambda-слои развертываются в виде ZIP-архивов и могут быть прикреплены к версиям функции или опубликованы в реестре слоев, что упрощает управление и обновление функции. Они также помогают уменьшить размер пакета развертывания, повысить скорость обновления функций и упростить обмен кодом между командами или функциями.
Преимущества Lambda-слоев
Вот пять преимуществ использования Lambda-слоев AWS.
- Упрощение управления кодом. Lambda-слои позволяют отделить код функции от ее зависимостей, что упрощает их управление и обновление по отдельности.
- Ускорение обновления функции. При обновлении Lambda-слоя нужно заново развернуть только слой, а не всю функцию. Это может значительно сократить время, необходимое для обновления Lambda-функции.
- Повторное использование кода. Один Lambda-слой можно использовать в нескольких функциях, сокращая дублирование кода и экономя время и усилия.
- Сокращение размера пакета. Разделяя зависимости в Lambda-слое, можно уменьшить размер пакета функции, что ускоряет ее развертывание и снижает общие затраты на хранение.
- Облегчение совместной работы. Публикация Lambda-слоев в AWS Serverless Application Repository или совместное использование между командами облегчает взаимодействие с общими зависимостями и снижает вероятность конфликтов между командами.
Bash-скрипт
#!/usr/bin/env bash
pip3 install pandas sqlalchemy --target python/
zip -r pandas_sqlalchemy_layer.zip python/
Выполнение/запуск скрипта
chmod +x create_lambda_layer.sh && ./create_lambda_layer.sh
Этот bash-скрипт устанавливает Python-библиотеки Pandas и SQLAlchemy, затем упаковывает их в zip-файл, который можно использовать в качестве Lambda-слоя AWS. Вот построчное объяснение.
#!/usr/bin/env bash
. Это называется “строка shebang”, которая указывает системе, какой интерпретатор использовать для выполнения скрипта. В данном случае она указывает, что скрипт должен выполнять Bash Shell.pip3 install pandas sqlalchemy — target python/
. Эта строка использует pip3 для установки Python-библиотек Pandas и SQLAlchemy в каталогpython/
. Параметр--target
указывает pip3 на установку библиотек в определенный каталог, а не в какое-то место по умолчанию.zip -r pandas_sqlalchemy_layer.zip python/
. Эта строка создает zip-файл с именемpandas_sqlalchemy_layer.zip
, в котором находится содержимое каталогаpython/
. Параметр-r
указывает zip на рекурсивное включение всех файлов и подкаталогов.
Примечание: максимальный размер заархивированного пакета Lambda-слоя составляет 50 МБ, включая размер всех файлов и библиотек в пакете. Если пакет превышает этот предел, Lambda AWS не создаст новую версию слоя, и вы получите ошибку. Подробнее об этом здесь.
Загрузка Lambda-слоя в AWS
Ниже приведены общие шаги по загрузке Lambda-слоя pandas_sqlalchemy_layer.zip
в AWS.
- Сначала откройте AWS Management Console и перейдите к сервису AWS Lambda.
- Нажмите на опцию Layers в левом меню.
- Затем нажмите кнопку
Create Layer
. - Введите имя и описание для Lambda-слоя.
- Загрузите ZIP-архив, содержащий зависимости, перетащив файл в диалоговое окно загрузки или выбрав его с помощью инструмента выбора файлов.
- Укажите совместимую(ые) среду(ы) выполнения для Lambda-слоя, например
Python 3.7
,Python 3.8
иPython 3.9
. - Публикация слоя создаст новую версию, которую вы сможете использовать в своих функциях.
После создания и публикации Lambda-слоя можно присоединить его к своим функциям AWS Lambda, указав ARN слоя (Amazon Resource Name, номер ресурса Amazon) в конфигурации функции.
Читайте также:
- Что такое бессерверная платформа?
- Зачем усложнять разработку с AWS Lambda?
- Как зарабатывать с помощью Python в 2023 году
Читайте нас в Telegram, VK и Дзен
Перевод статьи Dmit: Package AWS Lambda Layers for Python 🐍