aws-lambda - 用于 psycopg2 的 AWS Lambda 层
问题描述
我正在尝试创建一个新的 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 文件出了问题,无法识别它们。但是当它在我的部署包中运行良好时。
任何帮助或理由都会非常感激。谢谢!
解决方案
不确定 OP 是否找到了解决方案,但万一其他人降落在这里。我使用以下步骤解决了这个问题:
- 从以下位置下载代码/克隆 git: https ://github.com/jkehler/awslambda-psycopg2
- 如果为 python3.7 构建,则创建以下目录树,否则将 'python3.7' 替换为版本选择:
mkdir -p python/lib/python3.7/site-packages/psycopg2
- 选择感兴趣的python版本并将文件从步骤1中下载的文件夹复制到步骤2中的目录树。例如,如果为python 3.7构建一个层:
cp psycopg2-3.7/* python/lib/python3.7/site-packages/psycopg2
- 为图层创建 zip 文件。例如:
zip -r9 psycopg2-py37.zip python
- 在控制台或 cli 中创建一个层并上传 zip
推荐阅读
- python - 在 Pycharm 中加载原生 TensorFlow 运行时失败
- sql - 动态 SQL 中的变量声明和 EXEC 命令不起作用
- vue.js - 如何缓存组件 dom 和状态并根据我的逻辑进行渲染?
- python - 无法从 pandas_ml 的“sklearn.preprocessing”导入名称“Imputer”
- java - 哪个更优化?多条记录还是一条带有 CLOB 列的记录?
- php - 使用 composer Windows 10 安装 laravel 时出错
- python - 如何将多个值关联到一个字典键?
- java - Compiler says variable has not been initialized
- influxdb - “高基数”字段(或标签)上的 InfluxDB WHERE 子句
- scala - spark scala 将嵌套数据框转换为嵌套数据集