🔐

AWS CDK で AWS IAM Identity Center (SSO) を使う際に複数のアカウントを混在していてハマった

2024/10/07に公開

よっしゃ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 bootstrapcdk 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) でログインしているユーザーが違うものだった。

  1. CDK操作対象のアカウントが使えるユーザー ではなく ルートのユーザーでAWS Identity Centerにログイン済みだった
    • ルートユーザーなので操作対象アカウントも使える
  2. なので aws sso loginルートユーザーとして ログインしていた
  3. AWS Identity Center でサインアウトしてから aws sso login を実行
  4. 開いたブラウザで、未ログインのため AWS Identity Center のログインを操作対象のアカウントでログインする
  5. cdk deploy すると成功する

複数アカウント・環境の取り回しはどうやるのがベターなんですかね?

Discussion