【AWS】AWS CLIでプロファイルを変更する方法
概要
AWSで複数のアカウントを使い分けたい時、名前付きプロファイルを設定して切り替えます。
名前付きプロファイルは、AWS CLI コマンドに適用できる設定と認証情報の集まりです。コマンドを実行するプロファイルを指定すると、設定と認証情報を使用してそのコマンドが実行されます。
名前付きプロファイル
複数のAWSアカウントを使って別々の環境を構築したいとき(例えば、別会社のAWSアカウントで環境を作る、開発、本番わけたり)などに、プロファイルを分けるときがあるので、その際の切り替え方の手順です。
前提
・aws cli インストール済み
・複数のAWSアカウントがあり、IAMユーザー発行済み
(access_key_idとsecret_access_keyが必須)
プロファイルの名前を指定する
最初にとくに指定しなかった場合は、defult
というプロファイルになります。
example
をわかりやすい任意のプロファイル名前を指定します。
% aws configure --profile example
キーを設定
複数アカウントのAWS Access Key ID
とAWS Secret Access Key
を入力します。
AWS Access Key ID [None]: XXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:
設定の確認
以下のコマンドで設定したキーが見れます。
% cat ~/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXX
[exmple]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXX
プロファイル一覧の見方
% aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************1111 shared-credentials-file
secret_key ****************2222 shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
%
切り替え方法
①コマンドラインオプションでの切り替え
--profile exmple
を指定する
(例1)ElasticBeanstalkで開発してたときに異なる環境にebの初期設定をする場合
以下のように指定するとプロファイルに応じて実行されます。
% eb init --profile example
※--profile exmple
を指定せずに、行うとdefault
のプロファイル(違うAWS環境)で実行されちゃうので注意です。その場合は、違う環境のアプリケーションの情報が表示されるので、気づけるかと思います。
(例2)S3バケットの一覧を確認したい場合
aws s3 ls --profile example
②環境変数での切り替え
AWS_PROFILE
を設定することで切り替えます。
Linux または macOSの場合
$ export AWS_PROFILE=example
% aws configure list
Name Value Type Location
---- ----- ---- --------
profile example manual --profile
access_key ****************3333 shared-credentials-file
secret_key ****************4444 shared-credentials-file
region ap-northeast-1 None None
Discussion