새로운 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::Serverless
및 AWS::LanguageExtensions
변환을 모두 사용하는 경우 AWS::ApiGateway::Stage
와 같은 리소스를 참조하려면 스테이지 이름이 비 NoEcho
파라미터 값으로 전달될 때 특수 구문이 필요합니다.
참조(
)에 AWS SAM 구문을 사용하는 대신 MyApi
.StageFn::Sub
를 사용하여 논리적 ID 참조를 생성합니다. 예를 들어 "Ref": {"Fn::Sub":
입니다. 이렇게 하면 런타임 시 올바른 논리적 ID가 빌드됩니다."${
${MyApi
}StageName
}Stage"}
이 특수 형식의 이유는 두 변환이 값을 다르게 처리하기 때문입니다.
-
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 템플릿에서 사용자 지정 처리 수행을 참조하세요.