概要
- 仕事でAWSを使っているのですが、AWS CLIを使って複数のアカウントを切り替える方法でハマったのでメモ(かなり初歩的な内容です)
- 以下のような状況を想定
- AWS CLIを使って複数のアカウントを切り替えたい
ユースケース
- AWS環境が以下のような構成になっている
- 本番環境(
production
) - ステージング環境(
staging
) - 開発環境(
development
)
- 本番環境(
- それぞれの環境に対して、AWS CLIを使って操作したい
- AWS SSOアカウントが既に各環境に作成されている
- AWS SSOアカウントには、それぞれの環境に対応したロールが作成されている
- 例えば、本番環境に対応したロールは、
arn:aws:iam::123456789012:role/production-admin
のようなARNが割り当てられている - 詳しくは、AWS SSOのドキュメントを参照
それぞれの環境ごとのProfileを作成する
-
aws configure
というコマンドを使って、それぞれの環境ごとのProfileを作成する
$ aws configure --profile production
- 作成すると、
~/.aws/credentials
に設定が保存される
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AKIAxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[production]
aws_access_key_id = AKIAxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[staging]
aws_access_key_id = AKIAxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[development]
aws_access_key_id = AKIAxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
複数のprofileを使用している場合にデフォルトで使用するprofileを変更する
- 以下コマンドを実行すると、デフォルトで使用するprofileを変更できる
$ export AWS_PROFILE=production -- ここではproductionをデフォルトにする
profileを指定してコマンドを実行する
- 以下のように、
--profile
オプションを使って、profileを指定してコマンドを実行することも可能
$ aws s3 ls --profile production
まとめ
-
aws configure
コマンドを使って、それぞれの環境ごとのProfileを作成する -
export AWS_PROFILE=production
コマンドを使って、デフォルトで使用するprofileを変更する -
--profile
オプションを使って、profileを指定してコマンドを実行することも可能 - もっとAWS CLIを勉強しないとダメですね・・・