1

我正在尝试创建一个新的 lambda 层以使用 psycopg2 导入 zip 文件,因为该库使我的部署包超过 3MB,并且我再也看不到 lambda 函数中的内联代码。

我使用 Python 3.7 为以下两种情况创建了 lambda 层:

  • psycopg2_lib.zip(包含 psycopg2、psycopg2_binary.libs 和 psycopg2_binary-2.8.5.dist-info 文件夹)
  • psycopg2_only.zip 仅包含 psycopg2 文件夹。

我将他们新创建的层添加到我的 lambda 函数中。但是,在这两种情况下,我的 lambda_function 都会引发如下错误: { "errorMessage": "Unable to import module 'lambda_function': No module named 'psycopg2'", "errorType": "Runtime.ImportModuleError" }

该错误似乎是我的 zip 文件出了问题,无法识别它们。但是当它在我的部署包中运行良好时。

任何帮助或理由都会非常感激。谢谢!

4

2 回答 2

6

不确定 OP 是否找到了解决方案,但万一其他人降落在这里。我使用以下步骤解决了这个问题:

  1. 从以下位置下载代码/克隆 git: https ://github.com/jkehler/awslambda-psycopg2
  2. 如果为 python3.7 构建,则创建以下目录树,否则将 'python3.7' 替换为版本选择: mkdir -p python/lib/python3.7/site-packages/psycopg2
  3. 选择感兴趣的python版本并将文件从步骤1中下载的文件夹复制到步骤2中的目录树。例如,如果为python 3.7构建一个层: cp psycopg2-3.7/* python/lib/python3.7/site-packages/psycopg2
  4. 为图层创建 zip 文件。例如:zip -r9 psycopg2-py37.zip python
  5. 在控制台或 cli 中创建一个层并上传 zip
于 2021-02-09T15:26:19.023 回答
0

如果您在 >= 2022 年结束此页面。使用官方 psycopg2-binary https://pypi.org/project/psycopg2-binary/

对我来说效果很好。只是

pip install --target ./python psycopg2-binary

zip -r python.zip python

于 2022-02-04T08:45:53.023 回答