【发布时间】:2020-12-08 03:05:05
【问题描述】:
我不断从我的 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
【问题讨论】:
-
一个明显的问题是你的
clo函数立即返回min(database...),这意味着函数的其余部分,以及你实际上想要在函数末尾返回的响应对象,变得无法访问。 -
@DarthCadeus 谢谢。我已经编辑了代码,并且 clo 函数再次用于变量输出 5 行以下
-
@GK89 你能用更正的
clo函数更新你的代码 sn-p 吗? -
@MCI 已更新:它只返回最小值。我运行 clo 函数几行以生成输出
标签: python-3.x api aws-lambda aws-api-gateway