1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめてのAWS CloudFormationテンプレートを理解する

Last updated at Posted at 2020-09-11

はじめに

AWS CloudFormationを利用する場合、どういう構成になっているかを簡潔にまとめてみました。

テンプレートのファイル拡張子

テンプレートはJSONもしくはYAMLとなります。
JSONの場合は、jqコマンドが利用できるメリットがあります。
YAMLの場合は、コメントが書けるメリットがあります。
YAMLを利用する場合は、SAMの事を考慮に入れると、拡張子はyamlではなく、ymlとした方が無難です。

セクションの構成

テンプレートの要素の事をセクションと言います。
※コメントになっているのは、オプションです。

テンプレート.yml
AWSTemplateFormatVersion: 2010-09-09
# Description: Template for Akane

# Metadata:

# Parameters:

# Mappings:

# Conditions

# Transform

Resources:

# Outputs:

セクションの詳細

各セクションを詳しく見ていきましょう。

##1. Format version 形式バージョン (必須)

AWS CloudFormationテンプレートバージョンを記述する
形式バージョン: 2010-09-09
※現状唯一有効な値

テンプレート.yml
AWSTemplateFormatVersion: 2010-09-09

##2. Description 説明 (オプション)
テンプレートの説明を記述する

テンプレート.yml
Description: Template for Akane

##3. Metadata メタデータ (オプション)
テンプレートに関する追加情報を記述する

##4. Parameters パラメータ (オプション)
テンプレートで利用するパラメータを宣言する

テンプレート.yml
# パラメータを設定する
Parameters:
  パラメータ名:
    Description: 説明
    Type: String

# !Refで値を参照する
!Ref パラメータ名
パラメータ.json
{
  "Parameters":[
    {
      "ParameterKey": "パラメータ名",
      "ParameterValue": "値"
    }
  ]
}

##5. Mappings (オプション)
キーと値のマッピングを記述する

テンプレート.yml
Mappings: 
  論理名: 
    キー1: 
      Name: 値1
    キー2: 
      Name: 値2

##6. Conditions 条件 (オプション)
条件を宣言する
※ResourcesセクションまたはOutputsセクションでリソースの作成に利用

テンプレート.yml
Conditions:
  論理ID:
    組み込み関数
  • 組み込み関数
    • Fn::And
    • Fn::Equals
    • Fn::If
    • Fn::Not
    • Fn::Or

##7. Transform トランスフォーム (オプション)
マクロを指定する
※サーバレスアプリケーションや定型コンテンツ挿入などで利用する

テンプレート.yml
Transform: AWS::Serverless-2016-10-31

##8. Resources リソース (必須)
スタックを構成するAWSリソースを記述する

リソースタイプとリソースプロパティは、AWS リソースおよびプロパティタイプのリファレンスを利用すると良いです。

テンプレート.yml
Resources:
  論理ID:
    Type: リソースタイプ
    Properties: リソースプロパティ

##9. Outputs 出力 (オプション)
スタック構築後に表示・取得した値や他スタックとの連携のための値を記述する

テンプレート.yml
Outputs:
  論理ID:
    Description: Information about the value
    Value: !Ref Resourcesセクションの論理ID
    Export:
      Name: Export名

別のテンプレートからOutputsの値を参照する場合は、下記のようになります。

別のテンプレート.yml
!ImportValue Export名

AWS CLI

マネジメントコンソールからファイルをアップロードしたり、S3のURLを指定する事で実行できますが、パラメータ.jsonを利用する場合は、AWS CLIで行うことになります。

AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。

aws-cli.sh
# AWSリージョンを環境変数に指定(東京リージョン)
export AWS_DEFAULT_REGION=ap-northeast-1

# スタックの作成
aws cloudformation create-stack \
  --stack-name スタック名 \
  --template-body file://テンプレート.yaml \
  --cli-inpu-json file://パラメータ.json

# スタックの削除
aws cloudformation delete-stack \
  --stack-name スタック名 

サンプルテンプレート集

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?