前提
プロジェクト用と勉強用などAWSアカウントを2つ持っている状態で
1つのPCから操作している場合に現在どのAWSアカウントに対して操作をしているのかを確認したいという前提です。
AWS CLIがどのアカウントを見ているかを確認
以下のコマンドでAWS CLIが現在どのアカウントを操作しているかを確認できます。
$ aws sts get-caller-identity
以下のコマンドでs3のリストが表示されるのでそれとAWSコンソールを照らし合わせることで確認もできます。
$ aws s3 ls
仕組み
どのAWSアカウントを使うかというのは何段階かで判断しているようです。オプションが無い場合
macであれば~/.aws/credentialsにファイルが生成されていて開いてみると以下のような記述があります。
[default]
aws_access_key_id=EXAMPLEEXAMPLEEXAMPLEEXAMPLE
aws_secret_access_key=EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLE
[account1]
aws_access_key_id=ACCOUNT1ACCOUNT1ACCOUNT1ACCOUNT1
aws_secret_access_key=ACCOUNT1ACCOUNT1ACCOUNT1ACCOUNT1ACCOUNT1
これによりアカウントを判断しているようですね。
コマンドオプションとして指定することも可能です
またコマンドオプションとして指定してawsアカウントを切り替えて実行することもできます。
$ aws s3 ls --profile account1
このようにすると~/.aws/credentialsのaccount1の情報を元にコマンドが実行されます。
~/.aws/credentialsとコマンドオプションで指定された値の優先順位は以下のページのように判断されるとのことでした。
構成設定と優先順位
環境変数を使用することもできました。
環境変数を使う
.bash_profileなどに書き込んで適用された場合は明示的にunsetで削除するのを忘れないよう注意です。
注意点
eb cliなどサービスごとのCLIツールはまた独自にどのアカウントかを判断しているのでこのAWS CLIが必ず引き継がれるわけではありませんでした。