設定ファイル(認証情報)| AWS CLI
デフォルトは $HOME/.aws/credentials および $HOME/.aws/config に認証情報を設定します1。
参考
Configuration and credential file settings in the AWS CLI
credentails と config
おもに creadentials には秘匿情報を config にはそれ以外の情報を記載する。
$HOME/.aws/config に named profile(default 以外のプロファイル)を書く場合は [profile profile名] というセクション名が必要です。ただし default プロファイルだけは例外で、config ファイルでも credentials ファイルと同じく [default] と書きます([profile default] とは書きません)。 $HOME/.aws/credentials はどのプロファイルも profile プレフィックスが必要ありません。
AWS CLI / AWS SDK の認証情報探索順序
AWS CLI や AWS SDK は認証情報が必要になった場合に以下順序(上ほど優先度が高い)で認証情報を探索します。 使用できる環境変数は AWS CLI でサポートされている環境変数 を参照してください。
--profileや--regionなど CLI オプション(コマンドラインで明示的に指定した値が最優先)- 環境変数 ( AWS_PROFILE, AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID, etc.)
$HOME/.aws/credentials(ファイルの場所は環境変数AWS_SHARED_CREDENTIALS_FILEで変更可能)$HOME/.aws/config(ファイルの場所は環境変数AWS_CONFIG_FILEで変更可能)- コンテナ/インスタンスに割り当てられた IAM ロールの認証情報(実行環境によりエンドポイントが異なる)
- EC2 インスタンス:インスタンスメタデータサービス (IMDS)
169.254.169.254から取得 - ECS タスク:IMDS とは別のエンドポイント
169.254.170.2(環境変数AWS_CONTAINER_CREDENTIALS_RELATIVE_URIで示されるパス)から取得。169.254.169.254 の IMDS では ECS タスクロールの認証情報は取得できません。
- EC2 インスタンス:インスタンスメタデータサービス (IMDS)
[!NOTE] 最近の SDK のデフォルトの挙動は認証情報を
$HOME/.aws/credentialsのみ参照します。
AWS_SDK_LOAD_CONFIG=1 を設定すると$HOME/.aws/configも参照します。
トラブルシュート
ローカル端末やEC2以外の環境では、通常 インスタンスメタデータサービス (IMDS) 169.254.169.254 から EC2 インスタンスプロファイルの認証情報を取得する処理
が実行されることは想定されていないのでエラーになります。以下のエラーは認証情報が見つからず インスタンスメタデータサービス (IMDS) を探索してエラーになる例です。
Error retrieving credentials from the instance profile metadata service.
cURL error 7: Failed to connect to 169.254.169.254 port 80
-
AWS_CONFIG_FILEでパスを指定することもできます。参考:AWS CLI でサポートされている環境変数 。 ↩