更改AWS Lambda Kinesis流的轮询频率

3
我想改变AWS Lambda函数对Kinesis流的轮询频率。我阅读了这篇文章:https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html,但是没有成功。它唯一传达的信息是AWS Lambda每秒定期(一次)轮询流以获取新记录
我也在帖子中寻找答案,但没有成功:https://forums.aws.amazon.com/thread.jspa?threadID=229037
不过还有另一个选项,如果需要特定的频率,可以使用它:https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html
因此,我的问题是,我们能否将AWS Lambda的轮询频率降低到1-2分钟?还是必须使用AWS Lambda与计划事件
2个回答

2
据我所知,如果您使用事件源映射,则无法降低轮询频率。以下是您可以设置的所有设置(来源:https://docs.aws.amazon.com/de_de/lambda/latest/dg/API_CreateEventSourceMapping.html):
{ "BatchSize": 数字, "Enabled": 布尔值, "EventSourceArn": "字符串", "FunctionName": "字符串", "StartingPosition": "字符串", "StartingPositionTimestamp": 数字 }
因此,选择计划事件似乎是唯一可行的选项。另一种选择是让Lambda函数在退出前睡眠,这样它只会在所需的时间后再次轮询。但是,这意味着您需要为此付费...因此这可能不是期望的选择。

你能分享一个手动轮询事件源映射的函数示例吗? - Serhii Kushchenko

0

我还没有看到减少轮询频率的方法,但是您可以通过增加MaximumBatchingWindowInSeconds参数来达到与减少轮询频率相同的效果。

参考文献:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-kinesis.html#sam-function-kinesis-maximumbatchingwindowinseconds

假设您平均每秒钟有1条新记录到达。无论BatchSize如何,您的Lambda可能每秒钟触发一次,因为它每秒钟轮询一次。但是,如果您将BatchSize增加到60,并将MaximumBatchingWindowInSeconds设置为60,则您的Lambda平均只会每分钟调用一次,就像您已将轮询频率更改为每分钟一次。


这是不正确的。即使配置了批处理,Lambda 仍然会以每秒一次的速率轮询 Kinesis 流。启用批处理的唯一区别是 Lambda 服务将收集接收到的记录,并在达到批量大小或批处理窗口时才调用您的 Lambda 函数一次。 - DJ Sitte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接