AWS::Serverless 변환 - AWS CloudFormation

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://testBucket/mySourceCode.zip'

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

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "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"