AWS CDK(v2)で、`SSM parameter /cdk-bootstrap/xxx/version not found. `が出た時に読む記事
AWS CDKのデプロイ時にエラーが発生し、「SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run ‘cdk bootstrap’」と表示されました。このエラーは、CDKのブートストラップが行われていないために発生しています。エラーメッセージに従ってcdk bootstrap aws:///を実行し、CloudFormationのデプロイが完了するまで待った後、再度cdk deployを実行することでエラーが解消されます。このエラーはAWSアカウントの切り替えやPCの変更などでよく発生するため、注意が必要です。
目次
AWS CDKを触るのが久々すぎるので、ハマったところを一通り覚書としてメモしてます。
やろうとしたこと
適当なサンプルアプリを実装して、AWSにデプロイしようとしました。
その際、cdk deploy
を実行すると、このエラーに遭遇しました。
❌ Deployment failed: Error: HonoOnAwsStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
at Deployments.validateBootstrapStackVersion (/Users/okamotohidetaka/.anyenv/envs/nodenv/versions/16.13.1/lib/node_modules/aws-cdk/lib/index.js:429:12432)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Deployments.buildSingleAsset (/Users/okamotohidetaka/.anyenv/envs/nodenv/versions/16.13.1/lib/node_modules/aws-cdk/lib/index.js:429:11161)
at async Object.buildAsset (/Users/okamotohidetaka/.anyenv/envs/nodenv/versions/16.13.1/lib/node_modules/aws-cdk/lib/index.js:429:151013)
at async /Users/okamotohidetaka/.anyenv/envs/nodenv/versions/16.13.1/lib/node_modules/aws-cdk/lib/index.js:429:137055
HonoOnAwsStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
ChatGPT(GPT-3.5)に聞いてみた
よくみたら「Please run ‘cdk bootstrap’」と言われていますが、何が起きているかをざっと知りたかったのでChatGPTに聞いてみました。
このエラーメッセージは、AWS Cloud Development Kit(CDK)を使用してスタックをデプロイしようとした際に発生したものです。メッセージに含まれている情報から、いくつかのステップを踏む必要があります。エラーメッセージの内容としては、SSM(Systems Manager)パラメータ /cdk-bootstrap/hnb659fds/version が見つからないためにデプロイに失敗しているというものです。これに対処するには、以下の手順を試してみてください。
ChatGPT(GPT-3.5)の回答
こちらも「Bootstrapしてないよね?」的なことを書いています。
PCを買い替えてしばらく経っているのですが、引越し時にBootstrapを忘れたまま今日まできた・・・とかかもしれません。
AWS CDKをBootstrapする
cdk bootstrap aws://<account>/<region>
を実行すれば良いとのことなので、実行します。
リージョンとアカウントIDは、AWS CLIのdefaultプロファイルと揃える
AWS CDK(v2)はAWS CLIのCredentialを参照している様子です。
そのため、アカウントIDとリージョンはAWS CLIと揃えましょう。
リージョンは~/.aws/config
から確認できます。
% cat ~/.aws/config
[default]
region=us-east-1
output=json
またアカウントIDはAWS CLIから取得しましょう。
% aws sts get-caller-identity --query Account --output text
99999999
デプロイ
リージョンの設定を確認できたので、コマンドを実行しましょう。(値はダミーです)
% cdk bootstrap aws://99999999/us-east-1
CloudFormationのデプロイが始まればOKです。
しばらく待つと、完了メッセージが出ます。
CDKToolkit: creating CloudFormation changeset...
✅ Environment aws://99999999/us-east-1 bootstrapped.
あとはcdk deploy
を再度実行しましょう。
おわりに
複数のAWSアカウントを利用していたり、PCを変更した際などに遭遇する可能性が高いエラーかなと思います。
忘れた頃に遭遇することになりそうなので、「なんかそんなこと書いてたなー」で見返す時がくるかもしれません。