Migrer AWS CloudFormation les piles vers les modèles de lancement - Amazon EC2 Auto Scaling

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

Vous pouvez migrer vos modèles de AWS 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.

Trouver les groupes Auto Scaling qui utilisent une configuration de lancement

Pour trouver les groupes Auto Scaling qui utilisent une configuration de lancement
  • Utilisez la describe-auto-scaling-groupscommande 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'--filtersoption 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 sortieMigrez vos groupes Auto Scaling pour lancer des modèles.

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

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 du Guide de l’utilisateur AWS CloudFormation .

  2. 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 EC2 en charge par Amazon, consultez AWSEC2: : LaunchTemplate AWS  dans le guide de AWS CloudFormation l'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.

  3. Si la IamInstanceProfile propriété est présente dans votre configuration de lancement, vous devez la convertir en structure et spécifier le nom ou le profil ARN d'instance. Pour un exemple, voir AWS: EC2 : : LaunchTemplate AWS .

  4. Si les propriétés AssociatePublicIpAddress, InstanceMonitoring, ou PlacementTenancy sont présentes dans votre configuration de lancement, vous devez les convertir en structure. Pour des exemples, voir AWS: EC2 : : LaunchTemplate AWS .

    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.

  5. 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.

  6. Si BlockDeviceMapping des structures sont présentes dans votre configuration de lancement avec NoDevice set totrue, vous devez spécifier une chaîne vide NoDevice dans votre modèle de lancement pour EC2 qu'Amazon omette l'appareil.

  7. 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, voir AWS: : EC2 : : LaunchTemplate InstanceMarketOptions AWS  dans 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 : : AutoScalingGroup MixedInstancesPolicy AWS  dans le guide de AWS CloudFormation l'utilisateur.

  8. Supprimez la LaunchConfigurationName propriété de la AutoScalingGroup ressource AWSAutoScaling: AutoScalingGroup AWS  Ajoutez le modèle de lancement à sa place.

    Dans les exemples suivants, la fonction intrinsèque Ref obtient l'ID de la LaunchTemplate ressource AWSEC2LaunchTemplateAWS:  avec l'ID logiquemyLaunchTemplate. La GetAttfonction 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, consultez AWSAutoScaling: : AutoScalingGroup AWS  dans le guide de AWS CloudFormation l'utilisateur.

  9. 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 dans le Guide de l’utilisateur AWS CloudFormation .

Comprendre les comportements de mise à jour des ressources d’une pile

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'UpdatePolicyattribut pour les groupes Auto Scaling. Lors d'une mise à jour, si UpdatePolicy ce paramètre est défini surAutoScalingRollingUpdate, CloudFormation remplace InService les instances une fois que vous avez effectué les étapes de cette procédure. S'il UpdatePolicy est défini surAutoScalingReplacingUpdate, CloudFormation remplace le groupe Auto Scaling et son pool de chaleur (s'il en existe un).

Si vous n'avez pas spécifié d'UpdatePolicyattribut 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

Suivre la migration
  1. Dans la console AWS CloudFormation, choisissez la pile que vous avez mise à jour et choisissez l'onglet Events afin d'afficher les événements de la pile.

  2. 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.

  3. 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 liés à Amazon EC2 Auto Scaling : modèles de lancement pour rechercher les causes potentielles.

  4. (Facultatif) En fonction de votre utilisation de l'UpdatePolicyattribut, vous pouvez suivre la progression de votre groupe Auto Scaling depuis la page des groupes Auto Scaling de la EC2 console Amazon. 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.

  5. 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 dans le Guide de l’utilisateur AWS CloudFormation .

  6. Une fois la mise à jour de la pile terminée, ouvrez la page des modèles de lancement et la page des configurations de lancement de la EC2 console Amazon. 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

À des fins de référence, le tableau suivant répertorie toutes les propriétés de haut niveau de la LaunchConfiguration ressource AWSAutoScalingLaunchConfigurationAWS: AutoScaling  avec leur propriété correspondante dans la LaunchTemplate ressource AWSEC2: LaunchTemplate AWS 

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.