AWSのCloudFormationでリソースを自動構築

  • 2022.01.10
  • AWS
AWSのCloudFormationでリソースを自動構築

インフラストラクチャのコード管理を行うことで、ソフトウェア開発と同様にインフラ構築・運用も自動化による品質向上と効率向上を手に入れることができます。この考え方は、Infrastructure as Code(IaC)と言われております。
IaCは、AWSの場合、CloudFormation と Cloud Development Kit (CDK)を使用するのが一般的で、今回は、CloudFormation を説明します。

Infrastructure as Code(IaC)のメリット

サーバ数やセキュリティグループ数が多い複雑なシステムの場合、環境の構築は非常に煩雑になります。
構築したい環境で必要なサービスをテンプレートに記載しておき、そのテンプレートに従い環境構築を自動化することで、複雑なシステムをミスなく容易に構築可能となります。
全く同じ環境を別の用途や別のリージョンに用意する例としては以下の例があります。

開発環境や検証環境の構築が容易
システム開発や運用保守を行う上では、実際にサービス提供する本番環境とは別に、開発環境や検証(ステージング)環境を用意して機能改修やパッチ適用確認をおこないます。従来のオンプレ環境だとシステムによっては常時利用する必要性は低いにも係わらず全て用意しておく必要があり環境維持にコストを掛ける必要がありました。AWSの場合、クラウド特有のアセットレスのメリットを活かして、常時維持しなくても必要に応じて随時構築可能です。

障害・災害発生時のリストアが可能
AWSで障害・災害対策を行う場合、「バックアップ&リストア」型の対策がコスト面では最もリーズナブルですが、短期間でフェイルオーバーするには、環境構築の自動化が重要になります。

CloudFormationって何?

AWSにはCloudFormationと呼ばれる仕組みが提供されており、テンプレートの作成や、テンプレートを使ってシステム構築が可能です。
テンプレートを使って、VPC、サブネット、インターネットゲートウェイ、ルートテーブルなどのインフラ構成と、EC2、RDS、S3などのリソースの構築が可能です。
テンプレートで構築したAWSリソースの集合をスタックと呼びます。


CloudFormationのテンプレートとスタック
CloudFormationのテンプレートとスタック

CloudFormationを使うことで、同じ環境を簡単に再現できますし、ソフトウェア開発のようにバージョン管理が可能です。

テンプレート作成するには、JSON または YAML を利用できます。

CloudFormationのバックアップとリストア

スタックのテンプレートを使ってバックアップ及びリストアすることで、同じ環境を簡単に再構築できます。
バックアップするには、スタックのテンプレートをローカルファイルに保存することで行います。リストアは、テンプレートをアップロードしスタックを作成することで行います。
ローカルファイルではなく、S3バケットに保存して、その保存ファイルを使用することもできます。

参考情報

AWSカテゴリの最新記事