首页 > 解决方案 > 用于 psycopg2 的 AWS Lambda 层

问题描述

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

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

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

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

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

标签: aws-lambdapython-3.7psycopg2aws-lambda-layers

解决方案


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

推荐阅读