Utilisation de AWS CloudFormation macros pour effectuer un traitement personnalisé sur les modèles - 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.

Utilisation de AWS CloudFormation macros pour effectuer un traitement personnalisé sur les modèles

Les macros vous permettent d'effectuer un traitement personnalisé sur les modèles, qu'il s'agisse d'actions simples telles que find-and-replace des opérations ou de transformations étendues de modèles entiers.

Pour avoir une idée de l'étendue des possibilités, considérez les AWS::Serverless transformations AWS::Include and, qui sont des macros hébergées par AWS CloudFormation :

Comment fonctionnent AWS CloudFormation les macros

Il existe deux étapes principales pour le traitement des modèles à l'aide de macros : la création de la macro elle-même, puis l'utilisation de la macro pour effectuer un traitement sur vos modèles.

Pour créer la définition d'une macro, vous devez créer les éléments suivants :

  • AWS Lambda Fonction permettant d'effectuer le traitement du modèle. Cette fonction Lambda accepte un extrait ou un modèle complet, ainsi que tous les paramètres supplémentaires que vous définissez. Elle renvoie l'extrait de modèle traité ou l'ensemble du modèle comme réponse.

  • Ressource de typeAWS::CloudFormation::Macro, qui permet aux utilisateurs d'appeler la fonction Lambda depuis des modèles. AWS CloudFormation Cette ressource spécifie l'ARN de la fonction Lambda à appeler pour cette macro, ainsi que d'autres propriétés facultatives pour faciliter le débogage. Pour créer cette ressource dans un compte, créez un modèle qui inclut une AWS::CloudFormation::Macro ressource, puis créez une pile ou un ensemble de piles avec des autorisations autogérées à partir du modèle. AWS CloudFormation StackSetsne prend actuellement pas en charge la création ou la mise à jour d'ensembles de piles avec des autorisations gérées par les services à partir de modèles faisant référence à des macros.

Pour utiliser une macro, référencez la macro dans votre modèle :

  • Pour traiter une section ou un extrait d'un modèle, référencez la macro dans une fonction Fn::Transform située par rapport au contenu de modèle que vous souhaitez transformer. Lorsque vous utilisez Fn::Transform, vous pouvez également transmettre tous les paramètres spécifiés qu'elle requiert.

  • Pour traiter un modèle complet, référencez la macro dans la section Transformation du modèle.

En règle générale, vous créez ensuite un jeu de modifications que vous exécutez. (Le traitement des macros peut ajouter plusieurs ressources dont vous n'êtes peut-être pas au courant. Pour vous assurer que vous êtes au courant de toutes les modifications introduites par les macros, nous vous conseillons vivement d'utiliser des ensembles de modifications.) AWS CloudFormation transmet le contenu du modèle spécifié, ainsi que tous les paramètres supplémentaires spécifiés, à la fonction Lambda spécifiée dans la ressource macro. La fonction Lambda renvoie le contenu de modèle traité, qu'il s'agisse d'un extrait ou d'un modèle complet.

Une fois que toutes les macros du modèle ont été appelées, AWS CloudFormation génère un ensemble de modifications qui inclut le contenu du modèle traité. Après avoir passé en revue le jeu de modifications, exécutez-le pour appliquer les modifications.

Important

Si votre modèle d'ensemble de piles référence une ou plusieurs macros, vous devez créer une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications. Pour créer ou mettre à jour directement l'ensemble de piles, vous devez utiliser l'UpdateStackSetaction CreateStackSetou et spécifier la CAPABILITY_AUTO_EXPAND fonctionnalité. Avant de créer ou de mettre à jour un ensemble de piles à partir d'un modèle qui référence directement les macros, assurez-vous de connaître les transformations effectuées par la macro.

Utilisez la fonction Fn::Transform intrinsèque ou la Transform section du modèle pour transmettre le contenu du modèle et les paramètres associés à la Lambda fonction sous-jacente de la macro, qui renvoie le contenu du modèle traité.
Note

Si vous ne craignez pas de créer ou de mettre à jour une pile directement à partir d'un modèle traité, sans vérifier d'abord les modifications proposées dans un jeu de modifications, vous pouvez le faire en spécifiant la capacité CAPABILITY_AUTO_EXPAND lors d'une requête UpdateStack ou CreateStack. Ne créez directement de piles à partir d'un modèle qui référence des macros qu'à la condition de connaître les transformations effectuées par la macro.

