CloudWatch Logsのタグ補強を有効化してみた

記事タイトルとURLをコピーする

今月誕生日の人、おめでとうございます🎉 エデュケーショナルサービス課の森純子です。

「このログ、どのチームのどの環境から出たやつだっけ?」— 複数チーム・複数環境を運用していると、ログを見るたびにリソースを特定する作業が発生しますよね。

そんな方々に朗報です! 2026年6月30日のアップデートで、CloudWatch Logsがリソースタグでログイベントを自動補強する機能 がリリースされました🎉

Amazon CloudWatch Logs enriches log events with AWS resource tags(2026年6月30日)

この機能を有効化すると、ログイベントに対してリソースに付けたタグ(チーム名、環境名、コストセンター等)が自動で付与されます。アプリケーション側のログ出力を一切変更する必要がありません。しかも追加料金なしです。

ということで、やってみました。

本記事の登場サービス

略称 正式名称
CloudWatch Logs Amazon CloudWatch Logs
Lambda AWS Lambda
Logs Insights Amazon CloudWatch Logs Insights
Resource Explorer AWS Resource Explorer

対象読者

  • 複数チーム・複数環境のログを運用しているAWS運用者
  • ログのフィルタリングや分析をもっと楽にしたい方
  • CloudWatch Logsを日常的に使っている方

本記事で分かること

  • タグ補強機能の有効化手順(CLIで1コマンド)
  • 有効化から反映までにかかる時間
  • Logs Insightsでタグを使ったクエリの実行方法
  • フィールド名の落とし穴@tags.xxx ではなく @aws.tag.xxx

タグ補強機能とは

従来のCloudWatch Logsでは、ログイベントにはリソースのメタデータ(どのチームの、どの環境の、どのアプリケーションのログか)が含まれていませんでした。ログを分析する際は、ロググループ名からリソースを推測するか、アプリケーション側でログにメタデータを埋め込む必要がありました。

タグ補強機能を有効化すると、CloudWatch Logsがログイベントの取り込み時にリソースタグを自動で付与します。Logs Insightsで @aws.tag.<タグキー名> としてクエリに使えるようになります。

例えば filter @aws.tag.Environment = 'production' と書けば、本番環境のリソースから出たログだけをフィルタできます。

有効化手順

CLIで1コマンドです。

aws observabilityadmin start-telemetry-enrichment --region ap-northeast-1

実行結果:

