Transformação AWS::Serverless
Este tópico descreve como usar a transformação AWS::Serverless
para processar um modelo escrito na sintaxe do AWS Serverless Application Model (AWS SAM) e transformá-lo em um modelo do CloudFormation compatível.
Uso
Para usar a transformação AWS::Serverless
, é necessário declará-la no nível superior do seu modelo do CloudFormation. Não é possível usar AWS::Serverless
como uma transformação incorporada em nenhuma outra seção de modelo.
A declaração deve usar a string literal AWS::Serverless-2016-10-31
como seu valor. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação.
Sintaxe
Para declarar essa transformação no modelo do CloudFormation, use a seguinte sintaxe:
JSON
{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{
...
} }
YAML
Transform: AWS::Serverless-2016-10-31 Resources:
...
A transformação AWS::Serverless
é uma declaração independente sem parâmetros adicionais.
Exemplos
Os exemplos a seguir mostram como usar a transformação AWS::Serverless
e a sintaxe AWS SAM para simplificar a declaração de uma função do Lambda e seu perfil de execução.
JSON
{ "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
" } } } }
YAML
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 do AWS SAM, conforme definido pela transformação. O modelo processado expande o recurso AWS::Serverless::Function
, declarando uma função do Lambda e um perfil 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"] } }] } } } } }
Recursos relacionados
Para obter mais informações sobre o uso da transformação AWS::Serverless-2016-10-31
, consulte Transformação AWS SAM
Para obter mais informações sobre aplicações sem servidor e o AWS Serverless Application Model (AWS SAM), consulte o Guia do desenvolvedor do AWS Serverless Application Model.
Para os tipos de recursos e propriedades específicos do AWS SAM, consulte Recursos e propriedades do AWS SAM no Guia do desenvolvedor do AWS Serverless Application Model.
Para obter mais informações sobre o uso de macros, consulte Executar processamento personalizado em modelos do CloudFormation com macros de modelo no Guia do usuário do AWS CloudFormation.