AWS 규칙 함수 - AWS CloudFormation

AWS 규칙 함수

규칙의 조건 또는 어설션에서 Fn::Equals, Fn::NotFn::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

지정된 문자열이 문자열 목록의 값과 하나 이상 일치하면 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

문자열 목록의 각 멤버가 두 번째 문자열 목록의 값과 하나 이상 일치하면 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 파라미터의 멤버와 비교합니다.

다음 함수는 사용자가 유효한 Virtual Private Cloud(VPC)에 있는 서브넷을 지정하는지 여부를 확인합니다. VPC는 사용자가 스택을 작업하는 계정과 리전에 있어야 합니다. 이 함수는 AWS::EC2::Subnet::Id 유형의 모든 파라미터에 적용됩니다.

"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]

Fn::Equals

두 값을 비교하여 동일한지 여부를 확인합니다. 두 값이 같으면 true를 반환하고 다르면 false를 반환합니다.

선언

"Fn::Equals" : ["value_1", "value_2"]

파라미터

value

다른 값과 비교하려는 유형의 값입니다.

다음 예제가 true로 평가되려면 EnvironmentType 파라미터의 값이 prod와 같아야 합니다.

"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]

Fn::Not

false로 평가되는 조건에 대해 true를 반환하고 true로 평가되는 조건에 대해 false를 반환합니다. Fn::Not는 NOT 연산자 역할을 합니다.

선언

"Fn::Not" : [{condition}]

파라미터

condition

true 또는 false로 평가되는 규칙 관련 내장 함수입니다.

다음 예제가 true로 평가되려면 EnvironmentType 파라미터의 값이 prod와 같지 않아야 합니다.

"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 사용 설명서Parameters를 참조하세요.

다음 함수는 스택이 생성되거나 업데이트되는 리전 및 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 사용 설명서Parameters를 참조하세요.

다음 예제에서 Fn::ValueOfAll 함수는 값 목록을 반환합니다. 여기에서 각 멤버는 Department 태그가 있는 VPC의 해당 태그 값입니다.

"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]

지원되는 함수

Fn::ValueOfFn::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