かきかけ
まずCloudFormationのテンプレートを見たときに最初に絶望する!Refや!Joinなどの組み込み関数を理解する。
cfn初心者なので誤り不足があっても許してください・・・。
・YAML形式で記載しています。
関数名 | 概要 | 備考 |
---|---|---|
Ref | [Parameters](指定値)、[Resources](戻り値)、[擬似パラメータ]を参照 | スタック内で参照 |
ImportValue | 他スタックのOutputsパラメータを参照 | スタック外から参照 |
FindInMap | [Mappings]セクションのSecondLevelKeyに割り当てられた値を参照 | スタック内で参照 |
GetAtt | リソースで取得可能な属性の値を参照 | スタック内で参照 |
GetAZs | アカウント内のデフォルトサブネットを参照 | スタック外から参照 |
■形式
!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]
■パラメータ
・MapName:マッピングの論理名
・TopLevelKey:キー
・SecondLevelKey:バリュー
■戻り値:
SecondLevelKey に割り当てられた値。
■戻り値:
属性の値
■戻り値:
リージョンのアベイラビリティーゾーンのリスト
・デフォルトサブネットが1つでも作成されている場合は、デフォルトサブネットが作成されているAZのみ返す。
・デフォルトサブネットが1つも作成されていない場合は、全てのAZを返す。
アカウント作成後にAZが増えたか中途半端にデフォルトサブネットを削除した場合、全てのAZが返らないこととなります。
配列で返すため、!Selectや!Joinと組み合わせて利用することが殆どかと思います。
関数名 | 概要 | 備考 |
---|---|---|
Join | カンマ区切りの配列(リスト)を特定の区切り文字で区切って1つの値にする。 | |
Select | 配列(リスト)から1 つの値を抽出する。 | |
Split | 文字列を区切り文字で分割しリスト化する。 | |
Sub | 文字列と変数を結合して1つの値にする。 |
②Sub内で変数を定義する場合
・[String]には疑似パラメータやRef組み込み関数を${}形式で利用可能${AWS::Region}…など
・[String]には2つ目の引数で定義した変数を利用可能(複数定義できる)
!Sub
- String
- Var1Name: Var1Value
Var2Name: Var2Value
■パラメータ
・String:文字列と変数を${}形式で指定する。
・Var1Name:Sub関数内で定義する変数名
・Var2Value:Sub関数内で定義する変数の値
そのうち覚える?条件複雑にすると管理/読み解きも大変なので極力使いたくないな
■形式
!Condition conditionName
■パラメータ
・conditionName:[Conditions]セクションの論理IDを指定します。
■パラメータ
・Logical ID:論理ID
・Intrinsic function:下記関数を用い、条件を記載します。
関数名 | 構文 | 概要 | 備考 |
---|---|---|---|
And | !And [条件1 ,条件2…] | 指定されたすべての条件が true に評価された場合は true を返します。 条件のいずれかが false に評価された場合は false を返します | |
Equals | !Equals [比較する値1, 比較する値2] | 2 つの値が等しいかどうかを比較します。2 つの値が同じ場合は true を返し、同じでない場合は false を返します。 | |
If | !If [条件式, trueの値, falseの値] | 指定された条件が true の場合は 2つ目の引数の値を返し、指定された条件が false の場合はもう 3つ目の引数の値を返します。 メタデータ属性、更新ポリシー属性、 [Resources] セクションと [Outputs]セクションのプロパティ値でサポートされています。 対応するプロパティを削除するために、戻り値として AWS::NoValue 擬似パラメーターを使用できます。 | |
Not | !Not [条件式] | false と評価された条件に対しては、true を返し、true と評価された条件に対しては、false を返します。 | |
Or | !Or [条件1 ,条件2…] | 指定された条件のいずれかが true に評価された場合は true を返します。条件のすべてが false に評価された場合は false を返します。 |