如何暂停/恢复aws lambda函数

时间:2016-06-22 15:10:34

标签: amazon-web-services amazon-dynamodb aws-lambda amazon-kinesis

例如,我有lambda函数使用来自KinesisStream的消息。如何停止和恢复该功能,以便我不会产生费用,而且我不会在流中丢失数据。

我知道如果事件继续失败,Kinesis将继续重试,费用可能非常高。

我无法删除该功能,因为CloudFormation周围有很多自动化功能。有没有办法停止并重启功能?

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

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

2 个答案:

答案 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