更改 AWS Lambda Kinesis 流轮询频率



我想更改 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

据我所知,如果您使用的是事件源映射,现在有办法降低轮询频率。

以下是您可以设置的所有设置(来源:https://docs.aws.amazon.com/de_de/lambda/latest/dg/API_CreateEventSourceMapping.html(:

{ "BatchSize": number, "Enabled": boolean, "EventSourceArn": "string", "FunctionName": "string", "StartingPosition": "string", "StartingPositionTimestamp": number }

因此,安排预定的活动似乎是唯一可行的选择。另一种方法是让 lambda 函数在退出之前休眠,这样它只会在所需的时间后再次轮询。但当然,这意味着你要为此付出代价。所以这可能不是需要的。

我还没有看到降低轮询频率的方法,但是您可以通过增加 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 平均每分钟只调用一次,就像您将轮询频率更改为每分钟一次一样。

最新更新