はじめに
本記事はAWS IAM Identity Center環境におけるAWS CLIの利用方法について記載しています。
AWS IAM Identity Centerを利用している環境でAWS CLIを使用する際は、profileを使い分けて操作するなどの運用が発生すると思います。
本記事ではIAM ロールを利用して、他のアカウントにログインすることなく、コマンドを実行するtipsを記載しています。
CLI + SSO
AWS IAM Identity Center環境におけるAWS CLIの設定については、公式ドキュメントのAWS IAM Identity Center (successor to AWS Single Sign-On) を使用するための AWS CLI の設定より確認できます。
SSOログイン
前提として、ホームディレクトリ以下の~/.aws/config
ファイルには以下のような設定が必要です。(※アカウントIDは例)
[profile AWSAdministratorAccess-123456789012]
sso_start_url = https://[yourdirectory].awsapps.com/start
sso_region = ap-northeast-1
sso_account_id = 123456789012
sso_role_name = AWSAdministratorAccess
以下のように--profile
を指定してSSO ログインを行います。
$ aws sso login --profile AWSAdministratorAccess-123456789012
SSOログイン後、引き続き--profile
を指定することでAWS CLIを使用することができます。
以下の例ではGetCallerIdentityのAPIを呼び出して、認証情報が使用されるIAM ユーザーまたはロールに関する詳細が確認できます。
$ aws sts get-caller-identity --profile AWSAdministratorAccess-123456789012
IAMロール
AWSアカウント123456789012から、999999999999のAWSアカウントのロールを切り替えて操作したい場合は、~/.aws/config
ファイルに以下の設定を追記します。
[profile assume]
source_profile = AWSAdministratorAccess-123456789012
role_arn = arn:aws:iam::999999999999:role/AWSControlTowerExecution
以下のコマンドを実行すると、AWSアカウント999999999999に関する認証情報の結果が確認できます。
aws sts get-caller-identity --profile assume
AWSControlTowerExecutionは、Control Towerで使用されるロールです。
おわりに
AWS IAM Identity Centerを利用している環境で複数のアカウントを管理している方は、知っておくと便利だと思います。