![[アップデート] Amazon Quick のインデックスストレージ使用状況をナレッジベース・スペース単位で CloudWatch Logs から確認できるようになりました](https://images.ctfassets.net/ct0aopd36mqt/2x7muHjvW69fxuVNSKWZHp/b37e05a972fc8125e9214abd764928fa/amazon-quick.png?w=3840&fm=webp)
[アップデート] Amazon Quick のインデックスストレージ使用状況をナレッジベース・スペース単位で CloudWatch Logs から確認できるようになりました
いわさです。
Amazon Quick は CloudWatch の vended logs に対応しており、オプションでチャットの会話ログ(CHAT_LOGS)、フィードバックログ(FEEDBACK_LOGS)、エージェント/リサーチの利用時間ログ(AGENT_HOURS_LOGS)を CloudWatch Logs や S3、Data Firehose に配信できるようになっています。
そして、Amazon Quick はナレッジベースや Spaces にアップロードしたファイルをインデックスに格納し、チャットでの AI 応答に活用しているのですが、これまでインデックスの使用状況を確認するには、Quick の管理コンソールからインデックスキャパシティページで確認するか CloudWatch メトリクスを使う方法があったのですが、アカウント全体の合計値を確認する手段であり、「どのナレッジベースやスペースがどれだけ容量を消費しているか」というソース単位の内訳までは把握できませんでした。
これが今回のアップデートで、Amazon Quick の vended logs に新たなログタイプ INDEX_USAGE_LOGS が追加されました。
このログにはナレッジベースやスペースごとの消費サイズやドキュメント数が記録されるようです。
CloudWatch Logs に配信すれば、CloudWatch Logs Insights でクエリを実行してソース単位の内訳を分析したり、ダッシュボードで可視化したりできるようになりそうです。
今回こちらを確認してみたので紹介します。
実際に確認してみる
では早速、INDEX_USAGE_LOGS の配信設定とログの中身を確認してみましょう。
vended logs の配信設定
まず、INDEX_USAGE_LOGS を CloudWatch Logs に配信するための設定を行います。
公式ドキュメントによると、CloudWatch Logs の PutDeliverySource、PutDeliveryDestination、CreateDelivery API を使って配信を構成するみたいです。
Create a delivery source with the PutDeliverySource CloudWatch Logs API operation. Give the delivery source a name and for resourceArn, specify the ARN of your application. For logType, specify CHAT_LOGS, AGENT_HOURS_LOGS, FEEDBACK_LOGS, or INDEX_USAGE_LOGS.
本日時点では CloudWatch コンソールに vended logs の配信設定を行う UI は見当たらなかったので、AWS CLI や API で設定する必要があります。
設定にあたっては事前に IAM ポリシーで quicksight:AllowVendedLogDeliveryForResource の許可を持ったうえで作業する必要があります。
今回は AWS CLI で設定してみました。
まず、配信先となる CloudWatch Logs のロググループを作成します。
aws logs create-log-group \
--log-group-name /aws/vendedlogs/quick-index-usage
次に、配信元(デリバリーソース)を作成します。
--resource-arn に Quick のアカウント ARN、--log-type に INDEX_USAGE_LOGS を指定します。
aws logs put-delivery-source \
--name quick-index-usage-source \
--resource-arn "arn:aws:quicksight:{リージョン}:{アカウントID}:account/{アカウントID}" \
--log-type INDEX_USAGE_LOGS
レスポンスで service が quicksight、logType が INDEX_USAGE_LOGS となっていることが確認できます。
{
"deliverySource": {
"name": "quick-index-usage-source",
"arn": "arn:aws:logs:ap-northeast-1:{アカウントID}:delivery-source:quick-index-usage-source",
"resourceArns": [
"arn:aws:quicksight:ap-northeast-1:{アカウントID}:account/{アカウントID}"
],
"service": "quicksight",
"logType": "INDEX_USAGE_LOGS"
}
}
続いて、配信先を作成します。
aws logs put-delivery-destination \
--name quick-index-usage-destination \
--delivery-destination-configuration \
"destinationResourceArn=arn:aws:logs:{リージョン}:{アカウントID}:log-group:/aws/vendedlogs/quick-index-usage"
最後に、配信元と配信先を紐づけるデリバリーを作成します。
aws logs create-delivery \
--delivery-source-name quick-index-usage-source \
--delivery-destination-arn \
"arn:aws:logs:{リージョン}:{アカウントID}:delivery-destination:quick-index-usage-destination"
レスポンスの recordFields に INDEX_USAGE_LOGS のフィールドが含まれていることが確認できます。
{
"delivery": {
"id": "FCMB1317cBANBAGv",
"arn": "arn:aws:logs:ap-northeast-1:{アカウントID}:delivery:FCMB1317cBANBAGv",
"deliverySourceName": "quick-index-usage-source",
"deliveryDestinationArn": "arn:aws:logs:ap-northeast-1:{アカウントID}:delivery-destination:quick-index-usage-destination",
"deliveryDestinationType": "CWL",
"recordFields": [
"resource_arn",
"event_timestamp",
"log_type",
"account_id",
"user_arn",
"consumed_index_size",
"source_type",
"source_name",
"source_arn",
"consumed_source_size",
"consumed_source_doc_count"
]
}
}
なお、配信先は CloudWatch Logs 以外にも Amazon S3 や Amazon Data Firehose を選択できるようです。
ログの確認
配信設定後、スペースにファイルをアップロードしてみました。医療ガイドライン分析用のスペースを作成してみましょう。

しばらくすると、CloudWatch Logs のロググループにログストリーム QUICK_SUITE_INDEX_USAGE_LOGS が作成されました。


ログストリームを開くと、ログイベントが確認できます。

ログイベントの中身を見てみると、以下のような JSON が記録されています。
{
"user_arn": "arn:aws:quicksight:ap-northeast-1:{アカウントID}:user/default/{ユーザー名}",
"consumed_index_size": 13844176,
"source_type": "SPACE",
"source_name": "「医療情報システムの安全管理に関するガイドライン第 6.1 版」(案)",
"source_arn": "arn:aws:quicksight:ap-northeast-1:{アカウントID}:space/{スペースID}",
"consumed_source_size": 9105803,
"consumed_source_doc_count": 6,
"resource_arn": "arn:aws:quicksight:ap-northeast-1:{アカウントID}:account/{アカウントID}",
"event_timestamp": 1776893669222,
"log_type": "INDEX_USAGE_LOGS",
"account_id": "{アカウントID}"
}
各フィールドの意味は以下のとおりです。
| フィールド | 型 | 説明 |
|---|---|---|
consumed_index_size |
Integer | インデックス全体の合計消費サイズ(バイト) |
source_type |
String | SPACE または KB |
source_name |
String | スペースまたはナレッジベースの表示名 |
source_arn |
String | ソースの ARN |
consumed_source_size |
Integer | 個別ソースの消費サイズ(バイト) |
consumed_source_doc_count |
Integer | ソース内のドキュメント数 |
今回の例では、スペースに 6 つの PDF をアップロードした結果、consumed_source_size が約 9.1 MB、consumed_source_doc_count が 6 となっていることがわかります。
今回は6つのファイルで合計 9.1 MB だったので一致しています。
一方でconsumed_index_size は約 13.2 MB で、インデックス全体の合計消費サイズを表しているようで、少しオーバーヘッド的なものがあるのかな。SPICE のフィールドもそうなんですよね。
なお、公式ドキュメントによると、イベントはソースごとに変更時に発行されるため、毎日すべてのソースからイベントが出力されるわけではないみたいです。
実際に今回の検証でも、ファイルのアップロード後に同じソースから短い間隔で複数のイベントが発行されていました。
ファイルごとにテキスト準備が完了するたびにイベントが発行されているようですね。
Events are published per source on change. Not all sources emit events every day. To reconstruct the current state, use the most recent event per source_arn.
CloudWatch Logs Insights のサンプルクエリ
公式ドキュメントには、INDEX_USAGE_LOGS を分析するための CloudWatch Logs Insights のサンプルクエリ(ソースタイプ別の集計、インデックスサイズの推移、ユーザー別の集計など)や、CloudWatch ダッシュボードでの可視化方法も紹介されています。
さいごに
本日は Amazon Quick のインデックスストレージ使用状況をソース単位で確認できる INDEX_USAGE_LOGS が vended logs に追加されたので確認してみました。
これまではアカウント全体の合計値しか確認できなかったところ、ナレッジベースやスペースごとの消費サイズ・ドキュメント数を把握できるようになったのは良いですね。
特にユーザー数が多い環境では、どのスペースやナレッジベースが容量を多く消費しているかを特定できるので、キャパシティプランニングやコスト管理に役立ちそうです。
配信設定は CloudWatch コンソールからではなく CLI/API で行う必要がある点は少し手間ですが、一度設定してしまえばあとはログが自動で流れてくるので問題ないかなと。







