【发布时间】:2021-03-24 03:51:08
【问题描述】:
我了解 API Gateway (AG) 将参数作为 JSON 有效负载传递给 Lambda。
我在 AG 中使用 Lambda 代理设置了一个 POST API。我的 lambda 函数采用以下参数列表:
{
"fullname": "Mr xxxxx",
"clientemail": "xxxxxx@xxx.com",
"clientphone": "0800 088 8888",
"locationtext": "Laxxxxxx Hotel , CA, USA",
"subject": "Gxxxxxrth",
"appointmentblock_min": "60",
"buffer": "120",
"calendar_id": "xxxxx",
"thedate": "2021-03-2xxxxxx",
"thetime": "xxxxx"
}
直接在 Lambda 控制台中进行测试。一切正常。我使用 lambda EVENT 对象映射代码中的所有参数,如下所示:
fullname = event['fullname']
clientemail = event['clientemail']
appointmentblock_min = int(event['appointmentblock_min'])
...等等。
所有代码都可以正常工作。
在顶部添加 API Gateway 组件......但事情不起作用。
具体问题:如何将来自 API Gateway (AG) 的 lambda 输入参数映射到 lambda? 我意识到 AG 正在将 JSON 发送到 Lambda。如何解析这个payload来提取和使用我需要的参数。
我试图创建一个包含所有参数的字典:
Event = {}
Event = json.loads(body)
Event = json.loads(event.body)
没有文档明确解释如何通过 AG 获取事件对象参数。
任何帮助将不胜感激。
PS 我希望将数据返回给 AG,如下所示:
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps(out_message),
'isBase64Encoded': 'false'
}
感谢您的考虑。
【问题讨论】:
-
AG 错误:2021 年 3 月 23 日星期二 19:49:32 UTC:由于客户函数错误:“thedate”,Lambda 执行失败,状态为 200。 Lambda 请求 ID:328e-4263-9237-174dce236e44 Tue Mar 23 19:49:32 UTC 2021:方法完成,状态为:502 日期指的是 Lambda 代码。将变量'thedate'分配给输入参数:thedate = event['thedate']
标签: python amazon-web-services api aws-lambda aws-api-gateway