はじめに
最近AWSのリソースをIaCでの管理にしようとしてるんですが、
AWSコンソール上で作ったサービスをIaC管理にするいい方法ないですかね?
CFnのIaCジェネレーターって機能が出たからぜひ試してみなよ
調査や実験目的のためにマネジメントコンソール上でぽちぽち作成したサービスをIaC管理にしたいってことありますよね?
調査名目で作ったからすぐ消す予定だったのに、「複数環境立ててほしい」だったり、サービス化とかの話が出てきたり、、こんなことになるなら最初からCloudFormationで作っておけばよかった・・
とはいっても最初は手軽にパッとつくるのがやっぱり楽なんだよな
せめて、いまあるリソースたちを読み取って自動でCloudFormationファイルを生成してくれる画期的なサービスがあればいいのに・・・
・・・あるんです!
ついに登場しました、それがIaCジェネレーター!
今回やること
IaCジェネレーターを用いてマネジメントコンソール上で作られたVPCとその関連リソースをCFnスタック管理にしてみます。
もし、CFnスタックで管理されたVPCしかもってないよという方は以下を参考にマネジメントコンソールからVPCを作ってみてください
IaCジェネレーターとは
一言でいうと、
CloudFormationスタック によってまだ管理されていない既存のリソースからCloudFormationテンプレートを生成するというもの
※詳細はこちら
IaCジェネレーターで既存リソースからCFnファイルを生成する
CloudFormationコンソールに移動し、サイドバーから「IaCジェネレーター」をクリック
以下画面が表示されるので「新しいスキャンを開始」をクリックして、既存リソースを読み込む
※リソース数によって1日の読み込み回数に制限があるようです
リソース数が10,000件以上あるアカウントなら1日1スキャン、10,000件未満でも1日3スキャンまでと思ったよりも少ないですね、、
個人のテストアカウントや、小規模案件の環境ごとにアカウントが分かれている場合であればスキャンを気軽に試せそうですが、複数案件のリソースが入っている大規模アカウントや複数人で利用しているアカウントではスキャンの実施を慎重にする必要がありそうです。
スキャンが完了したら以下のように表示されます。
リソース読み込み後はいよいよCloudFormationのテンプレート化の作業です
「テンプレートを作成」をクリックしましょう
「新しいテンプレートから開始」を選択し、テンプレート名を入力したら「次へ」をクリック
スキャンしたリソースを追加の部分で「VPC」でフィルタリングして、CFnスタック管理にしたいVPCを選択します
※EC2をCFnスタック管理にしたい人は「EC2」でフィルタリングなどやることは同じです
選択したリソースが間違いなければ「次へ」をクリック
続いて、先ほど選択したリソース(この記事ではVPC)に紐づくリソースたちが関連リソースとして表示されます(すごい!)
CFnスタックとして一緒に管理にしたいリソースや設定などがあればここでチェックをいれればOKです!
関連リソースの選択も問題なければ「次へ」をクリック
確認画面でスキャンしたリソースとその関連リソースを確認します
問題なければ「テンプレートを作成」をクリック
テンプレートの作成が完了したらCloudFormationのYAMLソースが表示されています。
これで宙ぶらりんだったVPCリソースたちがCFnテンプレートファイルとして定義できましたね
生成されたCFnファイルをインポートする
それでは、いよいよ既存リソースを読み込んで作られたCFnファイルをCFnスタックとしてインポートしていきます。
「スタックにインポート」をクリックします
テンプレートソースに「生成されたテンプレート」を選択し、任意のスタック名を入力したら「次へ」をクリック
スタックパラメータを指定ページは、パラメータがないためそのまま「次へ」をクリック
スタックの変更点が表示されるので確認して問題なければ「次へ」をクリック
最終確認画面が表示されるので問題なければ「リソースをインポート」をクリック
CloudFormationコンソールのスタックページでインポートが開始されるので数分待機する
無事にインポートが完了した
EIPのIPアドレスも同じまま引き継がれていることが確認できました
マネジメントコンソール上でVPCと一緒に手動作成した際のEIPはこちら
スタック管理になった後もEIPが変わっていないことが分かりますね
まとめ
マネジメントコンソールなど手動で作成されたリソースのうち、CFnスタックとしても利用されていないリソースをIaCジェネレーターを用いてCFnスタック管理下に置く方法を確認しました。
もしマネジメントコンソール上にIaC管理されていないリソースがあり、それらを複数環境へデプロイする必要がでてきた、などがあれば今回の手順でCFnスタック管理下に手軽におけると思うのでぜひ参考にされてみてはいかがでしょうか。