En este tema se describe cómo usar la transformación AWS::Serverless
para procesar una plantilla escrita en la sintaxis de AWS Serverless Application Model (AWS SAM) y transformarla en una plantilla compatible con CloudFormation.
Para obtener más información sobre el uso de la transformación AWS::Serverless
, consulte AWS SAM transform
Uso
Para usar la transformación AWS::Serverless
, debe declararla en el nivel superior de la plantilla de CloudFormation. No se puede utilizar AWS::Serverless
como transformación integrada en ninguna otra sección de la plantilla.
La declaración debe usar la cadena literal AWS::Serverless-2016-10-31
como valor. No puede utilizar un parámetro o función para especificar un valor de transformación.
Sintaxis
Para declarar esta transformación en su plantilla de CloudFormation, use la siguiente sintaxis:
JSON
{
"Transform":"AWS::Serverless-2016-10-31",
"Resources":{
...
}
}
YAML
Transform: AWS::Serverless-2016-10-31
Resources:
...
La transformación AWS::Serverless
es una declaración independiente sin parámetros adicionales.
Ejemplos
En los siguientes ejemplos se muestra cómo usar la transformación AWS::Serverless
y la sintaxis de AWS SAM para simplificar la declaración de una función de Lambda y su rol de ejecución.
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
'
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 de Lambda y un rol de ejecución.
{
"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"]
}
}]
}
}
}
}
}
Recursos relacionados
Para obtener más información sobre las aplicaciones sin servidor y AWS Serverless Application Model (AWS SAM), consulte la Guía para desarrolladores de AWS Serverless Application Model.
Para conocer los tipos de recursos y propiedades específicos de AWS SAM, consulte AWS SAM resources and properties en la Guía para desarrolladores de AWS Serverless Application Model.
Para obtener información general sobre el uso de las macros, consulte Procesamientos personalizados en plantillas de CloudFormation con macros de plantillas en la Guía del usuario de AWS CloudFormation.