例如,我有lambda函数使用来自KinesisStream的消息。如何停止和恢复该功能,以便我不会产生费用,而且我不会在流中丢失数据。
我知道如果事件继续失败,Kinesis将继续重试,费用可能非常高。
我无法删除该功能,因为CloudFormation周围有很多自动化功能。有没有办法停止并重启功能?
解决方案:http://alestic.com/2015/11/aws-lambda-kinesis-pause-resume
注意:无法使用事件源禁用规则,日志流的事件源。使用SDK调用API时,您不会在列表中获取它。对于那些您必须禁用事件规则或日志订阅。
答案 0 :(得分:6)
让我们谈谈Kinesis片刻。当您从流中提取记录时,Kinesis将不会“删除”这些记录,直到您“检查”流。您可以一遍又一遍地阅读相同的记录,直到您与Kinesis确认您不再需要它们为止。
AWS Lambda不检查流,直到函数完成执行而没有错误。 (context.success()
)
如果部署Lambda函数并且它以某种方式中断(出现异常/错误),Lambda函数将不会检查流,并且您的记录将保留在流中很长时间,直到保留期到期(默认情况下,24小时)。然后可以在随后的Lambda执行中读取“未检查点”记录。
在部署期间,同样适用。任何当前正在执行的中断的Lambdas都不会检查流,并且任何正在成功完成的Lambdas将按预期检查点。
答案 1 :(得分:2)
AWS上更新的Lambda控制台现在在UI中支持此功能。点击提供lambda功能的Kinesis流,切换"启用/禁用"在底部切换,然后保存。这基本上会暂停/恢复您的功能。Screenshot - Toggling Kinesis input into Lambda