【问题标题】:Passing event from API gateway to Lambda将事件从 API 网关传递到 Lambda
【发布时间】:2019-03-18 06:00:59
【问题描述】:

我有一个 lambda 函数,它可以接收多种不同形式的 JSON。这个想法是通过 API Gateway 接收它。当我测试给定任何形式的 JSON 的函数时,它工作正常。但是,当我尝试通过 API Gateway 对其进行测试时,由于事件为空而失败。

我尝试添加一个空模型映射:

{}

但我仍然得到相同的结果。如何让 API 将正文中的任何类型的 JSON 传递给函数?

谢谢!

编辑

我想使用 Lambda 代理集成,并且我在 AWS 控制台中使用邮递员和 API 网关测试功能进行了测试。我只是在正文和内容类型标头中使用所需的 JSON 进行 POST。

【问题讨论】:

  • 您是如何使用 API-gateway 进行测试的?以及 API 网关使用哪种集成? (Lambda integrationLambda-proxy integration
  • @SangminKi​​m 请看我的编辑:)

标签: amazon-web-services aws-lambda api-gateway


【解决方案1】:

您不需要响应模型。

当您在 API 网关中使用 lambda 代理时,您会以特定形式 (https://serverless.com/framework/docs/providers/aws/events/apigateway/#example-lambda-proxy-event-default) 获取数据以获取完整详细信息。

与直接调用不同,handler(event, ctx, callback) 函数允许您简单地执行const payload = event 来获取您正在测试的数据;您需要使用const payload = JSON.parse(event.body),因为event 参数包含有关完整http 请求的更多信息。

【讨论】:

  • 我会假设这同样适用于 python 呢? Python 接收事件和上下文。
  • 哦- 抱歉- 不知道我为什么假设节点。但是,是的,无论使用何种语言,事件的形状总是相同的。烦人的是我从来没有找到一个非常全面的事件列表,但这是最接近的:docs.aws.amazon.com/lambda/latest/dg/eventsources.html
猜你喜欢
  • 2019-11-27
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 2020-02-26
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多