![](/img/trans.png)
[英]AWS Lambda Importing psycopg2 - Unable to import module 'app': No module named 'psycopg2._psycopg
[英]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 的方法
您应该从控制台检查 lambda 处理程序名称。 这可能是因为处理程序名称引用lambda_function.foobar
但 zip 中 Lambda 的文件名不会命名为lambda_function.py
。
确保名称采用filename.function_name
格式。
在此示例中,如果文件名为lambda_function
,则处理程序值应为lambda_function.lambda_handler
。
目录结构当前不包括psycopg2
模块,因此仍然无法加载。
为了解决这个问题,以下解决方案适用:
问题不再存在。 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.