我如何找出消耗我的 DynamoDb 表读取容量的内容?

How can I find out what is consuming my DynamoDb tables Read Capacity?

我们有一个 DynamoDB table,我们认为我们可以关闭并删除它。我们关闭了查询它的 Web 服务的调用者(并且可以在 Web 服务器指标上看到调用者已降至零),但 AWS 控制台仍然显示读取容量消耗大于零。

但是,与读取有关的所有其他图表均未显示任何数据:获取延迟、放置延迟、查询延迟、扫描延迟、获取记录、扫描返回的项目数和查询返回的项目数均为空白。在我知道正在使用的其他 table 上,这些图表显示一些数据 > 0。

在我知道使用的其他table上,读取容量图仅显示已配置的行,没有消耗的行。

此 table 仍在通过 Lambda 过滤和聚合来自 Kinesis 流的事件写入。我查看了 Lambda 代码,它没有专门从 table 中读取任何内容 – 当 lambda 更新或覆盖现有密钥的值时,读取容量是否被消耗?

我向 AWS 支持人员开了一张票,他们能够找到消耗读取容量的 IP。他们使用内部工具查询客户无法使用的日志。他们还确认这些事件不会发送到 Cloudtrail 日志,其中仅包含与 table 相关的事件,例如重新配置、有关指标的查询等

他们还分享了这个与问题相关的要点:

Q: Does read capacity get consumed when the lambda updates or overwrites the value for an existing key?

A: Yes, when you issue an update item operation, Dynamodb does a Read/Get operation first and then does a PutItem to insert/overwrite existing Item. This is expensive as it consumes both RCU and WCU. I did also verify that there are no UpdateItem operations being made on this table.

他们还向我指出了更多 Clo​​udwatch 指标,这些指标让我更加了解 table 在幕后发生的事情。通过 link 导航找到这个,你去

  • Cloudwatch 服务
  • 指标 在左侧栏
  • 所有指标 选项卡
  • 向下滚动到 AWS 命名空间 部分(自定义命名空间部分位于顶部,如果您定义了任何自定义指标)
  • Select DynamoDB
  • Select Table 操作指标
    指标将按 table 名称组织。最有帮助的一项是 Operation=Query,Metric Name=Returned Item Count。

所以我的问题的唯一答案是:开一张 AWS Support 票。