👏

IaC Generator を使って既存リソースの IaC 化を検証してみたら、簡単にインフラ基盤をコード化してくれました

2024/03/18に公開

つい先日、AWS の Youtube チャンネルで 「IaC Generator を使った既存リソースの IaC 化」 の方法が紹介されましたね!
https://www.youtube.com/watch?v=PikoaIa1oU0

Youtube の元記事はこちら ↓↓↓
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/generate-IaC.html

生成されるコードは、CloudFormation と CDK のみのようで、terraform はないようですが、CloudFormation があるだけでもありがたいなぁと感じたので、検証も兼ねて実際に試してみたいと思います!

今回 IaC に取り入れたいリソースの確認

まず始めに、今回スキャンしたいリソースとして、新しく EC2 環境を作成しました。

この EC2 や周辺の VPC や SG リソースが「IaC としてうまく取り入れられたら成功!」という位置付けで進めていきたいと思います。

Step1 - 「新しいスキャンを開始」を押下する

CloudFormation のコンソール画面から IaC ジェネレーターを開き、早速「新しいスキャンを開始」を押下していきましょう。

すると、リソースのスキャンが開始されました!

しばらくすると、スキャンステータスが「完了」となりましたね!

Step2 - テンプレートを作成する

スキャンが完了したら、テンプレートを作成していきます。

今回は、以下の設定でテスト作成していきます!

テンプレート名: test1
削除ポリシー: 保持
置換ポリシーを更新: 保持

なお、ここで「削除ポリシー」と「置換ポリシーを更新」で「削除」を選んだ場合、CloudFormation でスタックを作成・更新していくときに影響があります。
今回ですが、すでに作成済みの EC2 は残しておきたいので、「保持」としました。

Step3 - IaC に取り入れたいリソースを追加する

スキャンしたリソースの中から、 CloudFormation に取り入れたいリソース を追加していきます。

今回は、事前に新しく作成した EC2 を選択しました。

ちなみに、このリソース選択場面で、他の CloudFormation ですでに作成されたリソースだと選択できない ようでした。
スタックですでに管理されてしまっているかどうか確認しておきましょう。

Step4 - 関連リソースを追加する

次に、関連リソースを追加していきます。

追加するリソースは AWS のユーザガイドの注記 に記載があるように、基本的に すべての関連リソースを追加 していきます。

Step5 - 「テンプレートを作成」を押下する

最後に、諸々の取り込むリソースを確認できたら、「テンプレートを作成」をクリックしていきましょう!

生成された CloudFormation のテンプレートを確認!

テンプレートを作成後、自動的に CloudFormation のテンプレートが作成されました!
CloudFormation の他、CDK でファイル出力(yaml 形式)も可能となっています。簡単に生成ができて便利ですね!

(補足)IaC Generator の制限について

なお、便利な IaC Generator ですが、制限がある ことには気を付けておきましょう。
以下、AWS のユーザガイドの考慮事項から抜粋して掲載しておきます。

名前
アカウントスキャンで処理できるリソースの最大数 100000
1日あたりのスキャン数 (リソースが 10,000 未満のアカウントの場合) 3
1日あたりのスキャン数 (10,000 リソースを超えるアカウントの場合) 1
アカウント毎に同時生成されるテンプレートの数 5
1つのテンプレート生成に対してモデル化されるリソースの同時数 5
1つのテンプレートでモデル化できるリソースの総数 500

1つのアカウントで管理してしまっている中~大規模でなければ、問題なくリソーススキャンは可能となりそうですね。ただ、もしエラーで引っ掛かってしまったらこの点も考えておきましょう。

まとめ

今回は、「IaC Generator を使った既存リソースの IaC 化」について、自分自身の検証も兼ねてご紹介しました!

僕自身はこれまで terraform を主に使っており、 既存リソースの取り込みは Former2 で import していました。

なので、terraform でも今後生成できればなぁと思いつつ、でも生成された CloudFormation から参考にインフラコード管理もできそうなので何よりでした!(IaC Generator でも terraform の生成ができる日が来るのを楽しみにしています!)

もちろん、制限は気にしておかないといけない部分ですが、既存リソースのコード化が簡単に進められる のはありがたいですね!

この記事がこれから AWS リソースを IaC で管理していきたい方にとって、少しでもお役に立てられていれば嬉しい限りです!

Discussion