如何暂停/恢复 aws lambda 函数

How to pause / resume a aws lambda function

例如,我有使用来自 KinesisStream 的消息的 lambda 函数。如何停止和恢复功能,这样我就不会产生费用,也不会丢失流中的数据。

我知道如果事件一直失败,Kinesis 会不断重试,成本会很高。

我无法删除该函数,因为它通过 CloudFormation 实现了很多自动化。有没有办法停止和重新启动该功能?

解决方案http://alestic.com/2015/11/aws-lambda-kinesis-pause-resume

注意:规则、日志流的事件源无法使用事件源禁用。使用 SDK 调用 API 时,您不会在列表中获取它。对于那些您必须禁用事件规则或日志订阅。

让我们来谈谈 Kinesis。当您从流中提取记录时,Kinesis 不会 'delete' 这些记录,直到您 'checkpoint' 流。您可以一遍又一遍地阅读相同的记录,直到您通过 Kinesis 确认您不再需要它们。

AWS Lambda 不会检查流,直到函数无错误地完成执行。 (context.success())

如果您部署了一个 Lambda 函数并且它以某种方式被破坏(以 exception/error 退出),Lambda 函数将不会检查流,并且您的记录将保留在流中直到保留期到期(默认为 24​​ 小时)。然后可以在后续的 Lambda 执行中读取 'un-checkpointed' 记录。

在部署期间,同样适用。任何当前正在执行的被中断的 Lambda 都不会对流进行检查点,而任何当前正在成功完成的 Lambda 将按您的预期进行检查点。

AWS 上更新的 Lambda 控制台现在在 UI 中支持此功能。单击提供 lambda 函数的 Kinesis 流,切换底部的 "Enabled/Disabled" 切换,然后保存。这基本上 pause/resume 你的功能。Screenshot - Toggling Kinesis input into Lambda