AWS CDKコマンドについて試行錯誤したことメモ


cdk bootstrapコマンド

cdk bootstrap

このコマンドは、cdk initでプロジェクトを作成した直後に実行するやつです。

Deploying AWS CDK apps into an AWS environment (a combination of an AWS account and region) may require that you provision resources the AWS CDK needs to perform the deployment. These resources include an Amazon S3 bucket for storing files and IAM roles that grant permissions needed to perform deployments. The process of provisioning these initial resources is called bootstrapping.

引用:AWS Cloud Development Kit (CDK)Developer Guide

要は、AWS CDKアプリをAWS環境(AWSアカウントとリージョンの組み合わせ)にデプロイするために必要なリソース(S3バケットやIAMロール)を用意するプロセスをブートストラップというらしいです。

それで、cdk bootstrapコマンドで作成されたS3バケットってどれよって話なのですが、CDK-Toolkitってやつですね。
こいつとCloudformationのCDKToolkit云々ってやつはbootstrapコマンドで作られたものなので触らない方が吉っぽいです。

cdk bootstrapコマンドはこっそりcdk deployコマンドと同じようにCloudformationスタック作ってS3をデプロイしちゃうみたいですね。

cdk synthコマンド

そうそう、Cloudformationのテンプレート(yaml)を標準出力で出してくれるのがcdk synthコマンドです。
yamlとしておかしかったらエラー吐いてくれるのでdeployの前にやっておくといい感じですね。
このコマンド打ったからってCloudformationにスタックができるとかそういうことは特になかったです。ローカルで確認するためのコマンドなのかな?

cdk deployコマンド

Cloudformationにスタックを作って実際にAWS環境にリソースをデプロイするコマンド。
環境を分けられるようにするために、-c オプションで環境プレフィックスを受け取ってスタックのidを分けられるようにしておくといいですね。

cdk deploy -c target=dev

参考:AWS CDKのContextを切り分けて1つのソースから3ランドスケープを作る

ちなみに、AWS IoT CoreのIoTポリシーとかみたいに、一回作ったら消さないとエラーが出たりするものもあったりします。

CloudFormation cannot update a stack when a custom-named resource requires replacing.Rename 'MYResourceXXX' and update the stack again.

https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudformation-custom-name/
https://seed.run/docs/serverless-errors/cloudformation-cannot-update-a-stack-when-a-custom-named-resource-requires-replacing.html
これなんですけど、Lambdaのメモリを増やすだとか、そういった更新だけだったら出ないエラーなんですが、AWSリソースを作り直す必要があるものはこのエラーから逃れられないような気がします。