これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『AWS CloudFormation ユーザーガイド』を参照してください。
ルール関数
ルール関数は、CloudFormation テンプレートの Rules セクションでのみ機能する特殊な関数です。これらの関数は、カスタムロジックを使用してパラメータ値を検証するのに役立ちます。すべての検証は、CloudFormation がリソースを作成または更新する前に行われます。
ルールは、標準のパラメータ制約が不十分な場合に便利です。例えば、SSL が有効になっている場合は、証明書とドメイン名の両方を指定する必要があります。ルールを使用すると、これらの依存関係を確実に満たすことができます。
ルールの条件またはアサーションで、Fn::Equals、Fn::Not、Fn::RefAll などの組み込み関数を使用できます。条件プロパティによって、CloudFormation がアサーションを適用するかどうかが決まります。条件が true に評価された場合、スタックの作成または更新時に、CloudFormation はアサーションを評価してパラメータ値が有効かどうか確認します。パラメータ値が有効ではない場合、CloudFormation はスタックを作成または更新しません。条件が false に評価される場合、CloudFormation はパラメータ値を確認せず、スタックオペレーションに進みます。
テンプレートでルールを初めて使用する場合は、まず「AWS CloudFormation ユーザーガイド」の「CloudFormation テンプレートの Rules 構文」トピックを確認することをお勧めします。
トピック
Fn::And
指定されたすべての条件が true に評価された場合は true を返します。条件のいずれかが false に評価された場合は false を返します。Fn::And は AND 演算子として機能します。含めることができる条件の最小数は 2 で、最大数は 10 です。
宣言
"Fn::And" : [{condition}, {...}]
パラメータ
- condition
-
trueまたはfalseに評価されるルール固有の組み込み関数。
例
次の例では、参照されるセキュリティグループの名前が true と等しい場合、および sg-mysggroup パラメータ値が InstanceType または t3.large の場合に、t3.small と評価されます。
"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "t3.large", "t3.small" ], {"Ref": "InstanceType"} ] } ]
Fn::Contains
指定された文字列が文字列のリストの少なくとも 1 つの値と一致する場合に、true を返します。
宣言
"Fn::Contains" : [[list_of_strings], string]
パラメータ
- list_of_strings
-
"A", "B", "C"のような文字列のリスト。 - 文字列
-
文字列のリストに対して比較する、
"A"などの文字列。
例
次の関数は、true パラメータ値がリスト (InstanceType または t3.large) に含まれる場合に、t3.small と評価されます。
"Fn::Contains" : [ ["t3.large", "t3.small"], {"Ref" : "InstanceType"} ]
Fn::EachMemberEquals
指定された文字列がリストのすべての値と一致した場合に、true を返します。
宣言
"Fn::EachMemberEquals" : [[list_of_strings], string]
パラメータ
- list_of_strings
-
"A", "B", "C"のような文字列のリスト。 - 文字列
-
文字列のリストに対して比較する、
"A"などの文字列。
例
次の関数は、タイプ AWS::EC2::VPC::Id のすべてのパラメータの Department タグが IT という値を持つ場合に true を返します。
"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]
Fn::EachMemberIn
文字列のリストの各メンバーが、文字列の 2 番目のリストの少なくとも 1 つの値に一致する場合に、true を返します。
宣言
"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]
パラメータ
- strings_to_check
-
"A", "B", "C"のような文字列のリスト。CloudFormation はstrings_to_checkパラメータの各メンバーがstrings_to_matchパラメータにあるかどうか確認します。 - strings_to_match
-
"A", "B", "C"のような文字列のリスト。strings_to_matchパラメータの各メンバーは、strings_to_checkパラメータのメンバーに対して比較されます。
例
次の関数は、有効な仮想プライベートクラウド (VPC) にあるサブネットをユーザーが指定するかどうかを確認します。VPC は、ユーザーがスタックを操作しているアカウントおよびリージョンに存在する必要があります。関数は、AWS::EC2::Subnet::Id タイプのすべてのパラメータに適用されます。
"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]
Fn::Equals
2 つの値を比較し、同じかどうかを判断します。2 つの値が同じ場合は true を返し、同じでない場合は false を返します。
宣言
"Fn::Equals" : ["value_1", "value_2"]
パラメータ
value-
別の値と比較する任意のタイプの値。
例
次の例では、true パラメータの値が と等しい場合に prodEnvironmentType に評価されます。
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]
Fn::Not
true に評価される条件に対しては、false を返します。false に評価される条件に対しては、true を返します。Fn::Not は NOT 演算子として機能します。
宣言
"Fn::Not" : [{condition}]
パラメータ
condition-
trueまたはfalseに評価されるルール固有の組み込み関数。
例
次の例では、EnvironmentType パラメータの値が prod と等しくない場合に true に評価されます。
"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]
Fn::Or
指定された条件のいずれかが true に評価された場合は true を返します。すべての条件が false に評価された場合は false を返します。Fn::Or は OR 演算子として機能します。含めることができる条件の最小数は 2 で、最大数は 10 です。
宣言
"Fn::Or" : [{condition}, {...}]
パラメータ
condition-
trueまたはfalseに評価されるルール固有の組み込み関数。
例
次の例では、参照されるセキュリティグループの名前が true と等しい場合、または sg-mysggroup パラメータ値が InstanceType または t3.large の場合に、t3.small と評価されます。
"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["t3.large", "t3.small"], {"Ref" : "InstanceType"}]} ]
Fn::RefAll
指定したパラメータ型のすべての値を返します。
宣言
"Fn::RefAll" : "parameter_type"
パラメータ
- parameter_type
-
AWS や
AWS::EC2::SecurityGroup::IdなどのAWS::EC2::VPC::Id固有のパラメータ型。詳細については、『AWS CloudFormation ユーザーガイド』の「サポートされている AWS 固有のパラメータタイプ」を参照してください。
例
次の関数は、スタックを作成または更新中のリージョンと AWS アカウント のすべての VPC ID のリストを返します。
"Fn::RefAll" : "AWS::EC2::VPC::Id"
Fn::ValueOf
特定のパラメータおよび属性の値の属性値またはリストを返します。
宣言
"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]
パラメータ
- 属性
-
値の取得元となる属性の名前。属性の詳細については、「サポートされている属性」を参照してください。
- parameter_logical_id
-
属性値の取得元となるパラメータの名前。パラメータは、テンプレートの [
Parameters] セクションで宣言する必要があります。
例
次の例では、ElbVpc パラメータで指定された VPC の Department タグの値を返します:
"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]
パラメータに複数の値を指定する場合、Fn::ValueOf 関数はリストを返すことができます。例えば、複数のサブネットを指定して、各メンバーが特定のサブネットのアベイラビリティゾーンであるアベイラビリティゾーンのリストを取得できます。
"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]
Fn::ValueOfAll
特定のパラメータ型および属性のすべての属性値のリストを返します。
宣言
"Fn::ValueOfAll" : ["parameter_type", "attribute"]
パラメータ
- 属性
-
値の取得元となる属性の名前。属性の詳細については、「サポートされている属性」を参照してください。
- parameter_type
-
AWS や
AWS::EC2::SecurityGroup::IdなどのAWS::EC2::VPC::Id固有のパラメータ型。詳細については、『AWS CloudFormation ユーザーガイド』の「サポートされている AWS 固有のパラメータタイプ」を参照してください。
例
次の例では、Fn::ValueOfAll 関数は値のリストを返します。各メンバーは、そのタグを持つ VPC の Department タグ値です。
"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]
サポートされている関数
Fn::ValueOf および Fn::ValueOfAll 関数内で他の関数を使用することはできません。ただし、他のすべてのルール固有の組み込み関数内では、以下の関数を使用できます。
-
Ref -
その他のルール固有の組み込み関数
サポートされている属性
次の一覧に、特定のリソースおよびパラメータ型に対して取得できる属性値を示します。
AWS::EC2::VPC::Idパラメータタイプまたは VPC ID-
-
DefaultNetworkAcl
-
DefaultSecurityGroup
-
タグ。
tag_key
-
AWS::EC2::Subnet::Idパラメータタイプまたはサブネット ID-
-
AvailabilityZone
-
タグ。
tag_key -
VpcId
-
AWS::EC2::SecurityGroup::Idパラメータタイプまたはセキュリティグループ ID-
-
タグ。
tag_key
-