top of page

AWSのブラックボックスを解消!CloudFormation管理外のリソース設定値をIaCジェネレーターで簡単可視化

  • 23 時間前
  • 読了時間: 7分

この記事でわかること


  • AWS CloudFormation IaCジェネレーターを活用し、稼働中のリソース設定をスキャンしてテンプレートとして自動出力する具体的な手順

  • マネジメントコンソールで個別に確認していた設定値や関連情報を、コード(テンプレート)化することで一括して可視化・確認する方法

  • ツールの利用に必要なIAM権限の設定方法や、リージョン単位でのスキャン、対象リソースの制限といった運用の注意点




   目次




   はじめに


インフラ構築や移行の案件において、「別ベンダーが管理しているリソースと同じものを新規環境に構築してほしい」といった依頼を受けた際、ドキュメントが不十分でCloudFormation管理外のリソースの設定値把握に苦労した経験はありませんか?

マネジメントコンソールでの目視確認や、設計書の新規作成となると、大変な手間がかかる上に、設定を見落とすリスクも伴います。


私は今回、AWS CloudFormationの「IaCジェネレーター」を利用して、これらの手間や設定見落としのリスクをサクッと解決しました!


本記事では、このIaCジェネレーターを「既存環境の構成調査ツール」として活用して設定値を把握する手順を解説します。



   IaCジェネレーターを構成確認に使うメリット


IaCジェネレーターは、現在稼働しているAWSリソースの設定情報を読み取り、CloudFormationテンプレートとして出力できるAWSの標準機能です。

今回のように「他環境の設定値を調査したい」「環境の棚卸をしたい」といったケースにおいて、以下のようなメリットがあります。


  • 稼働中のシステムに対しても実行可能

設定変更や再起動を伴わない「読み取り処理」のみを実行するため、稼働中のシステムに対しても実行できます。


  • 関連リソースも芋づる式に可視化

取得したいリソースだけでなく、それに紐づくサブネットグループやセキュリティグループなどもまとめて出力可能です。


  • マネジメントコンソールから数クリックで実行可能

スキャン自体に費用はかからず、手軽に構成をコード化できます。


【利用時の考慮事項】

スキャンはリージョン単位で実行されます。

また、1回のスキャンで処理できるリソースの最大数(100,000)や、1日あたりのスキャン数など、いくつかのクォータ(制限)が定められています。

詳細はAWSの公式ドキュメントをご参照ください。



\AWSの設定でお困りですか?専門エンジニアがサポートします/




   事前準備(権限の確認)


作業を行うユーザーに、必要な権限が付与されているか確認します。

管理者権限(AdministratorAccess)をお持ちの場合は、個別の設定は不要です。

管理者権限がない場合は、以下2つの権限セットが必要です。


  • リソース参照用(AWS管理ポリシー)

スキャン時に各AWSサービスの設定値を読み取るため、AWS管理ポリシーの ReadOnlyAccess を付与します。


  • IaCジェネレーター操作用(インラインポリシー等)

IaCジェネレーターの機能(スキャン、テンプレート生成など)を実行するために必要な最小限の権限です。

以下のJSONを使用してポリシーを作成し、付与してください。

{

    "Version":"2012-10-17",

    "Statement":[

        {

            "Sid":"ResourceScanningOperations",


            "Effect":"Allow",

            "Action":[

                "cloudformation:DescribeResourceScan",

                "cloudformation:GetResource",

                "cloudformation:ListResources",

                "cloudformation:ListResourceScanRelatedResources",

                "cloudformation:ListResourceScanResources",

                "cloudformation:ListResourceScans",

                "cloudformation:ListTypes",

                "cloudformation:StartResourceScan"

            ],

            "Resource":"*"

        },

        {

            "Sid":"TemplateGeneration",

            "Effect":"Allow",

            "Action":[

                "cloudformation:CreateGeneratedTemplate",

                "cloudformation:DeleteGeneratedTemplate",

                "cloudformation:DescribeGeneratedTemplate",

                "cloudformation:GetResource",

                "cloudformation:GetGeneratedTemplate",

                "cloudformation:ListGeneratedTemplates",

                "cloudformation:UpdateGeneratedTemplate"

            ],

            "Resource":"*"

        }

    ]

}


※IaCジェネレーターの利用に必要な権限の最新情報については、AWS公式ドキュメントも併せてご参照ください。



   既存環境をスキャンしてテンプレートを作成する


ここからは具体的な手順になります。

使い方としては、以下のステップで完了します。


  1. リソースのスキャン

  2. テンプレートの作成とリソースの追加


1.リソースのスキャン

  1. 対象リソースが存在するリージョンを選択した状態で、マネジメントコンソールから CloudFormation を開きます。


  1. 左側のメニューから[IaCジェネレーター]をクリックします。


  1. [新しいスキャンを開始]のプルダウンから[すべてのリソースをスキャン]をクリックします。


