

# 使用 CloudWatch Contributor Insights for DynamoDB 分析数据访问
Contributor Insights

Amazon CloudWatch Contributor Insights for Amazon DynamoDB 是一款诊断工具，可快速识别表或索引中最常访问和最常受限制的键。此工具使用 [CloudWatch Contributor Insights](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights.html)。

在表或全局二级索引上启用 CloudWatch Contributor Insights for DynamoDB，可以查看这些资源中最常访问和最常受限制的项目。

**注意**  
CloudWatch 对 Contributor Insights for DynamoDB 收费。有关定价的更多信息，请参见 [Amazon CloudWatch 定价](https://www.amazonaws.cn/cloudwatch/pricing/)。

**Topics**
+ [工作原理](contributorinsights_HowItWorks.md)
+ [开始使用](contributorinsights_tutorial.md)
+ [使用 IAM](Contributor_Insights_IAM.md)

# CloudWatch Contributor Insights for DynamoDB：工作原理
工作原理

Amazon DynamoDB 与 [CloudWatch Contributor Insights](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights.html) 集成，来提供表或全局二级索引中访问次数最多和最常受限制的项目的相关信息。DynamoDB 通过 CloudWatch Contributor Insights [规则](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-RuleSyntax.html)、[报告](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-ViewReports.html)和[报告数据的图表](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-GraphReportData.html)提供这些信息。

适用于 DynamoDB 的 CloudWatch Contributor Insights 设计为对 DynamoDB 表的性能没有任何影响。

有关 CloudWatch Contributor Insights 的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[使用 Contributor Insights 分析高基数数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights.html)。

 以下各节介绍 CloudWatch Contributor Insights for DynamoDB 的核心概念和行为。

**Topics**
+ [

## CloudWatch Contributor Insights for DynamoDB 模式
](#contributorinsights_HowItWorks.Modes)
+ [

## CloudWatch Contributor Insights for DynamoDB 规则
](#contributorinsights_HowItWorks.Rules)
+ [

## 了解 CloudWatch Contributor Insights for DynamoDB 图表
](#contributorinsights_HowItWorks.Graphs)
+ [

## 与其他 DynamoDB 功能的交互
](#contributorinsights_HowItWorks.OtherFeatures)
+ [

## CloudWatch Contributor Insights for DynamoDB 计费
](#contributorinsights_HowItWorks.Billing)

## CloudWatch Contributor Insights for DynamoDB 模式


CloudWatch Contributor Insights for DynamoDB 提供了两种不同的模式，用于满足不同的监控需求。

### 受限的键模式


此模式仅关注受限制的请求，仅在出现节流问题时处理事件。此模式提供有关性能问题的见解，而不会产生跟踪所有访问模式的开销。在此模式下，DynamoDB 仅跟踪：
+ **最受限的项目**：出现了最多节流事件的项目。

此模式非常适合以下情况：
+ 您主要关注的是识别和解决节流问题
+ 您想保持启用 Contributor Insights 来检测实时节流情况
+ 您希望采用成本优化的方法来监控节流问题

**注意**  
*受限的键模式*仅在发生节流情况时处理事件，实现了经济高效的持续监控。通过这种针对性的方法，您可以保持该功能长期启用并尽可能减少成本影响，同时仍能在出现节流问题时立即发现这些问题。

如果表没有遇到节流情况，则您在 Contributor Insights 图表中不会看到任何数据，这表明运行正常。检测到节流情况时，您可以通过生成的图表来识别导致性能问题的具体访问模式。这些信息可以帮助您实施策略来应对不均匀的访问模式。

对于全面监控策略，您可以将对这些节流情况的见解与其他 CloudWatch 指标集成，来创建统一的控制面板，将节流事件与表的整体性能关联起来。

### 访问的键和受限的键模式


此模式针对访问的项目和受限制的项目提供全面监控。在此模式下，DynamoDB 会跟踪：
+ **最常访问的项目**：消耗了最多读取和写入容量的项目
+ **最受限的项目**：出现了最多节流事件的项目。

当您需要全面监测表的访问模式，而且希望了解高流量项目和节流问题时，此模式非常适用。

### 切换模式


您可以使用 DynamoDB 控制台、Amazon CLI 或 API，随时在模式之间切换。切换模式时会出现以下情况：
+ 更新现有 CloudWatch 规则来匹配新模式
+ 被节流的键 CloudWatch 规则保持不变，从而维护连续的节流指标历史数据：
  + 当您从*受限的键*模式切换到*访问的键和受限的键*模式时，将保留现有的受限的键规则，还会创建新的访问的键规则
  + 当您从*访问的键和受限的键*模式切换到*受限的键*模式时，将只保留受限的键规则，访问的键规则将被移除。
+ 账单会立即调整以反映新模式下的事件处理

## CloudWatch Contributor Insights for DynamoDB 规则


在表或全局二级索引上启用 CloudWatch Contributor Insights for DynamoDB 后，DynamoDB 根据选定的模式，代表您创建[规则](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-RuleSyntax.html)。

**注意**  
如果您在 DynamoDB 表上启用 Contributor Insights，则会受到 Contributor Insights 规则的限制。有关更多信息，请参阅 [CloudWatch 服务配额](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。

### 适用于访问的键和受限的键模式的规则


在*访问的键和受限的键*模式下，DynamoDB 创建以下规则：
+ **最常访问的项目（分区键）**：标识表或全局二级索引中最常访问的项目的分区键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-PKC-[resource_name]-[creationtimestamp]`
+ **最受限制的项目（分区键）**：标识表或全局二级索引中受节流最多的项目的分区键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-PKT-[resource_name]-[creationtimestamp]`

如果表或全局二级索引具有排序键，DynamoDB 还将创建特定于排序键的以下规则：
+ **最常访问的键（分区键和排序键）** — 标识表或全局二级索引中最常访问的项目的分区键和排序键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-SKC-[resource_name]-[creationtimestamp]`
+ **最受限制的键（分区键和排序键）** — 标识表或全局二级索引中最受限制的项目的分区键和排序键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-SKT-[resource_name]-[creationtimestamp]`

### 受限的键模式的规则


在*受限的键*模式下，DynamoDB 仅创建与节流相关的规则：
+ **最受限制的项目（分区键）** — 标识表或全局二级索引中最受限制的项目的分区键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-PKT-[resource_name]-[creationtimestamp]`

如果表或全局二级索引具有排序键，DynamoDB 还会创建：
+ **最受限制的键（分区键和排序键）** — 标识表或全局二级索引中最受限制的项目的分区键和排序键。

  CloudWatch 规则名称格式：`DynamoDBContributorInsights-SKT-[resource_name]-[creationtimestamp]`

这种针对性方法可以减少活动规则的数量并减少所处理事件的数量，从而更好地诊断节流事件。

**注意**  
使用 CloudWatch 控制台或 API 来查看 CloudWatch Contributor Insights for DynamoDB 时，您只能查看与所选模式对应的规则。
无法使用 CloudWatch 控制台或 API 直接修改或删除通过 CloudWatch Contributor Insights for DynamoDB 创建的规则。在表或全局二级索引上禁用 CloudWatch Contributor Insights for DynamoDB 会自动删除为该表或全局二级索引创建的规则。
如果将 [GetInsightRuleReport](https://docs.amazonaws.cn/AmazonCloudWatch/latest/APIReference/API_GetInsightRuleReport.html) 操作与 DynamoDB 创建的 CloudWatch Contributor Insights 规则一起使用，则只有 `MaxContributorValue` 和 `Maximum` 返回有用的统计信息。此列表中的其他统计信息不返回有意义的值。
适用于 DynamoDB 的 CloudWatch Contributor Insights 有 25 个贡献者的限制。请求超过 25 个贡献者将返回错误。

可以使用 CloudWatch Contributor Insights for DynamoDB [规则](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-RuleSyntax.html)创建 CloudWatch 告警。如果任何项目超过或达到特定的 `ConsumedThroughputUnits` 或 `ThrottleCount` 阈值，您将收到通知。有关更多信息，请参阅[为 Contributor Insights 指标数据设置告警](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights-GraphReportData.html#ContributorInsights-GraphReportData-Alarm)。

## 了解 CloudWatch Contributor Insights for DynamoDB 图表


CloudWatch Contributor Insights for DynamoDB 会根据所选模式，在 DynamoDB 控制台和 CloudWatch 控制台中显示不同类型的图表。

### 按模式列出的图表可用性


所显示的图表取决于您选择的 Contributor Insights 模式。
+ **访问的键和受限的键模式**同时显示*最常访问的项目*和*最受限的项目*图表
+ **受限的键模式**仅显示*最受限的项目*图表

### 最常访问的项目


此图表仅在访问的键和受限的键模式下可用。使用此图可以确定表或全局二级索引中最常访问的项目。此图的 y 轴显示 `ConsumedThroughputUnits`，x 轴显示时间。前 N 个键中的每个键都以自己的颜色显示，图例显示在 X 轴下方。

DynamoDB 通过使用 `ConsumedThroughputUnits` 测量键访问频率，可以测量读写组合流量。`ConsumedThroughputUnits` 定义如下：
+ 预置 —*（3 倍占用的写入容量单位）\$1 占用的读取容量单位*
+ 按需 —*（3 倍写入请求单位）\$1 读取请求单位*

在 DynamoDB 控制台中，图中的每个数据点代表一分钟内的最大 `ConsumedThroughputUnits`。例如，图形值 180000 `ConsumedThroughputUnits` 表示：在一分钟的时间段内（3000 x 60 秒）持续访问项目，60 秒内每个项目的最大吞吐为 1000 个写入请求单位或 3000 个读取请求单位。换句话说，图表值表示每个一分钟周期内的最高流量分钟。可以在 CloudWatch 控制台中更改 `ConsumedThroughputUnits` 指标的时间粒度（例如，查看 5 分钟指标而不是 1 分钟）。

如果看到几条紧密聚集的线条而没有明显的离群值，则表明在给定的时间范围内，各个项目的工作负载相对平衡。如果在图中看到孤立的点，而不是连接的线条，则表明短时间内频繁访问项目。

如果表或全局二级索引具有排序键，DynamoDB 将创建两个图表：一个用于访问最多的分区键，另一个用于访问最多的分区键 \$1 排序键对。您可以在仅分区键图表中查看分区键级别的流量。您可以在分区 \$1 排序键图表中查看项目级别的流量。

### 最受节流的项目


此图表在两种模式下均可用。使用此图可以确定表或全局二级索引中最受限制的项目。此图的 y 轴显示 `ThrottleCount`，x 轴显示时间。前 *N* 个键中的每个键都以自己的颜色显示，图例显示在 X 轴下方。

DynamoDB 使用 `ThrottleCount`（这是 `ProvisionedThroughputExceededException`、`ThrottlingException` 和 `RequestLimitExceeded` 错误的计数）测量限制频率。

不测量全局二级索引的写入容量不足导致的写入限制。可以使用全局二级索引的*最常访问的项目*图表，识别导致写入限制的不平衡访问模式。有关更多信息，请参阅[全局二级索引的预调配吞吐量注意事项](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/GSI.html#GSI.ThroughputConsiderations)。

在 DynamoDB 控制台中，图中的每个数据点代表一分钟内的限制事件计数。

如果在此图中看不到任何数据，说明请求没有受到限制。如果在图表中看到孤立的点，而不是连接的线条，说明短时间内频繁限制项目。

如果表或全局二级索引具有排序键，则 DynamoDB 将创建两个图表：一个用于受节流最多的分区键，另一个用于受节流最多的分区键 \$1 排序键对。您可以在仅分区键图表中查看分区键级别的节流计数，在分区键 \$1 排序键图表中查看项目级别的节流计数。

**注意**  
在*受限的键*模式下，您只能看到此图表类型。如果这些图表中没有数据，则表明表的性能良好，没有出现节流情况。

### 报告示例


以下是当分区键和排序键均处于*访问的键和受限的键*模式时生成的报告示例。在*受限的键*模式下，您只能看到此报告中与节流相关的部分。

![\[4 个不同的 Contributor Insights 报告，显示最常访问的项目和最受限制的项目。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_Graphs_Example.png)


## 与其他 DynamoDB 功能的交互


以下章节介绍 CloudWatch Contributor Insights for DynamoDB 的行为方式，以及如何与 DynamoDB 中的一些其他功能进行交互。除非另行指定，否则这些行为适用于两种模式。

### 全局表


CloudWatch Contributor Insights for DynamoDB 将全局表副本作为不同表进行监控。一个 Amazon 区域中副本的 Contributor Insights 图表可能不会显示与另一个区域相同的模式。这是因为写数据在全局表的所有副本之间复制，但每个副本都可以提供区域绑定的读取流量。

每个副本可以独立配置为不同的 Contributor Insights 模式。例如，您可以在主区域中使用*访问的键和受限的键*模式进行全面监控，而在辅助区域使用*受限的键*模式来保持监测性能问题。

### DynamoDB Accelerator (DAX)


CloudWatch Contributor Insights for DynamoDB 不显示 DAX 缓存响应，只显示对访问表或全局二级索引的响应。

**注意**  
DynamoDB CloudWatch Contributor Insights 不支持 PartiQL 请求。

### 静态加密


CloudWatch Contributor Insights for DynamoDB 不影响 DynamoDB 中的加密工作方式。CloudWatch 中发布的主键数据使用 Amazon 拥有的密钥 加密。但是，DynamoDB 还支持 Amazon 托管式密钥 和客户托管密钥。

适用于 DynamoDB 的 CloudWatch Contributor Insights 显示经常访问项目和经常受限制项目的分区键和排序键（如适用）。虽然 CloudWatch Contributor Insights 可以处理加密的 DynamoDB 表，但值得注意的是，它使用其自己的 Amazon 拥有的加密上下文，该上下文与表的已配置加密是分开的。

如果 DynamoDB 表的主键包含敏感信息，并且贵组织的安全策略要求对加密过程进行完全控制，则启用 CloudWatch Contributor Insights 可能不合适。

### 访问权限的精细控制


对于具有精细访问控制 (FGAC) 的表，CloudWatch Contributor Insights for DynamoDB 的功能没有什么不同。换句话说，任何具有相应 CloudWatch 权限的用户都可以在 CloudWatch Contributor Insights 图中查看受 FGAC 保护的主键。

如果表的主键包含不想发布到 CloudWatch 的受 FGAC 保护的数据，则不应为该表启用 CloudWatch Contributor Insights for DynamoDB。

### 访问控制


可以使用 Amazon Identity and Access Management (IAM) 限制 DynamoDB 控制层面权限和 CloudWatch 数据层面权限，控制对 CloudWatch Contributor Insights for DynamoDB 的访问。有关更多信息，请参见[将 IAM 与 CloudWatch Contributor Insights for DynamoDB 一起使用](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/Contributor_Insights_IAM.html)。

## CloudWatch Contributor Insights for DynamoDB 计费


CloudWatch Contributor Insights for DynamoDB 费用显示在每月账单的 [CloudWatch](https://www.amazonaws.cn/cloudwatch/pricing/) 部分。这些费用根据所处理的 DynamoDB 事件数以及选定的模式计算。

### 按模式计费


两种 Contributor Insights 模式具有不同的计费特性。
+ **访问的键和受限的键模式计费**：在此模式下，无论请求成功还是受限，通过[数据面板](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/HowItWorks.API.html#HowItWorks.API.DataPlane)操作写入或读取的每个项目都表示一个事件。如果表或全局二级索引包含排序键，则读取或写入的每个项目代表两个事件。这是因为 DynamoDB 从不同时间序列识别最大的贡献因素：一个仅用于分区键，另一个用于分区和排序键对。
+ **受限的键模式计费**：此模式下，只有受限的请求才生成可计费的事件。只有当请求导致 `ProvisionedThroughputExceededException`、`ThrottlingException` 或 `RequestLimitExceeded` 错误时，才会生成事件。如果表或全局二级索引包含排序键，则每个被节流的项目表示两个事件（分区键跟踪以及分区键 \$1 排序键跟踪）。

### 计费示例


例如，假设应用程序执行以下 DynamoDB 操作：一个 `GetItem`、一个 `PutItem` 和一个 `BatchWriteItem`，放置了五个项目。此外还假设 `PutItem` 操作受限制，但所有其他操作都成功。
+ **访问的键和受限的键模式**
  + 如果表或全局二级索引只有一个分区键，则将产生 7 个事件（对于 `GetItem` 为 1 个事件，对于 `PutItem` 为 1 个事件，对于 `BatchWriteItem` 为 5 个事件）。
  + 如果表或全局二级索引有一个分区和一个排序键，则将产生 14 个事件（对于 `GetItem` 为 2 个事件，对于 `PutItem` 为 2 个事件，对于 `BatchWriteItem` 为 10 个事件）。
+ **受限的键模式**
  + 如果表或全局二级索引只有一个分区键，则将产生 1 个事件（仅为被节流的 `PutItem` 生成）。
  + 如果表或全局二级索引有一个分区键和一个排序键，则将产生 2 个事件（为被节流的 `PutItem` 生成 2 个事件）。

  在受限的键模式下，成功的 `GetItem` 和 `BatchWriteItem` 操作不生成任何事件。

### 常见计费因素


无论采用什么模式或者返回的项目数量有多少，一个 `Query` 操作始终产生 1 个事件。

与其他 DynamoDB 功能不同，CloudWatch Contributor Insights for DynamoDB 计费*不会*因以下因素而有所不同：
+ [容量模式](capacity-mode.md)（预置与按需）
+ 执行读取请求还是写入请求
+ 读取或写入的项目大小 (KB)

# CloudWatch Contributor Insights for DynamoDB 入门
开始使用

本节介绍如何使用 Amazon DynamoDB 控制台或 Amazon Command Line Interface（Amazon CLI），以不同模式启用和使用 Amazon CloudWatch Contributor Insights 来满足您的监控需求。

在以下示例中，您将使用 [DynamoDB 入门](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html)教程中定义的 DynamoDB 表。

**Topics**
+ [

## 选择 Contributor Insights 模式
](#contributorinsights_tutorial.modes)
+ [

## 使用 Contributor Insights（控制台）
](#usecontributorinsights_console)
+ [

## 使用 Contributor Insights (Amazon CLI)
](#usecontributorinsights_cli)

## 选择 Contributor Insights 模式


在启用 Contributor Insights 之前，您应该对可用的两种模式有所了解。查看模式对比，选择与您的具体需求更相符的选项。


| 方面 | 访问的键和受限的键模式 | 受限的键模式 | 
| --- | --- | --- | 
| 监控 | 所有请求（成功且受限制） | 仅受限的请求 | 
| 图表： | 最常访问的项目 \$1 最受限的项目 | 仅最受限的项目 | 
| 适用于 | 针对性的分析和优化 | 节流监控 | 
| 使用场景 | 您需要全面监测访问模式。您在进行短期分析或调试。 | 您最关心的是识别和解决节流问题。您想保持启用 Contributor Insights 来获取实时节流警报。 | 

## 使用 Contributor Insights（控制台）


控制台提供了直观的方法来启用 Contributor Insights，而且您可以根据监控需求选择相应的模式。

**在控制台中使用 Contributor Insights**

1. 登录 Amazon Web Services 管理控制台，并打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/](https://console.amazonaws.cn/dynamodb/)。

1. 在控制台左侧的导航窗格中，选择**表**。

1. 选择 `Music` 表。

1. 选择**监控**选项卡。

1. 选择**开启 CloudWatch Contributor Insights**。  
![\[显示监控选项卡和按钮的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_ChooseAndManageNew.PNG)

1. 在**管理 CloudWatch Contributor Insights 设置**对话框中，为 `Music` 基表和 `AlbumTitle-index` 全局二级索引切换到**开启**。

1. 对于这两者，将**仅限受限的键模式**开关保留在关闭位置，然后选择**保存更改**。  
![\[显示 Contributor Insights 状态列表选项的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_Enable.png)

   这会为表和 GSI 均启用默认的*访问的键和受限的键*模式，从而监控访问的项目和受限的项目。将**仅限受限的键模式**开关切换到启用*受限的键*模式的位置。

   如果操作失败，请参阅 *Amazon DynamoDB API 参考*中的 [DescribeContributorInsights FailureException](https://docs.amazonaws.cn/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html#DDB-DescribeContributorInsights-response-FailureException) 了解可能的原因。

1. 现在，对于 `Music` 表，可在**监控**选项卡上查看 CloudWatch Contributor Insights 图表。由于您启用了*访问的键和受限的键*模式，因此您可以看到访问的项目和受限的项目的图表。  
![\[显示 Contributor Insights 选项卡和 music 表多个图表的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_Graphs.png)

### 切换模式


您可以随时切换模式，而无需禁用 Contributor Insights。

**切换 Contributor Insights 模式**

1. 在表的**监控**选项卡上，选择**管理 CloudWatch Contributor Insights**。

1. 在**管理 Contributor Insights 设置**对话框中，对于每个基表或 GSI：
   + 开启或关闭**仅受限的键模式**，来启用*受限的键*模式或者返回默认的*访问的键和受限的键*模式。
   + 将**开启**开关关闭，对表或 GSI 禁用 CloudWatch Contributor Insight。

1. 选择**保存更改**。

   完成后，图表将反映新模式。

### 创建 CloudWatch 警报


按照以下步骤创建 CloudWatch 警报，并在任何分区键使用了超过 5 万个 [ConsumedThroughputUnits](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/contributorinsights_HowItWorks.html#contributorinsights_HowItWorks.Graphs.most-accessed) 或出现节流时收到通知。

1. 登录 Amazon Web Services 管理控制台，并打开 CloudWatch 控制台：[https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/)。

1. 在控制台左侧的导航窗格中，选择 **Contributor Insights**。

1. 根据您的模式和要监控的对象，选择相应的规则：
   + 要监控访问的项目（仅适用于访问的键和受限的键模式）：选择 **DynamoDBContributorInsights-PKC-Music**
   + 要监控受限的项目（两种模式）：选择 **DynamoDBContributorInsights-PKT-Music**

1. 选择**操作**下拉菜单。

1. 选择**在指标中查看**。

1. 选择**最大贡献者值**。
**注意**  
仅 `Max Contributor Value` 和 `Maximum` 返回有用的统计信息。此列表中的其他统计信息不返回有意义的值。  
![\[显示 Contributor Insights 选项卡和按钮的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_AlarmsViewinMetrics.png)

1. 在**操作**列选择**创建告警**。  
![\[显示 Contributor Insights 状态列表选项的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_AlarmsSetAlarm.png)

1. 输入适当的阈值，然后选择**下一步**：
   + 对于访问的项目（PKC 规则）：为 `ConsumedThroughputUnits` 输入 50000
   + 对于受限的项目（PKT 规则）：为 `ThrottleCount` 输入 1，这样就能在出现任何节流情况时收到警报  
![\[显示 Contributor Insights 选项卡和按钮的控制台屏幕截图。\]](http://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/CI_AlarmsSetAlarmThreashold.png)

1.  有关如何为警报配置通知的详细信息，请参阅[使用 Amazon CloudWatch 警报](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## 使用 Contributor Insights (Amazon CLI)


Amazon CLI 提供对 Contributor Insights 的程序化访问，同时完全支持这两种模式。您可以在启用 Contributor Insights 时指定模式，也可以在以后切换模式。

### 默认模式下的基本操作


**使用 Contributor Insights 的默认设置**

1. 在 `Music` 基表上启用 CloudWatch Contributor Insights for DynamoDB，并使用*访问的键和受限的键*模式。由于 `ACCESSED_AND_THROTTLED_KEYS` 是默认模式，因此可以省略 `--contributor-insights-mode=ACCESSED_AND_THROTTLED_KEYS` 参数。

   ```
   aws dynamodb update-contributor-insights \
                       --table-name Music \
                       --contributor-insights-action=ENABLE
   ```

1. 在 `AlbumTitle-index` 全局二级索引启用 Contributor Insights for DynamoDB。

   ```
   aws dynamodb update-contributor-insights \
                       --table-name Music \
                       --index-name AlbumTitle-index \
                       --contributor-insights-action=ENABLE
   ```

1. 获取 `Music` 表及其所有索引的状态与规则。

   ```
   aws dynamodb describe-contributor-insights 
                       --table-name Music
   ```

   响应将包括 `ContributorInsightsMode` 字段，显示 `ACCESSED_AND_THROTTLED_KEYS`。

1. 列出 `Music` 表及其所有索引的状态。

   ```
   aws dynamodb list-contributor-insights --table-name Music
   ```

### 启用受限的键模式


**以受限的键模式启用 Contributor Insights**

1. 在 `Music` 基表上启用 CloudWatch Contributor Insights for DynamoDB，并使用*受限的键*模式。

   ```
   aws dynamodb update-contributor-insights \
       --table-name Music \
       --contributor-insights-action=ENABLE \
       --contributor-insights-mode=THROTTLED_KEYS
   ```

1. 为 `AlbumTitle-index` 全局二级索引启用 Contributor Insights 并使用*受限的键*模式。

   ```
   aws dynamodb update-contributor-insights \
       --table-name Music \
       --index-name AlbumTitle-index \
       --contributor-insights-action=ENABLE \
       --contributor-insights-mode=THROTTLED_KEYS
   ```

1. 说明 Contributor Insights 配置来验证模式。

   ```
   aws dynamodb describe-contributor-insights --table-name Music
   ```

   与默认模式相比，响应显示的 `ContributorInsightsMode` 为 `THROTTLED_KEYS`，且规则更少。

### 切换模式


**切换 Contributor Insights 模式**

1. 从*受限的键*模式切换到*访问的键和受限的键*模式。

   ```
   aws dynamodb update-contributor-insights \
       --table-name Music \
       --contributor-insights-action=ENABLE \
       --contributor-insights-mode=ACCESSED_AND_THROTTLED_KEYS
   ```

1. 从*访问的键和受限的键*模式切换到*受限的键*模式。

   ```
   aws dynamodb update-contributor-insights \
       --table-name Music \
       --contributor-insights-action=ENABLE \
       --contributor-insights-mode=THROTTLED_KEYS
   ```

1. 检查切换期间的状态。

   ```
   aws dynamodb describe-contributor-insights --table-name Music
   ```

   在模式切换期间，`ContributorInsightsStatus` 将显示为 `ENABLING`。完成后，对于新的模式将显示 `ENABLED`。

### 管理 Contributor Insights


**管理 Contributor Insights 设置**

1. 在 `AlbumTitle-index` 全局二级索引禁用 CloudWatch Contributor Insights for DynamoDB。

   ```
   aws dynamodb update-contributor-insights \
                       --table-name Music --index-name AlbumTitle-index \
                       --contributor-insights-action=DISABLE
   ```

1. 列出您的账户中的所有 Contributor Insights 配置。

   ```
   aws dynamodb list-contributor-insights
   ```

   这将显示所有启用了 Contributor Insights 的表和索引，以及所用的模式。

1. 获取有关特定配置的详细信息。

   ```
   aws dynamodb describe-contributor-insights \
                       --table-name Music \
                       --index-name AlbumTitle-index
   ```

### 响应示例


以下响应示例显示了各模式之间的不同：

#### 访问的键和受限的键模式响应


```
{
    "TableName": "Music",
    "ContributorInsightsRuleList": [
        "DynamoDBContributorInsights-PKC-Music-1234567890123",
        "DynamoDBContributorInsights-PKT-Music-1234567890123",
        "DynamoDBContributorInsights-SKC-Music-1234567890123",
        "DynamoDBContributorInsights-SKT-Music-1234567890123"
    ],
    "ContributorInsightsStatus": "ENABLED",
    "ContributorInsightsMode": "ACCESSED_AND_THROTTLED_KEYS",
    "LastUpdateDateTime": "2024-01-15T10:30:00.000Z"
}
```

#### 受限的键模式响应


```
{
    "TableName": "Music",
    "ContributorInsightsRuleList": [
        "DynamoDBContributorInsights-PKT-Music-1234567890123",
        "DynamoDBContributorInsights-SKT-Music-1234567890123"
    ],
    "ContributorInsightsStatus": "ENABLED",
    "ContributorInsightsMode": "THROTTLED_KEYS",
    "LastUpdateDateTime": "2024-01-15T10:35:00.000Z"
}
```

请注意，受限的键模式的规则较少（只有 PKT 和 SKT），这与更有侧重点的监控相对应。

# 将 IAM 与 CloudWatch Contributor Insights for DynamoDB 结合使用
使用 IAM

首次启用 Amazon CloudWatch Contributor Insights for Amazon DynamoDB 时，DynamoDB 将自动创建一个 Amazon Identity and Access Management (IAM) 服务相关角色。该角色 `AWSServiceRoleForDynamoDBCloudWatchContributorInsights` 允许 DynamoDB 代表您管理 CloudWatch Contributor Insights 规则。不要删除该服务相关角色。如果删除，则删除表或全局二级索引时，将不再清理所有托管规则。

有关服务相关角色的更多信息，请参见 *IAM 用户指南*中的[使用服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html)。

需要以下权限：
+ 要启用或禁用 CloudWatch Contributor Insights for DynamoDB，必须具备表或索引的 `dynamodb:UpdateContributorInsights` 权限。
+ 要查看 CloudWatch Contributor Insights for DynamoDB 图表，必须具备 `cloudwatch:GetInsightRuleReport` 权限。
+ 要为给定 DynamoDB 表或索引描述 CloudWatch Contributor Insights for DynamoDB，必须具备 `dynamodb:DescribeContributorInsights` 权限。
+ 要列出每个表和全局二级索引的 CloudWatch Contributor Insights for DynamoDB 状态，必须具备 `dynamodb:ListContributorInsights` 权限。

## 示例：启用或禁用 CloudWatch Contributor Insights for DynamoDB


下面的 IAM 策略授予启用或禁用 CloudWatch Contributor Insights for DynamoDB 的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/contributorinsights.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBCloudWatchContributorInsights",
            "Condition": {"StringLike": {"iam:AWSServiceName": "contributorinsights.dynamodb.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateContributorInsights"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*"
        }
    ]
}
```

------

 对于由 KMS 密钥加密的表，用户需要拥有 kms:Decrypt 权限才能更新 Contributor Insights。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/contributorinsights.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBCloudWatchContributorInsights",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "contributorinsights.dynamodb.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateContributorInsights"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*"
        },
        {
            "Effect": "Allow",
            "Resource": "arn:aws:kms:*:*:key/*",
            "Action": [
                "kms:Decrypt"
            ]
        }
    ]
}
```

------

## 示例：检索 CloudWatch Contributor Insights 规则报告


下面的 IAM 策略授予检索 CloudWatch Contributor Insights 规则报告的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetInsightRuleReport"
            ],
            "Resource": "arn:aws:cloudwatch:*:*:insight-rule/DynamoDBContributorInsights*"
        }
    ]
}
```

------

## 示例：根据资源有选择地应用 CloudWatch Contributor Insights for DynamoDB 权限。


下面的 IAM 策略授予权限，允许 `ListContributorInsights` 和 `DescribeContributorInsights` 操作，拒绝针对特定全局二级索引的 `UpdateContributorInsights` 操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListContributorInsights",
                "dynamodb:DescribeContributorInsights"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "dynamodb:UpdateContributorInsights"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/Author-index"
        }
    ]
}
```

------

## 使用 CloudWatch Contributor Insights for DynamoDB 的服务相关角色
使用服务关联角色

CloudWatch Contributor Insights for DynamoDB 使用 Amazon Identity and Access Management (IAM) [服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务相关角色是一种独特 IAM 角色，与 CloudWatch Contributor Insights for DynamoDB 直接相关。服务相关角色由 CloudWatch Contributor Insights for DynamoDB 预定义，包含该服务代表您调用其他 Amazon 服务所需的所有权限。

服务相关角色更方便设置 CloudWatch Contributor Insights for DynamoDB，因为无需手动添加必要权限。CloudWatch Contributor Insights for DynamoDB 定义服务相关角色的权限，除非另有定义，否则只有 CloudWatch Contributor Insights for DynamoDB 可以代入该角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。

有关支持服务相关角色的其它服务的信息，请参阅[使用 IAM 的 Amazon 服务](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务相关角色文档。

### CloudWatch Contributor Insights for DynamoDB 的服务相关角色权限


CloudWatch Contributor Insights for DynamoDB 使用名为 **AWSServiceRoleForDynamoDBCloudWatchContributorInsights** 的服务相关角色。服务相关角色允许 Amazon DynamoDB 代表您管理为 DynamoDB 表和全局二级索引创建的 Amazon CloudWatch Contributor Insights 规则。

`AWSServiceRoleForDynamoDBCloudWatchContributorInsights` 服务相关角色信任以下服务代入该角色：
+ `contributorinsights.dynamodb.amazonaws.com `

角色权限策略允许 CloudWatch Contributor Insights for DynamoDB 对指定资源完成以下操作：
+ 操作：`DynamoDBContributorInsights` 上的 `Create and manage Insight Rules`

必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参见 *IAM 用户指南*中的[服务相关角色权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/contributorinsights-service-linked-roles.html#service-linked-role-permissions)。

### 创建 CloudWatch Contributor Insights for DynamoDB 的服务相关角色


无需手动创建服务相关角色。在 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 中启用 Contributor Insights 后，CloudWatch Contributor Insights for DynamoDB 自动创建服务相关角色。

如果删除此服务相关角色，然后需要再次创建，可以使用相同流程在账户中重新创建此角色。启用 Contributor Insights 后，CloudWatch Contributor Insights for DynamoDB 再次创建服务相关角色。

### 编辑 CloudWatch Contributor Insights for DynamoDB 的服务相关角色


CloudWatch Contributor Insights for DynamoDB 不允许编辑 `AWSServiceRoleForDynamoDBCloudWatchContributorInsights` 服务相关角色。创建服务相关角色后，将无法更改角色名称，因为可能有多个实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

### 删除 CloudWatch Contributor Insights for DynamoDB 的服务相关角色


无需手动删除 `AWSServiceRoleForDynamoDBCloudWatchContributorInsights` 角色。在 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 中禁用 Contributor Insights 后，CloudWatch Contributor Insights for DynamoDB 清理资源。

还可以使用 IAM 控制台、Amazon CLI 或 Amazon API 手动删除服务相关角色。为此，必须先手动清除服务相关角色的资源，然后才能手动删除。

**注意**  
如果尝试删除资源时 CloudWatch Contributor Insights for DynamoDB 服务正在使用该角色，则删除操作可能失败。如果发生这种情况，请等待几分钟后重试。

**使用 IAM 手动删除服务关联角色**

使用 IAM 控制台，即 Amazon CLI 或 Amazon API 来删除 `AWSServiceRoleForDynamoDBCloudWatchContributorInsights` 服务相关角色。有关更多信息，请参阅*《IAM 用户指南》*中的[删除服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。