2017-08-24 90 views
0

我的资源/ api有一个方法POST,它将主体代理为Kinesis Firehose(然后是ES)。同时,我希望它能够触发Lambda函数。AWS API网关多个每个方法的集成请求

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

我知道我可以在POST上触发Lambda并从Lambda函数提交给Firehose,但我更愿意让这两个独立于对方。

+0

只是想知道为什么你不想要一个Lambda(不需要你打算调用的那个)作为中间层。例如,集成请求调用了几行代码的Lambda X. Lambda X调用您的原始Lambda并触发kinesis?此外,你是否需要收集/等待这两者的反应/状态,或者你只是在意发射它们? – Nicholas

+0

我没有原始的Lambda,API网关直接发送给Kinesis。 – Glaslos

+0

你有没有考虑过step功能? http://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html – Nicholas

回答

2

API网关不会将请求分成多个并发操作。方法意思是“没有定义方法的任何方法”。既然您也有POST定义,任何POST将不会看到ANY

要做你看起来试图做的事 - 执行一个Lambda函数调用Kinesis API,你需要编写一个初始Lambda函数作为包装并执行这两个操作 - 发送向Kinesis发送请求并向Lambda发送请求(以调用其他Lambda函数) - 如果业务逻辑允许,则会异步执行 - 然后将结果编组为单个连贯的响应,以满足您的需求。

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

+0

谢谢您确认我的观察。我想避免额外的lambda的主要原因是将Kinesis整合到API Gateway中。此外,我打算做的两件事(Kinesis和Lambda)完全是独立的,没有任何人会对此做出任何回应。我会在几个小时内接受你的回答。 – Glaslos