Former2 を使って AWS CloudFormation テンプレートを作成

2022年12月21日掲載

Former2

こんにちは。ソフトバンク株式会社の王文礼です。

この記事は、ソフトバンク Advent Calendar 2022 の 21日目の記事です。

AWS を利用していると、同じような VPC、サブネット、EC2 インスタンス、EBS ボリュームなどのリソースを使って環境を作成することが出てくると思います。同じ作業を繰り返して行う時、AWS CloudFormation を利用するのは便利です。

一方、JSON または YAML を使って AWS CloudFormation テンプレートを作成するので、 テンプレートの構文を学ぶには時間と労力がかかります。

この課題を解決している、Former2 という素敵な Web サービスがあり、Former2 を使えば、簡単にCloudFormation テンプレートを生成できます。本記事では、Former2 の使い方について解説します。

目次

Former2 とは

Former2 は、AWS アカウント内の既存のリソースから Infrastructure-as-Code 出力を生成できるようにする Web サービスです。 Former2 を使用すると、ユーザは既存の AWS 環境から CloudFormation や Terraform、Troposphere などのテンプレートを作成し、AWS インフラ構築の自動化に役立ちます。

事前準備

Former2 はアクセスキーを使って AWS リソースを読み込むため、アクセスキーの作成が必要です。Former2 は生成したテンプレートを直接 CloudFormation スタックにインポートする機能があります。このインポート機能を使用しない場合、IAM ユーザに ReadOnlyAccess ポリシー(読み取り権限のみ)をアタッチして、アクセスキーの作成をお勧めします。

CloudFormation の外部で作成した AWS リソースを CloudFormation に取り込む方法については、Bringing existing resources into CloudFormation management をご参照ください。

1. IAM ユーザを追加してアクセスキーを作成します。

1. IAM ユーザを追加してアクセスキーを作成します。

2. グループに ReadOnlyAccess ポリシーをアタッチして、IAM ユーザをグループに割り当てます。注)IAM ユーザに直接 ReadOnlyAccess ポリシーをアタッチしてもかまわないです。

グループに ReadOnlyAccess ポリシーをアタッチして、IAM ユーザをグループに割り当てます

以上で準備が完了しました。次は Former2 にアクセスして、設定を行います。

設定

  • Introduction の設定

S3 や IAM などの一部のサービスで発生する CORS 問題を回避するために、Former2 Helper のブラウザ拡張機能をインストールする必要があります。

1. サイドバーメニューより、Setup > Introduction の順を選択します。

2. ご利用のブラウザにもとづいて、該当の拡張機能をインストールします。

Former2 Helper のブラウザ拡張機能をインストール

3. 拡張機能のインストールが完了したら、Former2 画面下方の Continue to Credentials をクリックし、IAM Credentials の設定を行います。

  • Credentials の設定

AWS リソースへのリクエストを認証するために、事前準備で作成したアクセスキー ID とシークレットアクセスキーを入力します。

1. アクセスキー ID とシークレットアクセスキー を入力します。

Former2のアクセスキー ID とシークレットアクセスキー を入力

2. リージョンを AWS のリソースを含むリージョンに設定します。

リージョンを AWS のリソースを含むリージョンに設定

3. 画面下方の Continue to Parameters をクリックして、Parameters を設定します。

  • Parameters の設定

パラメータの設定はオプションであり、パラメータを設定した場合、!Ref または !Sub を使って入力パラメータとしてテンプレート作成時に参照されます。

ここではパラメータを設定せずに、Continue to Settings をクリックして、次に進みます。

Continue to Settings をクリックして、次に進みます
  • Settings の設定

1. 複数のリソースのテンプレートを生成する場合は必要なようで、Scan Account をクリックします。

2. スキャンが完了したら、必要でなければ、他の項目を設定せずに Go to Dashboard をクリックして次に進みます。

必要でなければ、他の項目を設定せずに Go to Dashboard をクリックして次に進みます

テンプレートの生成

前のステップ Go to Dashboard をクリックした後の画面です。ダッシュボードにリソースの一覧が表示されます。

Former2 Dashboard

対象のリソースを選択して、テンプレートを生成します。例えば、

1. Compute > EC2 をクリックして、該当のインスタンスを選択して、Add Selected をクリックします。

2. V2 Load Balancers を選択して、Add Selected をクリックします。

3. StorageS3 をクリックして、該当のバケットを選択して、Add Selected をクリックします。

注)この時点 で Generate (3) が表示され、三つのリソースからテンプレートを生成することを意味します。

Dashboard S3連携設定画面

4. Generate をクリックすると、CloudFormation テンプレートが生成されます。サイドバーメニューの Outputs より、出力言語を変更することもできます。

Outputsにより出力言語を変更出来ます

5. 生成されたテンプレートを JSON もしくは YAML 形式のファイルとして保存し、CloudFormation スタックの作成に利用できます。

セキュリティ

アクセスキーなどの認証情報は、AWS エンドポイントへのリクエストに署名するためにのみ使用されます。リソースデータと認証情報はメモリに保持され、インターネットを介して他の場所に送信されることはありません。生成されたテンプレートを外部と共有する場合は、機密データを削除するようにご注意ください。

セキュリティ上の理由で、Former2 Web サイトのコピーをローカルでホストすることもできます。詳細は Hosting Locally をご参照ください。 

料金

Former2 は無料で利用できますが、一部の AWS サービスでは API の呼び出しに少額の料金が発生することがあります。

まとめ

CloudFormation を使う時、なぜ AWS はアカウント内のリソースを CloudFormation テンプレートに変換してくれるサービスを提供しないのかと思ったことがないでしょうか。Former2 を見つけた時、素直に嬉しかったです。

Former2 は全ての AWS リソースから CloudFormation テンプレートを生成することができませんが、120 以上のサービスが網羅されているそうです。AWS サービスが頻繁に更新されることを考えると、Former2 のメンテナンスやアップデートは非常に大変だと想像できます。開発者に敬意を表したいと思います。

関連サービス

Amazon Web Services (AWS)

ソフトバンクはAWS アドバンストティアサービスパートナーです

「はじめてのAWS導入」から大規模なサービス基盤や基幹システムの構築まで、お客さまのご要望にあわせて最適なAWS環境の導入を支援します。

おすすめの記事

条件に該当するページがございません