【问题标题】:AWS Lambda Function Can't Find Package - Psycopg2AWS Lambda 函数找不到包 - Psycopg2
【发布时间】:2018-11-09 13:59:56
【问题描述】:

这是我的问题:

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 函数工作。

【问题讨论】:

  • 你是用什么操作系统来打包这个函数的? - 注意:Lambda 只有在 Linux 中打包时才能加载 psycopg2。还有你用的是什么版本的python?
  • @Jeff 我使用的是 OSX 11.6。我使用了终端应用程序。我使用的 Python 版本是 2.7.9。非常感谢您提供的任何帮助。
  • 您可以尝试使用 Amazon Linux AMI 来编译库吗? - 参考stackoverflow.com/a/36608956/5787099
  • 我正在尝试这样做。我收到此错误:make[1]: *** [install-include-recurse] Error 2 make[1]: Leaving directory /home/ec2-user/lambdaFunctions/postgresql-9.4.3/src' make: *** [install-src-recurse] 在 make install 上出现错误 2`。我怎样才能让它工作,使用我猜根密码或 sudo。我试过sudo make install,但它不起作用。我想我需要切换到 root 但我不知道密码。
  • 我实际上是通过使用sudo susudo sh 实现的,但它没有用。有什么建议吗?

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


【解决方案1】:

问题是因为psycopg2 需要为Linux 构建一个带有静态链接库的编译器。请参考Using psycopg2 with Lambda to Update Redshift (Python) 了解有关此问题的更多详细信息。另一个reference 在 OSX 上编译 psycopg2 的问题。

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

  1. 使用 aws configure 设置 aws 凭据
  2. sudo su -
  3. pip install psycopg2 -t /path/to/project-dir
  4. 压缩目录zip project-dir.zip project-dir
  5. Upload to Lambda using CLI

希望这可以帮助您了解问题和可能的解决方案。上述参考资料中还有其他解决方案,例如使用 boto3 或此 repo https://github.com/jkehler/awslambda-psycopg2,但这是对我有用的解决方案。

【讨论】:

    【解决方案2】:

    pip install psycopg2-binary

    帮我修好了

    【讨论】:

      猜你喜欢
      • 2022-06-22
      • 2021-11-20
      • 2021-10-29
      • 2018-07-07
      • 2019-05-03
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多