※「特定のリソースをスキャン」という選択肢もありますが、手動で指定すると関連リソースを見落とす可能性があるため、今回は構成全体を俯瞰しやすい「すべてのリソースをスキャン(フルスキャン)」を実施しました。

ただし、パスワードやシークレット情報などの「書き込み専用プロパティ」や、IaC未対応のリソースは取得できない点にご注意ください。


  1. ステータスが[完了]となることを確認します。

通常数分程度ですが、リソース数によっては長くかかる場合もあります。

画面をリロードして進捗を確認してください。



2.テンプレートの作成


  1. [テンプレートを作成]をクリックします。


  1. [新しいテンプレートから開始]を選択し、以下を入力します。

    1. テンプレート名:任意の名前

    2. 削除ポリシー:保持/削除

    3. 置換ポリシー:保持/削除


【補足:削除・置換ポリシーの使い分けシーン】


  1. 削除ポリシーとは

スタックそのものを削除した際や、テンプレートのコードからそのリソースの記述を消して更新(デプロイ)した際に、AWS上の実際のリソースをどう処理するかを決める設定です。


  1. 置換ポリシーとは

スタックの設定値を更新した際、リソースの「置換(作り直し)」が発生した場合に、古い方のリソースをどう処理するかを決める設定です。


IaCジェネレーターでテンプレートを作成する際、これらのポリシーは「既存リソースを今後どのように運用したいか」によって以下のように使い分けます。


  • 保持(Retain)を選ぶシーン

今回のように「構成確認・調査だけが目的」の場合や、「既存リソースをCloudFormationの管理下に置くが、誤ってスタックを削除した際に本番リソースまで消えてしまうのを防ぎたい(保護したい)場合」に選択します。


  • 削除(Delete)を選ぶシーン

既存リソースのライフサイクルを完全にCloudFormationへ委ね、「今後はスタックを削除したら、実環境のリソースも一緒に削除されるようにしたい場合」に選択します。

不要になったら丸ごと消したい検証環境や、一時的なリソースの移行などに適しています。


今回はあくまで構成確認が目的であり、万が一このテンプレートをスタックとして誤って展開・削除してしまった場合でも実際の稼働リソースを保護するため、「保持(Retain)」を選択しています。


  1. [スキャンしたリソースを追加]画面で、フィルターを利用して出力したいリソースを選択、[テンプレートに追加]をクリックします。

※すでにコード化されているものなどは、一覧に表示されていても選択できないようになっています。


  1. [関連リソースを追加]画面で依存リソースが提案されるため、必要に応じて追加してください。


  1. 作成内容を確認し、[テンプレートを作成]をクリックします。


  1. テンプレートが作成されたことを確認します。




   テンプレートをダウンロードして設定値を確認する


無事にテンプレートが作成されたら、構成調査を開始します。


  1. [テンプレートの定義]タブで表示言語(YAMLまたはJSON)を指定し、[ダウンロード]をクリックします。

※スキャン結果は30日間で失効し自動消去される仕様のため 、早めにテンプレート化してダウンロードしておくことをオススメします。

  1. ダウンロードしたファイルをVS Codeなどで開き、設定値を確認します。


【構成調査の具体例】

出力されたファイルを見ると、以下のような項目が1つのファイルで俯瞰できます。

  • RDSインスタンスの DBInstanceClass(インスタンスサイズ)や EngineVersion(バージョン情報)

  • 紐づいているサブネットのIDや、適用されている VPCSecurityGroups のID群。

  • 自動バックアップの保持期間や、マルチAZ化の有無など。


今までマネジメントコンソールで「RDSの画面」→「VPCの画面」→「EC2のセキュリティグループの画面」と遷移して調べていたものが、テキストの検索機能だけで確認できるようになります。



\AWSの設定でお困りですか?専門エンジニアがサポートします/




   まとめ


今回は、CloudFormationのIaCジェネレーターを活用して、既存環境にあるリソースの設定情報を安全かつ効率的に取得してみました。

IaCジェネレーターは、インフラをコード化したいという場面だけでなく、既存構成の調査・可視化においても便利なツールだと実感しました。

設定値を探し回る時間を大幅に削減できるので、環境移行や引継ぎ案件などでぜひ活用してみてください!



この記事を書いた人

K.A(AWSエンジニア)

🏅保有資格

・AWS Certified Cloud Practitioner

・AWS Certified Solutions Architect - Associate

・AWS Certified SysOps Administrator - Associate

・Snowflake SnowPro Core


不動産業界のインフラ構築プロジェクトに約半年間従事。AWSエンジニアとして設計からテストまでを一貫して担当。現在は同環境の運用保守や、セキュリティ強化・構成改善の提案などを実施し、お客様の安定したシステム運用を支援している。



bottom of page