こんにちは、クラウド事業部の山路です。
今回はAWSのリソースをCloudFormationテンプレートで表現・管理するのをサポートするAWS CloudFormation IaC Generatorを簡単に触ってみました。
背景
AWS CloudFormation IaC Generatorは今年2月ごろに登場した機能で、CloudFormationで管理されていないAWSリソースをCloudFormation / CDKテンプレートで表現し、IaCによるリソース管理をサポートする機能です。
AWSリソースの大半はCloudFormationが対応しており、リソースをコードで管理することができます。またAWSリソースをCloudFormation以外で新規作成をした場合も、CloudFormationのインポート機能を使い、作成後に管理することもできます。
一方で、インポートを実行するには、それを行うテンプレートを利用者が作成しなければならず、テンプレートの作成方法や関連するリソースの調査などを行う必要がありました。また、自分たちのリソースの何がCloudFormationで管理しているのかを棚卸する必要もあり、規模の大きいプロジェクトであるほどその作業は大変になります。
IaC GeneratorはAWSアカウント単位でリソースをスキャンし、CloudFormationで管理していないリソースを検出します。またインポートするリソースを選択するとテンプレートを生成しcloudFormationスタックの作成をサポートするため、上記の課題を全て解決することを期待できます。
なおIaC Generatorには以下の制限があります。
- サポートするのは、利用するリージョンのCloud Control APIでサポートされているリソースのみです。
- 1回のアカウントスキャン処理できるリソースの最大数は100,000個までです
- 1日当たりのスキャン回数は、リソース数に応じて変わります。10000未満の場合は3回、10000以上の場合は1回までです。
検証
IaC GeneratorはAWSコンソール・AWS APIのどちらからも操作可能ですが、今回はAWSコンソールで操作しました。またテストのため test-vpc-for-iac-generator
というVPCを事前に作成しています。
AWSリソースのスキャン
IaC Generatorを操作するため、CloudFormationメニューに移動し、画面左から IaC ジェネレーター
を選択します。
IaC Generatorの画面に遷移します。ますは 新しいスキャンを開始
を選択し、AWSリソースのスキャンを開始します。
選択するとスキャンを開始し、ステータスの推移を確認できます。リソース数にもよりますが、今回は10分程度で完了しました。
テンプレートの作成・リソースの追加
スキャンを完了したので、次はテンプレートを作成します。
IaC Generator画面の下部にある テンプレートを作成
を選択します。
テンプレートの作成画面に遷移したので設定を続けます。テンプレートは新しいテンプレートを用意するか、既存のスタックのテンプレートを更新するかを選べますが、今回は 新しいテンプレートから開始
を選びます。あとはテンプレート名、削除ポリシー、置換ポリシーを設定して 次へ
を選択します。
次にスキャンしたリソースの中からテンプレートに追加するものを選択します。
ここではリソースタイプ ( AWS::EC2::VPC
) でスキャンしたリソースを検索し、テスト用に用意したVPCを選択します。
次に、前頁で選択したリソースに関連するリソースを含めるか選択します。VPC作成時はRouteTable / Security Groupなど複数のリソースがついてくるので、ここでは表示されたすべてのリソースを追加します。
最後に確認画面が表示されるので、作成を行います。
作成を開始してしばらくするとテンプレートの作成が完了します。
作成したテンプレートでは、テンプレートの定義やテンプレートに含むリソース、AWS CDKに移行する場合のコマンドなどを表示します。
CloudFormationスタックにインポート
最後に作成したテンプレートをCloudFormationスタックにインポートします。
テンプレート画面から スタックにインポート
を選択します。
スタック名などを設定し、リソースのインポートを実行します。
しばらくするとインポートは完了します。これでVPCと周辺リソースをCloudFormationで管理できるようになりました。
さいごに
弊社はAWSアドバンスドティアサービスパートナー認定を受けております。また以下のようにAWSの活用を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。