AWS DevOps Agent(Preview)を利用してトラブルシューティングしてみた #AWSreInvent

AWS DevOps Agent(Preview)を利用してトラブルシューティングしてみた #AWSreInvent

2025.12.03

はじめに

こんにちは。AWS re:Invent2025 に参加しているオペレーション部のshiinaです。
運用寄りの立場として特に気になったのが、AWS DevOps Agent の Preview です。
すでに速報ブログでも紹介されています。
https://dev.classmethod.jp/articles/aws-devops-agent-25/

早速、この AWS DevOps Agent を実際に触り、トラブルシューティングの調査をどこまで任せられるのか試してみました。

やってみた

プレビュー版はバージニア北部リージョンで利用可能ですが、調査はバージニア北部リージョン以外でも行えます。
今回は、プライマリーアカウントの東京リージョンに存在するリソースに対して ECS タスク起動失敗のトラブルシューティングを実施してみました。

1. Agent Space作成

スペース名を指定して、ロールやタグの設定を行います。
今回はデフォルトのままロールを作成してみます。
steup1111

2. ダッシュボードアクセス

Agent Space の「Operator access」からダッシュボードアプリケーションにアクセスします。
steup2

3. 調査の開始

Incident Response タブより「Start Investigation」を選択します。
以下を指定して実施してみます。

  • Investigation details
Please investigate the cause of the ECS task launch failure. 
  • Investigation starting point
Start your investigation by reviewing the log messages recorded in the log group /aws/events/ecs/containerinsights/mycluster/performance. 
  • Data and time of incident
    発生日時近辺を指定

  • Name your investigation
    任意の調査名を指定

  • Region where the incident occurred
    ap-northeast-1

investion1

4.調査結果

開始後は次々と調査が進んでいきます。
result1

調査開始後、10分程度で根本原因まで結果得られました。
根本原因を確認するには「Get to root cause」を選択します。
result2

result3
根本原因結果(和訳)

Root causes  

1. CloudFormation 管理のシークレットローテーション時に、手動作成したタスク定義および IAM ポリシーが更新されなかった  

根本原因は、CloudFormation で管理されている Datadog のシークレットがローテーションされた際に、手動で作成されたリソース(ECS タスク定義 FireLens:7 および ecsTaskExecutionRole の IAM ポリシー)が更新されず、設定ドリフトが発生したことです。  
この環境では、Datadog の API キーシークレットは CloudFormation で管理されており、一定の間隔で削除・再作成され、新しい ARN に差し替えられます(この挙動は 2025年11月18日に確認されており、それ以前から行われていたと考えられます)。  

しかし、タスク定義 FireLens:7(2024年12月4日にユーザー cm-shiina.yuichi が登録)と ecsTaskExecutionRole のインラインポリシーは、削除済みの特定 ARN `DdApiKeySecret-Z0HxBLdSbsOO-zDk7lp` をハードコードしていました。  
その結果、シークレットのローテーションが発生するたびに、タスク定義と IAM ポリシーを手動で更新しなければならない保守負荷が生じています。`DdApiKeySecret-*` のようなワイルドカードパターンの利用や、タスク定義自体を CloudFormation 管理にする設計が取られていないため、ローテーションのたびにこれらのリソースは陳腐化し、手動で修正されるまでタスク起動に失敗する状況になっていました。  

Key findings  

1. タスク定義 FireLens:7 が削除済みの Secrets Manager シークレットを参照している  

ECS のタスク定義 `FireLens:7` は、Secrets Manager のシークレット  
`arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXX6:secret:DdApiKeySecret-Z0HxBLdSbsOO-zDk7lp`  
を参照していますが、このシークレットは 2025年9月2日以前(タスクが 2025年12月2日に失敗した時点から 3か月以上前)に削除されています。  

タスク定義は 2024年12月4日に登録されて以降、一度も更新されておらず、その間に CloudFormation によるローテーションの過程で当該シークレットが削除されました。タスク内の 3 つのコンテナ(nginx、log_router、datadog-agent)はいずれも、この存在しないシークレットを設定で参照しているため、タスク起動時に ECS がシークレット取得を試みた際、ResourceInitializationError が発生してタスクが失敗しています。  

2. ecsTaskExecutionRole の IAM ポリシーが削除済みシークレットの ARN をハードコードしている  

ecsTaskExecutionRole には、secretsmanager:GetSecretValue 権限を付与するインライン IAM ポリシー `DatadogAPIKeySecretsGetPolicy` が設定されていますが、そのポリシーは削除済みの特定 ARN  
`arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXX:secret:DdApiKeySecret-Z0HxBLdSbsOO-zDk7lp`  
のみにアクセスを許可するようハードコードされています。  

そのため、新しい Datadog API キーシークレットを作成してタスク定義側で参照 ARN を更新したとしても、この IAM ポリシーも同様に更新して新しい ARN へのアクセス権を付与しない限り、タスクは AccessDeniedException により失敗します。  

現在、このアカウントには有効な Datadog シークレットが 2 つ存在しています(2025年3月4日作成の `DdApiKeySecret-3B9Ndv6N139Y` と、2025年11月18日作成の `DdApiKeySecret-he3rIxDhsVpv`)。しかし、ecsTaskExecutionRole はこれらいずれのシークレットに対してもアクセス権を持っていません。

最後に

トラブルシューティングにおいて、ロググループ名と事象だけを与えたコンテキストでも、ここまで深掘りした調査が進むのかという点には驚きました。
原因調査に特化しており、単にシークレット値が存在しないといった表面的な原因の指摘にとどまりません。
どのように設定ミスが混入したのかという観点も調査し、根本原因の特定につなげている点は最先端のエージェントだと感じます。
今後、高度な調査能力を持つ AWS DevOps Agent の活用により運用の効率化が一層進みそうです。

本記事が参考になれば幸いです。
#AWSreInvent

この記事をシェアする

FacebookHatena blogX

関連記事