Utiliser une actualisation d'instance avec la fonction Ignorer la correspondance - 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.

Utiliser une actualisation d'instance avec la fonction Ignorer la correspondance

La fonction Ignorer la correspondance indique à Amazon EC2 Auto Scaling d'ignorer les instances qui disposent déjà de vos dernières mises à jour. De cette façon, vous ne remplacez pas plus d'instances que nécessaire. Cela est utile quand vous souhaitez vous assurer que votre groupe Auto Scaling utilise une version particulière de votre modèle de lancement et ne remplace que les instances qui utilisent une version différente.

Les considérations suivantes s'appliquent à la fonction Ignorer la correspondance :

  • Si vous lancez une actualisation d'instance à la fois avec la fonction Ignorer la correspondance et la configuration souhaitée, Amazon EC2 Auto Scaling vérifie si des instances correspondent à la configuration souhaitée. Ensuite, il remplace uniquement les instances qui ne correspondent pas à la configuration souhaitée. Une fois l'actualisation d'instance réussie, Amazon EC2 Auto Scaling met à jour le groupe pour qu'il corresponde à la configuration souhaitée.

  • Si vous lancez une actualisation d'instance avec la fonction Ignorer la correspondance, mais que vous ne spécifiez pas la configuration souhaitée, Amazon EC2 Auto Scaling vérifie si des instances correspondent à la configuration que vous avez enregistrée pour la dernière fois dans le groupe Auto Scaling. Ensuite, il remplace uniquement les instances qui ne correspondent pas à la configuration que vous avez enregistrée la dernière fois.

  • Vous pouvez utiliser la fonction Ignorer la correspondance avec un nouveau modèle de lancement, une nouvelle version du modèle de lancement ou un ensemble de types d'instance. Si vous activez la fonction Ignorer la correspondance, mais qu'aucune d'entre elles ne change, le rafraîchissement des instances réussira immédiatement sans remplacer aucune instance. Si vous avez apporté d'autres modifications à la configuration souhaitée (à votre politique d'allocation des instances Spot, par exemple), Amazon EC2 Auto Scaling attend la réussite de l'actualisation d'instance. Il met ensuite à jour les paramètres du groupe Auto Scaling pour refléter la nouvelle configuration souhaitée.

  • Vous ne pouvez pas utiliser la fonction Ignorer la correspondance avec une nouvelle configuration de lancement.

  • Lorsque vous lancez une actualisation d'instance et que vous fournissez la configuration souhaitée, Amazon EC2 Auto Scaling garantit que toutes les instances utilisent la configuration souhaitée. Par conséquent, lorsque vous spécifiez l'une $Default ou $Latest l'autre version souhaitée pour votre modèle de lancement, puis que vous créez une nouvelle version du modèle de lancement alors qu'une actualisation d'instance est en cours, toutes les instances déjà remplacées seront remplacées à nouveau.

  • Skip matching ne permet pas de savoir si un script de données utilisateur du modèle de lancement extraira le code mis à jour et l'installera sur les nouvelles instances. Par conséquent, il se peut que le remplacement des instances sur lesquelles un code obsolète soit installé ne soit pas remplacé. Dans ce cas, vous devez désactiver la mise en correspondance des erreurs pour vous assurer que toutes les instances reçoivent votre dernier code, même si la version du modèle de lancement n'est pas mise à jour.

Cette section contient des AWS CLI instructions pour démarrer une actualisation d'instance en activant la mise en correspondance des sauts. Pour des instructions sur l'utilisation de la console, consultez Lancer une actualisation d'instance (console).

Suivez les étapes décrites dans cette section AWS CLI pour effectuer les opérations suivantes :

  • Créez le modèle de lancement que vous souhaitez appliquer à vos instances.

  • Lancez une actualisation d'instance pour appliquer votre modèle de lancement à votre groupe Auto Scaling. Si vous n'activez pas la fonction Ignorer la correspondance, toutes les instances seront remplacées. Cela est vrai même si le modèle de lancement utilisé pour provisionner l'instance est le même que celui que vous avez spécifié pour la configuration souhaitée.

Pour utiliser la fonction Ignorer la correspondance avec un nouveau modèle de lancement
  1. Utilisez la create-launch-templatecommande pour créer un nouveau modèle de lancement pour votre groupe Auto Scaling. Incluez l'option --launch-template-data et l'entrée JSON qui définit les détails des instances créées pour votre groupe Auto Scaling.

    Par exemple, utilisez la commande suivante pour créer un modèle de lancement de base avec l'ID d'AMI ami-0123456789abcdef0 et le type d'instance t2.micro.

    aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0","InstanceType":"t2.micro"}'

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-30T18:16:06.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    Pour plus d’informations, consultez Exemples de création et de gestion de modèles de lancement à l'aide du AWS CLI.

  2. Utilisez la start-instance-refreshcommande pour lancer le flux de travail de remplacement d'instance et appliquez votre nouveau modèle de lancement avec l'ID lt-068f72b729example. Le modèle de lancement étant nouveau, il ne comporte qu'une seule version. Cela signifie que la version 1 du modèle de lancement est la cible de cette actualisation d'instance. Si un événement de montée en puissance se produit lors de l'actualisation d'instance et si Amazon EC2 Auto Scaling provisionne de nouvelles instances à l'aide de la version 1 de ce modèle de lancement, elles ne seront pas remplacées. Une fois l'opération terminée avec succès, le nouveau modèle de lancement est appliqué à votre groupe Auto Scaling.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    Contenu de config.json.

    { "AutoScalingGroupName": "my-asg", "DesiredConfiguration": { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "Version": "$Default" } }, "Preferences": { "SkipMatching": true } }

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Si vous avez un groupe Auto Scaling doté d'une politique d'instances mixtes, suivez les étapes décrites dans cette section AWS CLI pour démarrer une actualisation d'instance en sautant la correspondance. Vous avez les options suivantes :

  • Fournissez un nouveau modèle de lancement à appliquer à tous les types d'instances spécifiés dans la politique.

  • Fournissez un ensemble actualisé de types d'instances avec ou sans modification du modèle de lancement dans la politique. Par exemple, il se peut que vous souhaitiez migrer les types d'instance indésirables. Vous utiliseriez le modèle de lancement tel quel, sans modifier l'AMI, les groupes de sécurité ou les autres spécificités des instances remplacées.

