Esecuzione di automazioni sulla base di eventi - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzione di automazioni sulla base di eventi

Puoi avviare un'automazione specificando un runbook come destinazione di un evento Amazon EventBridge. Puoi avviare le automazioni in base a una pianificazione oppure quando si verifica un determinato evento di sistema di AWS . Ad esempio, supponiamo che tu crei un runbook denominato BootStrapInstancesche installa il software su un'istanza all'avvio di un'istanza. Per specificare il BootStrapInstancesrunbook (e l'automazione corrispondente) come destinazione di un EventBridge evento, devi prima creare una nuova regola. EventBridge Ecco un esempio di regola: Service name (Nome servizio): EC2, Event Type (Tipo di evento): EC2 Instance State-change Notification (Notifica variazione stato istanza EC2), Specific state(s) (Stati specifici): running (in esecuzione), Any instance (Qualsiasi istanza). Quindi utilizzate le seguenti procedure per specificare il BootStrapInstancesrunbook come destinazione dell'evento utilizzando la EventBridge console e AWS Command Line Interface ()AWS CLI. All'avvio di una nuova istanza, il sistema eseguirà l'automazione e installerà il software.

Per ulteriori informazioni sulla creazione di runbook, consulta Creazione di runbook personalizzati.

Creazione di un EventBridge evento che utilizza un runbook (console)

Utilizzate la procedura seguente per configurare un runbook come destinazione di un EventBridge evento.

Per configurare un runbook come destinazione di una regola di evento EventBridge
  1. Apri la EventBridge console Amazon all'indirizzo https://console.aws.amazon.com/events/.

  2. Nel pannello di navigazione, scegli Regole.

  3. Scegli Create rule (Crea regola).

  4. Inserire un nome e una descrizione per la regola.

    Una regola non può avere lo stesso nome di un'altra regola nella stessa regione e sullo stesso router di eventi.

  5. Per Select event bus (Seleziona bus di eventi), scegli il bus di eventi che desideri associare a questa regola. Se desideri che questa regola risponda agli eventi corrispondenti generati dai tuoi Account AWS, seleziona Predefinito. Quando un Servizio AWS utente del tuo account emette un evento, questo passa sempre al bus eventi predefinito del tuo account.

  6. Scegli come attivare la regola.

    Per creare una regola basata su... Esegui questa operazione…

    Evento

    1. Per Rule type (Tipo di regola), scegli Rule with an event pattern (Regola con un modello di eventi).

    2. Seleziona Avanti.

    3. Per Event source, scegli AWS eventi o eventi EventBridge partner.

    4. Nella sezione Event pattern (Modello di eventi), procedi come segue:

      • Per utilizzare un modello per creare lo schema di eventi, scegli Modulo del modello di eventi, quindi scegli Origine evento, Servizio AWS e Tipo di evento. Se scegli Tutti gli eventi come tipo di evento, tutti gli eventi emessi da Servizio AWS corrisponderanno alla regola.

        Per personalizzare il modello, scegli Custom pattern (JSON editor) (Modello personalizzato [editor JSON]) e apporta le modifiche.

      • Per utilizzare un modello di eventi personalizzato, scegli Custom pattern (JSON editor) (Modello personalizzato [editor JSON]) e crea il tuo modello di evento.

    Pianificazione
    1. Per Rule type (Tipo di regola), scegli Schedule (Pianifica).

    2. Seleziona Avanti.

    3. Per Schedule pattern (Modello di pianificazione), esegui una delle seguenti operazioni:

      • Per utilizzare un'espressione cron per definire la pianificazione, scegli A fine-grained schedule that runs at a specific time, such as 8:00 a.m. (Una pianificazione granulare che viene eseguita in un orario specifico, ad esempio le 8:00). PST on the first Monday of every month (PST il primo lunedì di ogni mese) e inserisci l'espressione cron.

      • Per utilizzare un'espressione di frequenza per definire la pianificazione, scegli A schedule that runs at a regular rate, such as every 10 minutes (Una pianificazione che viene eseguita con una frequenza regolare, ad esempio ogni 10 minuti) e inserisci l'espressione di frequenza.

  7. Seleziona Avanti.

  8. Per Target types (Tipi di destinazione), scegli AWS service (Servizio ).

  9. Per Seleziona target (Seleziona destinazione), scegli Systems Manager Automation (Automazione Manager di Sistema).

  10. Per Document (Documento), scegliere un runbook da usare quando viene chiamata la destinazione.

  11. Nella sezione Configure automation parameter(s) (Configura parametri automazione) non modificare i valori predefiniti dei parametri (se disponibili) oppure inserisci i valori desiderati.

    Nota

    Per creare una destinazione, è necessario specificare un valore per ciascun parametro obbligatorio. In caso contrario, la regola verrà creata dal sistema ma non verrà eseguita.

  12. Per molti tipi di target, EventBridge sono necessarie le autorizzazioni per inviare eventi alla destinazione. In questi casi, EventBridge può creare il ruolo IAM necessario per l'esecuzione della regola. Esegui una di queste operazioni:

    • Per creare un ruolo IAM automaticamente, seleziona Crea un nuovo ruolo per questa risorsa specifica.

    • Per utilizzare un ruolo IAM creato in precedenza, seleziona Use existing role (Utilizza un ruolo esistente) e seleziona il ruolo esistente dal menu a discesa. Tieni presente che potresti dover aggiornare la policy di fiducia da includere nel tuo ruolo IAM EventBridge. Di seguito è riportato un esempio:

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

  14. (Facoltativo) Inserire uno o più tag per la regola. Per ulteriori informazioni, consulta Tagging Your Amazon EventBridge Resources nella Amazon EventBridge User Guide.

  15. Seleziona Avanti.

  16. Rivedi i dettagli della regola e scegli Create rule (Crea regola).

Crea un EventBridge evento che utilizza un runbook (riga di comando)

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Tools for PowerShell creare una regola di EventBridge evento e configurare un runbook come destinazione.

Per configurare un runbook come destinazione di una regola di evento EventBridge
  1. Installa e configura il AWS CLI o il AWS Tools for PowerShell, se non l'hai già fatto.

    Per informazioni, consulta le pagine Installazione o aggiornamento della versione più recente di AWS CLI e Installazione di AWS Tools for PowerShell.

  2. Crea un comando per specificare una nuova regola di EventBridge evento. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni.

    Attivazioni basate su una pianificazione

    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'esempio seguente crea una regola di EventBridge evento che inizia ogni giorno alle 9: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 * * ? *)"

    Attivazioni basate su un evento

    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'esempio seguente crea una regola di EventBridge evento che si avvia quando un'istanza EC2 nella regione cambia stato.

    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"]}'

    Il comando restituisce dettagli per la nuova EventBridge regola simili ai seguenti.

    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. Create un comando per specificare un runbook come destinazione della regola EventBridge evento creata nel passaggio 2. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni.

    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'esempio seguente crea un target di EventBridge evento che avvia l'ID di istanza specificato utilizzando il AWS-StartEC2Instance runbook.

    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

    Il sistema restituisce informazioni simili alle seguenti.

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

    Non viene prodotto alcun output se il comando ha esito positivo per. PowerShell