はじめに
マネコンで試しに作ったリソースをCDKで管理しようとしたところ、最近IaCジェネレータというものリリースしていたので使ってみました。
IaCジェネレータ
IaCジェネレータはAWSのマネージコンソールから操作できます。
あとは任意のリソースを選択していくだけで、既存リソースのテンプレートが作成されます。
IaCジェネレータの罠
特に何も調べずCDK用のコマンドがあったので、これをローカルで試そうと思ったんですがうまくいきませんでした。
最初は設定ファイルとかが違うのかと思ったんですが、どうやらこのコマンドはクラウドの既存リソースを参照してCDK管理下に置くものではなかったようです。
cdk importとcdk migrateについて
cdk import
は既存リソースをCDKのStackにインポートする機能で、
cdk migrate
は既存のcloud formationテンプレートをCDKプロジェクトに変換する機能です。
つまり、IaCジェネレータで提案されたcdk migrate
を行ってもcloud formationがないので想定通り動かず、やりたいことをやるにcdk import
をする必要があったわけです。
IaCジェネレータを使ってCDKするには?
1. IaCジェネレータでリソースを選んだあと、テンプレートから「スタックにインポート」をしてcloud formationのスタックを作成します。
2. 該当スタックを指定してcdk migrate
を行う。
Stack-XXXXに作られたスタック名を指定して以下のコマンドを実行すると、ローカルに適切なCDK プロジェクトファイルが作られます。
cdk migrate --stack-name Stack-XXXX --language typescript --from-stack
あとはcdk deployすればよく、それ以降の変化をコード上で行うだけです。
まとめ
IaCジェネレータを使うことで今までは簡単にCDKに移行することはできたと思います。
IaCジェネレータで試したのは一部のリソースのみで、VPCなども絡めた多くのリソースに対して同様のことを行うのも大変そうだったので、今後試してみたいと思います。
参照