【问题标题】:AWS Lambda function skipping DynamoDB recordsAWS Lambda 函数跳过 DynamoDB 记录
【发布时间】:2017-08-03 20:01:04
【问题描述】:


我正在使用在 AWS Lambda 中创建的函数来触发和处理插入到 DynamoDB 表中的每条记录。

但我最近注意到很多记录丢失并且没有被处理。例如,每插入 50,000 条记录,可能会处理大约 2000-3000 条记录。 :(

我还注意到这个正在处理的数字在缓慢增加在一段时间内每 5 分钟左右大约 100-200 条记录。我使用 aws 命令行检查了这一点:
aws dynamodb scan --table-name myDynamoTable --select "COUNT"
如果有帮助,我将使用默认设置来创建 Lambda 函数。

这是 Lambda 函数的问题还是 MY Lambda 函数的配置问题?
我可以更改任何属性/设置以改进其功能吗?
最后,如果最坏的情况发生在最坏的情况下,我可以使用什么作为 Lambda 函数的替代方案(可靠的)?我可以自己构建一个吗?

TIA.

【问题讨论】:

  • 能分享一下dynamodb流的配置吗?你确定所有的物品都是新的插入物吗?您是否可以删除所有项目并插入 100 个项目,然后看看会发生什么?需要调试是流还是 lambda 问题?您是否同时插入了所有 5k 个项目?
  • @notionquest 如何找到流配置?单击“管理流”按钮并启用它是我使用 DynamoDB 流的唯一体验。 :) 当我按照您的建议删除和插入项目时,我会检查并查看它的行为。您是指同时插入 5k 个项目还是快速连续地依次插入?
  • 尝试顺序插入并检查结果。大约 100 到 500 个项目就足够了。
  • @notionquest 我尝试对表进行 500 次插入、500 次更新和 500 次删除。所有操作都由 lambda 函数记录和处理。然后我尝试了 10000 次插入、10000 次更新和 10000 次删除。所有的插入和删除操作都在处理中,但是很多更新丢失了。我有时只计算了 3000 个已处理的更新,而实际上已经完成了 10000 个。当更新的记录数量很大时,lambda 函数似乎不起作用。这是 Lambda 的可能限制还是我的配置和/或代码的错误?

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


【解决方案1】:

DynamoDB 扫描仅返回前 1MB 的数据。您需要使用 LastEvaluatedKey 值进行迭代。

【讨论】:

  • 这不是我的问题!
  • 那么也许你应该改写你的问题。您如何验证记录是否正在处理?重新阅读您的问题后,您是否使用发电机流来触发 lambda 函数?
  • 是的,我正在使用 DynamoDB Streams。我知道所有记录都没有从计数中处理 - 插入的记录数与处理后可用的记录数。
猜你喜欢
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
相关资源
最近更新 更多