AWS CloudFormation 入門

概要

  • CloudFormationは、今までマネジメントコンソールやawscliでやってたシステム構築を自動化する仕組み
  • VPCつくってSubnetつくってルートテーブル作ってEC2つくって...の一連の流れが一発で起動できる
  • 自動化の設定は「テンプレート」と呼ばれるJSONファイルに記述する
  • VPC, Subnet, EC2など作成するものは「リソース」と呼ぶ
  • リソースの集まりをは「スタック」と呼ばれる
  • CloudFormationはスタック単位でシステム構築、スタック単位で削除できる

マネジメントコンソールでやってみる流れ

  • ローカルでテンプレートを書く
  • マネジメントコンソール>AWS Cloud Formation
  • スタックの作成
  • 作成したテンプレートをアップロード(S3)して保存
  • スタックの起動
  • できたか確認
    • Eventsタブで実行結果が確認できる
    • 途中で失敗しても、スタック全体がロールバックされるので安心

テンプレートの基本構造

Resourcesだけ必須。とりあえず最初はResourcesだけ書けるようになろう。

{
  "AWSTemplateFormatVersion" : "version date",

  "Description" : "JSON string",

  "Parameters" : {
  },

  "Mappings" : {
  },

  "Conditions" : {
  },

  "Resources" : {
  },

  "Outputs" : {
  }
}
  • AWSTemplateFormatVersion
    • テンプレートが準拠しているAWSCloudFormationのテンプレートバージョン
  • Description
    • テンプレートの説明
    • AWSTemplateFormatVersionの後に書く必要がある
  • Parameters
    • スタック作成/更新時に、外から渡すことができるパラメータの定義
    • テンプレート内から Ref演算子 を使って参照できる
    • パラメータの名前は自分で決めることができる(予約語以外。制限
  • Mappings
    • テンプレート内から参照できるkey-value構造のパラメータ定義
    • Fn::FindInMap組み込み関数を使ってここで定義したvalueを参照できる
  • Resources
    • VPC, Subnet, EC2など、リソースの設定
  • Outputs
    • テンプレートを実行した結果をどう出力するかの設定
    • 組み込み関数などを使って情報を整形する
    • たとえば、CloudFormationでたち上げたサイトのURLを返すようにしておいて、awsコマンドで実行したらすぐにサイトのトップページにアクセスできる

テンプレートの書き方を学ぶ

Resourcesのパラメータをどう見つければ良いか

サンプルで勉強する

テンプレート内で使える組み込み関数を知る

条件分岐も書くことができるので、EnvironmentTypeをみてprodなら本番環境、testならテスト環境を立ち上げるなどできる。