📦

cdk importをつかって既存リソースをCDK管理下にしてみた

2024/02/17に公開

概要

AWS上に既存リソースがある状態で、そのリソースをCDK管理下としたい場合を想定します。

cdk importコマンドでリソースをCDK管理下にできます。

今回はAWS CLIでリソース(S3バケット)を登録するスクリプトを用意し、 そのスクリプトを実行して、サンプルのBucketを作成します。

そのS3バケットをCDKとして利用できるようにするスクリプトも用意してみました。

サンプルコード

https://github.com/FuminoriSugawara/cdk-import-sample

実装メモ

  • cdk importを実行すると、BucketNameの入力をもとめられます。これを実行するとcdk deployを実行していなくてもCloudFormationにスタックが追加されます。
  • 既存リソースをcdkの管理下から外すためには、以下の手順が必要になります。
    • cdk synthでCloudFormationのテンプレートを出力
      • cdk synth --profile {your-profile} > template.yml
    • 追加されたリソース、今回の場合はS3のBucketをコメントアウトする
    • aws cliでcloudformationのスタックをアップデートする
      • aws cloudformation update-stack --stack-name {your-stack-name} --template-body file://template.yml --profile {your-profile}
    • aws cloudformationコンソールにアクセスすると、スタックが削除されていることを確認できる。
    • 参考 https://dev.classmethod.jp/articles/fix-stack-drift/
  • CDK管理下においたリソースは、別のCDKスタックがCDK管理下におくことはできないので注意です。
  • CDK管理下においたリソースは基本的にはCDKで管理すべきですが、手動更新によって差分ができた場合はCloudFormationのドリフト検知機能を使うとよさそうです。

Discussion