Transformación AWS::Serverless
La transformación AWS::Serverless
, que es una macro alojada por CloudFormation, toma una plantilla completa escrita en la sintaxis de AWS Serverless Application Model (AWS SAM) y la transforma y amplía en una plantilla de CloudFormation conforme. Para obtener más información sobre aplicaciones sin servidor y AWS SAM, consulte Implementación de aplicaciones basadas en Lambda en la Guía para desarrolladores de AWS Lambda, Referencia de recursos y propiedades de AWS SAM en la Guía para desarrolladores AWS Serverless Application Model y Transformación de AWS SAM
En el siguiente ejemplo, la plantilla utiliza sintaxis de AWS SAM para simplificar la declaración de una función de Lambda y su rol de ejecución.
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
'
Al crear un conjunto de cambios de la plantilla, CloudFormation amplía la sintaxis de AWS SAM, tal y como se define en la transformación. La plantilla procesada amplía el recurso AWS::Serverless::Function
, declarando una función AWS Lambda y un rol de ejecución.
{ "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"] } }] } } } } }
Sintaxis
El valor para la declaración de transformación debe ser una cadena literal. No puede utilizar un parámetro o función para especificar un valor de transformación. El siguiente fragmento de código es un ejemplo de una declaración de transformación:
JSON
"Transform" : "AWS::Serverless-2016-10-31"
YAML
Transform: "AWS::Serverless-2016-10-31"