更改AWS Lambda Kinesis流轮询频率

时间:2018-04-06 06:52:12

标签: amazon-web-services aws-lambda amazon-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 with Scheduled Events

2 个答案:

答案 0 :(得分:0)

据我所知,如果您使用事件源映射,现在可以降低轮询频率。

这些是您可以设置的所有设置(来源: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函数在退出之前进入休眠状态,以便仅在所需时间后再次轮询。但这当然意味着您要为此付费。.因此,这可能是不希望的。

答案 1 :(得分: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平均每分钟仅调用一次,就好像您将轮询频率更改为每分钟一次。