AWS CloudFormationを活用して効率的にAWSを使おう

AWS CloudFormationは、AWSのサービスを管理するときに大きな効果があります。もしも複数のシステムを構築している、これからほかのシステムを構築する必要がある、というときには利用してみるとよいでしょう。今回は、AWS CloudFormationの概要やメリット・デメリットなどについて解説します。

AWS CloudFormationとは

AWS CloudFormationの概要について説明します。

AWS CloudFormationの概要

AWS CloudFormationは、AWSのサービスのひとつです。AWS CloudFormation を利用すると、AWSで環境を構築するときに、リソースの設定やプロビジョニングをコード化したテンプレートを作成できます。それをもとにすれば、次に新しい環境を構築するとき、時間や手間を大きく削減できるのです。

AWS CloudFormationがあれば、IaC(Infrastructure as Code)も実現しやすくなります。AWS CloudFormationでリソースの設定やプロビジョニングすることで、同じリソースと設定の環境を複数構築し、一括管理することができるからです。

リソースとは、AWSで提供されているEC2やVPCなどのサービス、それらをつなぐAttacheといった、環境を構築するパーツのことです。AWS CloudFormationがどのようなリソースをサポートしているかは、次のページに記載されています
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/ReleaseHistory.html別ウィンドウで開きます

さらにAWS CloudFormation カスタムリソースを使うと、AWS CloudFormationがサポートしていないAWS リソースや、AWS 以外のリソースも管理できるようになり、利用の幅が広がります。

AWS CloudFormationの特徴

AWS CloudFormationの特徴は、以下のとおりです。

インフラの管理や制御が簡単になる

AWS CloudFormationは、テンプレートからスタックを作成してモデル化することで、その環境で利用するすべてのリソースを一括して管理したり、運用したりすることが可能になります。
AWS CloudFormationを使わない場合、開発者がそれぞれのリソースを個別に管理し、設定しなければなりません。それでは環境の構築に大きな時間や手間がかかりますし、人為的なミスも発生してしまいます。
AWS CloudFormationを利用すれば、開発時間や作業が増えたり、ミスが増えたりすることも抑えられるでしょう。

インフラをテキストファイルでモデル化できる

AWS CloudFormationのテンプレートは、テキストファイルで作成します。つまり、AWS CloudFormationを使えば、たくさんのインフラをテキストファイルでモデル化したうえで管理することが可能です。それによって、インフラを容易に取り扱うことができます。

料金は無料

AWS CloudFormationの利用料金は無料です。
ただし、AWS CloudFormationは単独で利用することはありません。Amazon EC2やAWS ELBなど、ほかのAWSリソースと併用します。そのため、利用しているほかのAWSリソースの料金が必要です。

AWS CloudFormationの利用例

AWS CloudFormationは、どのような場面で利用すると効果的なのでしょうか。

開発環境を構築するとき

開発環境を用意するときにAWS CloudFormationのテンプレートを作成しておけば、本番環境への移行が簡単です。同じ構成をすぐに再現できるので、時間も手間もかかりません。

環境の構築に時間や手間をかけたくないとき

よく使うリソースや設定を、「ベストプラクティス」としてひとまとめにしたテンプレートを作成しておけば、同じような仕組みの環境を素早く簡単に構築できます。
また、AWSの公式サイトにはいくつかのサンプルテンプレートが用意されています。インターネット上にも、たくさんのAWS CloudFormationのテンプレートがアップロードされているでしょう。それを編集して使えば、開発の手間を大きく減らすこともできます。

ほかの自動化サービスではサポートされないリソースを使うとき

AWS CloudFormationカスタムリソースを使えば、MicrosoftやSAPのような、ほかの自動化サービスではサポートされないものも含めて多くのリソースをサポートできます。そのため、利用できる機会はほかの自動化サービスに比べて大きいと言えるでしょう。

AWS CloudFormationを使うには

AWS CloudFormationを利用するときには、次の2つの方法があります。

AWSマネジメントコンソールにあるAWS CloudFormation Designerを使う方法
AWSマネジメントコンソールからJSON/YAML形式のテキストファイルでテンプレートを作成する方法

ここでは、AWS CloudFormationを利用する際のポイントについて説明します。

テンプレートとスタックを活用する

AWS CloudFormationを利用するときには、まずテンプレートを作成し、そこからスタックを作成します。

テンプレートとは、AWS CloudFormationで利用するソースを記述したものです。JSON形式、またはYAML形式のテキストファイルで作成します。

