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.
Vous préparer à ajouter un hook de cycle de vie à un groupe Auto Scaling
Avant d'ajouter un hook de cycle de vie à votre groupe Auto Scaling, assurez-vous que votre cible de notification ou votre script de données utilisateur est correctement configuré.
-
Pour exécuter un script de données utilisateur afin d'effectuer des actions personnalisées sur vos instances lors de leur lancement, vous n'avez pas besoin de configurer de cible de notification. Cependant, vous devez déjà avoir créé le modèle de lancement ou la configuration de lancement qui spécifie votre script de données utilisateur et les avoir associés à votre groupe Auto Scaling. Pour plus d'informations sur les scripts de données utilisateur, voir Exécutez des commandes sur votre instance Linux au lancement dans le Guide de l'utilisateur d'Amazon EC2.
-
Pour signaler à Amazon EC2 Auto Scaling que l'action du cycle de vie est terminée, vous devez ajouter CompleteLifecycleAction Appelez le script par API et vous devez créer manuellement un rôle IAM avec une politique permettant aux instances Auto Scaling d'appeler cette API. Votre modèle de lancement ou votre configuration de lancement doit spécifier ce rôle à l'aide d'un profil d'instance IAM qui est attaché à vos instances Amazon EC2 lors du lancement. Pour plus d’informations, consultez Effectuez une action du cycle de vie dans un groupe Auto Scaling et Rôle IAM pour les applications qui s'exécutent sur des instances Amazon EC2.
-
Pour permettre à Lambda de signaler Amazon EC2 Auto Scaling lorsque l'action du cycle de vie est terminée, vous devez ajouter CompleteLifecycleAction Appel d'API au code de fonction. Vous devez également avoir attaché une politique IAM au rôle d'exécution de la fonction pour accorder à Lambda l'autorisation de terminer les actions de cycle de vie. Pour plus d’informations, consultez Didacticiel : configurer un hook de cycle de vie qui appelle une fonction Lambda.
-
Pour utiliser un service tel qu'Amazon SNS ou Amazon SQS pour effectuer une action personnalisée, vous devez déjà avoir créé la rubrique SNS ou la file d'attente SQS et disposer de son Amazon Resource Name (ARN). Vous devez également avoir déjà créé le rôle IAM qui donne à Amazon EC2 Auto Scaling l'accès à votre rubrique SNS ou cible SQS et avoir prêt son ARN. Pour plus d’informations, consultez Configurer une cible de notification pour les notifications de cycle de vie.
Note
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 de cycle de vie à Amazon EventBridge. En utilisant EventBridge ou 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, Amazon SQS ou AWS Lambda, utilisez le AWS CLI, AWS CloudFormation, ou un SDK pour ajouter le hook du cycle de vie.
Configurer une cible de notification pour les notifications de cycle de vie
Vous pouvez ajouter des hooks de cycle de vie à un groupe Auto Scaling pour exécuter des actions personnalisées lorsqu'une instance entre en état d'attente. Vous pouvez choisir un service cible pour effectuer ces actions en fonction de votre approche de développement préférée.
Il existe quatre approches différentes pour implémenter des cibles de notification pour les hooks de cycle de vie :
-
Amazon EventBridge — Recevez les notifications et effectuez les actions que vous souhaitez.
-
Amazon Simple Notification Service (Amazon SNS) — Créez une rubrique pour publier des notifications. Les clients peuvent s'abonner à la rubrique SNS et recevoir les messages publiés à l'aide d'un protocole pris en charge.
-
Amazon Simple Queue Service (Amazon SQS) — Échangez des messages via un modèle de sondage.
-
AWS Lambda — Invoquez une fonction Lambda qui exécute l'action souhaitée.
Comme meilleure pratique, nous vous recommandons d'utiliser EventBridge au lieu d'Amazon SNS ou Amazon SQS comme cible de notification. Les notifications envoyées à Amazon SNS et Amazon SQS contiennent les mêmes informations que les notifications qu'Amazon EC2 Auto Scaling envoie à EventBridge. Avant EventBridge, la pratique standard consistait à envoyer une notification à SNS ou SQS et à intégrer un autre service à SNS ou SQS pour effectuer des actions programmatiques. Aujourd'hui, EventBridge vous offre davantage d'options pour les services que vous pouvez cibler et facilite la gestion des événements à l'aide d'une architecture sans serveur.
N'oubliez pas que si vous avez un script de données utilisateur dans votre modèle de lancement ou configuration de lancement qui configure vos instances lors de leur lancement, vous n'avez pas besoin de notification pour effectuer des actions personnalisées sur vos instances.
Les procédures suivantes expliquent comment configurer votre cible de notification.
Table des matières
Important
Le EventBridge La règle, la fonction Lambda, la rubrique Amazon SNS et la file d'attente Amazon SQS que vous utilisez avec les hooks de cycle de vie doivent toujours se trouver dans la même région que celle dans laquelle vous avez créé votre groupe Auto Scaling.
Acheminez les notifications vers Lambda à l'aide de EventBridge
Vous pouvez configurer un EventBridge règle pour invoquer une fonction Lambda lorsqu'une instance entre en état d'attente. Amazon EC2 Auto Scaling envoie une notification d'événement du cycle de vie à EventBridge sur l'instance en cours de lancement ou de fermeture et sur un jeton que vous pouvez utiliser pour contrôler l'action du cycle de vie. Pour obtenir des exemples de ces événements, consultez Référence de l'événement Amazon EC2 Auto Scaling.
Note
Lorsque vous utilisez Console de gestion AWS pour créer une règle d'événement, la console ajoute automatiquement les autorisations IAM nécessaires pour accorder EventBridge autorisation d'appeler votre fonction Lambda. Si vous créez une règle d'événement à l'aide de l' AWS CLI, vous devez explicitement accorder cette autorisation.
Pour plus d'informations sur la création de règles relatives aux événements dans EventBridge console, voir Création d'Amazon EventBridge règles qui réagissent aux événements dans le Amazon EventBridge Guide de l'utilisateur.
– ou –
Pour obtenir un tutoriel d'introduction destiné aux utilisateurs de la console, consultez la rubrique Didacticiel : configurer un hook de cycle de vie qui appelle une fonction Lambda. Ce didacticiel explique comment créer une fonction Lambda simple qui écoute les événements de lancement et les écrit dans un CloudWatch Journal des journaux.
Pour créer un EventBridge règle qui invoque une fonction Lambda
-
Créez une fonction Lambda à l'aide de la console Lambda
et notez son Amazon Resource Name (ARN). Par exemple : arn:aws:lambda:. Vous avez besoin de l'ARN pour créer un EventBridge cible. Pour plus d'informations, consultez Prise en main de Lambda dans le Guide du développeur AWS Lambda .region:123456789012:function:my-function -
Pour créer une règle qui correspond aux événements de lancement d'une instance, utilisez la commande put-rule
suivante. aws events put-rule --namemy-rule--event-pattern file://pattern.json --state ENABLEDL'exemple suivant illustre le fichier
pattern.jsoncorrespondant à une action de cycle de vie de lancement d'instance. Remplacez le texte dansitalicsavec le nom de votre groupe Auto Scaling.{ "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "AutoScalingGroupName": [ "my-asg" ] } }Si la commande s'exécute correctement, EventBridge répond avec l'ARN de la règle. Notez cet ARN. Vous devrez le saisir au cours de l'étape 4.
Pour créer une règle qui correspond à d'autres événements, modifiez le modèle d'événement. Pour plus d’informations, consultez EventBridge À utiliser pour gérer les événements Auto Scaling.
-
Pour spécifier la fonction Lambda à utiliser comme cible pour la règle, utilisez la commande put-targets
suivante : aws events put-targets --rulemy-rule--targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-functionDans la commande précédente,
my-ruleest le nom que vous avez spécifié pour la règle à l'étape 2 et la valeur deArnLe paramètre est l'ARN de la fonction que vous avez créée à l'étape 1. -
Pour ajouter des autorisations permettant à la règle d'invoquer votre fonction Lambda cible, utilisez la commande add-permission
Lambda suivante. Cette commande fait confiance à EventBridge directeur de service ( events.amazonaws.com) et étend les autorisations à la règle spécifiée.aws lambda add-permission --function-namemy-function--statement-idmy-unique-id\ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-ruleDans la commande précédente :
-
my-functionest le nom de la fonction Lambda que vous souhaitez que la règle utilise comme cible. -
my-unique-idest un identifiant unique que vous définissez pour décrire l'instruction dans la politique de la fonction Lambda. -
source-arnest l'ARN du EventBridge règle.
Si la commande s'exécute correctement, vous recevez une sortie similaire à ce qui suit.
{ "Statement": "{\"Sid\":\"my-unique-id\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}" }La valeur
Statementest une version de la chaîne JSON correspondant à l'instruction ajoutée à la politique de la fonction Lambda. -
-
Une fois que vous avez suivi ces instructions, passez à Ajoutez des hooks de cycle de vie à votre groupe Auto Scaling qui est l'étape suivante.
Recevoir des notifications à l'aide d'Amazon SNS
Vous pouvez utiliser Amazon SNS pour configurer une cible de notification (une rubrique SNS) permettant de recevoir des notifications lorsqu'une action de cycle de vie se produit. Amazon SNS envoie ensuite les notifications aux destinataires abonnés. Aucune notification publiée dans la rubrique n'est envoyée aux destinataires tant que l'abonnement n'est pas confirmé.
Pour configurer des notifications à l'aide d'Amazon SNS
-
Créez une rubrique Amazon SNS à l'aide de la console Amazon SNS
ou de la commande create-topic suivante. Assurez-vous que la rubrique se trouve dans la même région que le groupe Auto Scaling que vous utilisez. Pour plus d'informations, consultez Prise en main d'Amazon SNS dans le Guide du développeur Amazon Simple Notification Service. aws sns create-topic --namemy-sns-topic -
Notez l'Amazon Resource Name (ARN) de la rubrique, par exemple
arn:aws:sns:. Celui-ci est nécessaire pour créer le hook de cycle de vie.region:123456789012:my-sns-topic -
Créez un rôle de service IAM pour accorder à Amazon EC2 Auto Scaling l'autorisation d'accès à votre cible de notification Amazon SNS.
Pour accorder à Amazon EC2 Auto Scaling l'autorisation d'accès à votre rubrique SNS
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation de gauche, sélectionnez Roles (Rôles).
-
Sélectionnez Create role (Créer un rôle).
-
Pour Select trusted entity (Sélectionner une entité de confiance), choisissez service AWS .
-
Pour votre cas d'utilisation, sous Use cases for other AWS services (Cas d'utilisation sez EC2 Auto Scaling puis EC2 Auto Scaling Notification Access (Notification d'accès EC2 Auto Scaling).
-
Cliquez deux fois sur Next (Suivant) pour aller à la page Name, review, and create (Nommer, vérifier et créer).
-
Pour Role Name (Nom du rôle), saisissez un nom pour votre rôle (par exemple
my-notification-role), puis sélectionnez Create Role (Créer un rôle). -
Sur la page Roles (Rôles), choisissez le rôle que vous venez de créer pour ouvrir la page Summary (Récapitulatif). Notez l'ARN du rôle. Par exemple :
arn:aws:iam::. Celui-ci est nécessaire pour créer le hook de cycle de vie.123456789012:role/my-notification-role
-
Une fois que vous avez suivi ces instructions, passez à Ajoutez des crochets de cycle de vie (AWS CLI) qui est l'étape suivante.
Recevoir des notifications à l'aide d'Amazon SQS
Vous pouvez utiliser Amazon SQS pour configurer une cible de notification permettant de recevoir des messages lorsqu'une action de cycle de vie se produit. Un consommateur de file d'attente doit alors interroger une file d'attente SQS pour agir sur ces notifications.
Important
Les files d'attente FIFO ne sont pas compatibles avec des hooks de cycle de vie.
Pour configurer des notifications à l'aide d'Amazon SQS
-
Créez une file d'attente Amazon SQS à l'aide de la console Amazon SQS
. Assurez-vous que la file d'attente se trouve dans la même région que le groupe Auto Scaling que vous utilisez. Pour plus d'informations, consultez Prise en main d'Amazon SQS dans le Guide du développeur Amazon Simple Queue Service. -
Notez l'ARN de la file d'attente, par exemple
arn:aws:sqs:. Celui-ci est nécessaire pour créer le hook de cycle de vie.us-west-2:123456789012:my-sqs-queue -
Créez un rôle de service IAM pour accorder à Amazon EC2 Auto Scaling l'autorisation d'accès à votre cible de notification Amazon SQS.
Pour accorder à Amazon EC2 Auto Scaling l'autorisation d'accès à votre file d'attente SQS
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation de gauche, sélectionnez Roles (Rôles).
-
Sélectionnez Create role (Créer un rôle).
-
Pour Select trusted entity (Sélectionner une entité de confiance), choisissez service AWS .
-
Pour votre cas d'utilisation, sous Use cases for other AWS services (Cas d'utilisation sez EC2 Auto Scaling puis EC2 Auto Scaling Notification Access (Notification d'accès EC2 Auto Scaling).
-
Cliquez deux fois sur Next (Suivant) pour aller à la page Name, review, and create (Nommer, vérifier et créer).
-
Pour Role Name (Nom du rôle), saisissez un nom pour votre rôle (par exemple
my-notification-role), puis sélectionnez Create Role (Créer un rôle). -
Sur la page Roles (Rôles), choisissez le rôle que vous venez de créer pour ouvrir la page Summary (Récapitulatif). Notez l'ARN du rôle. Par exemple :
arn:aws:iam::. Celui-ci est nécessaire pour créer le hook de cycle de vie.123456789012:role/my-notification-role
-
Une fois que vous avez suivi ces instructions, passez à Ajoutez des crochets de cycle de vie (AWS CLI) qui est l'étape suivante.
Acheminez les notifications vers AWS Lambda directement
Vous pouvez utiliser une fonction Lambda comme cible de notification lorsqu'une action du cycle de vie se produit.
Pour acheminer les notifications vers AWS Lambda directement
Ouvrez la page Functions (Fonctions)
sur la console Lambda. -
Choisissez la fonction Lambda de votre choix.
Si vous souhaitez créer une nouvelle fonction Lambda, consultez Créer la fonction Lambda
-
Choisissez le Configuration onglet, puis Autorisations.
-
Faites défiler vers le bas jusqu'à Resource-based politique puis choisissez Ajouter des autorisations. Une politique basée sur des ressources est utilisée pour accorder des autorisations pour appeler votre fonction au principal qui est spécifié dans la politique. Dans ce cas, le principal sera le rôle lié au service Amazon EC2 Auto Scaling associée au groupe Auto Scaling.
-
Dans Policy statement (Déclaration de politique), configurez vos autorisations :
-
Sélectionnez Compte AWS.
-
Pour Principal , saisissez l'ARN du rôle lié au service appelant, par exemple,
arn:aws:iam::<aws-account-id>:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling. -
Pour Action, choisissez lambda :InvokeFunction.
-
Pour Statement ID (ID de l'instruction), saisissez un ID d'instruction unique, tel que
AllowInvokeByAutoScaling. -
Choisissez Save (Enregistrer).
-
-
Une fois que vous avez suivi ces instructions, passez à Ajoutez des crochets de cycle de vie (AWS CLI) qui est l'étape suivante.
Exemple de message de notification
Cette section fournit un exemple de notification pour Amazon SNS, Amazon SQS et AWS Lambda.
Lorsque l'instance est en attente, un message est publié sur Amazon SNS, Amazon SQS et AWS Lambda cible de notification.
Le message comprend les informations suivantes :
-
Origin— Lieu d'origine d'une instance EC2. -
Destination— Emplacement vers lequel une instance EC2 est destinée. -
LifecycleActionToken: jeton de l'action de cycle de vie. -
AccountId— Les Compte AWS IDENTIFIANT. -
AutoScalingGroupName: nom du groupe Auto Scaling. -
LifecycleHookName: nom du hook de cycle de vie. -
EC2InstanceId: ID de l'instance EC2. -
LifecycleTransition: type du hook de cycle de vie. -
NotificationMetadata: métadonnées de notification.
Voici un exemple de message de notification.
Service: AWS Auto Scaling
Time: 2021-01-19T00:36:26.533Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
Origin: EC2
Destination: AutoScalingGroup
LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40
AccountId: 123456789012
AutoScalingGroupName: my-asg
LifecycleHookName: my-hook
EC2InstanceId: i-0598c7d356eba48d7
LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
NotificationMetadata: hook message metadata
Exemple de message de notification de test
Lorsque vous ajoutez pour la première fois un hook de cycle de vie, un message de notification de test est publié sur la cible de notification. Voici un exemple de message de notification de test.
Service: AWS Auto Scaling
Time: 2021-01-19T00:35:52.359Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
Event: autoscaling:TEST_NOTIFICATION
AccountId: 123456789012
AutoScalingGroupName: my-asg
AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
Note
Pour des exemples d'événements diffusés par Amazon EC2 Auto Scaling to EventBridge, voir Référence de l'événement Amazon EC2 Auto Scaling.