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