はじめに
クラウド環境のインフラを効率的に管理するために、Infrastructure as Code(IaC)は不可欠な手法となっています。その中でも、AWS CloudFormationはAWSリソースの自動構築・管理を可能にする強力なツールです。しかし、すでに作成済みのAWSリソースをCloudFormationテンプレートに書きおこすのは骨が折れる作業になりますし、エラーのリスクも伴います。そこで活躍するのが「CloudFormation IaCジェネレーター」です。今回は、CloudFormation IaCジェネレーターを利用して既存のAWSリソースからAWS CDKテンプレートを作成してみようと思います。
CloudFormation IaCジェネレーターとは?
CloudFormation IaCジェネレーターとは、既存のAWSリソースからAWS CloudFormationのテンプレートを自動生成するAWSサービスです。JSONまたはYAML形式で記述されるCloudFormationのテンプレートを、人手を介さずに作成できるため、開発者や運用エンジニアの負担を大幅に軽減することできます。
IaCジェネレーターを試してみる
今回はEC2とVPCを作成しておき関連する設定(サブネットなど)も含めて、IaCジェネレーターを利用してテンプレートを作成したいと思います。まず、ターゲットとなるVPCとEC2を作っておきます。
「新しいスキャンを開始」でAWSリソースのスキャンを開始します。スキャンが完了したら「テンプレートの作成」を行います。

リソースタイプや識別を入力し、先ほど作成したEC2インスタンスをテンプレートの作成対象に加えます。

関連したリソースとしてVPC(ネットワーク関連)のリソースが表示されるので、それらも選択して作成するテンプレートに追加します。関連したリソースまで表示してくれるのはとても便利ですね!

作成したテンプレートをダウンロードします。作成されたテンプレートはCloudformationのテンプレートになるので、ダウンロードしたCloudformationテンプレートからAWS CDK用のテンプレートに変換するためにコマンドを実行します。

ダウンロードしたテンプレートはこんな感じです。
・iac-cdk-test-1740224249092.yaml

“cdk migrate”コマンドを実行してみます。
cdk migrate --stack-name iac-cdk-test --from-path ./iac-cdk-test-1740224249092.yaml
なにやらエラーが出てしまいました。どうやらEC2におけるVpcIdの記述が無効なようなので該当の個所をコメントアウトし、再度コマンドを実行するも別途エラーが発生しました…。
こちらもEC2においてStateの記述が無効のようなので、こちらも併せてコメントアウトしておきます。
・iac-cdk-test-1740224249092.yaml

再度コマンドを実行すると、今回は正常にAWS CDK関連のファイルが生成されました。


テンプレートファイルの作成自体は簡単ですが、エラーが出てしまっているようにそのまま利用するという訳にはいかなそうです。ネットでIaCジェネレーターに関する情報を調べますと、同じようなエラーであったり、出力されるテンプレートが不安定だったりと不便な所はあるようです。
まとめ
CloudFormation IaCジェネレーターを活用することで、AWS環境の構築・管理を効率化し、IaCの導入をスムーズに進めることができます。ただし、自動生成されたテンプレートをそのまま使用せず、適切に検証・管理することが重要です。比較的新しい機能のため、不便な所がまだ多くあるのかもしれませんが、IaCの導入を行う上でとても強力なツールになることは間違いないと思います。引き続きCloudFormation IaCジェネレーターについて情報収集や学習を進めていきたいと思います。




