将 Python 模块导入 AWS Lambda

wen*_*ear 5 python postgresql amazon-web-services aws-lambda

我已遵循文档中的所有步骤: https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

  1. 创建一个目录。

  2. 将所有 Python 源文件(.py 文件)保存在此目录的根级别。

  3. 使用 pip 在目录的根级别安装任何库。

  4. 压缩project-dir目录的内容)

但是将 zip 文件上传到lambda函数后,在测试脚本时收到错误消息

我的代码:

    import psycopg2
    #my code...
Run Code Online (Sandbox Code Playgroud)

错误:

    Unable to import module 'myfilemane': No module named 'psycopg2._psycopg'
Run Code Online (Sandbox Code Playgroud)

不知道这个后缀是哪里来'_psycopg'

对此有什么帮助吗?

Kan*_*yan 6

您正在将本机库与 lambda 一起使用。我们遇到了类似的问题,以下是我们的解决方法。

使用 AWS 支持的 AMI 运行一台机器,运行您真正的 lambda。

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

正如本文所写,

AMI 名称:amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2

安装 python lambda 本机模块的完整文档。

https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

安装 lambda 所需的模块,

pip install 模块名称 -t /path/to/project-dir

并准备好您的包,以便在 lambda ami 环境下与本机模块一起上传。

希望这可以帮助。


Kit*_*der 0

我相信这是因为psycopg2需要为 Linux 构建一个带有静态链接库的编译版本。有关此问题的更多详细信息,请参阅使用 psycopg2 和 Lambda 来更新 Redshift (Python) 。OSX 上编译问题的另一个[参考][1] psycopg2

有一些解决方案,但基本上归结为在 Linux 计算机上安装该库并将其用作上传包中的 Psycopg2 库。