首页 > 解决方案 > psycopg2 的 AWS Lambda 问题

问题描述

我正在尝试将 psycopg2 导入我的 python 3.6 lambda 函数,但我一直遇到错误消息'Unable to import module 'lambda_function': /var/task/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so: ELF file's phentsize not the expected size'

我通过 AWS 控制台将 zip 文件直接上传到 lambda 函数中。我试过使用https://github.com/jkehler/awslambda-psycopg2库,但它给了我同样的信息。

我已经能够在 EC2 实例(Amazon Linux AMI 2018.03.0 (HVM))上成功运行我的脚本,我什至尝试将 EC2 实例 psycopg2 库上传到 lambda,但我仍然收到相同的错误消息.

任何帮助,将不胜感激。

标签: pythonamazon-web-servicesamazon-ec2aws-lambdapsycopg2

解决方案


我在尝试上传包含我的 Lambda 的 .zip 时也遇到了这个问题。对我来说,问题是我正在从上面的一个目录中压缩我的 Lambda。

解决方案是在包含 Lambda 函数本身的目录中运行 zip 命令,而不是从其父目录运行 zip。

例如,如果您的 lambda 函数作为 lambda_function.py 以及任何其他库(即多处理)存在于目录 ~/lambda 中 - 您应该通过执行以下操作来压缩您的 Lambda 部署包。

$ cd ~/lambda
$ zip lambda_function.zip lambda_function.py
$ zip -r lambda_function.zip multiprocessing* 

上传生成的 .zip 文件应该可以解决此问题。


推荐阅读