AWS ルール関数 - AWS CloudFormation

AWS ルール関数

ルールの条件またはアサーションで、Fn::EqualsFn::NotFn::RefAll などの組み込み関数を使用できます。条件プロパティにより、AWS CloudFormation によってアサーションが適用されるかどうかが決まります。条件が true に評価された場合、プロビジョニング済み製品の作成または更新時に、CloudFormation はアサーションを評価してパラメータ値が有効かどうか確認します。パラメータ値が有効ではない場合、CloudFormation はスタックを作成または更新しません。条件が false に評価される場合、CloudFormation はパラメータ値を確認せず、スタックオペレーションに進みます。

Fn::And

指定されたすべての条件が true に評価された場合は true を返します。条件のいずれかが false に評価された場合は false を返します。Fn::And は AND 演算子として機能します。含めることができる条件の最小数は 2 で、最大数は 10 です。

宣言

"Fn::And" : [{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" のような文字列のリスト。

文字列

文字列のリストに対して比較する、"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" のような文字列のリスト。

文字列

文字列のリストに対して比較する、"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 または 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