CloudWatch AgentがUnrecognizedClientExceptionで失敗した原因と対処法

AWS
この記事は約2分で読めます。

こんにちは、@Manabu です。

今回はEC2にCloudWatchエージェントをインストールして、メモリやディスク容量などのメトリクスを送信しようとした時に発生したエラーについてです。

このような事象が発生する原因は色々あるようですが、私の環境で発生した事象について紹介します。

発生したエラー

EC2のAWSコンソールからCloudWatchエージェントの設定を試みたところ、以下のようなエラーが発生しました。

UnrecognizedClientException: The security token included in the request is invalid.

すでに、IAMロールの設定やCloudWatchエージェントのインストールまで完了していて、送信するメトリクスを選択した後に発生しました。

原因

CloudWatchエージェントやSSMエージェントは、EC2に設定されている優先度の高い認証情報を使ってAWS APIにアクセスします。

参考記事:

AWS CLIの認証情報の優先順位を実際に試して理解する - Qiita
この記事は、リンクバルアドベントカレンダー2022のシリーズ2の3日目の記事です。 昨日の記事は、目に見えない文字を悪用してサイトを好き放題荒らされた話 です。 はじめに AWS CLIでは、AWSが決めた優先順位に基づいて、認証情報を利用...

私の管理しているEC2では、rootユーザーでアクセスするために以下の記事のような変更を行なっていました。

AWS EC2にrootユーザーでSSH接続する方法!
AWSのEC2にrootユーザーでログインする方法についてまとめいます。VScodeでリモート接続して編集が簡単になったり、毎回スイッチする手順が省略で来ます。ただ、推奨はされていないため特に必要のある方だけ参考にするようにお願いします。

これにより /root/.aws/credentials が存在し、CloudWatch Agent は IAM ロールではなく 古くて無効なアクセスキー を参照してしまっていました。

解決策

rootディレクトリは以下の認証情報を削除し、IAMロール認証にもどすことで解決しました。

rmコマンドやmvコマンドで対象ファイルを削除・退避し、再度EC2のコンソール上から送信したいメトリクスを設定しなおすと成功し、CloudWatchコンソール上から見ても適切にメトリクスが取得されるようになりました。

まとめ

CloudWatchエージェントの設定については、上記の他にIAMロールの設定やディスク容量の逼迫など様々な原因で失敗することがあります。

私と同じ状態の方がいましたら、ぜひ参考にしてください。