この記事は、Japan AWS Top Engineers のアイレット株式会社 アジャイル事業部 データ分析基盤セクション 佐藤竜也さん監修です。
こんにちは。カスタマー支援事業部の古川です。

AWS CloudFormationの特徴や料金、使い方について解説します。

AWS CloudFormation とは

AWS CloudFormation(以下、CloudFormation)は、AWSが提供するInfrastructure as Code (IaC) サービスです。これは、インフラストラクチャをコードとして管理し、定義したテンプレートに基づいてAWSリソースを自動で構築・管理する仕組みです。
事前に定義したテンプレートに基づいて自動でリソースを作成してくれる上、変更や管理も安全で簡単にできるサービスが備わっています。

テンプレートに定義できること

テンプレートはコードで記述します。YAMLまたはJSON形式を選択できます。

  • リソースの種類と設定
    •  どのAWSリソースを使うか(EC2インスタンス、データベースなど)
    • どのような設定にするか(インスタンスタイプ、セキュリティグループなど)
  •  依存関係
    •  リソースAは、リソースBが作成された後に作成されるべき。という順番のこと。
    • 自身で設定することができますが、原則CloudFormationが自動で最適な順番通りに構築してくれます。
    • 一部、明示的に依存関係を宣言する必要があるリソースもあります。詳細はDependOn属性が必須の場合をご覧ください。

 

CloudFormationを使用するメリット

1.素早くグローバル展開

手動でAWSマネジメントコンソールを操作してリソースを作成するのは、非常に手間と時間がかかります。作成するリソースの数や種類によっては、作成中の待機時間だけで10分以上かかることも…。
CloudFormationを使用すると、一貫性と繰り返し性を保ちながら、複数のAWSアカウントと複数のリージョンにわたって共通のリソースセットを自動的かつ安全にプロビジョニングできます。自動構築のため、人為的な設定ミスが起こることもありません。
参考:CloudFormationユーザーガイド CloudFormationとは?

2.安全で簡単な変更

CloudFormationには、リソースを変更する前に変更が実行中のリソースに与える影響を確認できる機能があります。これを変更セットと言います。変更セットで確認してから更新を行うことで、実行中のリソースが急に停止してしまったり、消えてしまったりするリスクを未然に特定し、安全に更新ができます。
万が一エラーが発生した場合でも、自動的に既知の最後の動作状態に戻る仕組みを備えています。この機能により、システムのダウンタイムを最小限に抑え、安全な復旧を実現します。
変更は選択したリージョンとアカウントのスタックに自動的に素早く適用されます。1つ1つ操作する必要はありません。
参考:CloudFormationユーザーガイド Stack Setによるスタックの管理

3.バージョン管理

テンプレートをコードとして管理するため、Gitなどの標準のソースコード管理プロセスを使用してバージョン変更履歴を追跡できます。この機能によって、どのような変更が、いつ、誰に行われたかを正確に把握できます。
また、「開発環境」「ステージング環境」「本番環境」など環境を分けて保存することで、各環境を何度でも再現できるため、開発効率を上げることができます。
参考:CloudFormationユーザーガイド CloudFormationとは?

利用料金

CloudFormationの基本料金は無料です。
作成した AWS リソースに対しては、手動で作成した場合と同様の料金が発生します。 従量課金制で、使用した分だけ料金が発生します。

ただし、AWSとAlexaに関するリソース以外のサードパーティーサービスをテンプレートに含める場合には、料金が発生します。こちらが料金表です。

無料利用枠 1,000 件のハンドラーオペレーション/月/アカウント
ハンドラーオペレーション ハンドラーオペレーションごとに 0.0009 USD
ハンドラーオペレーション期間 1 秒あたり 0.00008 USD
※最初の 30 秒はオペレーションごとに追加費用なしで提供されます。1 つのオペレーションの使用時間が 30 秒より長い場合、30 秒のしきい値を超えた部分に対し毎秒 0.00008 USD が課金されます。

ハンドラーオペレーションとは、リソースに対する 作成 、更新、削除、読み取り、一覧表示のアクションを指します。つまり表の無料利用枠とは、1ヶ月に、1つのアカウントで、1000回まで無料で操作できるということです。それ以降は1回の操作ごとに、0.0009USDかかります。
ハンドラーオペレーション期間とは、1回の処理にかかる時間のことです。1000回の無料利用枠に関わらず、30秒を超えた部分については1秒ごとに0.00008USDかかります。
詳しくは AWS CloudFormation 料金 をご覧ください。

導入事例

CloudFormationを活用し、リソースを全世界に素早く展開する活用事例をご紹介します。
参考:AWS 導入事例

課題:AWSでシステム構築を行なっていたある企業は、日本で構築した環境を、各地域の法的要件を満たしながら、欧州、タイ、インドの AWS リージョンに展開する必要がありました。
地域によって少しずつ設定を変えながら、全てのリソースを手動で構築するには設定ミスのリスクに加え、多くの手間と時間がかかることが課題でした。

結果: CloudFormationを活用し、各地域の法的要件に合わせた微調整を行うことで安全にコードを管理できました。各リージョンに同一のサーバー環境設定を展開できるため、通常、リージョンごとに 2 ~ 3 か月かかるデプロイが、わずか 2 週間で完了しました。さらにAWSが提供する継続的な値下げやSavings Plansを通じて、よりコストの最適化を目指しています。

最後に

最後まで読んでいただきありがとうございました。CloudFormationは、インフラストラクチャをコードとして保存し、スムーズに複製や変更を可能にする強力なサービスです。CloudFormationを活用することで手動作業から解放され、より自身の業務に集中できるようになります。
ぜひ他の25卒のブログリレーもご覧ください!