Ajoutez des hooks de cycle de vie à votre groupe Auto Scaling - 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.

Ajoutez des hooks de cycle de vie à votre groupe Auto Scaling

Pour mettre vos instances Auto Scaling en état d'attente et effectuer des actions personnalisées sur celles-ci, vous pouvez ajouter des hooks de cycle de vie à votre groupe Auto Scaling. Les actions personnalisées sont exécutées au lancement des instances ou avant qu'elles ne se terminent. Les instances restent dans un état d'attente jusqu'à ce que vous terminiez l'action du cycle de vie ou que le délai d'expiration se termine.

Après avoir créé un groupe Auto Scaling à partir du AWS Management Console, vous pouvez y ajouter un ou plusieurs hooks de cycle de vie, jusqu'à un total de 50 hooks de cycle de vie. Vous pouvez également utiliser le AWS CLI AWS CloudFormation, ou un SDK pour ajouter des hooks de cycle de vie à un groupe Auto Scaling lors de sa création.

Par défaut, lorsque vous ajoutez un hook de cycle de vie dans la console, Amazon EC2 Auto Scaling envoie des notifications d'événements liés au cycle de vie à Amazon. EventBridge L'utilisation EventBridge d'un script de données utilisateur est une bonne pratique recommandée. Pour créer un hook de cycle de vie qui envoie des notifications directement à Amazon SNS ou Amazon SQS, vous pouvez utiliser put-lifecycle-hookla commande, comme indiqué dans les exemples de cette rubrique.

Ajouter des hooks de cycle de vie (console)

Procédez comme suit pour ajouter des hooks de cycle de vie à votre groupe Auto Scaling. Pour ajouter des hooks de cycle de vie pour la montée en puissance (lancement d’instances) et la mise à l’échelle horizontale (résiliation d’instances ou renvois dans le groupe chaud), vous devez créer deux hooks distincts.

Avant de commencer, confirmez que vous avez configuré une action personnalisée, selon vos besoins, comme décrit dans Vous préparer à ajouter un hook de cycle de vie à un groupe Auto Scaling.