Suivez les étapes décrites dans l'une des sections suivantes, selon l'option qui répond à vos besoins.

Pour utiliser la fonction Ignorer la correspondance avec un nouveau modèle de lancement
  1. Utilisez la create-launch-templatecommande pour créer un nouveau modèle de lancement pour votre groupe Auto Scaling. Incluez l’option --launch-template-data et l’entrée JSON qui définit les détails des instances créées pour votre groupe Auto Scaling.

    Par exemple, utilisez la commande suivante pour créer un modèle de lancement avec l'ID d'AMI ami-0123456789abcdef0.

    aws ec2 create-launch-template --launch-template-name my-new-template --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0"}'

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "LaunchTemplate": { "LaunchTemplateId": "lt-04d5cc9b88example", "LaunchTemplateName": "my-new-template", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-31T15:56:02.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    Pour plus d’informations, consultez Exemples de création et de gestion de modèles de lancement à l'aide du AWS CLI.

  2. Pour consulter la politique d'instances mixtes existante pour votre groupe Auto Scaling, exécutez la describe-auto-scaling-groupscommande. Vous aurez besoin de ces informations à l'étape suivante, lorsque vous lancerez l'actualisation d'instance.

    L'exemple de commande suivant renvoie la politique d'instances mixtes configurée pour le groupe Auto Scaling nommé my-asg.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-old-template", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  3. Utilisez la start-instance-refreshcommande pour lancer le flux de travail de remplacement d'instance et appliquez votre nouveau modèle de lancement avec l'ID lt-04d5cc9b88example. Le modèle de lancement étant nouveau, il ne comporte qu'une seule version. Cela signifie que la version 1 du modèle de lancement est la cible de cette actualisation d'instance. Si un événement de montée en puissance se produit lors de l’actualisation d’instance et si Amazon EC2 Auto Scaling provisionne de nouvelles instances à l’aide de la version 1 de ce modèle de lancement, elles ne seront pas remplacées. Une fois l'opération terminée avec succès, la politique d'instances mixtes mise à jour est appliquée à votre groupe Auto Scaling.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    Contenu de config.json.

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-04d5cc9b88example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Dans cette procédure suivante, vous allez fournir un ensemble actualisé de types d'instances sans modifier le modèle de lancement.

Pour utiliser la fonction Ignorer la correspondance avec un ensemble actualisé de types d'instances
  1. Pour consulter la politique d'instances mixtes existante pour votre groupe Auto Scaling, exécutez la describe-auto-scaling-groupscommande. Vous aurez besoin de ces informations à l'étape suivante, lorsque vous lancerez l'actualisation d'instance.

    L'exemple de commande suivant renvoie la politique d'instances mixtes configurée pour le groupe Auto Scaling nommé my-asg.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    Si elle aboutit, la commande renvoie un résultat semblable au suivant :

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-template-for-auto-scaling", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  2. Utilisez la start-instance-refreshcommande pour lancer le flux de travail de remplacement d'instance et appliquer vos mises à jour. Si vous souhaitez remplacer les instances qui utilisent des types d'instance spécifiques, la configuration souhaitée doit spécifier la politique d'instances mixtes comprenant uniquement les types d'instance que vous souhaitez. Vous pouvez choisir d'ajouter de nouveaux types d'instance à leur place.

    L'exemple de commande suivant lance une actualisation d'instance sans le type d'instance indésirable m5a.large. Lorsqu'un type d'instance de votre groupe ne correspond pas à l'un des trois types d'instances restants, les instances sont remplacées. (Notez qu'une actualisation d'instance ne choisit pas les types d'instance à partir desquels les nouvelles instances doivent être approvisionnées ; ce choix revient aux stratégies d'allocation.) Une fois l'opération terminée avec succès, la politique d'instances mixtes mise à jour est appliquée à votre groupe Auto Scaling.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    Contenu de config.json

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }