규칙 함수 - AWS CloudFormation

새로운 AWS CloudFormation 템플릿 참조 안내서입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 AWS CloudFormation 사용 설명서를 참조하세요.

규칙 함수

규칙 함수는 CloudFormation 템플릿의 Rules 섹션에서만 작동하는 특수 함수입니다. 이러한 함수는 사용자 지정 로직을 사용하여 파라미터 값을 검증하는 데 도움이 됩니다. 모든 검증은 CloudFormation에서 리소스를 생성하거나 업데이트하기 전에 수행됩니다.

규칙은 표준 파라미터 제약 조건이 충분하지 않은 경우에 유용합니다. 예를 들어 SSL이 활성화된 경우 인증서와 도메인 이름을 모두 제공해야 합니다. 규칙을 통해 이러한 종속성이 충족되도록 보장할 수 있습니다.

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

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

문자열 목록의 각 멤버가 두 번째 문자열 목록의 값과 하나 이상 일치하면 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 파라미터 값이 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 함수는 값 목록을 반환합니다. 여기에서 각 멤버는 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