既存のcdk(Cloudformation)リソースをcdk pipelinesに移行する
この記事は何?
- 既存のcdkリソースをcdk pipelinesのデプロイパイプラインに載せたかった
- cdk importが公式から提供されているが、基本的にcdk pipelinesのようなケースは多分想定されていない(?)
- ので、とりあえずcloudformationのインポートを使ってどうにかした
結論
基本的に、cloudformationのimportをやる方法と同じで、Stack名だけStage名-Stack名にすることに注意すれば良い。
- DeletionPolicy: Retain, UpdateReplacePolicy: Retainで既存Cloudformationリソース更新する
- 既存CloudformationのStackを削除する
- cdk pipelinesを組んでるStackで該当のStackを作成する
- cdk synthでインポート用のCloudformationTemplateの雛形を作る(cdk.out/assembly-Stack名-Stage名/xxx.template.json)
- インポート不可のリソースを削除する
- resource-to-importで指定するリソースのマッピング用ファイルを作る
- cliでインポートを実行
- cdk pipelinesで新規のStackをデプロイ(インポートされたStackが更新される)
cliでのインポートコマンド
$ aws cloudformation create-change-set --stack-name Stage名-Stack名 --change-set-name Stage名-Stack名-ChangeSet(任意の名前) --change-set-type IMPORT --resources-to-import file://xxx.json --template-body file://xxx.json --capabilities CAPABILITY_IAM(必要に応じて) $ aws cloudformation execute-change-set --stack-name Stage名-Stack名 --change-set-name Stage名-Stack名-ChangeSet(上で指定したchange-set-name)
インポートできる対象について
インポートできるかどうかは下記のページを参考に。 docs.aws.amazon.com