CloudFormation IaC Generatorをさわってみた
はじめに
最近、甥っ子姪っ子にデレデレなほっそーです!
これまでAWSリソースを手動で作成しそれをIaCテンプレートに変換するためにはサードパーティツールに頼るしかありませんでした。しかし、ついにこのプロセスを簡単にしてくれる素晴らしい機能が登場しました。
今回はAWSから公式機能として公開されたAWS CloudFormation IaC Generatorについてご紹介します!
AWS公式のツールではないが、Former2を利用することで、既存のAWSリソースをCloudFormationテンプレート化できる。そのテンプレートを活かし、リソースをインポートすることでCloudFormationで扱えるようになる。
CloudFormation IaC Generatorとは
CloudFormation IaC Generatorとは、CloudFormationによって管理されていない既存のAWSリソースをテンプレートとして生成できる機能です。
AWS CloudFormation は、CloudFormation の外部で管理されている既存の AWS リソース用の AWS CloudFormation テンプレートと AWS CDK アプリを簡単に生成できる新機能をリリースしました。生成されたテンプレートとアプリを使用して、CloudFormation と CDK にリソースをインポートしたり、新しい AWS リージョンまたはアカウントにリソースを複製したりすることができます。
AWSでは新しいサービスや機能が次々とリリースされる中で、マネジメントコンソールで手動で検証・構築する機会も多くあります。そうした場合、この機能を活用することでIaC化のハードルを下げることができそうですね!
利用にあたっての注意点
IaC ジェネレーターは追加料金なしで利用できますが、下記の通り利用制限はあります。
例えば1日あたりのスキャン数には制限がありますので、「ご利用は計画的に」を意識しましょう!
名前 | Value |
---|---|
1 回のアカウントスキャンで処理できるリソースの最大数 | 100000 |
1 日あたりのスキャン数 (リソースが 10,000 未満のアカウントの場合) | 3 |
1 日あたりのスキャン数 (リソースが 10,000 以上のアカウントの場合) | 1 |
アカウントあたりの同時に生成されるテンプレートの数 | 5 |
1 回のテンプレート生成で同時にモデル化されるリソースの数 | 5 |
1 つのテンプレートでモデル化できるリソースの合計数 | 500 |
生成されたテンプレートのアカウントあたりの最大数 | 1000 |
さわってみる
では、実際に手動作成したリソースをCloudFormation IaC Generatorで検証してみようと思います!
早速、「CloudFormation」 → 「IaC ジェネレーター」にアクセスしてみます。開始方法として3ステップが記載されているので、それに沿って進めていきます。
アカウントのリソースをスキャンする
画面中央の「スキャン」パネルより、「新しいスキャンを開始」をクリックします。すると、すぐにスキャンが開始されます。
およそ4-5分程でスキャンが完了しました。AWSアカウントから約500件程のリソースを検出できました。
CloudFormation テンプレートを作成する
画面下部の「テンプレート」パネルより、「テンプレートを作成」をクリックします。ステップに従って入力・選択していきます。
ステップ1
テンプレート名を入力し、削除ポリシーと置換ポリシーを選択して「次へ」をクリックします。
ステップ2
「スキャンしたリソースを追加」パネルからテンプレート化したいリソースを検索します。リソースタイプ、タグ、リソース識別子等を使用できます。
事前に手動で作成したリソースにタグを設定していたので、これを使って一通りのリソースを表示することができました。試しにVPCリソースを選択してみます。
ステップ3
「関連リソース」を追加します。このサービスの素晴らしい機能の1つとして、ステップ2で全て選択していなくても、ステップ1で選択したリソースに基づいて推奨リソースを提示してくれます。VPCのみ選択していたため、紐づくネットワーク周り等のリソースが表示されていることがわかります。
ステップ4
最後に選択した全てのリソースを確認し、右下にある「テンプレートを作成」をクリックします。数分待つと、CloudFormationのテンプレートが完成されています!
JSONとYAMLのどちらも生成されていて、ダウンロードも可能です!
CloudFormationまたはCDK にインポートする
作成したテンプレートを用いてリソースをIaCとして管理できる機能です。こちらも試してみます!
画面下部の「テンプレート」パネルより、テンプレートを選択しアクションメニューから「スタックにインポート」をクリックします。
スタック名やパラメーターの入力等のステップに従っていくと、「変更の確認」ステップでインポートするリソースを確認することができます。「テンプレートの作成」時に選択したリソースが表示されています。
リソースを確認して問題なければ、スタックのインポートを実行開始します。
自動生成されたCloudFormationのスタックで正常に完了しました!
完了後、インポートしたリソースのタグを見てみると、Cloudformationによって管理されていることがわかります。コードを書くことなくこの機能で既存リソースのIaC化を実現することができました!
感想
今回は個人的に気になっていたCloudFormation IaC Generatorをさわってみました。手動で作成した既存リソースをテンプレートとして生成し、それをインポートすることで、IaC化を簡単に実現できる素晴らしいサービスだと感じました。
リソース数の増加による複雑な構成や、新しいリージョンやアカウントへの展開といった応用的なケースにおいては、生成されたテンプレートの確認や修正などの工夫が必要な気もしますが、それでもIaCで管理していくには非常に効率的なサービスだと思います。
ぜひ、皆さんもさわって体験してみてください!