AWS SAM 템플릿 구조 - AWS Serverless Application Model

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

AWS SAM 템플릿 구조

AWS SAM 템플릿 파일은 AWS CloudFormation 템플릿 파일의 형식을 유사하게 따르는데, 이는 AWS CloudFormation사용자 가이드템플릿 구조에 설명되어 있습니다. AWS SAM 템플릿 파일과 AWS CloudFormation 템플릿 파일 간의 주요 차이점은 다음과 같습니다.

  • 변환 선언. AWS SAM 템플릿 파일에는 Transform: AWS::Serverless-2016-10-31 선언이 필요합니다. 이 선언은 AWS CloudFormation 템플릿 파일을 AWS SAM 템플릿 파일로 식별합니다. 변환에 대한 자세한 내용은 AWS CloudFormation 사용자 가이드변환을 참조하세요.

  • 글로벌 섹션. Globals 섹션은 AWS SAM에 고유합니다. 이것은 귀하의 모든 서버리스 함수 및 API에 공통적인 속성을 정의합니다. AWS::Serverless::Function, AWS::Serverless::Api, AWS::Serverless::SimpleTable 리소스들 모두 Globals 섹션에 정의된 속성을 계승합니다. 이 섹션에 대한 자세한 내용을 알아보려면 AWS SAM 템플릿의 Globals 섹션 섹션을 참조하세요.

  • 리소스 섹션 AWS SAM 템플릿에서 Resources 섹션은 AWS CloudFormation 리소스와 AWS SAM 리소스의 조합을 포함할 수 있습니다. AWS CloudFormation리소스에 관한 자세한 내용은 AWS CloudFormation 사용자 가이드AWS리소스 및 속성 유형 참조를 참조하세요. AWS SAM 리소스에 대한 자세한 내용은 AWS SAM 리소스 및 속성 섹션을 참조하세요.

AWS SAM 템플릿 파일의 다른 모든 섹션은 같은 이름의 AWS CloudFormation 템플릿 파일 섹션에 해당합니다.

YAML

다음 예제에서는 YAML 형식의 템플릿 조각을 보여줍니다.

Transform: AWS::Serverless-2016-10-31 Globals: set of globals Description: String Metadata: template metadata Parameters: set of parameters Mappings: set of mappings Conditions: set of conditions Resources: set of resources Outputs: set of outputs

템플릿 섹션

AWS SAM 템플릿에는 여러 주요 섹션이 포함되어 있습니다. 오직 TransformResources 섹션만 필요합니다.

템플릿 섹션들은 어떤 순서로든 포함시킬 수 있습니다. 그러나 언어 확장을 사용하는 경우 다음 예제와 같이 서버리스 변환 이전(즉, AWS::Serverless-2016-10-31 이전)에 AWS::LanguageExtensions를 추가해야 합니다.

Transform: - AWS::LanguageExtensions - AWS::Serverless-2016-10-31

템플릿을 작성할 때 다음 목록의 논리적 순서를 사용하는 것이 유용할 수 있습니다. 이는 한 섹션의 값이 이전 섹션의 값을 참조할 수 있기 때문입니다.

변환(필수 사항)

AWS SAM 템플릿의 경우 귀하는 이 섹션을 AWS::Serverless-2016-10-31의 값으로 포함시켜야 합니다.

추가 변환은 선택 사항입니다. 변환에 대한 자세한 내용은 AWS CloudFormation 사용자 가이드변환을 참조하세요.

글로벌(선택 사항)

모든 서버리스 함수, API 및 단순 테이블에 공통되는 속성. AWS::Serverless::Function, AWS::Serverless::Api, AWS::Serverless::SimpleTable 리소스들 모두 Globals 섹션에 정의된 속성을 계승합니다.

이 섹션은 AWS SAM에 고유합니다. AWS CloudFormation 템플릿에는 해당 섹션이 없습니다.

설명(선택 사항)

템플릿을 설명하는 텍스트 문자열입니다.

이 섹션은 AWS CloudFormation 템플릿의 Description 섹션들에 직접 관련됩니다.

Metadata(선택 사항)

템플릿에 대한 추가 정보를 제공하는 객체입니다.

이 섹션은 AWS CloudFormation 템플릿의 Metadata 섹션들에 직접 관련됩니다.

파라미터(선택 사항)

(스택을 생성하거나 업데이트할 때) 실행 시간에 템플릿에 전달하는 값입니다. 템플릿의 ResourcesOutputs 섹션에서 파라미터를 참조할 수 있습니다. Parameters 섹션에 선언된 객체는 sam deploy --guided 명령으로 하여금 사용자에게 추가 프롬프트를 표시하게 합니다.

sam deploy명령의 --parameter-overrides 파라미터를 사용하여 전달된 값과 구성 파일의 항목이 AWS SAM 템플릿 파일의 항목보다 우선합니다. sam deploy 명령에 대한 자세한 내용은 AWS SAMCLI 명령 참조 내 sam deploy 섹션을 참조하세요. 구성 파일에 대한 자세한 내용은 AWS SAM CLI 구성 파일 섹션을 참조하세요.

Mappings(선택 사항)

조건부 파라미터 값을 지정하는 데 사용할 수 있는 키와 관련 값의 매핑으로, 조회 테이블과 비슷합니다. ResourcesOutputs 섹션의 Fn::FindInMap 내장 함수를 사용하여 키를 상응하는 값에 매칭할 수 있습니다.

이 섹션은 AWS CloudFormation 템플릿의 Mappings 섹션들에 직접 관련됩니다.

조건(선택 사항)

스택 생성 또는 업데이트 시 특정 리소스 속성에 값이 할당되는지 또는 특정 리소스가 생성되는지 여부를 제어하는 조건입니다. 예를 들어, 스택이 프로덕션용인지 테스트 환경용인지에 따라 달라지는 리소스를 조건부로 생성할 수 있습니다.

이 섹션은 AWS CloudFormation 템플릿의 Conditions 섹션들에 직접 관련됩니다.

리소스(필수 사항)

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 Amazon Simple Storage Service(S3) 버킷 같은 스택 리소스들 및 이들의 속성. 템플릿의 ResourcesOutputs 섹션에서 리소스를 참조할 수 있습니다.

이 섹션은 AWS CloudFormation 템플릿의 Resources 섹션과 비슷합니다. AWS SAM 템플릿에서 이 섹션은 AWS CloudFormation 리소스 외에도 AWS SAM 리소스를 포함할 수 있습니다.

Outputs(선택 사항)

귀하가 귀하의 스택의 속성을 볼 때마다 표시되는 값을 설명합니다. 예를 들어, 귀하는 S3 버킷 이름에 대해 출력을 선언하고 나서 aws cloudformation describe-stacks AWS Command Line Interface(AWS CLI) 명령을 호출하여 해당 이름을 볼 수 있습니다.

이 섹션은 AWS CloudFormation 템플릿의 Outputs 섹션들에 직접 관련됩니다.

다음 단계

AWS SAM 템플릿 파일이 포함된 샘플 서버리스 애플리케이션을 다운로드 및 배포하려면 AWS SAM 시작하기를 참조하고 자습서: 를 사용하여 Hello World 애플리케이션 배포 AWS SAM의 지침을 따르십시오.