CloudWatch エージェント認証情報の優先設定
このセクションでは、CloudWatch エージェントが他の AWS サービスや API と通信する際に認証情報を取得するために使用する認証情報プロバイダーチェーンの概要を説明します。順序は次のとおりです。
注記
2 番目から 5 番目までの設定は、AWS SDK で定義されている優先順位と同じです。詳細については、SDK ドキュメントの「認証情報の指定」を参照してください。
-
CloudWatch エージェントの
common-config.toml
ファイルに定義されている共有設定ファイルおよび認証情報ファイル。詳細については、「AWS Systems Manager を使用して CloudWatch エージェントをインストールする」を参照してください。 -
AWS SDK 環境変数
重要
Linux では、
amazon-cloudwatch-agent-ctl
スクリプトを使用して CloudWatch エージェントを実行する場合、スクリプトはエージェントをsystemd
サービスとして起動します。この場合、HOME
、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
などの環境変数にはエージェントからアクセスできません。 -
$HOME/%USERPROFILE%
にある共有設定ファイルおよび認証情報ファイル。注記
CloudWatch エージェントは、Linux と MacOS の場合は
$HOME
の.aws/credentials
を検索し、Windows の場合は%USERPROFILE%
を検索します。AWS SDK とは異なり、CloudWatch エージェントには、環境変数にアクセスできない場合にホームディレクトリを決定するフォールバックメソッドはありません。この動作の違いは、AWS SDK の以前の実装との下位互換性を維持するためです。さらに、
common-config.toml
にある共有認証情報とは異なり、AWS SDK から派生した共有認証情報が期限切れになってローテーションされても、更新された認証情報は CloudWatch エージェントによって自動的に取得されないため、エージェントの再起動が必要になります。 -
Amazon Elastic Container Service タスク定義または RunTask API オペレーションを使用するアプリケーションが存在する場合、タスクの AWS Identity and Access Management ロール。
-
Amazon EC2 インスタンスにアタッチされたインスタンスプロファイル。
ベストプラクティスとして、CloudWatch エージェントを使用するときは、次の順序で認証情報を指定することをお勧めします。
-
アプリケーションが Amazon Elastic Container Service タスク定義または RunTask API オペレーションを使用している場合は、タスクの IAM ロールを使用します。
-
アプリケーションが Amazon EC2 インスタンスで実行される場合は、IAM ロールを使用します。
-
CloudWatch エージェントの
common-config.toml
ファイルを使用して認証情報ファイルを指定します。この認証情報ファイルと同じものが他の AWS SDK や AWS CLI でも使用されます。共有の認証情報ファイルを既に使用している場合は、そのファイルを当目的にも使用できます。CloudWatch エージェントのcommon-config.toml
ファイルを使用して提供する場合、認証情報の有効期限が切れて置き換えられるときに、エージェントを再起動しなくてもローテーションされた認証情報をエージェントが使用できるようになります。 -
環境変数を使用します。Amazon EC2 インスタンス以外のコンピュータで開発作業を行う場合は、環境変数を設定すると便利です。
注記
「別のアカウントへのメトリクス、ログ、トレースの送信」で説明されているように、テレメトリを別のアカウントに送信する場合、CloudWatch エージェントは、このセクションで説明する認証情報プロバイダーチェーンを使用して、認証情報の初期セットを取得します。その後、CloudWatch エージェント設定ファイルの role_arn
で指定された IAM ロールを引き受けるときに、これらの認証情報を使用します。