我的资源/ api有一个方法POST,它将身体代理到Kinesis Firehose(然后是ES)。同时我希望它能触发Lambda函数。
我尝试添加一个额外的ANY方法来触发Lambda函数,但API Gateway似乎更喜欢POST处理程序。
我知道我可以在POST上触发Lambda并从Lambda函数提交给Firehose,但我更喜欢让这两者相互独立。
答案 0 :(得分:6)
API Gateway不会将请求分叉为多个并发操作。 ANY
方法意味着“没有定义方法的任何方法”。由于您还定义了POST
,因此任何POST
都无法看到ANY
。
要执行您正在尝试的操作 - 执行Lambda函数并调用Kinesis API,您需要编写一个初始Lambda函数作为包装器并执行它们actions - 向Kinesis发送请求并向Lambda发送请求(以调用其他Lambda函数) - 如果业务逻辑允许则异步 - 然后将结果编组为满足您需求的单个连贯响应。
第一个Lambda函数不需要与第二个函数使用相同的语言,因此,例如,如果现有的Lambda函数是Java,则包装函数可以用Node编写,不会产生负面的性能影响,因为它在Lambda API的另一端独立执行。