Exécutez des automatisations en fonction des événements EventBridge - AWS Systems Manager

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.

Exécutez des automatisations en fonction des événements EventBridge

Vous pouvez démarrer une automatisation en spécifiant un runbook comme cible d'un EventBridge événement Amazon. Vous pouvez démarrer des automatisations selon un programme ou lorsqu'un événement de système AWS spécifique se produit. Supposons, par exemple, que vous créiez un runbook nommé BootStrapInstancesqui installe le logiciel sur une instance au démarrage de celle-ci. Pour spécifier le BootStrapInstancesrunbook (et l'automatisation correspondante) comme cible d'un EventBridge événement, vous devez d'abord créer une nouvelle EventBridge règle. (Voici un exemple de règle : nom du service : type d'événement : EC2 notification de changement d'état de l'EC2instance, état (s) spécifique (s) : en cours d'exécution, n'importe quelle instance.) Vous devez ensuite utiliser les procédures suivantes pour spécifier le BootStrapInstancesrunbook comme cible de l'événement à l'aide de la EventBridge console et AWS Command Line Interface (AWS CLI). Lors du démarrage d'une nouvelle instance, le système exécute l'automatisation et installe le logiciel.

Pour plus d'informations sur la création de runbooks, consultez Créer vos propres runbooks.

Création d'un EventBridge événement utilisant un runbook (console)

Utilisez la procédure suivante pour configurer un runbook comme cible d'un EventBridge événement.

Pour configurer un runbook en tant que cible d'une règle d' EventBridge événement
  1. Ouvrez la EventBridge console Amazon à l'adresse https://console.aws.amazon.com/events/.

  2. Dans le volet de navigation, choisissez Règles.

  3. Choisissez Créer une règle.

  4. Saisissez un nom et une description pour la règle.

    Une règle ne peut pas avoir le même nom qu'une autre règle de la même région et sur le même bus d'événement.

  5. Pour Event bus (Bus d'événement), sélectionnez le bus d'événement que vous souhaitez associer à cette règle. Si vous souhaitez que cette règle réponde aux événements correspondants qui proviennent des vôtres Compte AWS, sélectionnez par défaut. Lorsqu'un événement Service AWS de votre compte est émis, il est toujours redirigé vers le bus d'événements par défaut de votre compte.

  6. Choisissez comment la règle est déclenchée.

    Pour créer une règle basée sur… Faites ceci...

    Événement

    1. Pour Rule type (Type de règle), choisissez Rule with an event pattern (Règle avec un modèle d'événement).

    2. Choisissez Suivant.

    3. Dans Source de l'événement, choisissez AWS des événements ou des événements EventBridge partenaires.

    4. Pour la section Event pattern (Modèle d'événement), effectuez l'une des opérations suivantes :

      • Pour utiliser un modèle afin de créer votre modèle d'événement, sélectionnez Formulaire de modèle d'événement et choisissez Source de l'événement, AWS Service, et Type d'évènement. Si vous choisissez Tous les événements comme type d'événement, tous les événements émis par le Service AWS seront conformes à la règle.

        Pour personnaliser le modèle, choisissez Motif personnalisé (JSONéditeur) et apportez vos modifications.

      • Pour utiliser un modèle d'événement personnalisé, choisissez Modèle personnalisé (JSONéditeur) et créez votre modèle d'événement.

    Planificateur
    1. Pour Rule type (Type de règle), choisissez Schedule (Planifier).

    2. Choisissez Suivant.

    3. Pour Schedule pattern (Planifier le modèle), effectuez l'une des étapes suivantes :

      • Pour utiliser une expression cron pour définir la planification, choisissez A fine-grained schedule that runs at a specific time, such as 8:00 a.m. (Un programme détaillé qui s'exécute à une heure précise, par exemple 8 h). PSTle premier lundi de chaque mois et entrez l'expression cron.

      • Pour utiliser une expression de rythme pour définir la planification, choisissez un programme qui fonctionne à un rythme régulier, par exemple toutes les 10 minutes et saisissez l'expression de rythme.

  7. Choisissez Suivant.

  8. Pour Types de cibles, choisissez service AWS .

  9. Pour Select a target (Sélectionner une cible), choisissez Systems Manager Automation.

  10. Pour Document, sélectionnez un runbook à utiliser lorsque votre cible est appelée.

  11. Dans la section Configure automation parameter(s) (Configurer le(s) paramètre(s) d'automatisation), conservez les valeurs de paramètre par défaut (si disponibles) ou saisissez vos propres valeurs.

    Note

    Pour créer une cible, vous devez spécifier une valeur pour chaque paramètre requis. Si vous ne le faites pas, le système crée la règle mais elle ne s'exécute pas.

  12. Pour de nombreux types de cibles, EventBridge nécessite des autorisations pour envoyer des événements à la cible. Dans ces cas, EventBridge vous pouvez créer le IAM rôle nécessaire à l'exécution de votre règle. Effectuez l’une des actions suivantes :

    • Pour créer un IAM rôle automatiquement, choisissez Créer un nouveau rôle pour cette ressource spécifique.

    • Pour utiliser un IAM rôle que vous avez créé précédemment, choisissez Utiliser un rôle existant, puis sélectionnez le rôle existant dans la liste déroulante. Notez que vous devrez peut-être mettre à jour la politique de confiance pour inclure votre IAM rôle EventBridge. Voici un exemple :

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  13. Choisissez Suivant.

  14. (Facultatif) Saisissez une ou plusieurs balises pour la règle. Pour plus d'informations, consultez la section Marquage de vos EventBridge ressources Amazon dans le guide de l' EventBridge utilisateur Amazon.

  15. Choisissez Suivant.

  16. Consultez les détails de la règle et choisissez Create rule (Créer une règle).

Création d'un EventBridge événement utilisant un runbook (ligne de commande)

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment AWS Tools for PowerShell créer une règle d' EventBridge événement et configurer un runbook comme cible.

Pour configurer un runbook en tant que cible d'une règle d' EventBridge événement
  1. Installez et configurez le AWS CLI ou le AWS Tools for PowerShell, si ce n'est pas déjà fait.

    Pour plus d'informations, consultez la section Installation ou mise à jour de la version la plus récente de l' AWS CLI et Installation d' AWS Tools for PowerShell.

  2. Créez une commande pour spécifier une nouvelle règle EventBridge d'événement. Remplacez chacun example resource placeholder avec vos propres informations.

    Déclencheurs basés sur un calendrier

    Linux & macOS
    aws events put-rule \ --name "rule name" \ --schedule-expression "cron or rate expression"
    Windows
    aws events put-rule ^ --name "rule name" ^ --schedule-expression "cron or rate expression"
    PowerShell
    Write-CWERule ` -Name "rule name" ` -ScheduleExpression "cron or rate expression"

    L'exemple suivant crée une règle d' EventBridge événement qui commence tous les jours à 9 h 00 (UTC).

    Linux & macOS
    aws events put-rule \ --name "DailyAutomationRule" \ --schedule-expression "cron(0 9 * * ? *)"
    Windows
    aws events put-rule ^ --name "DailyAutomationRule" ^ --schedule-expression "cron(0 9 * * ? *)"
    PowerShell
    Write-CWERule ` -Name "DailyAutomationRule" ` -ScheduleExpression "cron(0 9 * * ? *)"

    Déclencheurs basés sur un événement

    Linux & macOS
    aws events put-rule \ --name "rule name" \ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
    Windows
    aws events put-rule ^ --name "rule name" ^ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
    PowerShell
    Write-CWERule ` -Name "rule name" ` -EventPattern '{"source":["aws.service"],"detail-type":["service event detail type"]}'

    L'exemple suivant crée une règle d' EventBridge événement qui démarre lorsqu'une EC2 instance de la région change d'état.

    Linux & macOS
    aws events put-rule \ --name "EC2InstanceStateChanges" \ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    Windows
    aws events put-rule ^ --name "EC2InstanceStateChanges" ^ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    PowerShell
    Write-CWERule ` -Name "EC2InstanceStateChanges" ` -EventPattern '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"]}'

    La commande renvoie les détails de la nouvelle EventBridge règle de la même manière que ci-dessous.

    Linux & macOS
    {
    "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    Windows
    {
    "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    PowerShell
    arn:aws:events:us-east-1:123456789012:rule/EC2InstanceStateChanges
  3. Créez une commande pour spécifier un runbook comme cible de la règle d' EventBridge événement que vous avez créée à l'étape 2. Remplacez chacun example resource placeholder avec vos propres informations.

    Linux & macOS
    aws events put-targets \ --rule rule name \ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    Windows
    aws events put-targets ^ --rule rule name ^ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "target ID" $Target.Arn = "arn:aws:ssm:region:account ID:automation-definition/runbook name" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/EventBridge service role" $Target.Input = '{"input parameter":["value"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "rule name" ` -Target $Target

    L'exemple suivant crée une cible d' EventBridge événement qui démarre l'ID d'instance spécifié à l'aide du runbookAWS-StartEC2Instance.

    Linux & macOS
    aws events put-targets \ --rule DailyAutomationRule \ --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    Windows
    aws events put-targets ^ --rule DailyAutomationRule ^ --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "Target1" $Target.Arn = "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520" $Target.Input = '{"InstanceId":["i-02573cafcfEXAMPLE"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "DailyAutomationRule" ` -Target $Target

    Le système retourne des informations telles que les suivantes.

    Linux & macOS
    {
    "FailedEntries": [],
    "FailedEntryCount": 0
    }
    Windows
    {
    "FailedEntries": [],
    "FailedEntryCount": 0
    }
    PowerShell

    Il n'y a aucune sortie si la commande aboutit pour PowerShell.