🔐
AWS CDK で AWS IAM Identity Center (SSO) を使う際に複数のアカウントを混在していてハマった
よっしゃcdk deployしよ、と思ったらエラー。
❯ npx aws-cdk deploy --context env=dev --profile PROFILE_NAME
✨ Synthesis time: 3.68s
Need to perform AWS calls for account XXXXXXXXXXXX, but no credentials have been configured
もろもろはセットアップ済み。cdk bootstrap
や cdk deploy
はすでに実行できていたので、なぜ??
aws sso login
を実行してみた
❯ aws sso login --profile PROFILE_NAME
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
XXXX-XXXX
Successfully logged into Start URL: https://d-XXXXXXXXXX.awsapps.com/start/#
ブラウザが起動し、いつも通りコードが一致していることを確認し許可。しかし、依然として同様のエラー…。
敗因と対応
結論としては、AWS Identity Center (SSO) でログインしているユーザーが違うものだった。
- CDK操作対象のアカウントが使えるユーザー ではなく ルートのユーザーでAWS Identity Centerにログイン済みだった
- ルートユーザーなので操作対象アカウントも使える
- なので
aws sso login
は ルートユーザーとして ログインしていた - AWS Identity Center でサインアウトしてから
aws sso login
を実行 - 開いたブラウザで、未ログインのため AWS Identity Center のログインを操作対象のアカウントでログインする
-
cdk deploy
すると成功する
複数アカウント・環境の取り回しはどうやるのがベターなんですかね?
Discussion