みなさん、こんばんは。新人のRenです。今日はCloud Formationとは?についてお伝えします。

AWS CloudFormationとは

AWS CloudFormationとはAWSが提供している、プロビジョニング(必要なものを準備すること、ITインフラの調達や設定など)およびサーバー設定のエリアにおける自動化および構成管理のためのサービスです。つまり、よく使うAWS環境等をテンプレート化しておくことで、同じ環境を作成する時間を削減することが出来ます。

Cloud Formationのメリット

Cloud Formationを利用する主なメリットは下記の通りです。

1:簡単にサーバー環境の作成が行える
テンプレートさえできていれば、詳細な設定を行う必要がなく、サービス間の連携も自動的に行うことが出来ます。

2:サーバー構築、設定のミスがなくなる
手動で設定する必要がないため、ミスによるスケジュールの遅れやコスト増加を防ぐことが出来ます。

3:専門的な知識が不要になる
サーバーを手動で設定するには専門的な知識が必要ですが、Cloud Formationでは自動で行ってくれるため、ユーザーは待つだけとなります。

4:サーバー構成情報の管理が楽になる
AWSコンソールを確認することで、そのサービスでどのように使用しているのかを一目で確認できるようになります。変更の記録やバージョン管理も簡単に行うことが出来ます。

5:ランニングコストを下げることが出来る
「必要な時に」「必要なリソースだけ」を簡単に作成でき、終了後は簡単に削除できるため、リソースの無駄をなくすことが出来ます。結果として、ランニングコストを下げることに繋がります。

利用の手順

Cloud Formationを利用するための手順について解説していきます。

①テンプレートの作成
リソース情報を記述したテンプレートを用意します。テンプレートはJavaScript Object Notation (JSON) あるいはYAMLの標準に準拠したフォーマットで記述されたものを使用します。テンプレートの作成方法は下記の3つです。

・クイックスタート
・サンプルテンプレート&テンプレートスニペット
・自らテンプレートを作成

クイックスタートは、導入のしやすさはありますが柔軟性はありません。一方で、自らテンプレートを作成することは、難しさはありますが柔軟性があります。

②テンプレートの内容
1)リソースセクション
テンプレートに記述される内容はセクションに分けられています。その中で最も重要なのは、「リソース」セクションになります。例は下記の通りです。

   ・「AWS::EC2::Instance」と記述すればEC2インスタンスの作成
   ・「AWS::S3::Bucket」と記述すればS3バケットの作成
   ・「AWS::ElasticLoadBalancing::LoadBalance」と記述すればELBの作成

同時にPropertiesとしてインスタンスタイプや使用するEBS、その他多くのリソースのプロビジョニングに必要な情報を指定します。

 2)パラメータセクション
    テンプレートからスタックを作成するときに指定可能なパラメータを記述します。

 3)条件セクション
    条件によって支持内容を変更したい場合に記述します。

 4)メタデータセクション
    OS上のファイルの内容を変更するような特殊な処理を付加する場合に使用します。

③スタックの作成
スタックとは、テンプレートによってプロビジョニングされるリソースの集合体のことです。CloudFormationでは、テンプレートからスタックを作成することでサーバー環境の構築を行うことができます。
スタックの作成は、CloudFormationコンソール以外にも、APIやAWS CLIを使用して行うこともできます。

①~③を行うことでCloudFormationを利用することが出来ます。 コンソールを開いて、Cloud Formation>スタック>スタックの作成 から「テンプレートの準備」から該当するものw選びます。ここではサンプルテンプレートを選んでいます。

テンプレートを選択したら、スタックの名前、DBの名前、インスタンスタイプなどのパラメータを設定します。

まとめ

CloudFormationを利用することにより、迅速で正確な環境構築が可能になったり、スキル不足や複雑な環境の管理工数増大といった問題を解決してくれたりします。そのため、CloudFormationはAWS Cloudを利用する情報システム部門にとって必須といえるでしょう。一度使い方を覚えれば、いい意味で「楽をする」ことが出来ると思いますので、是非一度試してみてはいかがでしょうか。