psycopg2 不适用于 AWS Lambda 上的无服务器框架部署

psycopg2 does not work with Serverless framework deployment on AWS Lambda

我正在尝试让 lambda 函数连接到 Redshift,并通过无服务器框架部署它。

serverless.yml 配置:

pythonRequirements:
    dockerizePip: non-linux
    dockerFile: ./Dockerfile

Docker 文件:

FROM lambci/lambda:build-python3.6
RUN yum install -y postgresql-devel postgresql-libs

requirements.txt

psycopg2==2.8.5
requests==2.22.0
boto3==1.9.234

部署通过以下方式完成:

sls deploy --function fn_name --force

AWS Lambda 报错:

libpq.so.5: cannot open shared object file: No such file or directory

而且我可以确认它丢失了,但是当我用本地 docker 图像测试相同文件时,文件存在。我仍然不确定 serverless 实际部署包的方式

我不想使用 psycopg2-binary,我仍然不确定 aws-psycopg2,关于如何获取代码的任何建议 运行?

您可以尝试使用此模块而不是默认模块(仅支持 Python3.x)

https://pypi.org/project/aws-psycopg2/

虽然上面没有积极维护,并且最大版本为 psycopg2==2.8.4,但它可以满足您可能拥有的用例。

如果您需要对旧 python 版本的支持,您也可以尝试从此处 https://github.com/jkehler/awslambda-psycopg2 压缩和上传包。