CloudFormationとは?
EC2やELBといったAWSサービスの環境構築を自動化できるサービスです。
構築後すぐにリソースが稼働し始めます。どのリソースが変更されたか変更されてないか自動で判断します。作成したスタック自体には課金されませんがスタックで作成されたリソース自体には課金されるので気をつけましょう。
背景
- 同じような環境を複数構築するニーズが多いため。(開発環境、ステージング環境、プロダクション環境など)
- 必要な時にリソースを用意して、不要になったらすぐに破棄したいというニーズがある。
メリット
- 変更内容が管理しやすいです。
- 変更内容が見やすい。
必要なスキル
「世界中のトップエンジニアが公開しているテンプレート」を理解してカスタマイズできるスキル
基本機能
作成
- テンプレートに定義された構成でスタックを自動作成
- 並列でリソースを作成し依存関係がある場合は自動的に解決する。
変更
- スタックに前回のテンプレートとの差分を適用する。
- リソース停止時は無停止変更/再起動/再作成のいずれかが発生
- Change Setを作る事で差分の内容を事前に確認可能
削除
- 依存関係は解決しつつリソースを全て削除
- データストアはスナップショット取得/保持が可能
テンプレート
決まった形式(JSON/YAML形式)で指定します。可視性が高くコメントが記述できるYAMLで記述することが一般的です。テンプレートを動かすためにはS3にアップロードする必要があります。
記述内容
- パラメータの定義
- リソースの作成
- 実際の設定
- コスト判別しやすい。(コスト計算ツールに反映させることができる。)
- スタックの作成や削除がしやすいです。
テンプレートに誤りがあった場合
自動でロールバックしてくれるので安心できます。
スタック
CloudFormationのテンプレートから作成されたAWSサービスの集合体のこと。
流れ
- 記述
- アップロード
- スタックの作成
- リソースの作成と管理
書き方
拡張子はymlやyaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
AWSTemplateFormatVersion: '2010-09-09' Parameters: VPCStack: Type: String Default: xxxxxx Resources: EC2Server01: Type: AWS::EC2::Instance Propeties: ImageId: : !Ref EC2AMI Outputs: EC2Server01: Value: !Ref EC2xxxx Export: Name: !Sub |
主要項目
Parameters
スタック構築時にユーザーに指定させる値を指定
Resources
必須項目、起動するタイプやプロパティを指定します。
Outputs
スタック構築後に表示・取得した値や他のスタックとの連携のための出力を指定します。
この記事へのコメントはありません。