AWS

【AWS】CloudFormationとは?VPCを構築するサンプルの紹介

どうもとがみんです。

この記事では、AWS CloudFormationとは何か、また、それを利用したインフラ構築のサンプルについて紹介していきます。

AWS CloudFormationとは?

「AWS CloudFormation」は、VPCやEC2、RDSなどのAWSインフラ環境の構築を設定ファイルから自動で行うことができるようにするサービスです。

構築したい環境の手順や設定をJSON、またはYAMLファイルに記述し、記述したコードをベースにインフラ構築が行うことができます。

そのため、誰が行っても同じ結果を得ることができ、手動により発生するエラーを減らすことができ、

コードでインフラ構成の管理を行うことで、構築手順がブラックボックスとならず、また、バージョン管理ツールを使用して変更履歴を管理することもできます。

そして簡単に同じ環境を複製できるため、テスト環境、本番環境の構築も用意に行えます。

AWS CloudFormationでは、様々なAWSのリソースがサポートされています。

>AWS リソースおよびプロパティタイプのリファレンス

テンプレートとスタック

AWS CloudFormationを利用して、インフラを構築するにあたって、「テンプレート」と「スタック」という概念があります。

「テンプレート」は、AWSリソースとそのプロパティを記述するためのもので、「スタック」は、単テンプレートに記述したリソース全部をひとまとめにしたものです。

CloudFormationに「テンプレート」を送信すうrことによって「テンプレート」に記載したリソースが作成され、この集合を一つの「スタック」として管理します。

>AWS CloudFormation の概念

AWS CloudFormationを利用してVPCを構築する

CloudFormationを用いて、コードからVPCを構築する方法についてまとめていきます。

VPC:Amazon Web Service Virtual Private Cloudの略で、ユーザー専用のプライベートなクラウド環境を提供するAWSサービス

VPCを構築するためのテンプレートファイルの作成

以下のテンプレートは、AWS CloudFormationを利用して、VPCだけを作成するコードを記述したyamlファイルです。

Resourcesセクションでは、スタックに含めるAWSリソース(EC2インスタンスやAmazonS3バケット、VPC等)を宣言します。

今回はVPC一つのみ定義しています。

Resourcesの一段下のTogaminVPCはテンプレート内でリソースを一意に特定するためのIDとなっています。

Type:には、リソースのタイプを表しており、今回はリソースタイプとしてVPC(AWS::EC2::VPC)を記載しています。

そして、Propertiesに各種プロパティを設定していきます。

AWS CloudFormationにおいて、どんなリソース、プロパティを指定できるかは、「AWS リソースおよびプロパティタイプのリファレンス」から確認することができます。

>リソース|AWS

スタックの作成

作成したテンプレートを元に、スタックを作成します。
AWS CloudFormationのコンソールを開き、「スタックの作成」を選択します。

作成したテンプレートをアップロードし、次に進みます。

スタック名を記載し次に進みます。

AWS CloudFormation スタックオプションの設定」に記載のもろもろのスタックオプションを設定し、スタックを作成します。

するとステータスが「CREATE_IN_PROGRESS」となり、リソースの作成が始まります。

少し待つと、テンプレートの記載したリソースが作成され、スタックの作成が完了しました。

作成されたVPCの確認

VPCのコンソールを確認すると、テンプレートに指定したVPCが作成されていることが確認できました。

まとめ

AWS CloudFormationとはなにか、AWS CloudFormationを利用してVPCを構築する方法についてまとめました。