とりあえずコード書けよ

技術的なことの備忘録。

既存のcdk(Cloudformation)リソースをcdk pipelinesに移行する

この記事は何?

  • 既存のcdkリソースをcdk pipelinesのデプロイパイプラインに載せたかった
  • cdk importが公式から提供されているが、基本的にcdk pipelinesのようなケースは多分想定されていない(?)
  • ので、とりあえずcloudformationのインポートを使ってどうにかした

結論

基本的に、cloudformationのimportをやる方法と同じで、Stack名だけStage名-Stack名にすることに注意すれば良い。

  1. DeletionPolicy: Retain, UpdateReplacePolicy: Retainで既存Cloudformationリソース更新する
  2. 既存CloudformationのStackを削除する
  3. cdk pipelinesを組んでるStackで該当のStackを作成する
  4. cdk synthでインポート用のCloudformationTemplateの雛形を作る(cdk.out/assembly-Stack名-Stage名/xxx.template.json)
  5. インポート不可のリソースを削除する
  6. resource-to-importで指定するリソースのマッピング用ファイルを作る
  7. cliでインポートを実行
  8. 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