【问题标题】:How can I pass input (event) parameters through API Gateway into Lambda如何通过 API Gateway 将输入(事件)参数传递到 Lambda
【发布时间】: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


【解决方案1】:

根据 Lambda 中的 TestEvents,您在 Lambda 上获得的输入将是

LambdaTest

因此您可以将有效负载(或正文)加载为

Event = json.loads(event['body'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 2015-11-10
    • 1970-01-01
    • 2020-02-26
    • 2018-08-04
    • 2020-10-15
    • 2019-12-22
    相关资源
    最近更新 更多