AWS::Serverless 변환 - AWS CloudFormation

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

AWS::Serverless 변환

이 주제에서는 AWS::Serverless 변형을 사용하여 AWS Serverless Application Model(AWS SAM) 구문으로 작성된 템플릿을 처리하고 규정 준수 CloudFormation 템플릿으로 변환하는 방법을 설명합니다.

AWS::Serverless 변환 사용에 대한 자세한 내용은 GitHub의 AWS SAM transform을 참조하세요.

사용법

AWS::Serverless 변환을 사용하려면 CloudFormation 템플릿의 최상위 수준에서 이를 선언해야 합니다. 다른 템플릿 섹션에 포함된 변환으로 AWS::Serverless을 사용할 수 없습니다.

선언에서는 리터럴 문자열 AWS::Serverless-2016-10-31을 해당 값으로 사용해야 합니다. 파라미터나 함수를 사용하여 변환 값을 지정할 수 없습니다.

구문

CloudFormation 템플릿에서 이 변환을 선언하려면 다음 구문을 사용합니다.

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ ... } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: ...

AWS::Serverless 변환은 추가 파라미터가 없는 독립 실행형 선언입니다.

예시

다음 예제에서는 AWS::Serverless 변환 및 AWS SAM 구문을 사용하여 Lambda 함수 및 해당 실행 역할의 선언을 간소화하는 방법을 보여줍니다.

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ "MyFunction":{ "Type":"AWS::Serverless::Function", "Properties":{ "Handler":"index.handler", "Runtime":"nodejs20.x", "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip" } } } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs20.x CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'

템플릿에서 변경 세트 생성 시 CloudFormation은 변환에서 정의한 대로 AWS SAM 구문을 확장합니다. 처리된 템플릿은 Lambda 함수 및 실행 역할을 선언하며 AWS::Serverless::Function 리소스를 확장합니다.

{ "Resources": { "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "amzn-s3-demo-bucket", "S3Key": "MySourceCode.zip" }, "Role": { "Fn::GetAtt": ["MyFunctionRole", "Arn"] }, "Runtime": "nodejs20.x" } }, "MyFunctionRole": { "Type": "AWS::IAM::Role", "Properties": { "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com"] } }] } } } } }

AWS::LanguageExtensions와 함께 AWS::Serverless 사용

AWS::ServerlessAWS::LanguageExtensions 변환을 모두 사용하는 경우 AWS::ApiGateway::Stage와 같은 리소스를 참조하려면 스테이지 이름이 비 NoEcho 파라미터 값으로 전달될 때 특수 구문이 필요합니다.

참조(MyApi.Stage)에 AWS SAM 구문을 사용하는 대신 Fn::Sub를 사용하여 논리적 ID 참조를 생성합니다. 예를 들어 "Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}입니다. 이렇게 하면 런타임 시 올바른 논리적 ID가 빌드됩니다.

이 특수 형식의 이유는 두 변환이 값을 다르게 처리하기 때문입니다.

  • AWS::LanguageExtensions는 내장 함수를 실제 값으로 해석합니다.

  • AWS::Serverless는 정적 값을 수신하는지 아니면 내장 함수를 수신하는지에 따라 서로 다른 논리적 ID를 생성합니다.

서버리스 애플리케이션과 AWS Serverless Application Model(AWS SAM)에 대한 자세한 내용은 AWS Serverless Application Model 개발자 안내서를 참조하세요.

AWS SAM에 특정한 리소스 및 속성 유형은 AWS Serverless Application Model 개발자 안내서AWS SAM resources and properties를 참조하세요.

매크로 사용에 대한 일반적인 정보는 AWS CloudFormation 사용 설명서템플릿 매크로를 사용하여 CloudFormation 템플릿에서 사용자 지정 처리 수행을 참조하세요.