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

piy*_*aga 6 psycopg2 amazon-web-services docker aws-lambda serverless-framework

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

无服务器.yml 配置:

pythonRequirements:
    dockerizePip: non-linux
    dockerFile: ./Dockerfile
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM lambci/lambda:build-python3.6
RUN yum install -y postgresql-devel postgresql-libs
Run Code Online (Sandbox Code Playgroud)

要求.txt

psycopg2==2.8.5
requests==2.22.0
boto3==1.9.234
Run Code Online (Sandbox Code Playgroud)

部署是通过以下方式完成的:

FROM lambci/lambda:build-python3.6
RUN yum install -y postgresql-devel postgresql-libs
Run Code Online (Sandbox Code Playgroud)

AWS Lambda 给出错误:

libpq.so.5: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我可以确认它丢失了,但是当我使用本地 docker 映像进行相同测试时,该文件存在。我仍然不确定如何serverless实际部署该包

我不想使用psycopg2-binary,而且我仍然不确定aws-psycopg2,关于如何让代码运行有什么建议吗?

Sum*_*mar 4

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

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

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

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