Изменение минутного кода пакета развертывания AWS Lambda необходимо при каждом обновлении - PullRequest
0 голосов
/ 26 марта 2019

Я создал пакет развертывания с пандами, numpy и т. Д. Для запуска моего примера кода.Размер составляет около 46 МБ.Сомневаюсь, нужно ли мне каждый раз обновлять мой код и снова обновлять весь пакет развертывания до AWS S3 для простого обновления кода?

Есть ли другой способ, с помощью которого я могу избежатьСтоимость загрузки в МБ S3 каждый раз и просто загрузить несколько килобайт кода?

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Я бы порекомендовал создать слой в AWS lambda.

Сначала необходимо создать экземпляр Amazon Linux (с использованием AMI, указанного в https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html - в настоящее время (26 марта 2019 г.) это amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 ) или контейнер докера с той же средой, что и среда выполнения лямбды.

Я лично делаю это с докером.

Например, чтобы создать слой для Python 3.6, я бы запустил

sudo docker run --rm -it -v "$PWD":/var/task lambci/lambda:build-python3.6 bash

Затем я бы создал папку python / lib / python3.6 / site-packages в / var / task в контейнере Docker (так что она будет доступна позже в каталоге на хост-машине, где я запустил Docker)

до pip3 install <your packages here> -t python/lib/python3.6/site-packages

Заархивируйте папку Python и загрузите ее в качестве слоя и используйте в моей функции лямбда-AWS.

Внимание! Пути в zip-файле должны выглядеть следующим образом: «python / lib / python3.6 / site-packages / {имена ваших пакетов}» *

Теперь тяжелые зависимости находятся в отдельном слое, и вам не нужно повторно загружать их каждый раз, когда вы обновляете функцию, вам нужно всего лишь обновить код

0 голосов
/ 22 апреля 2019

Разделите приложение на две части. Первая часть - это лямбда-функция, которая включает только код вашего приложения. Следующая часть лямбда-слой. Лямбда-слой будет включать только зависимости и будет загружен один раз.

Лямбда-слой может быть загружен и присоединен к лямбда-функции. Когда ваша функция вызывается, AWS объединит лямбда-функцию с лямбда-слоем, а затем выполнит весь пакет.

При обновлении кода вам нужно будет только обновить функцию лямбда. Так как пакет намного меньше, вы можете отредактировать его с помощью веб-редактора или заархивировать его и загрузить прямо в lambda с помощью инструментов cli.

Пример: aws лямбда-код функции обновления --function-name Ваше имя функции --zip-файл fileb: //Lambda_package.zip

Здесь приведены видеоинструкции и примеры создания лямбда-слоя для зависимостей. Он демонстрирует использование библиотеки pymsql, но вы можете установить там любую из ваших библиотек.

https://geektopia.tech/post.php?blogpost=Create_Lambda_Layer_Python

...