Pour ajouter un hook de cycle de vie destiné à la montée en puissance
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/ et choisissez Groupes Auto Scaling dans le panneau de navigation.

  2. Cochez la case située en regard de votre groupe Auto Scaling. Un volet fractionné s'ouvre en bas de la page.

  3. Sous l'onglet Instance management (Gestion des instances) dans Lifecycle hooks (Hooks du cycle de vie), choisissez Create lifecycle hook (Créer un hook de cycle de vie.

  4. Pour définir un hook de cycle de vie pour la montée en puissance (lancement d’instances), procédez comme suit :

    1. Pour le Lifecycle Hook Name (Nom du hook de cycle de vie), spécifiez un nom pour le hook de cycle de vie.

    2. Dans le champ Lifecycle transition (Transition du cycle de vie), choisissez Instance launch (Lancement d'instance).

    3. Pour Délai de pulsation, spécifiez la durée (en secondes) pendant laquelle les instances doivent rester en état d’attente lors de l’évolutivité horizontale avant l’expiration du hook. La plage est comprise entre 30 et 7200 secondes. La définition d’une longue période de délai d’attente donne plus de temps à votre action personnalisée pour aboutir. Ensuite, si vous terminez avant la fin du délai imparti, envoyez la complete-lifecycle-actioncommande pour permettre à l'instance de passer à l'état suivant.

    4. Pour Default result (Résultat par défaut), définissez l'action à entreprendre lorsque le délai d'attente du hook de cycle de vie est écoulé ou qu'un échec inattendu se produit. Vous pouvez choisir d’ABANDONNER ou de CONTINUER.

      • Si vous sélectionnez CONTINUER, le groupe Auto Scaling peut exécuter n’importe quel hook de cycle de vie, puis mettre l’instance en service.

      • Si vous choisissez ABANDONNER, le groupe Auto Scaling interrompt les actions restantes et résilie immédiatement l’instance.

    5. (Facultatif) Dans le champ Métadonnées de notification, spécifiez les informations supplémentaires que vous souhaitez inclure lorsque Amazon EC2 Auto Scaling envoie un message à la cible de notification.

  5. Choisissez Créer.

Pour ajouter un hook de cycle de vie destiné à la mise à l’échelle horizontale
  1. Choisissez Créer un hook de cycle de vie pour continuer là où vous vous êtes arrêté après la création d’un hook de cycle de vie destiné à la montée en puissance.

  2. Pour définir un hook de cycle de vie pour la mise à l’échelle horizontale (instances résiliées ou revenant à un groupe chaud), procédez comme suit :

    1. Pour le Lifecycle Hook Name (Nom du hook de cycle de vie), spécifiez un nom pour le hook de cycle de vie.

    2. Dans le champ Transition du cycle de vie, choisissez Résiliation d'instance.

    3. Pour Délai de pulsation, spécifiez la durée (en secondes) pendant laquelle les instances doivent rester en état d’attente lors de l’évolutivité horizontale avant l’expiration du hook. Nous recommandons un court délai d'attente de deux 30 à 120 secondes, en fonction du temps dont vous avez besoin pour effectuer les tâches finales, telles que l'extraction des journaux EC2. CloudWatch

    4. Dans le champ Default result (Résultat par défaut), spécifiez l'action que le groupe Auto Scaling doit entreprendre lorsque le délai d'attente est écoulé ou qu'un échec inattendu se produit. Les paramètres ABANDON (ABANDONNER) et CONTINUE (CONTINUER) permettent tous les deux de résilier l'instance.

      • Si vous choisissez CONTINUE (CONTINUER), le groupe Auto Scaling peut exécuter toutes les actions restantes, comme les hooks de cycle de vie, avant la résiliation.

      • Si vous choisissez ABANDONNER, le groupe Auto Scaling résilie immédiatement l’instance.

    5. (Facultatif) Dans le champ Métadonnées de notification, spécifiez les informations supplémentaires que vous souhaitez inclure lorsque Amazon EC2 Auto Scaling envoie un message à la cible de notification.

  3. Choisissez Créer.

Ajouter des hooks de cycle de vie (AWS CLI)

Créez et mettez à jour les hooks du cycle de vie à l'aide de la put-lifecycle-hookcommande.

Pour exécuter une action sur l'augmentation de la taille des instances, utilisez la commande suivante.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING

Pour exécuter une action sur la diminution de la taille des instances, ajoutez plutôt la commande suivante.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING

Pour recevoir des notifications à l'aide d'Amazon SNS ou d'Amazon SQS, ajoutez les options --notification-target-arn et --role-arn.

L'exemple suivant crée un hook de cycle de vie qui spécifie une rubrique SNS nommée my-sns-topic comme cible de notification.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \ --notification-target-arn arn:aws:sns:region:123456789012:my-sns-topic \ --role-arn arn:aws:iam::123456789012:role/my-notification-role

La rubrique reçoit une notification test avec la paire clé-valeur suivante.

"Event": "autoscaling:TEST_NOTIFICATION"

Par défaut, la put-lifecycle-hookcommande crée un hook du cycle de vie avec un délai d'expiration de 3600 quelques secondes (une heure).

Pour modifier le délai de pulsation d'un hook de cycle de vie existant, ajoutez le paramètre --heartbeat-timeout, comme illustré dans l'exemple suivant.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg --heartbeat-timeout 120

Si une instance est déjà en état d'attente, vous pouvez empêcher le délai d'expiration du cycle de vie en enregistrant un battement de cœur à l'aide de la commande record-lifecycle-action-heartbeatCLI. Cela prolonge le délai d'attente de la valeur d'attente spécifiée lorsque vous créez le hook de cycle de vie. Si vous terminez avant la fin du délai imparti, vous pouvez envoyer la commande complete-lifecycle-actionCLI pour permettre à l'instance de passer à l'état suivant. Pour plus d’informations et d’exemples, consultez Réaliser une action du cycle de vie dans un groupe Auto Scaling.