Syntax Error.

[Sy] AWS CLIの設定ファイルが作成されるパス&複数アカウントを切り替える方法

2015/06/19 (更新: 2017-10-26)

AWS CLIaws configureを実行した際に2つのファイルが作成されるパス、作成されるファイルの内容について。また、複数アカウントでAWS CLIを切り替えて使う方法を説明します。

AWS CLIの設定ファイル作成

以下コマンドで2つの設定ファイルが作成されます。

$ aws configure
AWS Access Key ID [None]: <アクセスキーを入力>
AWS Secret Access Key [None]: <シークレットアクセスキーを入力>
Default region name [None]: <デフォルトで使いたいリージョンを入力>
Default output format [None]: <json, text, tableのいずれかを入力>

設定例として、

$ aws configure
AWS Access Key ID [None]: YOURACCESSKEYEXAMPLE
AWS Secret Access Key [None]: +++++YOUR+SECRET+ACCESS+KEY+EXAMPLE+++++
Default region name [None]: us-east-1
Default output format [None]: text

とか入力したとすると、以下のようにファイルが作成されてるはずです。

~/.aws/config
[default]
output = text
region = us-east-1

configにはデフォルトリージョンとコマンド実行結果の出力形式が保存されています。

~/.aws/credentials
[default]
aws_access_key_id = YOURACCESSKEYEXAMPLE
aws_secret_access_key = +++++YOUR+SECRET+ACCESS+KEY+EXAMPLE+++++

credentialsには認証情報(アクセスキーとシークレットアクセスキー)が保存されています。

credentialsについて

元々は一つのファイルにまとめて保存されていたみたいですが、どこかのバージョンからか認証情報をcredentilasファイルとして別に持つようになったっぽいです。(2015年6月時点のAWS CLIのバージョンは1.7.34。)

複数のアカウントでAWS CLIを利用したい場合

AWSのアカウントを本番用と開発用と2つもっている場合など、アクセスキーを複数登録しておきたいところです。

以下のように--profileオプションを付けることで、設定を複数持てます。

$ aws configure --profile production

先ほど各ファイルの1行目にあった[default]という部分が--profileで指定されたものになります。(--profileオプションを省略すると、--profile defaultとして実行されている)

例として、defaultproductionという2つのプロファイルが設定されていたとして、

$ aws s3 ls

とすると、defaultに設定されている認証情報を使ってS3のバケットリストを表示しようとします。

productionの設定を使ってS3にアクセスするには、

$ aws s3 ls --profile production

とすれば、先ほどaws configure --profile productionで登録したアクセスキーを使って、productionのS3のバケットリストを取得できます。