Pour plus d'informations, consultez CreateStackou consultez UpdateStackle Guide de référence des AWS CloudFormation API.

Création d'une définition de AWS CloudFormation macro

Lorsque vous créez une définition de macro, la définition de macro rend la fonction Lambda sous-jacente disponible dans le compte spécifié afin qu'elle l' AWS CloudFormation invoque pour traiter les modèles.

AWS CloudFormation interface de fonction macro

Pour les macros, AWS CloudFormation appelle les fonctions Lambda sous-jacentes avec le mappage d'événements suivant. AWS CloudFormation envoie sa demande au format JSON et s'attend à ce que la réponse de la fonction soit également formatée au format JSON.

{ "region" : "us-east-1", "accountId" : "$ACCOUNT_ID", "fragment" : { ... }, "transformId" : "$TRANSFORM_ID", "params" : { ... }, "requestId" : "$REQUEST_ID", "templateParameterValues" : { ... } }
  • region

    Région dans laquelle la macro réside.

  • accountId

    ID de compte du compte à partir duquel la macro appelle la fonction Lambda.

  • fragment

    Contenu de modèle disponible pour un traitement personnalisé, au format JSON.

    • Pour les macros incluses dans la section Transform du modèle, il s'agit du modèle complet à l'exception de la section Transform.

    • Pour les macros incluses dans un appel de fonction intrinsèque Fn::Transform, cela inclut tous les nœuds frères (et leurs enfants) en fonction de l'emplacement de la fonction intrinsèque au sein du modèle à l'exception de la fonction Fn::Transform. Pour plus d’informations, consultez AWS CloudFormation champ d'application macro.

  • transformId

    Nom de la macro qui appelle cette fonction.

  • params

    Pour les appels de Fn::Transform fonction, tous les paramètres spécifiés pour la fonction. AWS CloudFormation n'évalue pas ces paramètres avant de les transmettre à la fonction.

    Pour les macros incluses dans la section Transform du modèle, cette section est vide.

  • requestId

    ID de la demande qui appelle cette fonction.

  • templateParameterValues

    Tous les paramètres spécifiés dans la section Paramètres du modèle. AWS CloudFormation évalue ces paramètres avant de les transmettre à la fonction.

AWS CloudFormation attend de la fonction sous-jacente qu'elle renvoie une réponse au format JSON suivant :

{ "requestId" : "$REQUEST_ID", "status" : "$STATUS", "fragment" : { ... } "errorMessage": "optional error message for failures" }
  • requestId

    ID de la demande qui appelle cette fonction. Cela doit correspondre à l'ID de demande fourni AWS CloudFormation lors de l'appel de la fonction.

  • status

    Statut de la demande (non sensible à la casse). Doit être réglé sursuccess. AWS CloudFormation traite toute autre réponse comme un échec.

  • fragment

    Le contenu du modèle traité AWS CloudFormation à inclure dans le modèle traité, y compris les frères et sœurs. AWS CloudFormation remplace le contenu du modèle transmis à la fonction Lambda par le fragment de modèle qu'elle reçoit dans la réponse Lambda.

    Le contenu de modèle traité doit être dans un format JSON valide et son inclusion dans le modèle traité doit engendrer un modèle valide.

    Si votre fonction ne modifie pas réellement le contenu du modèle qui AWS CloudFormation lui est transmis, mais que vous devez tout de même inclure ce contenu dans le modèle traité, votre fonction doit renvoyer le contenu du modèle AWS CloudFormation dans sa réponse.

  • errorMessage

    Le message d'erreur expliquant pourquoi la transformation a échoué. CloudFormationaffiche ce message d'erreur dans le volet Événements de la page des détails de la pile de votre pile.

    Par exemple, « Erreur de création de l'ensemble de modifications : Transformer le numéro de compte Compte AWS  : :nom de macro a échoué avec : chaîne de message d'erreur ».

Pour obtenir des informations sur des considérations supplémentaires lors de la création de macros, consultez Considérations lors de la création de définitions de macros AWS CloudFormation.

AWS CloudFormation étendue et autorisations du compte macro

