発生した問題
AWS CDKに入門してbootstrapしようとしたら、"but no credentials have been configured" みたいなエラーが出てきて詰まったので、解決策をメモしておく。
TL;DR
~/.aws/config
の該当箇所を全てを以下のように直せば解決する。
Before
[<PROFILE_NAME_1>]
...
[<PROFILE_NAME_2>]
...
After
[profile <PROFILE_NAME_1>]
...
[profile <PROFILE_NAME_2>]
...
解決への道のり
エラー文の通り、AWSの認証情報がCDK側で受け取れていないのが原因そうだった。しかし、~/.aws/config
と ~/.aws/credentials
にはちゃんと cdk bootstrap aws://xxx/yyy --profile <PROFILE_NAME>
で指定したプロファイルに対する設定が書かれていた。
なぜちゃんと書かれているプロファイル設定がCDK側で認識できないのかと悩み、色々ググったらGitHubのissueが見つかった。このissueの問題には直接関係なかったが、issue中のあるコメントを見ると、~/.aws/config
内のプロファイル名の指定はprefixとして profile
付くらしいというのがわかった。自分のを見ると付いておらず、
[<PROFILE_NAME>]
...
のようになっていた。
特段自分でいじった覚えがなく、なぜprefixがつかないで記述されていたのかは分からなかった。AWS CLIやTerraformで使う分にはprefixがついてない設定ファイルでも問題なく動作していたので、今まで気づかなかった。
そこで、~/.aws/config
のプロファイルの指定を
[profile <PROFILE_NAME>]
...
のように直すと、無事AWS CDKの方でプロファイルの設定を認識してくれるようになった。めでたしめでたし。