Я знаю, что концепция использования пакета развертывания относительно проста, но я бился головой об этой проблеме в течение последних нескольких часов.Я следую документации от AWS по упаковке лямбда-зависимостей .Я хочу написать простую лямбда-функцию для обновления записи в таблице PostgreSQL при некотором событии.
Сначала я создаю новый каталог для работы:
mkdir lambdas-deployment && cd lambdas-deployment
Затем я создаю новую виртуальную среду и устанавливаю свои пакеты:
virtualenv v-env
source v-env/bin/activate
pip3 install sqlalchemy boto3 psycopg2
Моя trigger-yaml-parse.py функция (фактически она не использует sqlalchemy библиотеки пока нет, но я просто пытаюсь ее успешно импортировать):
import logging
import json
import boto3
import sqlalchemy
def lambda_handler(event, context):
records = event['Records']
s3_records = filter(lambda record: record['eventSource'] == 'aws:s3', records)
object_created_records = filter(lambda record: record['eventName'].startswith('ObjectCreated'), s3_records)
for record in object_created_records:
key = record['s3']['object']['key']
print(key)
Я следовал инструкциям в документации AWS.
zip -r trigger-yaml-parse.zip $VIRTUAL_ENV/lib/python3.6/site-packages/
Затем я добавляю в свой код функции:
zip -g trigger-yaml-parse.zip trigger-yaml-parse.py
Я получаю вывод updating: trigger-yaml-parse.py (deflated 48%)
.
Затем я загружаю свое новое архивированное развертывание в мое ведро сборки S3:
aws s3 cp trigger-yaml-parse.zip s3://lambda-build-bucket
Я выбираю загрузку из S3 в лямбда-консоли AWS:
Однако моя лямбда-функция завершается с ошибкой при выполнении:
START RequestId: 396c6c3c-3f5b-4df9-b7f1-057842a87eb3 Version: $LATEST
Unable to import module 'trigger-yaml-parse': No module named 'sqlalchemy'
Что я делаю не так?Я следовал документации AWS буквально шаг за шагом.