Transformation AWS::Serverless - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Transformation AWS::Serverless

La AWS::Serverless transformation, qui est une macro hébergée par CloudFormation, prend un modèle entier écrit dans la syntaxe AWS SAM ( AWS Serverless Application Model), le transforme et le développe en un CloudFormation modèle conforme. Pour plus d'informations sur les applications sans serveur et AWS SAM, voir Déploiement d'applications basées sur Lambda dans le guide du AWS Lambda développeur et référence sur les ressources et propriétés AWS SAM dans le guide du AWS Serverless Application Model développeur.

Dans l'exemple suivant, le modèle utilise la syntaxe AWS SAM pour simplifier la déclaration d'une fonction Lambda et son rôle d'exécution.

Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs18.x CodeUri: 's3://testBucket/mySourceCode.zip'

Lorsque vous créez un ensemble de modifications à partir du modèle, CloudFormation développe la syntaxe AWS SAM, telle que définie par la transformation. Le modèle traité étend la AWS::Serverless::Function ressource en déclarant une AWS Lambda fonction et un rôle d'exécution.

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "S3Key": "mySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs18.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"] } }] } } } } }

Syntaxe

La valeur de la déclaration de transformation doit être une chaîne littérale. Vous ne pouvez pas utiliser de paramètre ou de fonction pour spécifier la valeur de transformation. L'extrait suivant est un exemple de déclaration de transformation :

JSON

"Transform" : "AWS::Serverless-2016-10-31"

YAML

Transform: "AWS::Serverless-2016-10-31"