例如,我有使用来自KinesisStream的消息的lambda函数。如何停止和恢复该功能,以免产生费用,也不会丢失流中的数据。
我知道,如果事件继续失败,Kinesis将继续重试,并且代价可能会很高。
我无法删除该功能,因为通过CloudFormation围绕它进行了很多自动化操作。有没有停止和重新启动该功能的方法?
解决方案:http://alestic.com/2015/11/aws-lambda-kinesis-pause-resume
注意:无法使用事件源禁用规则,日志流的事件源。使用SDK调用API时,您不会在列表中获得该事件。对于那些您必须禁用事件规则或日志订阅。
最佳答案
我们先谈一谈Kinesis。当您从流中提取记录时,Kinesis不会“删除”那些记录,直到您“检查点”流。您可以一遍又一遍地读取相同的记录,直到与Kinesis确认不再需要它们为止。
在函数完成执行且没有错误之前,AWS Lambda不会检查流。 (context.success()
)
如果您部署Lambda函数并且以某种方式被破坏(存在异常/错误的退出),则Lambda函数将不会检查流,并且您的记录将在流中保留很长时间,直到保留期到期(24小时,默认)。然后可以在随后的Lambda执行中读取“未检查点”记录。
在部署期间,同样的事情适用。当前被中断的任何正在执行的Lambda都不会对流进行检查,而成功完成的所有当前正在执行的Lambda将按您的期望进行检查。
关于amazon-web-services - 如何暂停/恢复AWS Lambda函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37971987/