Il s’agit du nouveau Guide de référence des modèles CloudFormation. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le guide de AWS CloudFormation l'utilisateur.
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.
AWS::ServerlessTransformation
Cette rubrique décrit comment utiliser la transformation AWS::Serverless pour traiter un modèle complet écrit dans la syntaxe du modèle d’application sans serveur AWS (AWS SAM) en un modèle CloudFormation conforme.
Pour plus d’informations sur l’utilisation de la transformation AWS::Serverless, consultez Transformation AWS SAM
Utilisation
Pour utiliser la transformation AWS::Serverless, vous devez la déclarer au niveau supérieur de votre modèle CloudFormation. Vous ne pouvez pas utiliser AWS::Serverless comme transformation incorporée dans une autre section de modèle.
La déclaration doit utiliser la chaîne littérale AWS::Serverless-2016-10-31 comme valeur. Vous ne pouvez pas utiliser de paramètre ou de fonction pour spécifier la valeur de transformation.
Syntaxe
Pour déclarer cette transformation dans votre modèle CloudFormation, utilisez la syntaxe suivante :
JSON
{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{...} }
YAML
Transform: AWS::Serverless-2016-10-31 Resources:...
La transformation AWS::Serverless est une déclaration autonome sans paramètres supplémentaires.
Exemples
Les exemples suivants montrent comment utiliser la transformation AWS::Serverless et la syntaxe AWS SAM pour simplifier la déclaration d’une fonction Lambda et de son rôle d’exécution.
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.handlerRuntime:nodejs20.xCodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'
Lors de la création d’un jeu de modifications à partir du modèle, CloudFormation développe la syntaxe AWS SAM, telle que définie par la transformation. Le modèle traité développe la ressource AWS::Serverless::Function, qui déclare une fonction Lambda et un rôle d’exécution.
{ "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"] } }] } } } } }
Utilisation d’AWS::Serverless avec AWS::LanguageExtensions
Lorsque vous utilisez à la fois les transformations AWS::Serverless et AWS::LanguageExtensions, la référence à des ressources telles que AWS::ApiGateway::Stage nécessite une syntaxe particulière si le nom d’étape est transmis sous forme de valeur non NoEcho.
Au lieu d’utiliser la syntaxe AWS SAM pour la référence (), utilisez MyApi.StageFn::Sub pour générer la référence à l’ID logique. Par exemple, "Ref": {"Fn::Sub":
. Cela produit le bon ID logique lors de l’exécution."${${MyApi}StageName}Stage"}
Cette syntaxe est nécessaire parce que les deux transformations traitent les valeurs différemment :
-
AWS::LanguageExtensionsrésout les fonctions intrinsèques en leurs valeurs réelles. -
AWS::Serverlesscrée différents ID logiques selon qu’elle reçoit une valeur statique ou une fonction intrinsèque.
Ressources connexes
Pour plus d’informations sur les applications sans serveur et le modèle d’application sans serveur AWS (AWS SAM), consultez le Guide du développeur AWS Serverless Application Model.
Pour les types de ressources et de propriétés spécifiques à AWS SAM, consultez Ressources et propriétés AWS SAM dans le Guide du développeur AWS Serverless Application Model.
Pour plus d’informations, consultez Traitement personnalisé des modèles CloudFormation à l’aide de macros de modèle dans le Guide de l’utilisateur AWS CloudFormation.