

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.

# Migrer AWS CloudFormation les piles vers les modèles de lancement
<a name="migrate-launch-configurations-with-cloudformation"></a>

Vous pouvez migrer vos modèles de CloudFormation stack existants des configurations de lancement vers les modèles de lancement. Pour ce faire, ajoutez un modèle de lancement directement à un modèle de pile existant, puis associez le modèle de lancement au groupe Auto Scaling dans le modèle de pile. Utilisez ensuite le modèle modifié pour mettre à jour votre pile. 

Lors de la migration vers des modèles de lancement, cette rubrique vous permet de gagner du temps en fournissant des instructions pour réécrire les configurations de lancement dans vos modèles de CloudFormation pile en tant que modèles de lancement. Pour plus d’informations sur la migration des configurations de lancement vers des modèles de lancement, consultez [Migrez vos groupes Auto Scaling pour lancer des modèles](migrate-to-launch-templates.md).

**Topics**
+ [Trouver les groupes Auto Scaling qui utilisent une configuration de lancement](#find-auto-scaling-groups-to-migrate)
+ [Mettre à jour une pile pour utiliser un modèle de lancement](#update-stack-to-use-launch-template)
+ [Comprendre les comportements de mise à jour des ressources d’une pile](#understand-update-behavior)
+ [Suivre la migration](#track-the-migration)
+ [Référence de mappage de la configuration du lancement](#launch-configuration-mapping-reference)

## Trouver les groupes Auto Scaling qui utilisent une configuration de lancement
<a name="find-auto-scaling-groups-to-migrate"></a>

**Pour trouver les groupes Auto Scaling qui utilisent une configuration de lancement**
+ Utilisez la [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)commande suivante pour répertorier les noms des groupes Auto Scaling qui utilisent des configurations de lancement dans la région spécifiée. Incluez l'`--filters`option permettant de restreindre les résultats aux groupes associés à une CloudFormation pile (en filtrant par la clé de `aws:cloudformation:stack-name` balise). 

  ```
  aws autoscaling describe-auto-scaling-groups --region {{REGION}} \
    --filters Name=tag-key,Values=aws:cloudformation:stack-name \
    --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'
  ```

  Voici un exemple de sortie.

  ```
  [
      "{stack-name}-group-1",
      "{stack-name}-group-2",
      "{stack-name}-group-3"
  ]
  ```

  Vous pouvez trouver d'autres AWS CLI commandes utiles pour trouver des groupes Auto Scaling dans lesquels migrer et filtrer la sortie[Migrez vos groupes Auto Scaling pour lancer des modèles](migrate-to-launch-templates.md).

**Important**  
Si les ressources de votre pile ont `AWSEB` dans leur nom, cela signifie qu'elles ont été créées via AWS Elastic Beanstalk. Dans ce cas, vous devez mettre à jour l’environnement Beanstalk pour demander à Elastic Beanstalk de supprimer la configuration de lancement et la remplacer par un modèle de lancement.

## Mettre à jour une pile pour utiliser un modèle de lancement
<a name="update-stack-to-use-launch-template"></a>

Suivez les étapes de cette section afin d’effectuer les étapes suivantes :
+ Réécrivez la configuration de lancement en tant que modèle de lancement en utilisant les propriétés de modèle de lancement équivalentes. 
+ Associer le nouveau modèle de lancement avec le groupe Auto Scaling. 
+ Déployez ces mises à jour.

**Pour modifier le modèle de pile et mettre à jour la pile**

1. Suivez les mêmes procédures générales pour modifier le modèle de pile décrites dans la section [Modification d’un modèle de pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html) du *Guide de l’utilisateur AWS CloudFormation *.

1. Réécrivez la configuration de lancement en tant que modèle de lancement. Consultez l’exemple suivant: 

   **Exemple : Configuration de lancement simple**

   ```
   ---
   Resources:
     myLaunchConfig: 
       Type: AWS::AutoScaling::LaunchConfiguration
       Properties: 
         ImageId: ami-02354e95b3example
         InstanceType: t3.micro
         SecurityGroups:
           - !Ref EC2SecurityGroup
         KeyName: MyKeyPair
         BlockDeviceMappings: 
           - DeviceName: /dev/xvda
             Ebs: 
               VolumeSize: 150
               DeleteOnTermination: true
         UserData: 
           Fn::Base64: !Sub |
             #!/bin/bash -xe
             yum install -y aws-cfn-bootstrap
             /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}
   ```

   **Exemple : L’équivalent du modèle de lancement**

   ```
   ---
   Resources:
     myLaunchTemplate:
       Type: AWS::EC2::LaunchTemplate
       Properties:
         LaunchTemplateName: {{!Sub ${AWS::StackName}-launch-template}}
         LaunchTemplateData:
           ImageId: ami-02354e95b3example
           InstanceType: t3.micro
           SecurityGroupIds:
             - Ref! EC2SecurityGroup
           KeyName: MyKeyPair
           BlockDeviceMappings: 
             - DeviceName: /dev/xvda
               Ebs: 
                 VolumeSize: 150
                 DeleteOnTermination: true
           UserData: 
             Fn::Base64: !Sub |
               #!/bin/bash -x
               yum install -y aws-cfn-bootstrap
               /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}
   ```

   Pour obtenir des informations de référence sur toutes les propriétés prises en charge par Amazon EC2, consultez le guide [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)de l'*AWS CloudFormation utilisateur*. 

   Notez que le modèle de lancement inclut la propriété `LaunchTemplateName` avec une valeur de `!Sub ${AWS::StackName}-launch-template`. Cela est nécessaire si vous souhaitez que le nom du modèle de lancement inclue le nom de la pile.

1. Si la propriété `IamInstanceProfile` est présente dans votre configuration de lancement, vous devez la convertir en structure et spécifier le nom ou l’ARN du profil d’instance. Pour obtenir un exemple, consultez [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html). 

1. Si les propriétés `AssociatePublicIpAddress`, `InstanceMonitoring`, ou `PlacementTenancy` sont présentes dans votre configuration de lancement, vous devez les convertir en structure. Pour obtenir des exemples, consultez [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html). 

   Il existe une exception lorsque la valeur de la propriété `MapPublicIpOnLaunch` sur les sous-réseaux que vous avez utilisés pour votre groupe Auto Scaling correspond à la valeur de la propriété `AssociatePublicIpAddress` dans votre configuration de lancement. Dans ce cas, vous pouvez ignorer la propriété `AssociatePublicIpAddress`. La `AssociatePublicIpAddress` propriété est uniquement utilisée pour remplacer la `MapPublicIpOnLaunch` propriété afin de modifier si les instances reçoivent une IPv4 adresse publique au lancement. 

1. Vous pouvez copier les groupes de sécurité de la propriété `SecurityGroups` vers l’un des deux emplacements de votre modèle de lancement. Normalement, vous copiez les groupes de sécurité dans la propriété `SecurityGroupIds`. Toutefois, si vous créez une structure `NetworkInterfaces` dans votre modèle de lancement pour spécifier la propriété `AssociatePublicIpAddress`, vous devez plutôt copier les groupes de sécurité dans la propriété `Groups` de l’interface réseau.

1. Si une ou plusieurs structures `BlockDeviceMapping` sont présentes dans votre configuration de lancement avec `NoDevice` défini sur `true`, vous devez spécifier une chaîne vide pour `NoDevice` dans votre modèle de lancement pour qu’Amazon EC2 omette le périphérique.

1. Si la propriété `SpotPrice` est présente dans votre configuration de lancement, nous vous recommandons de l’omettre de votre modèle de lancement. Votre instance Spot sera lancée au prix Spot en vigueur. Ce prix ne dépassera jamais le prix À la demande.

   Pour demander des instances Spot, vous disposez de deux options qui s’excluent mutuellement :
   + La première consiste à utiliser la structure `InstanceMarketOptions` de votre modèle de lancement (non recommandé). Pour plus d'informations, consultez [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancemarketoptions.html)le *guide de AWS CloudFormation l'utilisateur*.
   + L’autre option consiste à ajouter une structure `MixedInstancesPolicy` à votre groupe Auto Scaling. Cela vous donne plus d’options quant à la manière dont vous faites la demande. Une demande d’instance Spot dans votre modèle de lancement prend en charge la sélection d’un seul type d’instance par groupe Auto Scaling. Cependant, une politique d’instances mixtes prend en charge la sélection de plusieurs types d’instances par groupe Auto Scaling. Les demandes d’instance Spot ont l’avantage d’offrir le choix entre plusieurs types d’instances. Pour plus d'informations, voir [AWS::AutoScaling::AutoScaling MixedInstancesPolicyAWS::AutoScaling::AutoScalingGroupe](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) dans le *Guide de AWS CloudFormation l'utilisateur*.

1. Supprimez la `LaunchConfigurationName` propriété de la ressource [AWS::AutoScaling::AutoScalingAWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) . Ajoutez le modèle de lancement à sa place.

   Dans les exemples suivants, la fonction intrinsèque [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) obtient l'ID de la [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)ressource avec l'ID logique`myLaunchTemplate`. La [GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html)fonction obtient le dernier numéro de version (par exemple,`1`) du modèle de lancement de la `Version` propriété.

   **Exemple : Sans politique d’instances mixtes**

   ```
   ---
   Resources:
     myASG:
       Type: AWS::AutoScaling::AutoScalingGroup
       Properties:
         LaunchTemplate:
           LaunchTemplateId: {{!Ref myLaunchTemplate}}
           Version: {{!GetAtt myLaunchTemplate.LatestVersionNumber}}
         ...
   ```

   **Exemple : Avec une politique d’instances mixtes**

   ```
   ---
   Resources:
     myASG:
       Type: AWS::AutoScaling::AutoScalingGroup
       Properties:        
         MixedInstancesPolicy:
           LaunchTemplate:
             LaunchTemplateSpecification:
               LaunchTemplateId: {{!Ref myLaunchTemplate}}
               Version: {{!GetAtt myLaunchTemplate.LatestVersionNumber}}
         ...
   ```

   Pour obtenir des informations de référence sur toutes les propriétés prises en charge par Amazon EC2 Auto Scaling, [AWS::AutoScaling::AutoScalingconsultez AWS::AutoScaling::AutoScaling](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) dans *AWS CloudFormation le guide de l'utilisateur*.

1. Lorsque vous êtes prêt à déployer ces mises à jour, suivez les CloudFormation procédures pour mettre à jour la pile avec votre modèle de pile modifié. Pour plus d’informations, consultez [Modification d’un modèle de pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html) dans le *Guide de l’utilisateur AWS CloudFormation *. 

## Comprendre les comportements de mise à jour des ressources d’une pile
<a name="understand-update-behavior"></a>

CloudFormation met à jour les ressources de pile en comparant les modifications entre le modèle mis à jour que vous fournissez et les configurations de ressources que vous avez décrites dans la version précédente de votre modèle de pile. Les configurations de ressources qui n’ont pas changé restent inchangées pendant le processus de mise à jour.

CloudFormation prend en charge l'[UpdatePolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)attribut pour les groupes Auto Scaling. Lors d'une mise à jour, si `UpdatePolicy` ce paramètre est défini sur`AutoScalingRollingUpdate`, CloudFormation remplace `InService` les instances une fois que vous avez effectué les étapes de cette procédure. S'il `UpdatePolicy` est défini sur`AutoScalingReplacingUpdate`, CloudFormation remplace le groupe Auto Scaling et son pool de chaleur (s'il en existe un).

Si vous n'avez pas spécifié d'`UpdatePolicy`attribut pour votre groupe Auto Scaling, l'exactitude du modèle de lancement est vérifiée, mais aucune modification CloudFormation n'est déployée sur les instances du groupe Auto Scaling. Toutes les nouvelles instances utilisent votre modèle de lancement, mais les instances existantes continuent à s’exécuter selon la configuration de lancement initiale (bien qu’elle n’existe pas). L’exception est lorsque vous modifiez vos options d’achat, par exemple en ajoutant une politique d’instances mixtes. Dans ce cas, votre groupe Auto Scaling remplace progressivement les instances existantes par de nouvelles instances correspondant aux nouvelles options d’achat.

Si vous devez annuler une modification pour passer des configurations de lancement aux modèles de lancement, assurez-vous de tester l'opération de restauration.

## Suivre la migration
<a name="track-the-migration"></a>

**Suivre la migration**

1. Dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation), choisissez la pile que vous avez mise à jour et choisissez l'onglet **Events** afin d'afficher les événements de la pile.

1. Pour mettre à jour la liste des événements avec les événements les plus récents, cliquez sur le bouton d'actualisation de la CloudFormation console.

1. Pendant la mise à jour de votre pile, vous remarquerez plusieurs événements pour chaque mise à jour des ressources. Si vous voyez une exception dans la colonne **Status reason** indiquant un problème lors de la tentative de création du modèle de lancement, consultez [Résoudre les problèmes d'Amazon EC2 Auto Scaling : modèles de lancement](ts-as-launch-template.md) pour rechercher les causes potentielles.

1. (Facultatif) En fonction de votre utilisation de l’attribut `UpdatePolicy`, vous pouvez suivre la progression de votre groupe Auto Scaling depuis la [page des groupes Auto Scaling](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) de la console Amazon EC2. Sélectionnez le groupe Auto Scaling. Sous l’onglet **Activité** sous **Historique de l’activité**, la colonne **État** indique si votre groupe Auto Scaling a réussi à lancer ou à résilier des instances, ou si l’activité de mise à l’échelle est toujours en cours. 

1. Lorsque la mise à jour de la pile est terminée, CloudFormation émet un événement de `UPDATE_COMPLETE` pile. Pour de plus amples informations, veuillez consulter [Surveillance de la progression d’une mise à jour de pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-monitor-stack.html) dans le *Guide de l’utilisateur AWS CloudFormation *. 

1. Une fois la mise à jour de la pile terminée, ouvrez la [page des modèles de lancement](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) et la [page des configurations de lancement](https://console.aws.amazon.com/ec2/v2/home?#LaunchConfigurations) de la console Amazon EC2. Vous remarquerez qu’un nouveau modèle de lancement est créé et que la configuration de lancement est supprimée. 

## Référence de mappage de la configuration du lancement
<a name="launch-configuration-mapping-reference"></a>

À des fins de référence, le tableau suivant répertorie toutes les propriétés de niveau supérieur de la [AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html)ressource avec leur propriété correspondante dans la [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)ressource.


| Propriété source de la configuration de lancement | Propriété cible du modèle de lancement | 
| --- | --- | 
| AssociatePublicIpAddress | NetworkInterfaces.AssociatePublicIpAddress | 
| BlockDeviceMappings | BlockDeviceMappings | 
| ClassicLinkVPCId | Non disponible¹ | 
| ClassicLinkVPCSecurityGroups | Non disponible¹ | 
| EbsOptimized | EbsOptimized | 
| IamInstanceProfile | Soit IamInstanceProfile.Arn soit IamInstanceProfile.Name, mais pas les deux.  | 
| ImageId | ImageId | 
| InstanceId | InstanceId | 
| InstanceMonitoring | Monitoring.Enabled | 
| InstanceType | InstanceType | 
| KernelId | KernelId | 
| KeyName | KeyName | 
| LaunchConfigurationName | LaunchTemplateName | 
| MetadataOptions | MetadataOptions | 
| PlacementTenancy | Placement.Tenancy  | 
| RamDiskId | RamDiskId | 
| SecurityGroups | Soit SecurityGroupIds soit NetworkInterfaces.Groups, mais pas les deux. | 
| SpotPrice | InstanceMarketOptions.SpotOptions.MaxPrice | 
| UserData | UserData | 

¹ Les `ClassicLinkVPCSecurityGroups` propriétés `ClassicLinkVPCId` et ne peuvent pas être utilisées dans un modèle de lancement car EC2-Classic n'est plus disponible.