如何暂停/恢复 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
例如,我有使用来自 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