【问题标题】:psycopg2 does not work with Serverless framework deployment on AWS Lambdapsycopg2 不适用于 AWS Lambda 上的无服务器框架部署
【发布时间】:2020-07-07 15:03:08
【问题描述】:

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

serverless.yml 配置:

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

Dockerfile:

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,有什么关于如何让代码运行的建议吗?

【问题讨论】:

  • docker 镜像与 lambda 环境不同。您需要手动将共享库文件libpq.so.5 包含在您的serverless.yml 中。
  • @jellycsc 你是怎么做到的?

标签: amazon-web-services docker aws-lambda psycopg2 serverless-framework


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2021-10-07
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多