AWS ルール関数
ルールの条件またはアサーションで、Fn::Equals
、Fn::Not
、Fn::RefAll
などの組み込み関数を使用できます。条件プロパティにより、AWS CloudFormation によってアサーションが適用されるかどうかが決まります。条件が true
に評価された場合、プロビジョニング済み製品の作成または更新時に、CloudFormation はアサーションを評価してパラメータ値が有効かどうか確認します。パラメータ値が有効ではない場合、CloudFormation はスタックを作成または更新しません。条件が false
に評価される場合、CloudFormation はパラメータ値を確認せず、スタックオペレーションに進みます。
関数
Fn::And
指定されたすべての条件が true
に評価された場合は true
を返します。条件のいずれかが false
に評価された場合は false
を返します。Fn::And
は AND 演算子として機能します。含めることができる条件の最小数は 2 で、最大数は 10 です。
宣言
"Fn::And" : [{condition
}, {...
}]
パラメータ
- condition
-
true
またはfalse
に評価されるルール固有の組み込み関数。
例
次の例では、参照されるセキュリティグループの名前が true
と等しい場合、および sg-mysggroup
パラメータ値が InstanceType
または m1.large
の場合に、m1.small
と評価されます。
"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "m1.large", "m1.small" ], {"Ref": "InstanceType"} ] } ]
Fn::Contains
指定された文字列が文字列のリストの少なくとも 1 つの値と一致する場合に、true
を返します。
宣言
"Fn::Contains" : [[list_of_strings
], string
]
パラメータ
- list_of_strings
-
"A", "B", "C"
のような文字列のリスト。 - string
-
文字列のリストに対して比較する、
"A"
などの文字列。
例
次の関数は、true
パラメータ値がリスト (InstanceType
または m1.large
) に含まれる場合に、m1.small
と評価されます。
"Fn::Contains" : [ ["m1.large", "m1.small"], {"Ref" : "InstanceType"} ]
Fn::EachMemberEquals
指定された文字列がリストのすべての値と一致した場合に、true
を返します。
宣言
"Fn::EachMemberEquals" : [[list_of_strings
], string
]
パラメータ
- list_of_strings
-
"A", "B", "C"
のような文字列のリスト。 - string
-
文字列のリストに対して比較する、
"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
パラメータの値が と等しい場合に prod
EnvironmentType
に評価されます。
"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
または m1.large
の場合に、m1.small
と評価されます。
"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.small"], {"Ref" : "InstanceType"}]} ]
Fn::RefAll
指定したパラメータ型のすべての値を返します。
宣言
"Fn::RefAll" : "parameter_type
"
パラメータ
- parameter_type
-
AWS や
AWS::EC2::SecurityGroup::Id
などのAWS::EC2::VPC::Id
固有のパラメータ型。詳細については、「AWS CloudFormation ユーザーガイド」の「パラメータ」を参照してください。
例
次の関数は、スタックを作成または更新中のリージョンと 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 ユーザーガイド」の「パラメータ」を参照してください。
例
次の例では、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
-