繁体   English   中英

构建 lambda function 以连接到 Postgresql 获取:无法导入模块“lambda_function”:没有名为“psycopg2”的模块

[英]Building lambda function to connect to Postgresql getting :Unable to import module 'lambda_function': No module named 'psycopg2'

我正在测试我的 api 网关以调用 lambda function。 我考试成功了。

然后我试图通过相同的 lambda 连接到 postgresql

   import json
   import psycopg2
    
    db_host = "hostname"
    db_port = 5432
    db_name ="db name"
    db_user ="user"
    db_pass ="password"
    
    def connect():
        conn = None
        try :
            conn = psycopg2.connect("dbname={} user={} host={} password={}".format(db_name,db_user,db_host,db_pass))
    except :
        print("connetion error")
    return conn


print("Loading function")
def lambda_handler(event, context):
    # paring query from the string 
    name = event['queryStringParameters']['name']
    action = event['queryStringParameters']['action']

print('name = '+name )
print('action = '+action)

# body of the response object 

transactionResponse = {}
transactionResponse['name'] = name
transactionResponse['action'] = action
transactionResponse['message'] = 'Lambda called from api_gateway'

# construting Http response

responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(transactionResponse)

#  return the response object 

return responseObject

当我试图通过 API 端点触发它时,我得到了

 Unable to import module 'lambda_function': No module named 'psycopg2'

然后我继续通过下载所需的 package 来构建我的 lambda function 然后上传 ZADC2ZD29A8D84025 文件ADCF2ZD29A8D84027

当我尝试调用时尝试相同的方法来触发 lambda 我得到

 Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'lambda_function'

不知道 lamda_function 是什么。

有人能建议我摆脱这种低迷吗? 或为我提供一种从 API 网关触发器通过 lambda 连接到 RDS 的方法

这是我的构建 Package 在此处输入图像描述

您应该从控制台检查 lambda 处理程序名称。 这可能是因为处理程序名称引用lambda_function.foobar但 zip 中 Lambda 的文件名不会命名为lambda_function.py

确保名称采用filename.function_name格式。

在此示例中,如果文件名为lambda_function ,则处理程序值应为lambda_function.lambda_handler

目录结构当前不包括psycopg2模块,因此仍然无法加载。

为了解决这个问题,以下解决方案适用:

  • 通过 pip 安装添加依赖项,然后再次部署 zip
  • 添加已安装此依赖项的 Lambda 层

问题不再存在。 Get the psycopg2 build library from https://github.com/jkehler/awslambda-psycopg2 was built for python 3.6 and make sure you change the name to psycopg2 while uploading your code to AWS lambda, select Python Runtime environment as 3.6, and it应该管用。

您能否检查lambda_handler设置并确保它们已正确设置为代表您的 function:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM