템플릿 구조
템플릿은 AWS 인프라를 설명하는 JSON 또는 YAML 형식의 텍스트 파일입니다. 다음 예제에서는 AWS CloudFormation 템플릿 구조 및 관련 섹션을 보여줍니다.
JSON
다음 예제에서는 JSON 형식의 템플릿 조각을 보여줍니다.
{ "AWSTemplateFormatVersion" : "
version date
", "Description" : "JSON string
", "Metadata" : {template metadata
}, "Parameters" : {set of parameters
}, "Rules" : {set of rules
}, "Mappings" : {set of mappings
}, "Conditions" : {set of conditions
}, "Transform" : {set of transforms
}, "Resources" : {set of resources
}, "Outputs" : {set of outputs
} }
YAML
다음 예제에서는 YAML 형식의 템플릿 조각을 보여줍니다.
--- AWSTemplateFormatVersion: "
version date
" Description:String
Metadata:template metadata
Parameters:set of parameters
Rules:set of rules
Mappings:set of mappings
Conditions:set of conditions
Transform:set of transforms
Resources:set of resources
Outputs:set of outputs
템플릿 섹션
템플릿에는 여러 주요 섹션이 포함되어 있습니다. Resources
섹션만 필수 섹션입니다. 템플릿의 일부 섹션은 임의 순서대로 배열할 수 있습니다. 하지만 템플릿을 작성할 때 한 섹션의 값이 이전 섹션의 값을 참조할 수도 있으므로 다음 목록의 논리적 순서를 사용하는 것이 유용할 수 있습니다.
- 포맷 버전(선택 사항)
-
템플릿이 따르는 AWS CloudFormation 템플릿 버전입니다. 템플릿 포맷 버전은 API 또는 WSDL 버전과 같지 않습니다. 템플릿 포맷 버전은 API 및 WSDL 버전과 상관없이 변경될 수 있습니다.
- Description(선택 사항)
-
템플릿을 설명하는 텍스트 문자열입니다. 이 섹션은 항상 템플릿 포맷 버전 섹션 다음에 이어져야 합니다.
- Metadata(선택 사항)
-
템플릿에 대한 추가 정보를 제공하는 객체입니다.
- Parameters(선택 사항)
-
(스택을 생성하거나 업데이트할 때) 실행 시간에 템플릿에 전달하는 값입니다. 템플릿의
Resources
및Outputs
섹션에서 파라미터를 참조할 수 있습니다. - 규칙(선택 사항)
-
스택을 생성하거나 업데이트할 때 템플릿에 전달된 파라미터 또는 파라미터의 조합을 검증합니다.
- Mappings(선택 사항)
-
조건부 파라미터 값을 지정하는 데 사용할 수 있는 키와 관련 값의 매핑으로, 조회 테이블과 비슷합니다.
Resources
및Outputs
섹션의 Fn::FindInMap 내장 함수를 사용하여 키를 해당 값으로 매핑할 수 있습니다. - Conditions(선택 사항)
-
스택 생성 또는 업데이트 시 특정 리소스 속성에 값이 할당되는지 또는 특정 리소스가 생성되는지 여부를 제어하는 조건입니다. 예를 들면 스택이 프로덕션용인지 테스트 환경용인지에 따라 달라지는 리소스를 조건부로 생성할 수 있습니다.
- Transform(선택 사항)
-
서버리스 애플리케이션(Lambda 기반 애플리케이션이라고도 함)의 경우 사용할 AWS Serverless Application Model(AWS SAM)
의 버전을 지정합니다. 변환을 지정할 경우 AWS SAM 구문을 사용하여 템플릿에 리소스를 선언할 수 있습니다. 이 모델은 사용할 수 있는 구문과 처리 방식을 정의합니다. 또한
AWS::Include
변환을 사용하여 기본 AWS CloudFormation 템플릿과는 별도로 저장되는 템플릿 코드 조각으로 작업할 수 있습니다. Amazon S3 버킷에 코드 조각 파일을 저장한 다음 여러 템플릿 간에 함수를 재사용할 수 있습니다. - Resources(필수)
-
Amazon Elastic Compute Cloud 인스턴스 또는 Amazon Simple Storage Service 버킷 같은 스택 리소스 및 해당 속성을 지정합니다. 템플릿의
Resources
및Outputs
섹션에서 리소스를 참조할 수 있습니다. - Outputs(선택 사항)
-
스택의 속성을 볼 때마다 반환되는 값을 설명합니다. 예를 들면 S3 버킷 이름 출력을 선언하고 나서
aws cloudformation describe-stacks
AWS CLI 명령을 호출하여 해당 이름을 볼 수 있습니다.
참고
템플릿을 작성할 때 여러 리소스 섹션을 사용하는 것과 같이 중복된 주요 섹션을 사용하지 않도록 합니다. CloudFormation은 템플릿을 수락할 수 있지만 템플릿을 처리할 때 정의되지 않은 동작을 하고 리소스를 잘못 프로비저닝하거나 설명할 수 없는 오류를 반환할 수 있습니다.