Comment mettre à jour mon volume EBS dans CloudFormation même si je ne remplace pas mes instances EC2 ?

Lecture de 3 minute(s)
0

Je souhaite mettre à jour mon volume Amazon Elastic Block Store (Amazon EBS) dans AWS CloudFormation. Cependant, je ne souhaite pas remplacer mes instances Amazon Elastic Compute Cloud (Amazon EC2).

Résolution

Pour empêcher le remplacement d'instance, il est recommandé d'utiliser le type de ressource AWS::EC2::Volume lorsque vous mettez à jour des volumes EBS dans CloudFormation.

Le remplacement d'instance se produit lorsque vous spécifiez des volumes dans la propriété BlockDeviceMappings des types de ressource AWS::EC2::Instance et AWS::EC2::Template. Dans ce scénario, vous devez ajouter un attribut DeletionPolicy retain.

Important : Si vous modifiez manuellement le volume, par exemple de gp2 à gp3, vous devez également modifier le volume attaché à l'instance. Vérifiez que l'instance n'est pas à l’état Optimisation ou Modification. Avant de modifier le volume en gp3, assurez-vous de respecter les exigences de modification du volume.

Pour éviter le remplacement d'instance lorsque vous modifiez des volumes que vous spécifiez à l'aide de la propriété BlockDeviceMappings, procédez comme suit.

Ajouter un attribut DeletionPolicy retain à la ressource de modèle AWS::EC2::Instance cible

Procédez comme suit :

  1. Prenez un instantané des volumes pour créer une sauvegarde des charges de travail critiques.

  2. Définissez l’attribut DeletionPolicy sur Retain dans la pile CloudFormation de l'instance contenant le volume que vous souhaitez mettre à jour. Exemple :

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
         Ebs:
          VolumeType: gp2
          VolumeSize: 10
          DeleteOnTermination: true
       EbsOptimized: false
       ImageId: ami-064ff912f78e3e561
       InstanceInitiatedShutdownBehavior: stop
       InstanceType: t2.micro
       Monitoring: false
  3. Mettez à jour la pile.

Supprimer la ressource de sa pile CloudFormation et implémenter vos modifications

Procédez comme suit :

  1. Supprimez l'instance du modèle pour la supprimer de la pile CloudFormation, mais ne supprimez pas la ressource sous-jacente. Modifiez ensuite manuellement l'instance EC2.
    Remarque : Si votre modèle ne contient qu'une seule ressource, vous devez créer une ressource suppléante, telle qu'une autre instance. Vous pouvez supprimer la ressource du modèle après avoir réimporté l'instance EC2 dans le modèle.
  2. Modifiez les attributs du volume EBS.

Réimporter la ressource dans votre pile CloudFormation

Procédez comme suit :

  1. Ouvrez la console CloudFormation.

  2. Dans le panneau de navigation, sélectionnez Pile.

  3. Choisissez Actions de pile, puis choisissez Importer les ressources dans la pile.

  4. Entrez le modèle CloudFormation mis à jour. Exemple :

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
           VolumeType: gp3
           VolumeSize: 100
           DeleteOnTermination: true
        EbsOptimized: false
        ImageId: ami-064ff912f78e3e561
        InstanceInitiatedShutdownBehavior: stop
        InstanceType: t2.micro
        Monitoring: false

    Remarque : Pour importer une ressource, le modèle CloudFormation doit décrire la ressource avec ses configurations existantes.

  5. Dans Identifiant, entrez l'ID de l'instance.

  6. Choisissez Importer une ressource.

Une fois que CloudFormation a mis à jour le statut sur IMPORT_COMPLETE, l'instance fait partie de la pile.

Le message « There was an error creating this change set. As part of the import operation, you cannot modify or and [Outputs] » (Une erreur s'est produite lors de la création de cet ensemble de modifications. Dans le cas de l’opération d’importation, vous ne pouvez pas modifier ou/et [Outputs]) peut s’afficher.  Pour résoudre ce problème, vérifiez que la section Sorties du dernier modèle CloudFormation correspond au modèle utilisé par votre pile. S'ils ne sont pas identiques, mettez à jour le dernier modèle CloudFormation afin qu'il corresponde aux valeurs de la section Sorties du modèle utilisé par votre pile. Ensuite, mettez à jour à nouveau la pile.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 21 jours