cdk deploy
, cdk diff
実行時に以下のエラーに遭遇しました。
実行対象のAWSアカウントへは AWS SSO を利用してアクセスしている環境でした。
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
debug log 出力(--verbose) してみると下記エラー。
Unable to determine the default AWS account: ProcessCredentialsProviderFailure: Profile xxxxx did not include credential process
誤設定を疑って調べていたのですが、aws cli 実行は問題なく行え、cdk doctor
でも正しい値を返していました。
原因
現時点で cdk では Named Profile をサポートしていないようです。
~/.aws/credentials
への設定がある形式でないと認識できないようです。
対処
上記Issueの中でいくつか回避策が提示されています。
aws-export-credentials、aws-sso-credential-process を利用する方式を使わせてもらおうと思ったのですが、 aws-sso-util に組み込まれているとのことなので、こちらを利用します。
インストール
記載の手順通りにインストールします。
brew install pipx pipx ensurepath pipx install aws-sso-util
- 確認
~ % pipx list venvs are in /Users/xxxxx/.local/pipx/venvs apps are exposed on your $PATH at /Users/xxxxx/.local/bin package aws-sso-util 4.25.0, Python 3.9.5 - aws-sso-util ~ % aws-sso-util --version 4.25.0
関数設定
~/.zshrc
などで読み込ませます。
AWS_CONFIGURE_SSO_DEFAULT_*
の値は適宜変更します。
export AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL=https://xxxxx.awsapps.com/start export AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION=us-east-1
実行
[profile xxxxx] sso_start_url= https://xxxxx.awsapps.com/start sso_region=ap-northeast-1 sso_account_id=123456789012 sso_role_name=XXXXX credential_process = aws-sso-util credential-process --profile xxxxx
- sso login
aws-sso-util login # もしくは #aws sso login --profile XXXXX
以上で正常に cdk コマンド正常が行えました。
いずれ cdk 側で正式にサポートされると思いますが、当面はこちらの方法を利用したいと思います。
aws-export-credentials
If you try this and your tools still don't work with the credentials, you can get the credentials themselves using aws-export-credentials, which can also inject them as environment variables for your program.
今回は aws-sso-util のみで必要十分だったのですが、せっかくなので載せておきます。
# インストール pipx install aws-export-credentials aws-export-credentials --version # 環境変数設定 eval $(aws-export-credentials --env-export) #eval $(aws-export-credentials --profile XXXXX --env-export) # 確認 env | grep AWS