📦
cdk importをつかって既存リソースをCDK管理下にしてみた
概要
AWS上に既存リソースがある状態で、そのリソースをCDK管理下としたい場合を想定します。
cdk importコマンドでリソースをCDK管理下にできます。
今回はAWS CLIでリソース(S3バケット)を登録するスクリプトを用意し、 そのスクリプトを実行して、サンプルのBucketを作成します。
そのS3バケットをCDKとして利用できるようにするスクリプトも用意してみました。
サンプルコード
実装メモ
- 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 synthでCloudFormationのテンプレートを出力
- CDK管理下においたリソースは、別のCDKスタックがCDK管理下におくことはできないので注意です。
- CDK管理下においたリソースは基本的にはCDKで管理すべきですが、手動更新によって差分ができた場合はCloudFormationのドリフト検知機能を使うとよさそうです。
Discussion