🔑

【AWS】AWS CLIでプロファイルを変更する方法

2022/01/16に公開

概要

AWSで複数のアカウントを使い分けたい時、名前付きプロファイルを設定して切り替えます。

名前付きプロファイルは、AWS CLI コマンドに適用できる設定と認証情報の集まりです。コマンドを実行するプロファイルを指定すると、設定と認証情報を使用してそのコマンドが実行されます。
名前付きプロファイル

複数のAWSアカウントを使って別々の環境を構築したいとき(例えば、別会社のAWSアカウントで環境を作る、開発、本番わけたり)などに、プロファイルを分けるときがあるので、その際の切り替え方の手順です。

前提

・aws cli インストール済み
・複数のAWSアカウントがあり、IAMユーザー発行済み
(access_key_idとsecret_access_keyが必須)

プロファイルの名前を指定する

最初にとくに指定しなかった場合は、defultというプロファイルになります。

exampleをわかりやすい任意のプロファイル名前を指定します。

% aws configure --profile example

キーを設定

複数アカウントのAWS Access Key IDAWS 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 cliの一般的なオプション

% 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