いきなり新しいテンプレートを作成するよりも、これまでに作成したテンプレートや、AWS公式のサンプルテンプレートなどをベースにして編集したものを使うのが一般的です。こうすると作成が簡単になるうえ、漏れや抜けがなくなります。

ただし、AWS CloudFormationはリージョンごとに条件が異なるため、別なリージョン向けのテンプレートは動作しないかもしれません。そのため、AWS公式で用意されているサンプルテンプレートは、リージョン別になっています。

スタックとは、テンプレートからプロビジョニングされたリソースの集合です。1つのテンプレートから1つのスタックが生成されます。テンプレートや、動作に必要なパラメーターを指定することで、スタックを作成することが可能です。

AWS CloudFormationでは、リソースはスタック単位で管理しているので、スタックの追加/削除によって、リソースの追加/削除を行うことができます。これは、開発中のトライアンドエラーの段階で、特に便利です。

初心者がAWS CloudFormationについて学ぶには

AWS CloudFormationは、使う前に、その特徴や使用方法を理解する必要があります。AWS CloudFormationについて学習するには、AWSの公式なライブラリやチュートリアルが参考になるでしょう。

AWS CloudFormation サンプルテンプレートライブラリ

AWSには、リージョンごとにAWS CloudFormationサンプルテンプレートが用意されています。サンプルテンプレートは、テンプレート作成方法について学習したり、実際にテンプレートを作成するときのベースとして使ったりすることが可能です。サンプルテンプレートはそのまま利用するのではなく、本番環境に合わせて編集してください。
サンプルテンプレートについては、次のページをご参照ください。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-sample-templates.html別ウィンドウで開きます

ウォークスルーのチュートリアル

AWSのユーザーガイドでは、AWS CloudFormationを使ったウォークスルーのチュートリアルが用意されています。基本的な操作や、よく使われるようなテンプレートをテーマにした説明です。長いですが、テンプレートを作成してスタックを生成し、サービスをデプロイするには、実際にどのような操作が必要か分かりやすく、参考になります。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/CHAP_Using.html別ウィンドウで開きます

チュートリアル動画

YouTubeには、AWS公式のAWS CloudFormationについてのチュートリアル動画もあります。気軽に見ることができ、初心者にも分かりやすくなっています。
https://www.youtube.com/watch?v=Omppm_YUG2g別ウィンドウで開きます

AWS CloudFormationのメリットやデメリット

AWS CloudFormationを利用することのメリットとデメリットについて説明します。

AWS CloudFormationを使うメリット

AWS CloudFormationを利用すると、次のようなメリットがあります。

  • 一度テンプレートを作成すれば、同じ構成や似た構成の環境を素早く簡単に再現でき、開発期間を短縮できる。
  • 使いやすい形、使い慣れたフォーマットを「ベストプラクティス」なテンプレートとして保存し、繰り返して利用できる。
  • テンプレートを利用すれば、必要な項目の抜けや漏れを防ぐことができる。
  • リソースはAWS CloudFormationが一括管理するので個別の管理が不要で、依存関係も自動的に管理してくれる。
  • 運用中もリソース管理の時間と手間を減らし、アプリケーションの開発に注力できる。
  • リソースのプロビジョニングや更新はAWS CloudFormationによって自動化されるので、エラーが発生しにくい。
  • 同じテンプレートやリソースを使うので、新しいシステムでも事前に運用コストを予測できる。

AWS CloudFormationを使うデメリット

AWS CloudFormationを利用することには、次のようなデメリットがあります。

  • AWS CloudFormationのテンプレートやスタックの作成方法など、使い方を理解し、操作を覚えなくてはならない。
  • 部分的な修正でも、再度テンプレートからスタックを作成して適用する必要があり、手動で修正するよりも時間がかかる。
  • 何度もスタックの作成と削除を繰り返していると、AWSのリソース作成上限に達する可能性がある。

※AWS CloudFormationのリソース作成上限については、次のページを参照してください。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html別ウィンドウで開きます

AWSを使って複数のシステムを構築するなら、AWS CoudFormationの導入を検討しよう

AWS CloudFormationは、システム構築までの時間や手間を大きく減らすことができる、とても便利なサービスです。特別な料金がかからないので、テスト環境と本番環境など、いくつかのシステムを構築するときには、気軽に試してみてはいかがでしょうか。

Amazon Web Services(AWS)は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る