AWS::Serverless
변환
CloudFormation에 의해 호스팅되는 매크로인 AWS::Serverless
변형은 AWS Serverless Application Model(AWS SAM) 구문에서 작성된 전체 템플릿을 가져온 다음 이를 변형 후 규정 준수 CloudFormation 템플릿으로 확장합니다. 서버리스 애플리케이션과 AWS SAM에 대한 자세한 내용을 알아보려면 AWS Lambda 개발자 안내서의 Lambda 기반 애플리케이션 배포, AWS Serverless Application Model 개발자 안내서의 AWS SAM 리소스 및 속성 참조 및 GitHub의 AWS SAM 변환
다음 예제에서 템플릿은 AWS SAM 구문을 사용하여 Lambda 함수 및 해당 실행 역할의 선언을 간소화합니다.
Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler:
index.handler
Runtime:nodejs20.x
CodeUri: 's3://DOC-EXAMPLE-BUCKET/MySourceCode.zip
'
템플릿에서 변경 세트 생성 시 CloudFormation에서 AWS SAM 구문을 변환에 정의된 대로 확장합니다. 처리된 템플릿은 AWS::Serverless::Function
리소스를 확장하여 AWS Lambda 함수 및 해당 실행 역할을 선언합니다.
{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "
index.handler
", "Code": { "S3Bucket": "DOC-EXAMPLE-BUCKET
", "S3Key": "MySourceCode.zip
" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs20.x
" } }, "FunctionNameRole": { "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"] } }] } } } } }
구문
변환 선언 값은 리터럴 문자열이어야 합니다 파라미터나 함수를 사용하여 변환 값을 지정할 수 없습니다. 다음 코드 조각은 변환 선언을 보여주는 예입니다.
JSON
"Transform" : "AWS::Serverless-2016-10-31"
YAML
Transform: "AWS::Serverless-2016-10-31"