Vous pouvez utiliser des macros uniquement dans le compte où elles ont été créées en tant que ressource. Le nom de la macro doit être unique au sein d'un compte donné. Toutefois, vous pouvez mettre à disposition les mêmes fonctionnalités dans plusieurs comptes en permettant l'accès entre comptes sur la fonction Lambda, puis en créant des définitions de macro référençant cette fonction dans plusieurs comptes. Dans l'exemple ci-dessous, trois comptes contiennent des définitions de macro qui pointent toutes vers la même fonction Lambda.

En autorisant l'accès entre comptes à la Lambda fonction, AWS vous pouvez créer des macros dans plusieurs comptes qui font référence à cette fonction.

Pour plus d'informations, consultez la section Présentation de la gestion des autorisations d'accès à vos ressources AWS Lambda dans le Guide du AWS Lambda développeur.

Afin de créer la définition d'une macro, l'utilisateur doit disposer d'autorisations pour créer une pile ou un ensemble de piles dans le compte spécifié.

AWS CloudFormation Pour exécuter correctement une macro incluse dans un modèle, l'utilisateur doit disposer d'Invokeautorisations pour la fonction Lambda sous-jacente. Pour éviter une éventuelle escalade des autorisations, AWS CloudFormation usurpe l'identité de l'utilisateur lors de l'exécution de la macro. Pour plus d'informations, veuillez consulter la rubrique Modèle d'autorisations Lambda dans le Guide du développeur AWS Lambda et Actions et clés de contexte de condition pour AWS Lambda dans le Guide de l'utilisateur IAM.

Les Transformation AWS::Include transformations Transformation AWS::Serverless et sont des macros hébergées par AWS CloudFormation. Aucune autorisation spéciale n'est nécessaire pour les utiliser et elles sont disponibles à partir de n'importe quel compte dans AWS CloudFormation.

Macros de débogage AWS CloudFormation

Pour faciliter le débogage, vous pouvez également spécifier les LogRoleArn propriétés LogGroupName et lors de la création du type de AWS::CloudFormation::Macroressource pour votre macro. Ces propriétés vous permettent de spécifier le groupe de CloudWatch journaux auquel les informations de journalisation des erreurs sont AWS CloudFormation envoyées lorsque vous appelez la AWS Lambda fonction sous-jacente de la macro, et le rôle AWS CloudFormation doit être assumé lors de l'envoi d'entrées de journal à ces journaux.

Facturation

Lorsqu'une macro s'exécute, tous les frais liés à l'exécution de la fonction Lambda sont facturés au propriétaire de cette fonction.

Les Transformation AWS::Include transformations Transformation AWS::Serverless et sont des macros hébergées par AWS CloudFormation. Aucun frais ne s'applique à leur utilisation.

Considérations lors de la création de définitions de macros AWS CloudFormation

Lors de la création de définitions de macros, gardez à l'esprit les informations suivantes :

  • Les macros ne sont prises en charge que Régions AWS là où elles AWS Lambda sont disponibles. Pour obtenir une liste de toutes les régions où Lambda est actuellement disponible, veuillez consulter la rubrique Points de terminaison et quotas AWS Lambda.

  • Tout les extraits de modèle traités doivent être dans un format JSON valide.

  • Tous les extraits de modèle traités doivent réussir les vérifications de validation pour une opération de création ou de mise à jour de pile ou d'ensemble de piles.

  • AWS CloudFormation résout d'abord les macros, puis traite le modèle. Le modèle résultant doit être dans un format JSON valide et ne doit pas dépasser la limite de taille de modèle.

  • En raison de l'ordre dans lequel CloudFormation les éléments d'un modèle sont traités, une macro ne peut pas inclure de modules dans le contenu du modèle traité auquel elle renvoie CloudFormation. Pour plus d'informations sur les modules, consultez la section Développement de modules dans le guide de l'utilisateur de la CloudFormation CLI.

  • Lorsque vous utilisez la fonctionnalité d'annulation des mises à jour, AWS CloudFormation utilise une copie du modèle d'origine. Le modèle d'origine est restauré même si l'extrait inclus a été modifié.

  • L'inclusion de macros dans des macros ne fonctionne pas, car nous ne traitons pas les macros de façon itérative.

  • La fonction intrinsèque Fn::ImportValue n'est pas actuellement prise en charge dans les macros.

  • Les fonctions intrinsèques incluses dans le modèle sont évaluées après les macros éventuelles. Par conséquent, le contenu de modèle traité que votre macro renvoie peut inclure des appels à des fonctions intrinsèques, et ils sont évalués comme d'habitude.

  • StackSets ne prend actuellement pas en charge la création ou la mise à jour d'ensembles de piles avec des autorisations gérées par les services à partir de modèles faisant référence AWS CloudFormation à des macros.

  • Si votre modèle d'ensemble de piles référence une ou plusieurs macros, vous devez créer ou mettre à jour une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications. Pour créer ou mettre à jour directement l'ensemble de piles, utilisez l'UpdateStackSetaction CreateStackSetou et spécifiez la CAPABILITY_AUTO_EXPAND fonctionnalité. Le traitement des macros peut ajouter plusieurs ressources à votre insu. Avant de créer ou de mettre à jour un ensemble de piles à partir d'un modèle qui référence directement les macros, assurez-vous de connaître les transformations effectuées par la macro.

  • Les jeux de modifications ne prennent pas en charge actuellement les piles imbriquées. Si vous souhaitez créer ou mettre à jour une pile à l'aide d'un modèle qui référence des macros et contient des piles imbriquées, vous devez créer ou mettre à jour la pile directement. Pour ce faire, utilisez l'UpdateStackaction CreateStackou et spécifiez la CAPABILITY_AUTO_EXPAND fonctionnalité.

