はじめに
以前、社内のAWSのリソースをIac化しようとしてCloudFormationで使用したいなと思った時がありました。
その時にFormer2を使用し実際にIac形式に変換を行ってみました。
Former2は、既存のAWSリソースをInfrastructure as Code(IaC)形式に変換するためのツールです。このツールは以下の2つの方法で利用できます:
- Webサイト版(https://former2.com)
- ローカル環境での実行(GitHubからクローン)
利用可能な機能(公式情報)
対応出力形式(代表的なもの)
- CloudFormation(JSON/YAML)
- Terraform(HCL)
- AWS CDK etc..
認証方法
Former2では以下の認証方法が利用可能です:
- AWS CLI認証情報
- AWS SSO
- AWS Access KeyとSecret Key
必要なIAM権限
スキャンするAWSリソースに対する読み取り権限(Describe/List/Get)が必要です。
※個人的な経験に基づきます。
実際に触る際の諸注意
-
ローカル環境のセットアップ:(ローカルホスト以外では外部公開になるため)
-
- Githubからリポジトリをローカル環境にクローンし、
Docker-compose
で立ち上げてlocalhost
で表示させてください。注意:https
でアクセスすると、内部環境が外部に公開されるリスクがあるため、必ずlocalhost
でのみアクセスしてください。※情報を漏洩防止の為
コマンドはFormer2のディレクトリ配下に移動し
docker-compose up -d
で立ち上がります。-
Docker-compose
使用時にポート競合が発生する場合があります(デフォルトで80番ポートを使用)。その際、docker-compose.yml
ファイルのポート番号を8080
に変更してください。これにより、競合を回避し、環境が正常に立ち上がります。
- Githubからリポジトリをローカル環境にクローンし、
-
ローカル環境のイメージ:
- 下記のスクリーンショットは、ローカル環境が正常に動作している際の参考イメージです。
ローカル環境での実行方法(ローカル環境で行う時にDockerにソースコードをcloneしました。)
git clone https://github.com/iann0036/former2.git
クローン後、localhost
をブラウザで開いて使用しました。
個人の経験に基づく注意点
以下は、実際のユーザーの経験に基づく注意点です:
経験した課題
- 最初、間違えそうになり ウェブサイト版(former2.com)でAWS認証情報を入力しようとして、セキュリティ上の懸念を感じた
- ローカル環境での実行方法を知らずに、不要なセキュリティリスクを負うところだった
学んだ教訓
- 本番環境の認証情報を扱う場合は、ローカル環境での実行を検討する
- AWS認証情報の取り扱いには十分な注意が必要
リソースのスキャン手順
-
実行環境の選択
- ウェブサイト版、またはローカル環境(状況によります。)
-
認証情報の設定
- 利用可能な認証方法から選択
-
スキャンの実行
- リージョンの選択
- スキャンするリソースタイプの選択
- スキャンの実行
- 生成コードの確認
制限事項(公式情報)
- 一部のAWSリソースタイプはサポート外
- リソース間の依存関係は手動での確認が必要
- 生成されたコードは必ずレビューが必要
リソーススキャン時の確認事項
-
スキャン前
- 対象リソースの特定
- 必要なIAM権限の確認
- 実行環境の選択
-
スキャン後
- 生成されたコードの確認
- リソース間の依存関係の確認
- 必要に応じたコードの修正
まとめ
Former2は、既存のAWSリソースをコード化するための有用なツールです。利用の際は、特に以下の点に注意が必要です:
- もし、使用するにしてもプライベートで使用するか、会社で使用する場合は会社の方針によってなので要相談になると思います。(基本的にはプライベートでの使用をお勧めしたいと思いました。)
- AWS認証情報の適切な管理
- 生成されたコードの確認とレビューしないと不要なコードも実際に含まれてました。
※不要なコードは手動で消す必要がありました。
参考情報
- Former2公式リポジトリ: https://github.com/iann0036/former2
- Former2ウェブサイト: https://former2.com/