Лямбда-функция AWS не может найти пакет - Psycopg2 - PullRequest
0 голосов
/ 30 мая 2018

Команда -

Вот моя проблема:

START RequestId: 3ef6bbb9-62da-11e8-82ba-81e0afb0b224 Version: $LATEST
Unable to import module 'lambda_insertEmailAddress': No module named psycopg2

END RequestId: 3ef6bbb9-62da-11e8-82ba-81e0afb0b224
REPORT RequestId: 3ef6bbb9-62da-11e8-82ba-81e0afb0b224  Duration: 0.44 ms   Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 19 MB  

Мой zip-файл имеет следующую структуру file name: lambdaInsertEmail.zip:

 total 98784
drwxrwxrwx  20 chauncey  staff   680B May 27 13:22 psycopg2
drwxrwxrwx  22 chauncey  staff   748B May 27 12:55 postgresql-9.4.3
-rwxrwxrwx   1 chauncey  staff   1.8K Apr 30 15:41 lambda_insertEmailAddress.py
-rw-r--r--   1 chauncey  staff    48M May 30 12:09 lambdaInsertEmail.zip

На случай, если вы захотитезнаю, что мой файл setup.cfg содержит следующие изменения:

pg_config=/Users/chauncey/Desktop/portfolio/aws_lambda_files/lambda_insertEmailAddress/postgresql-9.4.3/src/bin/pg_config/pg_config

static_libpq=1

Я пытаюсь заставить эту лямбда-функцию работать.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 июня 2018

Проблема возникает из-за того, что psycopg2 необходимо скомпилировать со статически связанными библиотеками для Linux.Пожалуйста, обратитесь Использование psycopg2 с Lambda для обновления Redshift (Python) для получения более подробной информации по этому вопросу.Еще одна ссылка на проблемы компиляции psycopg2 на OSX.

Одно из решений - это скомпилировать библиотеку с помощью Amazon Linux AMI.После подключения к AMI по SSH:

  1. Настройте учетные данные aws с помощью aws configure
  2. sudo su -
  3. pip install psycopg2 -t /path/to/project-dir
  4. Zip каталог zip project-dir.zip project-dir
  5. Загрузка в Lambda с использованием CLI

Надеемся, что это поможет вам понять проблему и возможное решение.В приведенных выше ссылках есть дополнительные решения, такие как использование boto3 или репо https://github.com/jkehler/awslambda-psycopg2,, но это решение, которое мне помогло.

...