AWS CLI(コマンドラインツール)の、プロファイル(認証・設定情報)は “default” 以外に自分で名前を指定して複数設定することができます。
この名前付きプロファイルは、開発環境、ステージング環境、本番環境とそれぞれの環境をマルチアカウントで運用していく際に非常に便利です。(実際はこちらの記事のようにスイッチロールする感じになると思います)
またAWS をコード化するためのツール Terraform でもプロファイルを指定して環境を使い分けたりすることもできるため、ぜひ設定しておきましょう。
名前付きプロファイルの設定手順
AWS CLI インストール
こちらのドキュメントを参照ください。
記事作成時点で最新版はバージョン2となります。特別な事情がなければ最新版のインストールをおすすめします。
プロファイル作成
普通に作成
プロファイルを作成します。–profile オプションで名前を指定して、複数作成できます。
% aws configure
AWS Access Key ID [None]: 11111
AWS Secret Access Key [None]: 22222
Default region name [None]: ap-northeast-1
Default output format [None]:
%
%
% aws configure --profile user-2
AWS Access Key ID [None]: 33333
AWS Secret Access Key [None]: 44444
Default region name [None]:
Default output format [None]:
%
%
% aws configure --profile user-3
AWS Access Key ID [None]: 55555
AWS Secret Access Key [None]: 66666
Default region name [None]: us-east-1
Default output format [None]: json
%
ホームディレクトリ配下に設定ファイルが作成されます。
機密性の高い認証情報が credentials、設定オプションが config に出力されます。
configは、環境変数 AWS_CONFIG_FILE を使用して保存場所の変更が可能です。
% cat ~/.aws/credentials
[default]
aws_access_key_id = 11111
aws_secret_access_key = 22222
[user-2]
aws_access_key_id = 33333
aws_secret_access_key = 44444
[user-3]
aws_access_key_id = 55555
aws_secret_access_key = 66666
%
%
% cat ~/.aws/config
[default]
region = ap-northeast-1
[profile user-2]
[profile user-3]
region = us-east-1
output = json
%
import サブコマンドで作成
なおAWS CLI V2であれば、マネジメントコンソールからダウンロード可能な認証情報のCSVを利用してインポートできます。
% aws --version
aws-cli/2.0.31 Python/3.7.4 Darwin/19.5.0 botocore/2.0.0dev35
%
## csvファイルの中身。 User name,Access key ID,Secret access keyのヘッダが必要です。
% cat new_user_credentials.csv
User name,Password,Access key ID,Secret access key,Console login link
new-user,,AAABBBCCC,+XXXYYYZZZ,https://xxx.signin.aws.amazon.com/console
%
## import
% aws configure import --csv file://new_user_credentials.csv
Successfully imported 1 profile(s)
%
%
## csvファイルの内容で追加されました
% cat ~/.aws/credentials
...
[new-user]
aws_access_key_id = AAABBBCCC
aws_secret_access_key = +XXXYYYZZZ
%
このCSVは、IAMユーザー作成時の最後の以下画面からのみダウンロードできます。
注意点として、IAMユーザーのアクセスキー作成時にダウンロードできるCSVではありません。そのCSVは、User name が入ってないので以下のようにエラーになります。
% cat new-user_accessKeys.csv
Access key ID,Secret access key
AAABBBCCC,+XXXYYYZZZ
%
% aws configure import --csv file://new-user_accessKeys.csv
Expected header "User Name" not found
%
プロファイル確認
プロファイル一覧
AWS CLI V2 で可能です
% aws configure list-profiles
default
user-2
user-3
%
適用中のプロファイル
not setの場合はdefaultが適用されているようです
% 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
%
プロファイル切替
環境変数での切替
環境変数 AWS_PROFILE を設定することで切り替えます。
% export AWS_PROFILE=user-2
% aws configure list
Name Value Type Location
---- ----- ---- --------
profile user-2 manual --profile
access_key ****************3333 shared-credentials-file
secret_key ****************4444 shared-credentials-file
region <not set> None None
%
%
% export AWS_PROFILE=default
% aws configure list
Name Value Type Location
---- ----- ---- --------
profile default manual --profile
access_key ****************1111 shared-credentials-file
secret_key ****************2222 shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
%
削除(unset)した場合は、defaultへ戻るようです
% unset AWS_PROFILE
% 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
%
コマンドラインオプションでの切替
% aws s3 ls
2020-xx-xx 19:15:12 default-user-bucket
%
%
% aws s3 ls --profile user-2
2020-xx-xx 19:20:33 user-2-bucket
%
参考
(´・ω・`)ゞアリガトゴザイマス.。.・゚
AWS CLIの設定 – AWS Command Line Interface