템플릿 제약 조건 규칙 - AWS Service Catalog

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

템플릿 제약 조건 규칙

AWS Service Catalog 포트폴리오의 템플릿 제약 조건을 정의하는 규칙은 최종 사용자가 템플릿을 사용할 수 있는 시기와 이들이 사용하려는 제품을 생성하기 위해 사용한 AWS CloudFormation 템플릿에 선언된 파라미터에 대해 지정할 수 있는 값을 설명합니다. 규칙은 최종 사용자가 실수로 잘못된 값을 지정하지 못하게 한다는 점에서 유용합니다. 예를 들어 최종 사용자가 해당 VPC에서 유효한 서브넷을 지정했는지, 아니면 테스트 환경에서 m1.small 인스턴스 유형을 사용했는지 확인하기 위한 규칙을 추가할 수 있습니다. AWS CloudFormation은 제품에 대한 리소스를 생성하기 전에 규칙을 사용하여 파라미터 값의 유효성을 검사합니다.

각 규칙은 규칙 조건(선택 사항)과 어설션(필수)이라는 두 가지 속성으로 구성됩니다. 규칙 조건은 규칙이 적용되는 시기를 결정합니다. 어설션은 사용자가 특정 파라미터에 대해 지정할 수 있는 값을 설명합니다. 규칙 조건을 정의하지 않은 경우, 규칙의 어설션이 항상 적용됩니다. 규칙 조건과 어설션을 정의하려면 템플릿의 Rules 섹션에서만 사용할 수 있는 함수인 규칙 관련 내장 함수를 사용합니다. 함수를 중첩할 수 있지만, 규칙 조건 또는 어설션의 최종 결과가 true이거나 false여야 합니다.

한 예로 Parameters 섹션에서 VPC와 서브넷 파라미터를 선언했다고 가정하겠습니다. 지정된 서브넷이 특정 VPC에 있음을 확인하는 규칙을 만들 수 있습니다. 따라서 사용자가 VPC를 지정하면 AWS CloudFormation이 스택을 만들거나 업데이트하기 전에 어설션을 평가하여 서브넷 파라미터 값이 해당 VPC에 있는지 여부를 확인합니다. 파라미터 값이 유효하지 않으면 AWS CloudFormation은 스택을 만들거나 업데이트하는 작업에 즉시 실패합니다. 사용자가 VPC를 지정하지 않은 경우, AWS CloudFormation은 서브넷 파라미터 값을 확인하지 않습니다.

명령문

템플릿의 Rules 섹션은 키 이름 Rules와 그 뒤에 이어지는 콜론 하나로 구성됩니다. 중괄호가 모든 규칙 선언을 묶습니다. 규칙을 여러 개 선언할 경우 쉼표로 구분됩니다. 각 규칙에 대해 인용 부호 안의 논리적 이름과 그 뒤에 오는 콜론, 그리고 규칙 조건과 어설션을 묶는 중괄호를 선언합니다.

규칙에는 RuleCondition 속성이 포함될 수 있으며, Assertions 속성이 포함되어야 합니다. 각 규칙에 대해 규칙 조건을 하나만 정의할 수 있으며, Assertions 속성 내에서 하나 이상의 어설션을 정의할 수 있습니다. 다음 가상 템플릿에 나와 있듯이 규칙 관련 내장 함수를 사용하여 규칙 조건과 어설션을 정의합니다.

"Rules":{ "Rule01":{ "RuleCondition":{ "Rule-specific intrinsic function" }, "Assertions":[ { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" }, { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" } ] }, "Rule02":{ "Assertions":[ { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" } ] } }

가상 템플릿은 Rule01Rule02라는 두 개의 규칙이 포함된 Rules 섹션을 보여줍니다. Rule01에는 규칙 조건 하나와 어설션 두 개가 포함되어 있습니다. 규칙 조건의 함수가 true로 평가되면, 각 어설션의 두 함수가 평가되고 적용됩니다. 규칙 조건이 false이면 규칙이 적용되지 않습니다. Rule02에는 규칙 조건이 없기 때문에 항상 적용됩니다. 이는 어설션 하나가 항상 평가되고 적용됨을 뜻합니다.

규칙 조건과 어설션을 정의하는 규칙 관련 내장 함수에 대한 자세한 내용은 AWS CloudFormation 사용 설명서AWS 규칙 함수 섹션을 참조하세요.

예: 조건부로 파라미터 값 확인

다음 두 규칙은 InstanceType 파라미터의 값을 확인합니다. 환경 파라미터(test 또는 prod)의 값에 따라 사용자는 InstanceType 파라미터에 대해 m1.small 또는 m1.large를 지정해야 합니다. InstanceTypeEnvironment 파라미터는 동일한 템플릿의 Parameters 섹션에서 선언해야 합니다.

"Rules" : { "testInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the test environment, the instance type must be m1.small" } ] }, "prodInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the prod environment, the instance type must be m1.large" } ] } }