如何解决python中的Lambda函数返回配置错误
我一直从Lambda函数中收到此错误消息:
Tue Aug 18 21:15:31 UTC 2020 : Execution failed due to configuration error: Malformed Lambda proxy response
Tue Aug 18 21:15:31 UTC 2020 : Method completed with status: 502
我要做什么是让用户输入两个数字。 lambda函数接受这些数字,然后通过引用列表的函数运行它们。输出是列表中的一行,其中包含两个数字,一个名称和一个默认消息。 我的Lambda函数在Python 3.6中,并且我正在通过GET方法使用API网关。 List_r5是一个带有少量列表的python脚本:
import json
from math import cos,asin,sqrt
import List_r5
print('Loading function')
#Parse out query string parameters
def lambda_handler(event,context):
usera_in = event['queryStringParameters']['usera_in']
userb_in = event['queryStringParameters']['userb_in']
print('UserA_In=' + usera_in)
print('UserB_In=' + userb_in)
#Define the function
def dis(us1,ub1,us2,ub2):
p = 0.017453292519943295
a = 0.5 - cos((us2-us1)*p)/2 + cos(us1*p)*cos(us2*p) * (1-cos((ub2-ub1)*p)) / 2
return 12742 * asin(sqrt(a))
def clo(database,input):
return min(database,key=lambda p: dis(v['us'],v['ub'],p['us'],p['ub']))
coord = {'us': usera_in,'ub': userb_in}
output = clo(List_r5.data,coord)
sta_output = output['NAME']
us_output = output['us']
ub_output = output['ub']
#Body of response object
gResponse = {}
gResponse['Sta'] = sta_output
gResponse['UserA'] = us_output
gResponse['UserB'] = ub_output
gResponse['Message'] = 'All good on your end?'
#HTTP response object
responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] = {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(gResponse)
#Return response object
return responseObject
解决方法
def clo. . .
之后到代码段末尾的所有内容都在clo函数定义内,因此它将永远不会执行。取消缩进代码
def clo(database,input):
return min(database,key=lambda p: dis(v['us'],v['ub'],p['us'],p['ub']))
coord = {'us': usera_in,'ub': userb_in}
output = clo(List_r5.data,coord)
sta_output = output['NAME']
us_output = output['us']
ub_output = output['ub']
#Body of response object
gResponse = {}
gResponse['Sta'] = sta_output
gResponse['UserA'] = us_output
gResponse['UserB'] = ub_output
gResponse['Message'] = 'All good on your end?'
#HTTP response object
responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] = {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(gResponse)
#Return response object
return responseObject
,
在我看来,这是一个压痕问题。尝试缩进函数dis()和clo()及其内容。
import json
from math import cos,asin,sqrt
import List_r5
print('Loading function')
#Parse out query string parameters
def lambda_handler(event,context):
usera_in = event['queryStringParameters']['usera_in']
userb_in = event['queryStringParameters']['userb_in']
print('UserA_In=' + usera_in)
print('UserB_In=' + userb_in)
#Define the function
def dis(us1,ub1,us2,ub2):
p = 0.017453292519943295
a = 0.5 - cos((us2-us1)*p)/2 + cos(us1*p)*cos(us2*p) * (1-cos((ub2-ub1)*p)) / 2
return 12742 * asin(sqrt(a))
def clo(database,input):
return min(database,p['ub']))
coord = {'us': usera_in,'ub': userb_in}
output = clo(List_r5.data,coord)
sta_output = output['NAME']
us_output = output['us']
ub_output = output['ub']
#Body of response object
gResponse = {}
gResponse['Sta'] = sta_output
gResponse['UserA'] = us_output
gResponse['UserB'] = ub_output
gResponse['Message'] = 'All good on your end?'
#HTTP response object
responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] = {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(gResponse)
#Return response object
return responseObject
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。