かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

AWS CLI でユーザーを切り替える方法のメモ

6億年ぶりに AWS の Lambda 使おうと思って何も覚えてなかったからメモ

AWS CLI

Homebrew でインストールしていた

$ brew install awscli
$ aws --version
aws-cli/2.7.2 Python/3.9.13 Darwin/20.6.0 source/x86_64 prompt/off

デフォルトユーザーの登録

$ aws configure
AWS Access Key ID [None]: アクセスキー ID
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: 使用するリージョン (e.g. ap-northeast-1)
Default output format [None]: json

アカウント情報は ~/.aws/config~/.aws/credentials に保存されている

使用するアカウントの確認

$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************UZ9M shared-credentials-file    
secret_key     ****************HLdh shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config

作成した IMA ユーザーを AWS CLI に登録する

aws configure --profile <USER_NAME> で新規ユーザーが作成できる
<USER_NAME>エイリアスっぽいので IMA ユーザ名と同一でなくても問題なかった

$ aws configure --profile <USER_NAME>
AWS Access Key ID [None]: 追加するユーザーのアクセスキー ID
AWS Secret Access Key [None]: 追加するユーザーのシークレットアクセスキー
Default region name [None]: 使用するリージョン
Default output format [None]: json

~/.aws/credentials, ~/.aws/config に次のように追加されている

~/.aws/credentials

[default]
aws_access_key_id = XXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXX

+ [USER NAME]
+ aws_access_key_id = XXXXXXXXXXXXX
+ aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXX

~/.aws/config

[default]
region = ap-northeast-1
output = json

+ [USER NAME]
+ region = ap-northeast-1
+ output = json

コマンドからでなくとも直接ファイルを変更してもアカウントを追加できそう

アカウントの切り替え

$ export AWS_DEFAULT_PROFILE=USER_NAME 
# 切り替わっているか確認
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                USER_NAME              env    ['AWS_DEFAULT_PROFILE']
access_key     ****************UZ8M shared-credentials-file    
secret_key     ****************HLsh shared-credentials-file    
    region                <not set>             None    None

AWS_PROFILE でも変更可能だが AWS_DEFAULT_PROFILE の方が優先される
DEFAULT と付いているがターミナルを跨いでデフォルトとして設定されるわけではない。新規ターミナルを立ち上げると ~/.aws/credentials[default] で指定されているユーザーになっているので注意

デフォルトユーザーを変更する

常にデフォルトユーザーを変更するには上記コマンドがターミナル起動時に実行されるようにすれば良い
.zshrc にアカウント切り替えのコマンドを追加すれば OK

$ echo 'export AWS_DEFAULT_PROFILE=USER_NAME' >> ~/.zshrc

新規に立ち上げたターミナルでデフォルトのユーザーが設定したユーザになっていればOK

雑感

ちょっと触ってなかったらホント綺麗サッパリ忘れててた…

AWS 初学者すぎてコマンドがどうなるのか、どこに何ができるのかって情報を見つけるのがまだ難しくて調べるのに時間がかかってしまうし、これで正しいのか今ひとつ自身が持てない…
AWS どうやって学ぶのが良いのだろう。。。


[参考]