LoginSignup
0
2

More than 5 years have passed since last update.

[AWS]CloudFormationテンプレート の概観

Last updated at Posted at 2018-12-10

CloudFormationテンプレート の概観

書いている人

CloudFormationをこれから使っていく初心者です。
自分の理解の整理のために書いていますので、間違っていることも多いと思います。
指摘などしていただけると助かります。

Overview

Refalence(本家)

  • 本家リファレンス
  • 情報が古くなっている可能性、誤解がある可能性があります。
  • こちらの記事はあくまで参考として、本家のリファレンスを活用する補助程度にご利用ください。

用語(テンプレート要素)

  • Metadata メタデータ
    • オプションの Metadata セクションを使用して、テンプレートの詳細を提供する
    • 特定のリソースについてのテンプレートの実装の詳細を含めるなど
  • Parameters パラメータ
    • 定義したパラメータは、スタック作成時に動的に指定し、各リソースのパラメータに利用することができます。
    • パラメーターは最大 60 個です。
    • 正規表現を使ったチェックも可能
    • AWS固有のパラメータ型なども指定可能
  • Mappings マッピング
    • キーと名前付きの一連の値とが対応付けられます。
    • たとえば、リージョンに基づく値を設定する場合、リージョン名をキーとして必要な値を保持するマッピングを作成します。
  • 条件 Conditions
    • 条件の結果に応じてリソースを作成することができます。
    • テスト環境と本稼働環境など、異なるコンテキストでリソースを作成できるテンプレートを再利用する場合に、条件を使用することがあります。
    • Parametersを参照し、Resources および Outputsを操作します。
  • 変換 Transform
    • AWS インフランストラクチャの式をコードとして要約し、テンプレートコンポーネントを再利用できるようにすることで、テンプレート作成を簡素化します。
    • 変換の種類として、AWS::Serverless や AWS::Include をサポートしています。
    • AWS::Include 変換では、メインの AWS CloudFormation テンプレートとは別に保存されているテンプレートスニペットを利用します。
    • AWS::Include
    • テンプレートのトップレベルに配置する場合と、リソース等のセクションに埋め込む場合があります
  • リソース
    • スタックに含める Amazon EC2 インスタンスや Amazon S3 バケットなどの AWS リソースを宣言します。
  • アウトプット
    • 欲しい結果を指定すればまとめて表示してくれる
    • ほかのスタックにインポートすることもできる。
    • 1 つのテンプレートで宣言できる出力は最大 60 個です。

テンプレートの作成で使える関数

主な関数

param discription
Fn::Base64 入力文字列の Base64 表現を返します
Fn::FindInMap Mappings セクションで宣言された キーに対応する値を返します。
Fn::GetAtt テンプレートのリソースから属性の値を返します。
Fn::GetAZs 指定されたリージョンのアベイラビリティーゾーンを含んだ配列を返します。呼び出し元のユーザーのアクセス権に適応するテンプレートを作成できます。
Fn::ImportValue 別のスタックによってエクスポートされた出力の値を返します。別の AWS CloudFormation スタックのリソース出力を参照する
Fn::Join 一連の値を特定の区切り文字で区切って 1 つの値に追加します。
Fn::Select リストから 1 つのオブジェクトを返します。
Fn::Split 区切り記号で分割の場所を指定し、文字列のリストから要素を選択できるようにします
Fn::Sub 特定した値の入力文字列にある変数の代わりになります。
Ref 指定したパラメーターまたはリソースの値を返します。

条件関数

param discription
Fn::Not false に評価される条件に対しては、true を返します。
Fn::And 指定されたすべての条件が true に評価された場合は true を返します。
Fn::Or 指定された条件のいずれかが true に評価された場合は true を返します。
Fn::Equals 2 つの値が等しいかどうかを比較します。
Fn::If 指定されたリストの0番目にある条件の評価に合わせて、リストの1番目か2番目の値を返します

参考

ヘルパースクリプト

  • スタックの作成・更新・削除などのイベントに合わせて EC2 インスタンス内部で処理を実行することができる
  • イベント毎に発生させる処理の中身も指定出来る

疑似パラメータ

  • パラメーターと同じように、Ref 関数の引数として使用します。
param discription
AWS::AccountId スタックが作成されているアカウントの AWS アカウント ID
AWS::NotificationARNs スタックの通知 Amazon リソースネーム (ARN) のリスト
AWS::NoValue 組み込み関数(Fn::If)の戻り値として指定すると、条件が false に評価された場合、対応するリソースプロパティを削除します。
AWS::Partition リソースがあるパーティションを返します。
AWS::Region AWS リージョンを表す文字列を返します。
AWS::StackId スタックの ID を返します。
AWS::StackName スタックの名前を返します。
AWS::URLSuffix ドメインのサフィックスを返します。
0
2
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
0
2