适用于psycopg2的AWS Lambda层

时间:2020-07-31 14:56:39

标签: aws-lambda python-3.7 psycopg2 aws-lambda-layers

我正在尝试创建一个新的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”:“无法导入模块'lambda_function':没有名为'psycopg2'的模块”, “ errorType”:“ Runtime.ImportModuleError” }

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

任何帮助或理由都会得到充分利用。谢谢!

1 个答案:

答案 0 :(得分:2)

不确定 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