没有名为"psycopg2"的模块 - 如何在 AWS Lambda 中使用 python 库和 CloudFormation?



我正在CloudFormation模板中的AWS中编写Lambda。这是一段相当琐碎的代码,看起来像这样:

DbAdminLambda:
Type: AWS::Lambda::Function
Properties:
Code:
ZipFile: |
import psycopg2
import json
def lambda_handler(event, context):
print(json.dumps(event))
... do logic ...
cfnresponse.send(event, context, cfnresponse.SUCCESS, "UserCreatedOk", "CustomResourcePhysicalID")
MemorySize: 128
Description: create postgres roles / users
Handler: index.lambda_handler

我正在使用psycopg2 python模块与Postgres数据库进行对话。代码经过测试并在本地运行。

lambda部署正常,但当我运行它时,我会得到以下错误:

{
"errorMessage": "Unable to import module 'index': No module named 'psycopg2'",
"errorType": "Runtime.ImportModuleError"
}

如果像我担心的那样,这意味着lambda缺少psycopg2二进制文件,我该如何运行这段代码?我真的需要构建一些二进制文件并将其上传到S3或其他什么地方吗?

我不知道那个特定的库,但如果您的代码需要任何自定义库,则需要构建包,将zip上传到S3并从那里部署它。

这是一个相对琐碎的过程,请记住,对lambda的任何更新都需要新的zip文件名,否则在云结构中不会接收到更改。

我最终使用了layers功能,并从这里添加了方便的第三方psycopg2层:https://github.com/jetbridge/psycopg2-lambda-layer

最新更新