🥂

EC2でAWS_CLIを実行する際の認証情報優先順位

2023/10/24に公開

EC2上からAWS_CLIを実行する際の認証情報優先順位

概要

備忘。
config と IAM ロールにさえ気をつけておけば良いと思ってたがためハマった。。

前提

2023/10/05 時点の情報

結論

優先順位

  1. 明示的な指定 ( --profile オプション)
  2. 環境変数
  3. EC2 上の credentials
  4. IAM ロール

検証

  • 環境変数:なし  credentials: default に存在しないユーザーの認証情報  IAMロール:バケットのリスト許可

    > aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key     ****************RWXG shared-credentials-file
    secret_key     ****************ElRq shared-credentials-file
        region           ap-northeast-1      config-file    ~/.aws/config
    
    >aws s3 ls
    
    An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.
    
  • 環境変数:バケットのリスト許可した認証情報  credentials: default に存在しないユーザーの認証情報  IAMロール:バケットのリスト許可

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key     ****************EC43              env
    secret_key     ****************vTAe              env
        region           ap-northeast-1      config-file    ~/.aws/config
    
    >aws s3 ls
    2023-02-12 12:32:00 aws-test-alb-logs
    2023-07-24 07:28:28 aws-test-athena
    
  • 環境変数:なし  credentials:なし  IAMロール:バケットのリスト許可

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key     ****************QHGQ         iam-role
    secret_key     ****************Qj/r         iam-role
        region           ap-northeast-1             imds
    
    >aws s3 ls
    2023-02-12 12:32:00 aws-test-alb-logs
    2023-07-24 07:28:28 aws-test-athena
    
  • 環境変数:なし  credentials: プロファイル default を削除し、プロファイル hoge に存在しないユーザーの認証情報  IAMロール:バケットのリスト許可

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key     ****************QHGQ         iam-role
    secret_key     ****************Qj/r         iam-role
        region           ap-northeast-1             imds
    
    >aws s3 ls --profile hoge
    An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.
    
  • 環境変数:なし  credentials:プロファイル default を削除し、プロファイル hoge に自アカウントのユーザーの認証情報  IAMロール:なし

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key                <not set>             None    None
    secret_key                <not set>             None    None
        region           ap-northeast-1             imds
    
    
    >aws s3 ls 
    Unable to locate credentials. You can configure credentials by running "aws configure".
    
    >aws s3 ls --profile hoge
    2023-02-12 12:32:00 aws-test-alb-logs
    2023-07-24 07:28:28 aws-test-athena
    
  • 環境変数:なし  credentials:プロファイル default を削除し、プロファイル hoge に他アカウントのユーザーの認証情報  IAMロール:なし

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key                <not set>             None    None
    secret_key                <not set>             None    None
        region           ap-northeast-1             imds
    
    >aws s3 ls 
    Unable to locate credentials. You can configure credentials by running "aws configure".
    
    >aws s3 ls --profile hoge
    2021-01-19 03:11:26 athena-logs
    2022-02-15 05:50:31 aws-athena-query-results
    
  • 環境変数:set AWS_EC2_METADATA_DISABLED=true credentials:プロファイル default を削除し、プロファイル hoge に他アカウントのユーザーの認証情報  IAMロール:なし

    >aws configure list
          Name                    Value             Type    Location
          ----                    -----             ----    --------
       profile                <not set>             None    None
    access_key                <not set>             None    None
    secret_key                <not set>             None    None
        region                <not set>             None    None
    
    >aws s3 ls 
    Unable to locate credentials. You can configure credentials by running "aws configure".
    
    >aws s3 ls --profile hoge
    2021-01-19 03:11:26 athena-logs
    2022-02-15 05:50:31 aws-athena-query-results
    
    • AWS_EC2_METADATA_DISABLED
      Amazon EC2 インスタンスメタデータサービス (IMDS) の使用を無効にします。
      true に設定した場合、ユーザーの認証情報または設定 (リージョンなど) は IMDS から要求されません。

参考

Re:Post記事
https://repost.aws/ja/knowledge-center/s3-locate-credentials-error

ユーザーガイド 
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-envvars.html

Discussion