【问题标题】:AWS API Gateway multiple Integration Request per MethodAWS API Gateway 每个方法的多个集成请求
【发布时间】:2017-08-25 04:00:52
【问题描述】:

我的资源 /api 有一个 POST 方法,它将主体代理到 Kinesis Firehose(然后到 ES)。同时我希望它触发一个 Lambda 函数。

我尝试添加一个额外的方法 ANY 来触发 Lambda 函数,但 API Gateway 似乎更喜欢 POST 处理程序。

我知道我可以在 POST 上触发 Lambda 并从 Lambda 函数提交到 Firehose,但我更希望这两者相互独立。

【问题讨论】:

  • 只是想知道为什么您不想将 Lambda(不是您打算调用的那个)作为中间层。例如,集成请求调用 Lambda X,它是一个线程数。 Lambda X 调用您的原始 Lambda 并触发 kinesis?此外,您是否需要收集/等待这两者的响应/状态,或者您只关心启动它们?
  • 我没有原始 Lambda,API 网关直接发送到 Kinesis。
  • 你考虑过阶跃函数吗? docs.aws.amazon.com/step-functions/latest/dg/…

标签: aws-api-gateway


【解决方案1】:

API Gateway 不会将请求分叉为多个并发操作。 ANY 方法表示“任何没有定义方法的方法”。由于您还定义了POST,因此任何POST 都不会看到ANY

要执行您似乎正在尝试的操作 - 执行 Lambda 函数调用 Kinesis API,您需要编写一个初始 Lambda 函数作为包装器并执行这两项操作操作——向 Kinesis 发送请求并向 Lambda 发送请求(以调用其他 Lambda 函数)——如果业务逻辑允许,异步发送——然后将结果编组为满足您需求的单个连贯响应。

第一个 Lambda 函数不需要与第二个使用相同的语言,例如,如果现有的 Lambda 函数是用 Java 编写的,那么包装函数可以用 Node 编写,不会对性能产生负面影响,因为它在 Lambda API 的另一端独立执行。

【讨论】:

  • 感谢您确认我的观察。我想避免额外的 lambda 的主要原因是将 Kinesis 巧妙地集成到 API Gateway 中。此外,我打算执行的两个操作(Kinesis 和 Lambda)是完全独立的,并且没有任何一个响应。我会在几个小时内接受你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2018-01-20
  • 2016-01-21
  • 1970-01-01
  • 2020-01-22
  • 2021-06-10
  • 1970-01-01
相关资源
最近更新 更多