AWS CLI の認証情報の設定について、いつも調べつつ利用していたので、自分用にまとめました。
認証情報の設定
以下のように aws configure コマンドでセットアップした場合、default という名前のプロファイルに保存される。
$ aws configure
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ********************
Default region name [None]: ap-northeast-1
Default output format [None]: text
プロファイル設定ファイルは ~/.aws/credentials.
(機密性の高い認証情報)と ~/.aws/config
(機密性の低い設定)に保存される。
$ cat ~/.aws/credentials
[default]
aws_access_key_id=********************
aws_secret_access_key=********************
$ cat ~/.aws/config
[default]
region=ap-northeast-1
output=text
default プロファイルは、プロファイルを指定せず AWS CLI コマンドを実行する場合に使用される。
# default プロファイルの認証情報を使用
$ aws s3 ls
プロファイルの追加
default と異なるアカウントとリージョンの認証情報を追加設定することができる。
$ aws configure --profile user1
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ********************
Default region name [None]: eu-west-1
Default output format [None]: text
プロファイル設定には以下のように追加される。
$ cat ~/.aws/credentials
[default]
aws_access_key_id=********************
aws_secret_access_key=********************
[user1]
aws_access_key_id=********************
aws_secret_access_key=********************
$ cat ~/.aws/config
[default]
region=ap-northeast-1
output=text
[profile user1]
region=eu-west-1
output=text
追加プロファイルは、コマンドに --profile オプションを追加して認証情報を使用できる。
# 追加プロファイルの認証情報を使用
$ aws s3 ls --profile user1
毎度 --profile オプションで指定するのが面倒な場合は、 AWS_PROFILE 環境変数を設定する。
$ export AWS_PROFILE=user1
# オプション指定無しで追加プロファイルの認証情報を使用
$ aws s3 ls
IAM ロールを使用
CLI でスイッチロールをする場合は、プロファイルにパラメータを追加する。
role_arn
に IAM ロールの Amazon リソースネーム (ARN) を指定し、
source_profile
に指定したロールを引き受ける認証情報を持つプロファイルを指定する。(例では iam-user1)
プロファイル設定には以下のように設定する。
$ cat ~/.aws/credentials
[iam-user1]
aws_access_key_id = ********************
aws_secret_access_key = ********************
$ cat ~/.aws/config
[profile iam-user1]
output = json
region = eu-west-1
[profile iam-role1]
role_arn = arn:aws:iam::<ACCOUNT_ID>:role/<IAM_ROLE>
source_profile = iam-user1
output = json
region = eu-west-1
スイッチロールする場合は、追加プロファイルと同じく --profile オプションで指定する。
# スイッチロール用の認証情報を使用
$ aws s3 ls --profile iam-role1
最後に
AWS CLIv2 のプレビューバージョンが来たことでドキュメントが結構更新されていて、改めて読み直していると解説が昔より優しくなっている気がしました。
それか昔の自分が理解できない箇所が多かっただけなのか…。
認証情報の利用が煩雑にならないように自戒を込めてのまとめでした。
- AWS ドキュメントリンク
[AWS Command Line Interface » ユーザーガイド » AWS CLI の設定]
(https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration)
[AWS Command Line Interface » ユーザーガイド » 名前付きプロファイル]
(https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html)
[AWS Command Line Interface » ユーザーガイド » 環境変数]
(https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-envvars.html)
[AWS Command Line Interface » ユーザーガイド » AWS CLI での IAM ロールの使用]
(https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-role.html)