1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS IaCジェネレータで非IaC管理下のリソースをIaC管理下に置く

Last updated at Posted at 2025-11-22

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今日は先日、本業で少し触れることになったIaCジェネレータのお勉強をしてみたいと思います。

IaCジェネレータとは?

既存のクラウドリソースから自動でIaC(Infrastructure as Code)コードを生成するツール

主な機能とユースケース

  1. レガシー環境のIaC化
    手動で作成した既存リソース(EC2/VPC等)をコード化し、バージョン管理可能に。

  2. 設定ドキュメント化
    リソース構成をコードとして出力 → チームでの共有・監査が容易に。

  3. IaC学習支援
    実稼働環境を基にしたサンプルコード生成で、IaC文法習得を加速。

  4. マルチクラウド移植
    (Terraformer等)AWSリソースをTerraform化 → GCP/Azureへ移植する基盤作成。


制限事項(注意点)

  • 生成コードの最適化が必要
    自動生成コードは冗長な場合があり、手動でリファクタリング推奨。

  • 非対応リソースの存在
    特定のサービス(例:一部のマネージドサービス)は生成できない可能性あり。

  • セキュリティ設定の継承
    既存リソースの不適切な設定(例:公開S3バケット)がそのままコード化されるリスク。

ハンズオン

非IaC管理下のリソースをIaC管理下にする手順

CFnの管理画面の画面左にIaCジェネレーターという表示があるので、これを押下すると以下のような画面になります。
兎にも角にもスキャンをしないと何も始まらないので、左上の新しいスキャン配下の"すべてのリソースをスキャン"を押下します。

image.png

スキャンが開始されると、わかりづらいですが、スキャンの概要タブのスキャンステータスが進行中になります。
暫くステイします。

image.png

スキャンが完了すると、以下のようにステータスが完了となります。

image.png

画面をググっと下にスクロールすると、スキャンされたリソースの内訳を確認することが出来ます。
今回はセキュリティ・ID・コンプライアンス系が6割を占めていますね。
image.png

内訳を右側で見ることが出来るのですが、IAM Roleが圧倒的に多いことがわかります。

image.png

テンプレートを作成していきます。
画面中央上部のテンプレートを作成を押下します。

image.png

テンプレートを準備の部分では、新しいテンプレートから開始を押下します。
テンプレート名はEC2-template、削除ポリシーは保持、置換ポリシーも保持とします。
次に進みます。

image.png

今回は手動で作成したWindows系のEC2をyaml化していきます。
リソースタイプをAWS::EC2::Instanceとして、検索を掛けると、リソース識別子が絞られますので、対象の識別子を選択して次に進みます。
screencapture-ap-northeast-3-console-aws-amazon-cloudformation-home-2025-11-22-21_03_37.png
今回は以下のwin-2022-shadowをyaml化します。
image.png

関連リソースをAWS側が自動で検索してくれて、提案をしてくれる画面が表示されます。
基本的には全てチェックを入れて、次に進めばいいと思います。

image.png

確認画面が表示されます。確認して、テンプレートを作成を押下します。

screencapture-ap-northeast-3-console-aws-amazon-cloudformation-home-2025-11-22-21_06_10.png

作成が開始されます。

image.png

正常に終了すると、以下のようになります。

image.png

テンプレートの定義タブを下にスクロールすると、色々ばーっと書いてます。
これが、IaC化された結果ですね。
スタックにインポートを押下します。
image.png

CFnのいつもの画面が自動で表示されます。
スタック名は適当にEC2のNameタグから取ってきました。

image.png

変更を確認します。今回の場合変更しないで、手動作成したものをIaC管理下に置く感じになるので、全てImportになりますね。
次に進みます。

image.png

内容をかくにんして、リソースをインポートボタンを押下します。
screencapture-ap-northeast-3-console-aws-amazon-cloudformation-home-2025-11-22-21_21_31.png

インポートが開始されました。
image.png

私の環境では特段問題なく完了することが出来ました。
image.png

動作確認:ドリフトを発生させて検知させてみる

先程IaC管理下に置いたEC2からEBSを1つでタッチしてみます。

image.png

デタッチされたことを確認します。

image.png

この状態で先ほど作成したStackからドリフト検出を行ってみます。
image.png

結果としてドリフトを検出していますね。
EBSで検知していることがわかるため、挙動としては問題なさそうです。

image.png
image.png

動作確認:変更セットを作成して、そこからリソースに変更を掛けてみる

CFnの管理画面のテンプレートからyamlを取得。
内容を以下のように変更してみます。

# タグ修正
## 変更前
      Tags:
      - Value: "win-2022-shadow"
        Key: "Name"

## 変更後
      Tags:
      - Value: "win-2022-shadow"
        Key: "Name"
      - Value: "Dev"
        Key: "Env"

# インスタンスタイプ変更
## 変更前
      InstanceType: "t3.medium"

## 変更後
      InstanceType: "t3.small"

変更したyamlを保存します。
CFnの管理画面のスタックからスタックを更新 > 変更セットを作成を押下します。

image.png

変更セットタイプを標準変更セット、既存のテンプレートを置換、
テンプレートファイルのアップロードを選択して、先ほど変更したyamlをアップロードします。

screencapture-ap-northeast-3-console-aws-amazon-cloudformation-home-2025-11-22-22_07_41.png

この辺りはデフォルトで入っているもので問題ありません。
次に進みます。

image.png

ここもデフォルトで問題ありません。次に進みます。

image.png

変更セットをレビューの画面が表示されます。
内容を確認して、変更セットを作成を押下します。

screencapture-ap-northeast-3-console-aws-amazon-cloudformation-home-2025-11-22-22_10_35.png

変更セットが正常に作成されたことを確認します。
変更される内容をレビューすることが出来るので、このタイミングで最終確認をしておきます。
確認出来ましたら、変更セットを実行を押下します。

image.png
image.png

変更セットを実行を押下します。
image.png

変更処理が開始されます。
image.png

UPDATE_COMPLETEと表示されていればOKです。

image.png

アップデートを掛けたEC2を見てみます。
インスタンスタイプがt3.smallとなっていることが確認できます。
image.png

タグを見てみると、yamlで指定したタグが追加されていることが確認できます。
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?