Amazon EC2 インスタンスが、ロールの認証情報ではなく IAM ユーザーの認証情報を使用しているのはなぜですか?

最終更新日: 2020 年 6 月 12 日

AWS Identity and Access Management (IAM) ロールを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにアタッチしました。しかし、Amazon EC2 インスタンスは、IAM ロールではなく IAM ユーザーで API 呼び出しを行います。

簡単な説明

AWS コマンドラインインターフェイス (AWS CLI) は、一連の認証情報プロバイダーを使用して、AWS 認証情報を順番に検索します。使用される認証情報は、認証情報プロバイダーの順序と優先順位によって異なります。詳細については、構成設定と優先順位を参照してください。

解決方法

手順に従って、IAM ユーザー ID と IAM ユーザー認証情報が保存されている場所を見つけます。次に、AWS CLI を使用して IAM 認証情報を管理し、優先順位の高い設定を破棄します。

IAM ユーザー ID を見つけ、IAM ユーザー認証情報の場所を取得します

1.    次の get-caller-identity コマンドを実行して、API 呼び出しを行うために使用される IAM 認証情報を確認します。

aws sts get-caller-identity

次のような出力が表示されます。

{

    "Account": "123456789012", 

    "UserId": "AIDACKCEVSQ6C2EXAMPLE", 

    "Arn": "arn:aws:iam::123456789012:user/ExampleIAMuser"

}

この出力例では、使用される IAM 認証情報は ExampleIAMuser のものです。

2.    --debug オプションを使用して、次のようなユーザー認証情報の場所を確認します。

aws s3 ls --debug
2020-03-28 02:04:29,478 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

この出力例では、IAM ユーザーの認証情報は .aws/credentials ファイルに保存されます。これらの認証情報はロールの認証情報よりも優先されるため、IAM ユーザーの認証情報を使用して API 呼び出しを行います。

IAM 認証情報を管理し、優先順位の高い設定を破棄する AWS CLI

次のベストプラクティスを使用してください。

  • AWS CLI で --profile オプションを使用しないでください。
  • すべての環境変数を設定解除または削除します。
  • configure コマンドの場合、.aws/credentials フォルダにある認証情報ファイルを削除します。次に、.aws フォルダを削除して、インスタンスプロファイルのデフォルトの認証情報を設定します。
  • .aws/config ファイルでセットアップされたプロファイルの場合は、プロファイルを削除します。次に、.aws フォルダを削除します。

IAM 認証情報の構成設定の優先順位を削除した後、get-caller-identity コマンドを実行して、次のような IAM ロール認証情報を確認します。

aws sts get-caller-identity

{
    "UserId": "AROACKCEVSQ6C2EXAMPLE:i-01773d4a8ed647342",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/ExampleInstanceRole/i-01773d4a8ed647342"
}

この出力例では、使用される IAM 認証情報は IAM ロールである ExampleInstanceRole のものです。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合