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.リソースのスキャン
対象リソースが存在するリージョンを選択した状態で、マネジメントコンソールから CloudFormation を開きます。

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

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

※「特定のリソースをスキャン」という選択肢もありますが、手動で指定すると関連リソースを見落とす可能性があるため、今回は構成全体を俯瞰しやすい「すべてのリソースをスキャン(フルスキャン)」を実施しました。
ただし、パスワードやシークレット情報などの「書き込み専用プロパティ」や、IaC未対応のリソースは取得できない点にご注意ください。
ステータスが[完了]となることを確認します。
通常数分程度ですが、リソース数によっては長くかかる場合もあります。
画面をリロードして進捗を確認してください。

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

[新しいテンプレートから開始]を選択し、以下を入力します。
テンプレート名:任意の名前
削除ポリシー:保持/削除
置換ポリシー:保持/削除

【補足:削除・置換ポリシーの使い分けシーン】
削除ポリシーとは
スタックそのものを削除した際や、テンプレートのコードからそのリソースの記述を消して更新(デプロイ)した際に、AWS上の実際のリソースをどう処理するかを決める設定です。
置換ポリシーとは
スタックの設定値を更新した際、リソースの「置換(作り直し)」が発生した場合に、古い方のリソースをどう処理するかを決める設定です。
IaCジェネレーターでテンプレートを作成する際、これらのポリシーは「既存リソースを今後どのように運用したいか」によって以下のように使い分けます。
保持(Retain)を選ぶシーン
今回のように「構成確認・調査だけが目的」の場合や、「既存リソースをCloudFormationの管理下に置くが、誤ってスタックを削除した際に本番リソースまで消えてしまうのを防ぎたい(保護したい)場合」に選択します。
削除(Delete)を選ぶシーン
既存リソースのライフサイクルを完全にCloudFormationへ委ね、「今後はスタックを削除したら、実環境のリソースも一緒に削除されるようにしたい場合」に選択します。
不要になったら丸ごと消したい検証環境や、一時的なリソースの移行などに適しています。
今回はあくまで構成確認が目的であり、万が一このテンプレートをスタックとして誤って展開・削除してしまった場合でも実際の稼働リソースを保護するため、「保持(Retain)」を選択しています。
[スキャンしたリソースを追加]画面で、フィルターを利用して出力したいリソースを選択、[テンプレートに追加]をクリックします。
※すでにコード化されているものなどは、一覧に表示されていても選択できないようになっています。

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

作成内容を確認し、[テンプレートを作成]をクリックします。
テンプレートが作成されたことを確認します。

テンプレートをダウンロードして設定値を確認する
無事にテンプレートが作成されたら、構成調査を開始します。
[テンプレートの定義]タブで表示言語(YAMLまたはJSON)を指定し、[ダウンロード]をクリックします。
※スキャン結果は30日間で失効し自動消去される仕様のため 、早めにテンプレート化してダウンロードしておくことをオススメします。

ダウンロードしたファイルを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エンジニアとして設計からテストまでを一貫して担当。現在は同環境の運用保守や、セキュリティ強化・構成改善の提案などを実施し、お客様の安定したシステム運用を支援している。


