使用队列可靠地将事件从API网关推送到Lambda

时间:2017-07-24 21:45:11

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

我目前有第三方应用程序通过API网关将消息推送到Lambda函数。 Lambda函数需要序列化,记录并将消息推送到另一个我无法控制的ESB。

我正在尝试确保在Lambda函数处于最大负载或无法与ESB通信的情况下存在某种恢复机制。我已经读过关于Kinesis的确是一个很好的选择,但ESB不支持我的用例批处理。

这会导致我遇到某些消息可能会进入ESB的情况,而其他消息则不会,这最终会导致批处理失败。然后,当重试批处理时,消息将在ESB中重复。

有没有办法可以利用Kinesis提供的功能而无需批量处理?是否有其他AWS产品更适合我的用例?理想情况下,Lambda函数会处理一条消息,该消息在成功推入ESB之前一直保留在队列中。

任何提示都会非常感激。

谢谢,
马特

1 个答案:

答案 0 :(得分:0)

以下可能对您有所帮助:

1)设置api-gateway以登录到sqs和2)然后在该sqs队列上设置lambda函数以序列化,记录并将消息推送到外部端点。

对于第一部分:How to integrate API Gateway with SQS这将有所帮助。 (正如评论中已经提到的)

本文可能会对第二部分提供更多帮助:https://dzone.com/articles/integrate-sqs-and-lambda-serverless-architecture-f

请注意,您还可以选择您想要的触发器类型(基于用例) - 基于cron的poll /或基于事件,您还可以控制何时从lambda函数中删除sqs。 (您还可以在lambda蓝图中找到名称为" sqs-poller")的基本代码。

谢谢!