24時間365日フルマネージドホスティングサービスのデイーネット

CloudFormationのテンプレートについて

元々は関西在住だったのですが、東京在住になりました。
人混みがあまり好きではない、ディーネットの谷口です。

今回は、AWSの環境をオートメーション化が行える CloudFormationで利用する
テンプレートファイルの書き方について簡単にまとめたいと思います。

CloudFormationは手作業で行っていた事をコード化し、
テンプレートする事で環境をコード管理する事が出来る便利なツールです。

テンプレートファイル

JSON/YAML形式の記述で書く必要があります。 今回は見やすく書きやすいYAML形式を利用します。 テンプレートの細かい書式は 公式を参照

VPC作成~インターネットゲートウェイをVPC接続

VPCを作成し、インターネットゲートウェイをVPCに接続する所までを
YAMLファイルで記載した場合は以下のような記載方法になります。

AWSTemplateFormatVersion: '2010-09-09'
Description: Test Stack

# 設定値
Mappings:
  StackConfig:
    VPC:
      CIDR: 10.0.0.0/16

# VPC作成
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !FindInMap [ StackConfig, VPC, CIDR ]
      Tags:
      - Key: Name
        Value: VPC

# インターネットゲートウェイ作成
  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
      - Key: Name
        Value: VPC-IGW

# インターネットゲートウェイをVPCに接続
  AttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway

AWSTemplateFormatVersion

テンプレートのフォーマットバージョンになります。
最新のテンプレートの形式バージョンは 2010-09-09 であり、現時点で唯一の有効な値です。
※2018年05月14日現在

テンプレートフォーマットのバージョン宣言の値は、リテラル文字列にする必要があります。

AWSTemplateFormatVersion: '2010-09-09'

Description

テンプレートに関する任意のコメントを含めることができます。
Description は、AWSTemplateFormatVersion セクションの後に記述する必要があります。
説明の宣言の値は、長さ 0 ~ 1024 バイトのリテラル文字列である必要があります。

Description: Test Stack

Parameters

パラメータを使用すると、テンプレート内で参照する事が可能になります。

Parameters: 
  InstanceTypeParameter: 
    Type: String
    Default: t2.micro
    AllowedValues: 
      - t2.micro
      - m1.small
      - m1.large

参照:Parameters Declaration

テンプレート内でのパラメーターの参照

パラメーターを参照するには、Ref 組み込み関数を使用します。
※「Parameters」に指定したユーザーによる入力値や「Resources」に指定したAWSリソースについて参照する関数です。

先ほど上記で宣言したパラメータを参照する場合は以下

Ref: InstanceTypeParameter

参照:Intrinsic Function Reference

Mappings

キーと名前付きの一連の値とが対応付けられます。
マップ内の値を取得する場合は、Fn::FindInMap 組み込み関数を使用します。

Mappings:
  StackConfig:
    VPC:
      CIDR: 10.0.0.0/16

マッピングした値を参照する場合は以下

!FindInMap [ StackConfig, VPC, CIDR ]

Resources

デプロイしたいAWSリソース、設定を宣言します。 次の例は、VPCを「10.0.0.0/16」で作成します。

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      Tags:
      - Key: Name
        Value: VPC

参照:AWS Resource Types Reference

CloudFormationを利用することでAWSリソースのセットアップが容易になります。
テンプレート化する事で、AWS構成の見える化と管理が出来るようになります。
次回はCloudFormationで作成した内容を更新した場合にどうなるか等を書ければと思います。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar