Mettre à jour une CloudFormation pile - 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.

Mettre à jour une CloudFormation pile

Note

Ce didacticiel s'appuie sur les concepts du Déployez des applications sur Amazon EC2 didacticiel. Si vous n'avez pas terminé ce didacticiel, nous vous recommandons de le faire d'abord pour comprendre le EC2 bootstrap avec. CloudFormation

Cette rubrique décrit la progression simple des mises à jour d'une pile en cours d'exécution. Nous effectuerons les étapes suivantes :

  1. Création de la pile initiale : créez une pile à l'aide d'une AMI Amazon Linux 2 de base, en installant l'application PHP Apache Web Server et une simple application PHP à l'aide des scripts d' CloudFormation assistance.

  2. Mettre à jour l'application : mettez à jour l'un des fichiers de l'application et déployez le logiciel à l'aide de CloudFormation.

  3. Ajouter une paire de clés : ajoutez une paire de EC2 clés Amazon à l'instance, puis mettez à jour le groupe de sécurité pour autoriser l'accès SSH à l'instance.

  4. Mettre à jour le type d'instance : modifiez le type d'instance de l' EC2 instance Amazon sous-jacente.

  5. Mettre à jour l'AMI : modifiez l'image machine Amazon (AMI) de l' EC2 instance Amazon de votre stack.

Note

CloudFormation est gratuit, mais les EC2 ressources Amazon que vous créez vous seront facturées. Toutefois, si vous êtes nouveau dans ce AWS domaine, vous pouvez profiter du niveau gratuit pour minimiser ou éliminer les coûts au cours de ce processus d'apprentissage.

Étape 1 : Création de la pile initiale

Nous allons commencer par créer une pile que nous pourrons utiliser dans le reste de cette rubrique. Nous avons fourni un modèle simple qui lance une application Web PHP à instance unique hébergée Apache Web Server et exécutée sur une AMI Amazon Linux 2.

PHP et l'application PHP simple sont tous installés par les scripts d' CloudFormation assistance installés par défaut sur l'AMI Amazon Linux 2. Apache Web Server L'extrait de modèle suivant montre les métadonnées qui décrivent les packages et les fichiers à installer, en l'occurrence l'infrastructure PHP Apache Web Server et l'infrastructure PHP du Yum référentiel pour l'AMI Amazon Linux 2. L'extrait montre également la Services section, ce qui garantit que le Apache Web Server est en cours d'exécution.

WebServerInstance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo '<h1>Hello World!</h1>'; ?> mode: '000644' owner: apache group: apache services: systemd: httpd: enabled: true ensureRunning: true

L'application elle-même est un exemple de « Hello World » entièrement défini dans le modèle. Pour une application réelle, les fichiers peuvent être stockés sur Amazon S3 ou dans un autre référentiel et référencés à partir du modèle. GitHub CloudFormation peut télécharger des packages (tels que RPMs ou RubyGems) et référencer des fichiers individuels, des extensions .zip et .tar des fichiers pour créer les artefacts de l'application sur l' EC2instance Amazon.

Le modèle active et configure le cfn-hup daemon pour qu'il écoute les modifications apportées à la configuration définie dans les métadonnées de l'instance Amazon EC2 . À l'aide du cfn-hup daemon, vous pouvez mettre à jour le logiciel d'application, tel que la version d'Apache ou de PHP, ou vous pouvez mettre à jour le fichier d'application PHP lui-même à partir de CloudFormation. L'extrait suivant, tiré de la même EC2 ressource Amazon dans le modèle, montre les éléments nécessaires à la configuration pour appeler cfn-init toutes les deux minutes cfn-hup afin de détecter et d'appliquer les mises à jour aux métadonnées. Sinon, il cfn-init ne s'exécute qu'une seule fois au démarrage.

files: /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf

Pour compléter la pile, dans la Properties section de définition de l' EC2 instance Amazon, la UserData propriété contient le cloud-init script qui appelle cfn-init pour installer les packages et les fichiers. Pour plus d'informations, consultez la référence aux scripts CloudFormation d'assistance dans le Guide de référence des CloudFormation modèles. Le modèle crée également un groupe EC2 de sécurité Amazon.

AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' InstanceType: Description: WebServer EC2 instance type Type: String Default: t3.micro AllowedValues: - t3.nano - t3.micro - t3.small - t3.medium - t3a.nano - t3a.micro - t3a.small - t3a.medium - m5.large - m5.xlarge - m5.2xlarge - m5a.large - m5a.xlarge - m5a.2xlarge - c5.large - c5.xlarge - c5.2xlarge - r5.large - r5.xlarge - r5.2xlarge - r5a.large - r5a.xlarge - r5a.2xlarge ConstraintDescription: must be a valid EC2 instance type. Resources: WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash -xe # Get the latest CloudFormation package yum update -y aws-cfn-bootstrap # Run cfn-init /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} || error_exit 'Failed to run cfn-init' # Start up the cfn-hup daemon to listen for changes to the EC2 instance metadata /opt/aws/bin/cfn-hup || error_exit 'Failed to start cfn-hup' # Signal success or failure /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>"; ?> mode: '000644' owner: apache group: apache /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf CreationPolicy: ResourceSignal: Timeout: PT5M WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 Outputs: WebsiteURL: Value: !Sub 'http://${WebServerInstance.PublicDnsName}' Description: URL of the web application
Pour lancer une pile à partir de ce modèle
  1. Copiez le modèle et enregistrez-le localement sur votre système sous forme de fichier texte. Notez son emplacement, car vous en aurez besoin pour utiliser le fichier dans une étape ultérieure.

  2. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.

  3. Choisissez Créer une pile, avec de nouvelles ressources (standard).

  4. Choisissez Choisir un modèle existant.

  5. Sous Spécifier le modèle, choisissez Télécharger un fichier modèle et naviguez jusqu'au fichier que vous avez créé lors de la première étape, puis choisissez Suivant.

  6. Sur la page Spécifier les détails de la pile, entrez le UpdateTutorial nom de la pile.

  7. Sous Paramètres, conservez tous les mêmes paramètres et choisissez Next deux fois.

  8. Sur l'écran Réviser et créer, choisissez Soumettre.

Une fois que le statut de votre stack est CREATE_COMPLETE atteint, l'onglet Sorties affiche l'URL de votre site Web. Si vous choisissez la valeur de la WebsiteURL sortie, vous verrez votre nouvelle application PHP fonctionner.

Étape 2 : mise à jour de l'application

Maintenant que nous avons déployé la pile, nous allons mettre à jour l'application. Nous allons apporter une modification basique du texte qui est affiché par l'application. Pour ce faire, nous allons ajouter une commande echo dans le fichier index.php, comme illustré dans cet extrait de modèle :

files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>"; echo "<p>This is an updated version of our application.</p>"; ?> mode: '000644' owner: apache group: apache

Utilisez un éditeur de texte pour modifier manuellement le fichier de modèle que vous avez enregistré localement.

Maintenant, mettez à jour la pile.

Pour mettre à jour la pile avec votre modèle mis à jour
  1. Dans la CloudFormation console, sélectionnez votre UpdateTutorial stack.

  2. Choisissez Mettre à jour, puis effectuer une mise à jour directe.

  3. Choisissez Remplacer le modèle existant.

  4. Sous Spécifier le modèle, choisissez Télécharger un fichier modèle et téléchargez votre fichier modèle modifié, puis cliquez sur Suivant.

  5. Sur la page Spécifier les détails de la pile, conservez tous les paramètres identiques et cliquez deux fois sur Suivant.

  6. Sur la page Révision, passez en revue les modifications. Sous Modifications, vous devriez voir que la WebServerInstance ressource CloudFormation sera mise à jour.

  7. Sélectionnez Envoyer.

Lorsque votre pile est dans UPDATE_COMPLETE cet état, vous pouvez choisir à nouveau la valeur de WebsiteURL sortie pour vérifier que les modifications apportées à votre application ont pris effet. Par défaut, le cfn-hup daemon s'exécute toutes les 2 minutes. Le changement de l'application peut donc prendre jusqu'à 2 minutes une fois la pile mise à jour.

Pour voir l'ensemble des ressources mises à jour, accédez à la CloudFormation console. Dans l'onglet Événements, examinez les événements de la pile. Dans ce cas particulier, les métadonnées de l' EC2 instance Amazon ont WebServerInstance été mises à jour, ce qui a également entraîné CloudFormation la réévaluation des autres ressources (WebServerSecurityGroup) pour s'assurer qu'il n'y avait pas d'autres modifications. Aucune des autres ressources de pile n'a été modifiée. CloudFormation met uniquement à jour les ressources qui sont concernées par les modifications de la pile. Ces modifications peuvent être directes, telles que des modifications de propriétés ou de métadonnées, ou elles peuvent être dues à des dépendances ou à des flux de données RefGetAtt, ou à d'autres fonctions intrinsèques du modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.

Cette simple mise à jour illustre le processus. Cependant, vous pouvez apporter des modifications beaucoup plus complexes aux fichiers et aux packages déployés sur vos EC2 instances Amazon. Par exemple, vous pouvez choisir d'ajouter MySQL à l'instance, ainsi que la prise en charge PHP pour MySQL. Pour ce faire, il suffit d'ajouter les packages, les fichiers et les services supplémentaires à la configuration, puis de mettre à jour la pile pour déployer les modifications.

packages: yum: httpd: [] php: [] mysql: [] php-mysql: [] mysql-server: [] mysql-libs: [] ... services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf mysqld: enabled: true ensureRunning: true

Vous pouvez mettre à jour les CloudFormation métadonnées pour les mettre à jour avec les nouvelles versions des packages utilisés par l'application. Dans les exemples précédents, la propriété de version de chaque package est vide, ce qui indique que la dernière version du package cfn-init doit être installée.

packages: yum: httpd: [] php: []

Vous pouvez éventuellement spécifier une chaîne de version d'un package. Si vous modifiez cette chaîne de version dans les appels ultérieurs de mise à jour de la pile, la nouvelle version du package sera déployée. Voici un exemple d'utilisation des numéros de version pour les RubyGems packages. Tous les packages compatibles avec la gestion des versions peuvent inclure des versions spécifiques.

packages: rubygems: mysql: [] rubygems-update: - "1.6.2" rake: - "0.8.7" rails: - "2.3.11"

Étape 3 : ajouter un accès SSH avec une paire de clés

Vous pouvez également mettre à jour une ressource dans le modèle pour ajouter des propriétés qui n'étaient pas initialement spécifiées dans le modèle. Pour illustrer cela, nous allons ajouter une paire de EC2 clés Amazon à une EC2 instance existante, puis ouvrir le port 22 dans le groupe de EC2 sécurité Amazon afin que vous puissiez utiliser Secure Shell (SSH) pour accéder à l'instance.

Pour ajouter un accès SSH à une instance Amazon EC2 existante
  1. Ajoutez deux paramètres supplémentaires au modèle pour transmettre le nom d'une paire de EC2 clés Amazon et d'un emplacement SSH existants.

    Parameters: KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: The IP address that can be used to SSH to the EC2 instances in CIDR format (e.g. 203.0.113.1/32) Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
  2. Ajoutez la KeyName propriété à l' EC2 instance Amazon.

    WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType KeyName: !Ref KeyName SecurityGroupIds: - !Ref WebServerSecurityGroup
  3. Ajoutez le port 22 et l'emplacement SSH aux règles d'entrée pour le groupe de EC2 sécurité Amazon.

    WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 and SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation
  4. Mettez à jour la pile en suivant les mêmes étapes que celles expliquées dansÉtape 2 : mise à jour de l'application.

Étape 4 : mettre à jour le type d'instance

Démontrons maintenant comment mettre à jour l'infrastructure sous-jacente en modifiant le type d'instance.

La pile que nous avons construite jusqu'à présent utilise une instance Amazon EC2 t3.micro. Supposons que votre site Web nouvellement créé reçoit plus de trafic qu'une instance t3.micro ne peut en gérer, et que vous souhaitiez maintenant passer à un type d'instance Amazon EC2 m5.large. Si l'architecture du type d'instance change, l'instance doit être créée avec une autre AMI. Cependant, le t3.micro et le m5.large utilisent les mêmes architectures de processeur et exécutent Amazon Linux 2 (x86_64). AMIs Pour plus d'informations, consultez la section Compatibilité pour la modification du type d'instance dans le guide de EC2 l'utilisateur Amazon.

Utilisons le modèle que nous avons modifié à l'étape précédente pour changer le type d'instance. Comme InstanceType il s'agissait d'un paramètre d'entrée du modèle, nous n'avons pas besoin de modifier le modèle ; nous pouvons modifier la valeur du paramètre sur la page Spécifier les détails de la pile.

Pour mettre à jour la pile avec une nouvelle valeur de paramètre
  1. Dans la CloudFormation console, sélectionnez votre UpdateTutorial stack.

  2. Choisissez Mettre à jour, puis effectuer une mise à jour directe.

  3. Choisissez Utiliser un modèle existant, puis cliquez sur Suivant.

  4. Sur la page Spécifier les détails de la pile, remplacez la valeur de la zone t3.micro de InstanceTypetexte parm5.large. Choisissez ensuite deux fois Next.

  5. Sur la page Révision, passez en revue les modifications. Sous Modifications, vous devriez voir que la WebServerInstance ressource CloudFormation sera mise à jour.

  6. Sélectionnez Envoyer.

Vous pouvez modifier dynamiquement le type d'instance d'une instance Amazon basée sur EBS en démarrant et en arrêtant l' EC2 instance. CloudFormation essaie d'optimiser le changement en mettant à jour le type d'instance et en redémarrant l'instance, afin que l'ID de l'instance ne change pas. Toutefois, au redémarrage de l'instance, l'adresse IP publique de cette dernière change. Pour garantir que l'adresse IP élastique est correctement liée après la modification, elle CloudFormation sera également mise à jour. Vous pouvez voir les modifications dans la CloudFormation console sous l'onglet Événements.

Pour vérifier le type d'instance depuis le AWS Management Console, ouvrez la EC2 console Amazon et localisez-y votre instance.

Étape 5 : mise à jour de l'AMI

Mettons maintenant à jour notre stack pour utiliser Amazon Linux 2023, qui est la prochaine génération d'Amazon Linux.

La mise à jour de l'AMI est une modification majeure qui nécessite le remplacement de l'instance. Nous ne pouvons pas simplement démarrer et arrêter l'instance pour modifier l'AMI ; CloudFormation cela représente une modification d'une propriété immuable de la ressource. Pour modifier une propriété immuable, vous CloudFormation devez lancer une ressource de remplacement, en l'occurrence une nouvelle EC2 instance Amazon exécutant la nouvelle AMI.

Voyons comment nous pourrions mettre à jour notre modèle de stack pour utiliser Amazon Linux 2023. Les principales modifications incluent la mise à jour du paramètre AMI et le passage du gestionnaire de dnf packages yum au gestionnaire de packages.

AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2023 AMI from the Parameter Store Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64' InstanceType: Description: WebServer EC2 instance type Type: String Default: t3.micro AllowedValues: - t3.nano - t3.micro - t3.small - t3.medium - t3a.nano - t3a.micro - t3a.small - t3a.medium - m5.large - m5.xlarge - m5.2xlarge - m5a.large - m5a.xlarge - m5a.2xlarge - c5.large - c5.xlarge - c5.2xlarge - r5.large - r5.xlarge - r5.2xlarge - r5a.large - r5a.xlarge - r5a.2xlarge ConstraintDescription: must be a valid EC2 instance type. KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: The IP address that can be used to SSH to the EC2 instances in CIDR format (e.g. 203.0.113.1/32) Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. Resources: WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType KeyName: !Ref KeyName SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash -xe # Get the latest CloudFormation package dnf update -y aws-cfn-bootstrap # Run cfn-init /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} || error_exit 'Failed to run cfn-init' # Start up the cfn-hup daemon to listen for changes to the EC2 instance metadata /opt/aws/bin/cfn-hup || error_exit 'Failed to start cfn-hup' # Signal success or failure /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} Metadata: AWS::CloudFormation::Init: config: packages: dnf: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>"; echo "<p>This is an updated version of our application.</p>"; echo "<p>Running on Amazon Linux 2023!</p>"; ?> mode: '000644' owner: apache group: apache /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf CreationPolicy: ResourceSignal: Timeout: PT5M WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 and SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation Outputs: WebsiteURL: Value: !Sub 'http://${WebServerInstance.PublicDnsName}' Description: URL of the web application

Mettez à jour la pile en suivant les mêmes étapes que celles expliquées dansÉtape 2 : mise à jour de l'application.

Une fois la nouvelle instance en cours d'exécution, CloudFormation met à jour les autres ressources de la pile pour qu'elles pointent vers la nouvelle ressource. Lorsque toutes les nouvelles ressources sont créées, l’ancienne ressource est supprimée, un processus appelé UPDATE_CLEANUP. Cette fois-ci, vous remarquerez que l'ID d'instance et l'URL d'application de l'instance dans la pile ont changé suite à la mise à jour. Les événements du tableau des événements contiennent une description « La mise à jour demandée entraîne la modification d'une propriété immuable et crée donc une nouvelle ressource physique » pour indiquer qu'une ressource a été remplacée.

Alternativement : si le code d'application que vous souhaitez mettre à jour est écrit dans l'AMI, vous pouvez utiliser le même mécanisme de mise à jour de pile pour mettre à jour l'AMI afin de charger votre nouvelle application.

Pour mettre à jour l'AMI avec un code d'application personnalisé
  1. Créez votre nouvelle AMI contenant les modifications apportées à votre application ou à votre système d'exploitation. Pour plus d'informations, consultez la section Créer une AMI basée sur Amazon EBS dans le guide de l'utilisateur Amazon. EC2

  2. Mettez à jour votre modèle pour intégrer le nouvel ID d'AMI.

  3. Mettez à jour la pile en suivant les mêmes étapes que celles expliquées dansÉtape 2 : mise à jour de l'application.

Lorsque vous mettez à jour la pile, vous CloudFormation détectez que l'ID de l'AMI a changé, puis cela déclenche une mise à jour de la pile de la même manière que nous avons initié la mise à jour ci-dessus.

Considérations en matière d'impact et de disponibilité

Différentes propriétés ont des impacts distincts sur les ressources de la pile. Vous pouvez utiliser CloudFormation pour mettre à jour n'importe quelle propriété. Toutefois, avant d'effectuer des modifications, posez-vous les questions suivantes :

  1. Comment la mise à jour affectera-t-elle la ressource elle-même ? Par exemple, la mise à jour d'un seuil d'alarme désactivera l'alarme pendant la mise à jour. Comme nous l'avons vu, la modification du type d'instance nécessite l'arrêt et le redémarrage de l'instance. CloudFormation utilise les actions de mise à jour ou de modification des ressources sous-jacentes pour apporter des modifications aux ressources. Pour comprendre l'impact des mises à jour, consultez la documentation des ressources spécifiques.

  2. La modification est-elle réversible ou immuable ? Certaines modifications apportées aux propriétés des ressources, telles que la modification de l'AMI sur une EC2 instance Amazon, ne sont pas prises en charge par les services sous-jacents. Dans le cas de modifications modifiables, le type Update ou Modify CloudFormation sera utilisé APIs pour les ressources sous-jacentes. Pour les modifications de propriétés immuables, CloudFormation créera de nouvelles ressources avec les propriétés mises à jour, puis les liera à la pile avant de supprimer les anciennes ressources. Bien que l'on CloudFormation essaie de réduire le temps d'arrêt des ressources de la pile, le remplacement d'une ressource est un processus en plusieurs étapes qui prend du temps. Au cours de la reconfiguration de la pile, votre application ne sera pas entièrement opérationnelle. Par exemple, il ne peut-être qu'elle ne parvienne pas à traiter les requêtes ou à accéder à une base de données.

Ressources connexes

Pour plus d'informations sur l'utilisation CloudFormation pour démarrer des applications et sur l'intégration à d'autres services de configuration et de déploiement tels que Puppet etOpscode Chef, consultez les livres blancs suivants :