設定ファイル(認証情報)

デフォルトは $HOME/.aws/credentials および $HOME/.aws/config に認証情報を設定します1。

参考

Configuration and credential file settings in the AWS CLI

credentails と config

おもに creadentials には秘匿情報を config にはそれ以外の情報を記載する。 $HOME/.aws/config に書く場合は必ず [profile profile名] というセクション名が必要です。$HOME/.aws/credentials は profile プレフィックスが必要ありません。

AWS CLI / AWS SDK の認証情報探索順序

AWS CLI や AWS SDK は認証情報が必要になった場合に以下順序で認証情報を探索します。 使用できる環境変数は AWS CLI でサポートされている環境変数 を参照してください。

  1. 環境変数 ( AWS_PROFILE, AWS_DEFAULT_REGION, etc.)
  2. --profile や --region など CLI オプション
  3. AWS_SHARED_CREDENTIALS_FILE( デフォルト $HOME/.aws/credentials )/ AWS_CONFIG_FILE( デフォルト $HOME/.aws/config )ファイル
  4. デフォルトの $HOME/.aws/credentials および $HOME/.aws/config
  5. インスタンスメタデータサービス (IMDS) 169.254.169.254 は EC2 や ECS タスクに割り当てられた IAM ロールを取得するためのメタデータエンドポイント。

[!NOTE] 最近の SDK のデフォルトの挙動は認証情報を $HOME/.aws/credentials のみ参照します。
AWS_SDK_LOAD_CONFIG=1 を設定すると $HOME/.aws/config も参照します。

トラブルシュート

通常 インスタンスメタデータサービス (IMDS) 169.254.169.254 は EC2 や ECS タスクに割り当てられた IAM ロールを取得するためのメタデータエンドポイント。 が実行されることは想定されていないのでエラーになります。以下のエラーは認証情報が見つからず インスタンスメタデータサービス (IMDS) を探索してエラーになる例です。

Error retrieving credentials from the instance profile metadata service.
cURL error 7: Failed to connect to 169.254.169.254 port 80
  1. AWS_CONFIG_FILEでパスを指定することもできます。参考:AWS CLI でサポートされている環境変数 。 ↩