はじめに
AWS CLIで使う設定(プロファイル)とその切替方法に関してまとめてみました。
以下のような方に参考にしていただけると幸いです。
- AWS CLIをこれから使い始めるAWS初心者の方
- 複数のアクセスキーを使い分けて、AWS CLIによる操作を行う必要がある方
環境
- Mac OS
- AWS CLIをインストール済み
設定切替を行うにあたっての予備知識
aws configure
すでにAWS CLIを使用中の方は、AWS CLIインストール直後に
-
aws configure
コマンド
を使って、以下のように利用するアクセスキーなどを設定したかと思います。
$ aws configure
AWS Access Key ID [None]: アクセスキーIDを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: リージョンを入力(ap-northeast-1等)
Default output format [None]: json
上記の設定を行うと、
- ~/.aws/config
- ~/.aws/credentials
のそれぞれに設定内容が書き込まれます。
~/.aws/configの内容
~/.aws/config
には、リージョンと出力形式が書き込まれます。
$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json
~/.aws/credentialsの内容
~/.aws/credentials
には、アクセスキーIDとシークレットアクセスキーが書き込まれます。
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
現在使用中の設定の確認(aws configure list)
また、aws configure list
でAWS CLIで現在使用中の設定を確認できます。
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> manual --profile
access_key ****************AAAA shared-credentials-file
secret_key ****************BBBB shared-credentials-file
先ほどaws configure
で設定したアクセスキー等が表示されていることがわかります。
【本題】設定の追加と切替方法
では、AWS CLIで複数のアクセスキーを使い分けられるようにします。
そのためにプロファイルというものを新たに作成します。
プロファイルの作成
プロファイルの作成コマンドは以下のとおりです。
aws configure --profile プロファイルの名前
上記の通り、プロファイルに対しては何らかの名前を付けます。
名前は何でも良いのですが、今回はprod
という名前のプロファイルを作ることにします。
$ aws configure --profile prod
AWS Access Key ID [None]: アクセスキーIDを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: リージョンを入力(ap-northeast-1等)
Default output format [None]: json
上記を実行したことで、~/.aws/config
と~/.aws/credentials
にその内容が追加されます。
~/.aws/configの内容
[profile prod]
より下の内容が新たに書き加わっています。
$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json
[profile prod]
region = ap-northeast-1
output = json
~/.aws/credentialsの内容
[prod]
より下の内容が新たに書き加わっています。
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
[prod]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
設定の切替
先ほど作成したプロファイルに切り替えるには
- AWS_DEFAULT_PROFILE
という環境変数にプロファイル名を設定します(AWS_PROFILE
でも良いのですが、これに関しては後述)。
以下コマンドで、AWS_DEFAULT_PROFILE
に先ほど作成したプロファイルの名前prod
を設定します。
$ export AWS_DEFAULT_PROFILE=prod
そして、AWS CLIの現在の設定を確認すると、新しいプロファイルprod
が使用中になっていることがわかります。
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile prod manual --profile
access_key ****************XXXX shared-credentials-file
secret_key ****************YYYY shared-credentials-file
もとの設定に戻すにはAWS_DEFAULT_PROFILE
にdefault
を設定します。
$ export AWS_DEFAULT_PROFILE=default
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile default manual --profile
access_key ****************AAAA shared-credentials-file
secret_key ****************BBBB shared-credentials-file
AWS_DEFAULT_PROFILEとAWS_PROFILEの違い
AWS_DEFAULT_PROFILE
とよく似た名前の環境変数としてAWS_PROFILE
が存在します。
AWS CLIで使用されるプロファイルとしては、AWS_DEFAULT_PROFILE
に設定したプロファイル名が優先されるようです。
AWS_DEFAULT_PROFILE
とAWS_PROFILE
それぞれに異なるプロファイル名を設定した場合、aws configure list
で確認できるAWS CLIで現在使用中のプロファイル名は、AWS_DEFAULT_PROFILE
のものとなっています。
$ export AWS_DEFAULT_PROFILE=prod
$ export AWS_PROFILE=default
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile prod manual --profile
access_key ****************XXXX shared-credentials-file
secret_key ****************YYYY shared-credentials-file
$ export AWS_DEFAULT_PROFILE=default
$ export AWS_PROFILE=prod
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile default manual --profile
access_key ****************AAAA shared-credentials-file
secret_key ****************BBBB shared-credentials-file
そして、AWS_DEFAULT_PROFILE
が存在せず、AWS_PROFILE
にのみプロファイル名が設定されている場合にはAWS_PROFILE
に設定したプロファイル名がAWS CLIの設定として使われます。
$ unset AWS_DEFAULT_PROFILE
$ echo $AWS_PROFILE
prod
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile prod manual --profile
access_key ****************XXXX shared-credentials-file
secret_key ****************YYYY shared-credentials-file
【補足】コマンド実行時に、都度プロファイルを指定する
本記事では使用するプロファイルを切り替える方法を説明してきましたが、各AWSコマンドの実行時に都度プロファイルを指定することもできます。
その場合は、コマンドに--profile
オプションを指定します。
$ aws s3 ls --profile prod
まとめ
-
プロファイルを切り替えることで、AWS CLIで複数のアクセスキーを使い分けることができる
-
プロファイルの作成コマンドは、
aws configure --profile プロファイルの名前
-
aws configure
で作成した設定内容は、~/.aws/config
と~/.aws/credentials
に書き込まれる -
以下の環境変数にプロファイル名を設定することで、プロファイル名を切り替えることができる
-
AWS_DEFAULT_PROFILE
またはAWS_PROFLIE
-
両方にプロファイル名が設定されている場合には、
AWS_DEFAULT_PROFILE
が優先される
-
-
現在使用中のプロファイルを確認するコマンドは、
aws configure list
-
コマンドの実行の都度、プロファイルを指定するには、そのAWSコマンドに
--profile
オプションを指定するaws s3 ls --profile プロファイル名