Pour créer une définition de AWS CloudFormation macro :
  1. Créez une AWS Lambda fonction qui traite les AWS CloudFormation modèles.

    La fonction Lambda que vous générez effectue le traitement du contenu du modèle. Votre fonction peut traiter n'importe quelle partie d'un modèle, jusqu'à l'intégralité du modèle. Pour obtenir des informations sur le mappage d'événements auquel votre fonction doit adhérer, consultez AWS CloudFormation interface de fonction macro. Pour obtenir des informations sur des considérations supplémentaires lors de la création de macros, consultez Considérations lors de la création de définitions de macros AWS CloudFormation.

  2. Créez un modèle contenant un type de AWS::CloudFormation::Macroressource.

    • Vous devez spécifier les propriétés Name et FunctionName. La FunctionName propriété spécifie l'ARN de la fonction Lambda à invoquer lors de l' AWS CloudFormation exécution de la macro.

    • Pour faciliter le débogage, vous pouvez également spécifier les propriétés LogGroupName et LogRoleArn.

  3. Créez une pile à partir du modèle contenant la macro dans le compte souhaité ou créez un ensemble de piles avec des autorisations auto-gérées à partir du modèle qui référence la macro dans le compte administrateur, puis créez des instances de pile dans les comptes cibles de votre choix.

    Une AWS CloudFormation fois que les piles contenant la définition de la macro ont été créées avec succès, la macro peut être utilisée dans ces comptes.

Utilisation de AWS CloudFormation macros dans vos modèles

Une AWS CloudFormation fois que les piles contenant la définition de la macro ont été créées avec succès, la macro peut être utilisée dans ces comptes. Vous utilisez une macro en la référençant dans le modèle, à l'emplacement approprié correspondant au contenu de modèle que vous souhaitez traiter.

AWS CloudFormation ordre d'évaluation des macros

Vous pouvez référencer plusieurs macros dans un modèle donné, y compris des transformations hébergées par AWS CloudFormation, telles que Transformation AWS::Include etTransformation AWS::Serverless.

Les macros sont évaluées dans l'ordre, en fonction de leur emplacement dans le modèle, du plus profondément imbriqué jusqu'au plus général. Les macros figurant dans le même emplacement dans le modèle sont évaluées en série en fonction de l'ordre dans lequel elles sont répertoriées.

Les transformations telles que AWS::Include et AWS::Transform sont traitées de la même manière que toutes les autres macros en termes d'ordre et de portée d'action.

Par exemple, dans l'exemple de modèle ci-dessous, AWS CloudFormation évalue d'abord la PolicyAdder macro, car il s'agit de la macro la plus profondément imbriquée du modèle. AWS CloudFormation évalue ensuite MyMacro avant d'évaluer AWS::Serverless car il est répertorié précédemment AWS::Serverless dans la Transform section.

AWSTemplateFormatVersion: 2010-09-09 Transform: [MyMacro, AWS::Serverless] Resources: WaitCondition: Type: AWS::CloudFormation::WaitCondition MyBucket: Type: 'AWS::S3::Bucket' Properties: BucketName: MyBucket Tags: [{"key":"value"}] 'Fn::Transform': - Name: PolicyAdder CorsConfiguration:[] MyEc2Instance: Type: 'AWS::EC2::Instance' Properties: ImageID: "ami-123"

AWS CloudFormation champ d'application macro

Les macros référencées dans la section Transform d'un modèle peuvent traiter l'ensemble du contenu de ce modèle.

Les macros référencées dans une fonction Fn::Transform peuvent traiter le contenu de tous les éléments frères (y compris de leurs enfants) de cette fonction Fn::Transform dans le modèle.

Par exemple, dans l'exemple de modèle ci-dessous, AWS::Include peut traiter toutes les propriétés MyBucket, en fonction de l'emplacement de la fonction Fn::Transform qui les contient. MyMacro peut traiter le contenu du modèle complet en raison de son inclusion dans la section Transform.

// Start of processable content for MyMacro AWSTemplateFormatVersion: 2010-09-09 Transform: [MyMacro] Resources: WaitCondition: Type: AWS::CloudFormation::WaitCondition MyBucket: Type: 'AWS::S3::Bucket' //Start of processable content for AWS::Include Properties: BucketName: MyBucket Tags: [{"key":"value"}] 'Fn::Transform': - Name: 'AWS::Include' Parameters: Location: s3://DOC-EXAMPLE-BUCKET/MyFileName.yaml CorsConfiguration:[] //End of processable content for AWS::Include MyEc2Instance: Type: 'AWS::EC2::Instance' Properties: ImageID: "ami-123" // End of processable content for MyMacro

Ensembles de modifications et AWS CloudFormation macros

Pour créer ou mettre à jour une pile à l'aide d'un modèle qui référence des macros, en règle générale vous créez un jeu de modifications que vous exécutez ensuite. Un ensemble de modifications décrit les actions CloudFormation qui seront entreprises en fonction du modèle traité. Le traitement des macros peut ajouter plusieurs ressources à votre insu. Pour garantir que vous ayez connaissance de toutes les modifications apportées par les macros, nous vous suggérons vivement d'utiliser des jeux de modifications. Après avoir passé en revue le jeu de modifications, vous pouvez l'exécuter pour en appliquer les modifications.

Une macro peut ajouter des ressources IAM à votre modèle. Pour ces ressources, AWS CloudFormation vous demande de reconnaître leurs capacités. Étant donné que vous ne AWS CloudFormation pouvez pas savoir quelles ressources sont ajoutées avant de traiter votre modèle, vous devrez peut-être reconnaître les fonctionnalités IAM lors de la création de l'ensemble de modifications, selon que les macros référencées contiennent ou non des ressources IAM. Ainsi, lorsque vous exécutez l'ensemble de modifications, il AWS CloudFormation dispose des fonctionnalités nécessaires pour créer des ressources IAM.

Important

Si votre modèle d'ensemble de piles référence une ou plusieurs macros, vous devez créer une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications. Pour créer ou mettre à jour directement l'ensemble de piles, vous devez utiliser l'UpdateStackSetaction CreateStackSetou et spécifier la CAPABILITY_AUTO_EXPAND fonctionnalité. Avant de créer ou de mettre à jour un ensemble de piles à partir d'un modèle qui référence directement les macros, assurez-vous de connaître les transformations effectuées par la macro.

Note

Si vous ne craignez pas de créer ou de mettre à jour une pile directement à partir d'un modèle traité, sans vérifier d'abord les modifications proposées dans un jeu de modifications, vous pouvez le faire en spécifiant la capacité CAPABILITY_AUTO_EXPAND lors d'une requête UpdateStack ou CreateStack. Ne créez directement de piles à partir d'un modèle de pile qui contient des macros qu'à la condition de connaître les transformations effectuées par la macro. Vous ne pouvez pas utiliser de jeux de modifications avec des macros d'ensemble de piles. Vous devez mettre à jour votre ensemble de piles directement.

Pour plus d'informations, consultez CreateStackou consultez UpdateStackle Guide de référence des AWS CloudFormation API.

Si vous utilisez les commandes AWS CLI, vous pouvez utiliser les deploy commandes package et pour réduire le nombre d'étapes de lancement de piles à partir de modèles faisant référence à des macros. Pour plus d'informations, veuillez consulter Déploiement d'applications basées sur Lambda dans le Guide du développeur AWS Lambda .

Étape de modèle et macros CloudFormation

L'étape d'un modèle indique s'il s'agit du modèle original soumis par l'utilisateur ou d'un modèle dans lequel les macros AWS CloudFormation ont été traitées.

  • Original : modèle initialement soumis par l'utilisateur pour créer ou mettre à jour la pile ou l'ensemble de piles.

  • Processed: modèle AWS CloudFormation utilisé pour créer ou mettre à jour la pile ou l'ensemble de piles après le traitement des macros référencées. Le modèle traité est formaté au format JSON, même si le modèle d'origine a été formaté comme YAML.

Utilisez le modèle traité pour le dépannage des problèmes de la pile. Si un modèle ne référence pas de macros, le modèle d'origine et le modèle traité sont identiques.

Vous pouvez utiliser la AWS CloudFormation console ou AWS CLIvoir le stade d'un modèle de pile.

Note

La taille maximale d'un modèle de pile traité est de 51 200 octets lorsqu'il est transmis directement dans une demande CreateStack, UpdateStack ou ValidateTemplate, ou de 1 Mo lorsqu'il est transmis en tant qu'objet S3 à l'aide d'une URL de modèle Amazon S3. Cependant, pendant le traitement, l'état temporaire du modèle est mis à CloudFormation jour car il traite en série les macros contenues dans le modèle. De ce fait, la taille du modèle pendant le traitement peut temporairement dépasser la taille autorisée d'un modèle entièrement traité. CloudFormation permet une certaine mémoire tampon pour ces modèles en cours de traitement. Cependant, vous devez concevoir vos modèles et vos macros en gardant à l'esprit la taille maximale autorisée pour un modèle de pile traité.

Si une Transformation data limit exceeded erreur est CloudFormation renvoyée lors du traitement de votre modèle, cela signifie que votre modèle a dépassé la taille maximale CloudFormation autorisée pendant le traitement.

Pour résoudre ce problème, envisagez de faire ce qui suit :

Pour utiliser une AWS CloudFormation macro dans votre modèle
Note

AWS CloudFormation Pour exécuter correctement une macro référencée dans un modèle, l'utilisateur doit disposer d'Invokeautorisations pour la fonction Lambda sous-jacente. Pour plus d'informations, consultez la section Présentation de la gestion des autorisations d'accès à vos ressources AWS Lambda dans le Guide du AWS Lambda développeur.

  1. Insérez une référence à la macro dans le modèle.

    • Pour traiter un extrait de modèle, référencez la macro dans une fonction Fn::Transform située par rapport au contenu de modèle que vous souhaitez traiter.

    • Pour traiter le modèle complet, référencez la macro dans la section Transformation du modèle.

  2. Créez un jeu de modifications à l'aide du modèle.

    Important

    Si votre modèle d'ensemble de piles référence une ou plusieurs macros, vous devez créer une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications. Pour créer ou mettre à jour directement l'ensemble de piles, vous devez utiliser l'UpdateStackSetaction CreateStackSetou et spécifier la CAPABILITY_AUTO_EXPAND fonctionnalité. Avant de créer ou de mettre à jour un ensemble de piles à partir d'un modèle qui référence directement les macros, assurez-vous de connaître les transformations effectuées par la macro.

  3. Vérifiez et exécutez le jeu de modifications.

    Important

    Si votre modèle d'ensemble de piles référence une ou plusieurs macros, vous devez créer une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications. Pour créer ou mettre à jour directement l'ensemble de piles, vous devez utiliser l'UpdateStackSetaction CreateStackSetou et spécifier la CAPABILITY_AUTO_EXPAND fonctionnalité. Avant de créer ou de mettre à jour un ensemble de piles à partir d'un modèle qui référence directement les macros, assurez-vous de connaître les transformations effectuées par la macro.

Exemples de macros

Outre la Exemple de macro : Création et utilisation d'une macro procédure pas à pas présentée dans ce guide, vous trouverez des exemples de macros, notamment du code source et des modèles, dans notre GitHub référentiel. Ces exemples sont fournis « en l'état » à des fins éducatives.

Consultez aussi

AWS::CloudFormation::Macro

Transformation

Fn::Transform

Transformation AWS::Serverless

Transformation AWS::Include