はじめに
今回は、AWSのCloudFormation IaC ジェネレーターを使って、既存のAWSリソースからテンプレートを作成する方法を試してみました。
というのも、個人の検証用AWS環境にあるリソースを簡単にコード化し、必要なときにリソースをすぐに起動・削除できないかと思った次第です。
検証方法の流れ
以下の手順で、CloudFormation IaC ジェネレーターを使って既存リソースからテンプレートを作成し、検証しています。
- AWSリソースを作成する
- CloudFormation IaC ジェネレーターでリソースをスキャンする
- CloudFormation IaC ジェネレーターでテンプレートを作成する
- テンプレートをCloudFormationスタックにインポートする
- (検証後のお掃除に)リソース削除する
1. AWSリソースを作成する
以下画像のように、検証用にVPCとサブネット、NATゲートウェイなどをまとめて作成します。
2. CloudFormation IaC ジェネレーターでリソースをスキャンする
CloudFormationコンソール画面からIaC ジェネレーター
ページを開きます。
スキャン画面から新しいスキャンを開始
をクリックします。※2回目以降は再スキャンと表示されます
3. CloudFormation IaC ジェネレーターでテンプレートを作成する
テンプレート名や削除ポリシー、置換ポリシーなど、リソース削除時の動作を設定します。
今回は検証用途であるため、どちらのポリシーも削除に設定しています。
次は、テンプレートに追加するリソースを追加します。
ここでは、リソース作成時に付与したタグでフィルターを設定し、該当するリソースのみを選択しています。
選択したリソースが表示されるので、そのまま次へ
をクリックします。
関連リソースをすべて追加することが推奨らしいので、そのまま次へ
をクリックします。
最後のページで確認画面が表示されるので、問題がなければテンプレートを作成
します。
4. テンプレートをCloudFormationスタックにインポートする
「一部のオプションのプロパティがテンプレートに含まれていませんでした」という注意喚起が表示されますが、CloudFormationにインポートするのには問題ないので、そのままスタックにインポート
をクリックします。
最後のページで確認画面が表示されるので、問題がなければリソースをインポート
します。
CloudFormationスタックへのインポートができました。
5. (検証後のお掃除に)リソース削除する
今回、スタックの削除に失敗してしまったので、削除を再試行
しています。
削除が完全にできない場合に、このスタック全体を強制削除
します。
これでも完全に削除できていないリソースが数個あったので、それは個別で削除しました。
さいごに
既存リソースをIac化できますが、コードが物理IDで書かれている部分があったりするので、それを修正する手間は必要だと思います。環境を複製したい場合などは今のままだと、利用できないかなと…
個人的には、コード修正するのめんどくさいと思うヒトなので、今後のアップデートでいい感じになることを期待しています。
参考ドキュメント