Transformação AWS::Serverless
A transformação AWS::Serverless
, uma macro hospedada pelo CloudFormation, obtém um modelo inteiro escrito na sintaxe AWS Serverless Application Model (AWS SAM) e o transforma e expande em um modelo do CloudFormation compatível. Para mais informações sobre aplicações de tecnologia sem servidor e o AWS SAM, consulte Implantar aplicações baseadas no Lambda no Guia do desenvolvedor do AWS Lambda e AWS SAM resource and property reference no AWS Serverless Application Model Developer Guide e AWS SAM transform
No exemplo a seguir, o modelo a seguir usa a sintaxe do AWS SAM para simplificar a declaração de uma função Lambda e sua função de execução.
Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler:
index.handler
Runtime:nodejs20.x
CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip
'
Ao criar um conjunto de alterações do modelo, o CloudFormation expande a sintaxe AWS SAM, conforme definido pela transformação. O modelo processado expande o recurso AWS::Serverless::Function
, declarando uma função AWS Lambda e uma função de execução.
{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "
index.handler
", "Code": { "S3Bucket": "amzn-s3-demo-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"] } }] } } } } }
Sintaxe
O valor da declaração de transformação deve ser uma sequência literal. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação. O trecho a seguir é um exemplo de uma declaração de transformação:
JSON
"Transform" : "AWS::Serverless-2016-10-31"
YAML
Transform: "AWS::Serverless-2016-10-31"