CloudWatch Contributor Insights for DynamoDB: 仕組み
Amazon DynamoDB は、Amazon CloudWatch Contributor Insights との統合により、テーブルやグローバルセカンダリインデックスでアクセスとスロットリングが最も多い項目に関する情報を提供します。DynamoDB は、CloudWatch Contributor Insights のルール、レポート、レポートデータのグラフを通じて、この情報を提供します。
詳細については、「Amazon CloudWatch ユーザーガイド」の「Contributor Insights を使用して高カーディナリティデータを分析する」を参照してください。
次のセクションでは、CloudWatch Contributor Insights for DynamoDB の基本概念と動作について説明します。
トピック
CloudWatch Contributor Insights for DynamoDB のルール
テーブルまたはグローバルセカンダリインデックスで DynamoDB の CloudWatch Contributor Insights を有効にすると、DynamoDB はユーザーに代わって次のルールを作成します。
-
最もアクセスされた項目 (パーティションキー) - テーブルまたはグローバルセカンダリインデックスで最もアクセスされた項目のパーティションキーを識別します。
CloudWatch ルール名の形式:
DynamoDBContributorInsights-PKC-[resource_name]-[creationtimestamp]
-
最もスロットリングされたキー (パーティションキー) - テーブルまたはグローバルセカンダリインデックスで最もスロットリングされた項目のパーティションキーを識別します。
CloudWatch ルール名の形式:
DynamoDBContributorInsights-PKT-[resource_name]-[creationtimestamp]
注記
DynamoDB テーブルで Contributor Insights を有効にする場合でも、Contributor Insights ルールによる制限は引き続き適用されます。詳細については、「CloudWatch サービスのクォータ」を参照してください。
テーブルまたはグローバルセカンダリインデックスにソートキーがある場合、DynamoDB はソートキーに固有の次のルールも作成します。
-
最もアクセスされたキー (パーティションキーとソートキー) - テーブルまたはグローバルセカンダリインデックスで最もアクセスされた項目のパーティションキーとソートキーを識別します。
CloudWatch ルール名の形式:
DynamoDBContributorInsights-SKC-[resource_name]-[creationtimestamp]
-
最もスロットリングされたキー (パーティションキーとソートキー) - テーブルまたはグローバルセカンダリインデックスで最もスロットリングされた項目のパーティションキーとソートキーを識別します。
CloudWatch ルール名の形式:
DynamoDBContributorInsights-SKT-[resource_name]-[creationtimestamp]
注記
-
CloudWatch コンソールまたは API を使用して、CloudWatch Contributor Insights for DynamoDB によって作成されたルールを直接変更または削除することはできません。テーブルまたはグローバルセカンダリインデックスで CloudWatch Contributor Insights for DynamoDB を無効にすると、そのテーブルまたはグローバルセカンダリインデックス用に作成されたルールが自動的に削除されます
-
DynamoDB によって作成された CloudWatch Contributor Insights ルールで GetInsightRuleReport オペレーションを使用すると、
MaxContributorValue
とMaximum
のみが有用な統計を返します。このリストの他の統計は、意味のある値を返しません。 -
CloudWatch Contributor Insights for DynamoDB の寄稿者の上限は 25 です。25 人を超える寄稿者をリクエストすると、エラーが返されます。
CloudWatch アラームは、CloudWatch Contributor Insights for DynamoDB ルールを使用して作成できます。これにより、項目が ConsumedThroughputUnits
または ThrottleCount
の特定のしきい値を超えたとき、または満たすときに通知を受け取ることができます。詳細については、「Contributor Insights メトリクスデータでのアラームの設定」を参照してください。
CloudWatch Contributor Insights for DynamoDB のグラフを理解する
Contributor Insights for DynamoDB は、DynamoDB コンソールと CloudWatch コンソールの両方で 2 種類のグラフを表示します ([最もアクセスされた項目] および [最もスロットリングされた項目])。
最もアクセスされた項目
このグラフを使用して、テーブルまたはグローバルセカンダリインデックスで最もアクセスの多い項目を特定します。グラフの Y 軸に ConsumedThroughputUnits
が、X 軸に時間が表示されます。上位 N 個のキーはそれぞれ独自の色で表示され、X 軸の下に凡例が表示されます。
DynamoDB は、ConsumedThroughputUnits
を使用してキーアクセス頻度を測定します。これは、読み取りと書き込みのトラフィックを組み合わせて測定します。ConsumedThroughputUnits
は次のように定義されます。
-
プロビジョンド - (3 x 消費された書き込み容量の単位) + 消費された読み込み容量の単位
-
オンデマンド - (3 x 書き込みリクエスト単位) + 読み込みリクエスト単位
DynamoDB コンソールで、グラフの各データポイントは 1 分間にわたる ConsumedThroughputUnits
の最大値を表します。例えば、ConsumedThroughputUnits
のグラフ値が 180,000 である場合は、1 分間以内の 60 秒間にわたり、項目別の最大スループットを 1,000 の書き込みリクエスト単位または 3,000 の読み取りリクエスト単位として、項目が継続的にアクセスされたことを示します (3,000 x 60 秒)。つまり、グラフ化された値は、各 1 分間以内で最もトラフィックの多い 1 分間を表します。ConsumedThroughputUnits
メトリクスの時間粒度は CloudWatch コンソールで変更できます (1 分間ではなく 5 分間のメトリクスを表示するなど)。
明確な異常値がなく、いくつかの密接にクラスター化された行が表示されている場合、指定された時間枠内で項目間でワークロードのバランスが比較的取れていることを示しています。グラフに接続線ではなく孤立したポイントが表示されている場合は、項目が短時間だけ頻繁にアクセスされたこと示します。
テーブルまたはグローバルセカンダリインデックスにソートキーがある場合、DynamoDB は 2 つのグラフを作成します。1 つは最もアクセス頻度の高いパーティションキー用、もう 1 つは最もアクセス頻度の高いパーティションキーとソートキーのペア用です。パーティションキーレベルのトラフィックは、パーティションキー専用のグラフでのみ確認できます。項目レベルのトラフィックは、パーティションキーとソートキーのペア用グラフで確認できます。
最もスロットリングされた項目
このグラフを使用して、テーブルまたはグローバルセカンダリインデックスで最もスロットリングされた項目を特定します。グラフの Y 軸に ThrottleCount
が、X 軸に時間が表示されます。上位 N 個の各キーは独自の色で表示され、X 軸の下に凡例が表示されます。
DynamoDB は ThrottleCount
を使用してスロットル頻度を測定します。これは、ProvisionedThroughputExceededException
、ThrottlingException
、および RequestLimitExceeded
エラーのカウントです。
グローバルセカンダリインデックスの書き込み容量が不十分なため発生した書き込みスロットルは測定されません。グローバルセカンダリインデックスの [最もアクセスされた項目] グラフを使用して、書き込みスロットリングを引き起こす可能性のある不均衡なアクセスパターンを特定できます。詳細については、「グローバルセカンダリインデックスに対するプロビジョニングされたスループットに関する考慮事項」を参照してください。
DynamoDB コンソールの場合、グラフの各データポイントは 1 分間のスロットルイベント数を表します。
このグラフにデータが表示されない場合は、リクエストがスロットリングされていないことを示しています。グラフに接続線ではなく孤立したポイントが表示されている場合は、項目が短時間に頻繁にスロットリングされたことを示します。
テーブルまたはグローバルセカンダリインデックスにソートキーがある場合、DynamoDB は 2 つのグラフを作成します。1 つは最もスロットリングされたパーティションキー用、もう 1 つは最もスロットリングされたパーティションキーとソートキーのペア用です。パーティションキーのみのグラフではパーティションキーレベルのスロットルカウントを、パーティションキーとソートキーのグラフでは項目レベルのスロットルカウントを確認できます。
レポートの例
パーティションキーとソートキーの両方があるテーブルに対して生成されたレポートの例を以下に示します。
他の DynamoDB 機能との相互作用
次のセクションでは、CloudWatch Contributor Insights for DynamoDB がどのように動作し、DynamoDB の他のいくつかの機能とどのようにやり取りするかについて説明します。
グローバルテーブル
CloudWatch Contributor Insights for DynamoDB は、グローバルテーブルのレプリカを個別のテーブルとしてモニタリングします。Contributor Insights のグラフに表示されるレプリカのパターンは、AWS リージョン間で異なる場合があります。これは、書き込みデータはグローバルテーブル内のすべてのレプリカにレプリケートされますが、リージョンにバインドされた読み込みトラフィックは各レプリカで処理できるためです。
DynamoDB Accelerator (DAX)
CloudWatch Contributor Insights for DynamoDB は、DAX のキャッシュ応答を表示しません。テーブルまたはグローバルセカンダリインデックスへのアクセスに対する応答のみを表示します。
注記
DynamoDB CCI は PartiQL リクエストをサポートしていません。
保管中の暗号化
CloudWatch Contributor Insights for DynamoDB は、DynamoDB での暗号化の動作には影響しません。CloudWatch で発行されるプライマリキーデータは、AWS 所有のキー で暗号化されます。ただし、DynamoDB は AWS マネージドキー やカスタマーマネージドキーもサポートしています。
CloudWatch Contributor Insights for DynamoDB グラフには、頻繁にアクセスされる項目と頻繁にスロットリングされる項目のパーティションキーとソートキー(該当する場合)がプレーンテキストで表示されます。AWS Key Management Service (KMS) を使用してこのテーブルのパーティションキーを暗号化し、AWS マネージドキー またはカスタマー管理のキーでキーデータをソートする必要がある場合は、このテーブルに対して [CloudWatch Contributor Insights for DynamoDB] を有効にしないでください。
プライマリキーデータを AWS マネージドキー またはカスタマーマネージドキーで暗号化する必要がある場合、そのテーブルで CloudWatch Contributor Insights for DynamoDB を有効にしないでください。
きめ細かなアクセスコントロール
CloudWatch Contributor Insights for DynamoDB は、きめ細かなアクセスコントロール (FGAC) を使用してテーブル別に動作を調整することはありません。つまり、適切な CloudWatch 許可を持つユーザーは、CloudWatch Contributor Insights のグラフで FGAC で保護されたプライマリキーを表示できます。
テーブルのプライマリキーに、CloudWatch に公開したくない FGAC で保護されたデータが含まれている場合、そのテーブルに対して CloudWatch Contributor Insights for DynamoDB を有効にしないでください。
アクセスコントロール
DynamoDB コントロールプレーンの許可と CloudWatch データプレーンの許可を制限することにより、AWS Identity and Access Management (IAM) を使用して、CloudWatch Contributor Insights for DynamoDB へのアクセスを制御します。詳細については、「CloudWatch Contributor Insights for DynamoDB での IAM の使用」を参照してください。
CloudWatch Contributor Insights for DynamoDB の請求
Contributor Insights for DynamoDB の料金は、毎月の請求書の CloudWatch
テーブルまたはグローバルセカンダリインデックスにソートキーが含まれている場合、読み込みまたは書き込みされる各項目は 2 つのイベントを表します。これは、DynamoDB が別々の時系列から上位の貢献者を識別するためです。1 つはパーティションキー専用の時系列、もう 1 つはパーティションキーとソートキーのペア用の時系列です。
例えば、5 つの項目を配置する GetItem
、PutItem
、BatchWriteItem
の DynamoDB オペレーションがアプリケーションによって実行されたとします。
-
テーブルまたはグローバルセカンダリインデックスにパーティションキーのみがある場合、イベント数は 7 になります (
GetItem
に 1、PutItem
に 1、BatchWriteItem
に 5)。 -
テーブルまたはグローバルセカンダリインデックスにパーティションキーとソートキーがある場合、イベント数は 14 になります (
GetItem
に 2、PutItem
に 2、BatchWriteItem
に 10)。 -
Query
オペレーションでは、返される項目の数に関係なく、イベント数は常に 1 です。
DynamoDB の他の機能とは異なり、CloudWatch Contributor Insights for DynamoDB の請求は以下に基づいて変動しません。
-
容量モード (プロビジョンドとオンデマンド)
-
読み込みリクエストと書き込みリクエストのどちらを実行するか
-
読み込みまたは書き込みされた項目のサイズ (KB)