AWS Lambda函数无法找到包 - Psycopg2

时间:2018-05-30 16:16:26

标签: postgresql python-2.7 amazon-web-services aws-lambda psycopg2

团队 -

这是我的问题:

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

我正在尝试让这个lambda函数正常工作。请帮忙。

2 个答案:

答案 0 :(得分:1)

问题正在引起因为psycopg2需要构建一个使用静态链接库编译的Linux。有关此问题的详细信息,请参阅Using psycopg2 with Lambda to Update Redshift (Python)。在OSX上编译psycopg2的另一个reference问题。

一个解决方案是使用Amazon Linux AMI编译库。使用SSH连接到AMI后:

  1. 使用aws configure
  2. 设置aws凭据
  3. sudo su -
  4. pip install psycopg2 -t /path/to/project-dir
  5. Zip目录zip project-dir.zip project-dir
  6. Upload to Lambda using CLI
  7. 希望这有助于您了解问题和可能的解决方案。上述参考文献中还有其他解决方案,例如使用boto3或此回购https://github.com/jkehler/awslambda-psycopg2,但这是适合我的解决方案。

答案 1 :(得分:1)

pip install psycopg2-binary

帮我修好了