{
    "Status": "Running",
    "AwsResourceExplorerManagedViewArn": "arn:aws:resource-explorer-2:ap-northeast-1:xxxxxxxxxxxx:managed-view/AWSManagedViewForCloudWatchTelemetryEnrichment/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Status が "Running" になれば有効化完了です。

このコマンドが裏で行っていること:

  • Resource Explorerのインデックスとマネージドビューをアカウント内に作成する
  • CloudWatch Logsがログ取り込み時にリソースタグを参照できるようにする

マネジメントコンソールからも有効化できます。CloudWatch → Settings → 「テレメトリでリソースタグを有効にする」をオンにするだけです。

必要なIAM権限

有効化するIAMプリンシパルには以下の権限が必要です。

  • observabilityadmin:StartTelemetryEnrichment
  • iam:CreateServiceLinkedRole
  • resource-explorer-2:CreateIndex
  • resource-explorer-2:CreateManagedView
  • resource-explorer-2:CreateStreamingAccessForService

【落とし穴】反映までに時間がかかる

有効化直後にはタグが付与されません。Resource Explorerのインデックス構築が完了するまで待つ必要があります。

今回の検証では、有効化から約20時間後にタグの反映を確認しました。公式ドキュメントには具体的な所要時間の記載がないため、有効化した翌日に確認するのが安全です。

【落とし穴】フィールド名は @aws.tag.xxx

有効化から20時間経ったので、いざLogs Insightsでクエリしてみました。

fields @timestamp, @message, @tags.Owner, @tags.Environment, @tags.System

結果、ログイベントは返ってくるのにタグのフィールドが全て空。「まだ反映されてないのか?」と思いましたが、ログ自体は取れているので反映はされているはず。

空振り状況

ドキュメントを読み直したところ、フィールド名が違いました。

誤: @tags.Owner 正: @aws.tag.Owner

@tags ではなく @aws.tag です。修正したクエリを実行したら、全ログイベントにタグが付いていました。

fields @timestamp, @message, @aws.tag.Owner, @aws.tag.Environment, @aws.tag.System

直感的に @tags と書きたくなりますが、正しくは @aws.tag.<タグキー名> です。ここ要注意です。

成功結果

※メッセージを補足します。Logs Insightsを開いた際画面上部に、「新しい Log Analytics エクスペリエンスにリダイレクトされました」というメッセージが表示されることがあります。これは、従来のLogs Insights・Live Tail・Contributor Insightsを1つの画面に統合した新UIへの切り替え案内です。クエリの書き方は従来と同じなので、新UIを使いたい方はOK、従来の画面のままがいい方はオプトアウトを選んでください。右上の設定メニューからいつでも切り替えられます。

AWSメッセージ

検証手順と結果

検証環境

項目 設定
AWS CLI v2.35.15
リージョン ap-northeast-1(アジアパシフィック(東京))
OS Ubuntu on WSL2
検証用リソース AWS Lambda関数(タグ付き)

手順1: タグ付きLambda関数を作成する

以下のタグを付けたLambda関数を作成しました。

Lambda関数タグ

  • Name: cwlogs-tag-enrichment-test
  • Owner: blog-verification
  • Environment: test
  • System: cwlogs-tag-enrichment

手順2: Lambda関数を実行してログを出力する

aws lambda invoke --function-name cwlogs-tag-enrichment-test --region ap-northeast-1 /dev/stdout

手順3: Logs Insightsでタグが付与されているか確認する

aws logs start-query \
  --log-group-name "/aws/lambda/cwlogs-tag-enrichment-test" \
  --start-time $(date -d '5 minutes ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'fields @timestamp, @message, @aws.tag.Owner, @aws.tag.Environment, @aws.tag.System' \
  --region ap-northeast-1

結果

全ログイベントに以下のタグが自動付与されていることを確認しました。

  • @aws.tag.Owner: blog-verification
  • @aws.tag.Environment: test
  • @aws.tag.System: cwlogs-tag-enrichment

アプリケーション側のコード変更は一切なし。Lambda関数のコードは print("Hello") だけですが、出力されたログにリソースタグが自動で付いています。

タグを使ったフィルタの例

特定のチームのログだけを抽出する:

filter @aws.tag.Owner = 'blog-verification'
| fields @timestamp, @message

本番環境のエラーログだけを抽出する:

filter @aws.tag.Environment = 'production' and @message like /ERROR/
| fields @timestamp, @message

対応リソース

タグ補強はすべてのリソースで使えるわけではありません。ログへのタグ補強に対応している主要リソースは以下です(一部抜粋)。

  • AWS Lambda
  • Amazon EC2
  • Amazon ECS
  • Amazon EKS
  • Amazon RDS(DBクラスター)
  • Application Load Balancer
  • Amazon CloudFront
  • AWS Network Firewall
  • Amazon VPC

全対応リソースの一覧は公式ドキュメントを参照してください。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/UsingResourceTagsForTelemetry.html

利用時の注意点

  1. 有効化からタグの反映まで時間がかかる。今回の検証では約20時間。有効化した翌日に確認するのが安全
  2. フィールド名は @aws.tag.<タグキー名>@tags ではない
  3. タグ補強はログの取り込み時に行われる。有効化前に取り込まれた過去のログには遡及して付与されない
  4. Resource Explorerのインデックスが自動作成される。既にResource Explorerを使っている場合は影響がないか確認を推奨
  5. 対応リソースは限定されている。全サービスで使えるわけではない

コスト

項目 コスト
タグ補強機能 追加料金なし
Resource Explorer 追加料金なし
Lambda(検証用) 無料利用枠内
Logs Insights クエリのスキャン量に応じた通常料金

タグ補強機能自体は追加料金なしです。Logs Insightsのクエリ料金は従来通り発生しますが、タグ補強を有効化したことによる追加のログ保存料金はありません。

まとめ

  • タグ補強機能は aws observabilityadmin start-telemetry-enrichment の1コマンドで有効化できる。追加料金なし
  • 有効化後、リソースタグがログイベントに自動付与される。アプリケーションコードの変更は不要
  • Logs Insightsで @aws.tag.<タグキー名> を使ってフィルタ・分析が可能
  • 反映まで数時間〜最大1日かかる。有効化した翌日に確認するのが安全
  • 既にリソースにタグを付けている運用者であれば、有効化するだけで即座にログ分析の精度が上がる

タグ戦略を既に運用しているチームほど恩恵が大きい機能です。有効化するだけでログにコンテキストが付くので、ぜひ試してみてください!

関連情報