aws-lambda - Lambda 跨部署维护检查点
问题描述
我有一个由 CloudFormation 部署的 Lambda,它从 Kinesis 消费并产生到另一个 Kinesis 流。输出主题的使用者不能很好地处理重复记录,所以我想更多地了解 Lambda 如何保持它消耗的最后一条记录/批次的状态。
- 重新部署 lambda 时是否保留了信息?还是从StartingPosition 开始读取?
Update
通过 CF 重新部署 Lambda 时,如果对资源所做的更改类型是vs会有什么区别Replacement
?我的直觉是,当它是 a 时,该位置会保持不变Update
,但当它是 a 时则不会Replacement
ReportBatchItemFailures
启用时是否会在部署中维护有关批次中失败项目的信息?
交叉发布到 AWS 论坛:https ://forums.aws.amazon.com/thread.jspa?threadID=333823&tstart=0
解决方案
让我从我对 kafka/kinesis(aws) 的经验中为您提供帮助。
检查点是否维护? 您多次重新部署 lambda,如果您在 kinesis 中提交检查点并不重要,因为您提交到您阅读到 kinesis 而不是 lambda 的消息。
- CheckPoints :- 它本质上是一种允许您从最后一个检查点位置重新启动进程的机制。
来到你的第二个问题,它从StartingPosition开始读取?
- 如果您已提交检查点,它将不会从头开始读取。它将从您上次提交的位置开始。
ReportBatchItemFailures 有什么不同吗?
- 是的,这很重要。假设你的 lambda 代码处理批处理记录,当批处理失败时,仅重试最后一条成功消息之后的记录。这减少了您的应用程序对重复记录的处理,并且您有更多的控制来处理错误失败。
希望你的疑问现在有点清楚了:)
推荐阅读
- java - 如何更改 ClusterManager 中标记的可见性同时还可以访问 ClusterItem 对象?
- php - 在另一个数组中查找数组的键
- c# - Xamarin 自定义字体显示在预览中,但不在构建中
- javascript - 等待响应并返回非 json
- php - 如何在laravel的链接按钮中隐藏URL
- build.gradle - 运行 serenity 测试用例时获取 java.lang.AbstractMethodError
- ruby-on-rails-5 - 在 Rails 中下载多个文件
- python - 循环导入从 pylint 修复 R0401
- php - 如何从 CodeIgniter 中的多个连接表中删除。
- scala - Spark 和 MapR 数据库连接