Executar automações com base em eventos do EventBridge - AWS Systems Manager

Executar automações com base em eventos do EventBridge

Você pode iniciar uma automação especificando um runbook como o destino de um evento do Amazon EventBridge. É possível iniciar automações de acordo com um cronograma ou quando ocorrer um evento específico do sistema da AWS. Por exemplo, digamos que você crie um runbook chamado BootStrapInstances, que instala softwares em uma instância quando ela for iniciada. Para especificar o runbook BootStrapInstances (e a automação correspondente) como um destino de um evento do EventBridge, primeiro crie uma nova regra do EventBridge. (Aqui está uma regra de exemplo: Nome do serviço: EC2, Tipo de evento: Notificação de alteração de status da instância do EC2, Estado(s) específico(s): em execução, Qualquer instância.) Depois, use os seguintes procedimentos para especificar o runbook BootStrapInstances como o destino do evento, usando o console do EventBridge e a AWS Command Line Interface (AWS CLI). Quando uma nova instância for iniciada, o sistema executará a automação e instalará o software.

Para obter informações sobre como criar runbooks, consulte Criação dos seus próprios runbooks.

Criar um evento do EventBridge que use um runbook (console)

Use o procedimento a seguir para configurar um runbook como o destino de um evento do EventBridge.

Para configurar um runbook como destino de uma regra de evento do EventBridge
  1. Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

  2. No painel de navegação, escolha Regras.

  3. Escolha Create rule.

  4. Insira um nome e uma descrição para a regra.

    Uma regra não pode ter o mesmo nome que outra na mesma Região e barramento de eventos.

  5. Em Barramento de eventos, selecione o barramento de eventos que você deseja associar a essa regra. Se você quiser que essa regra responda a eventos correspondentes provenientes da sua Conta da AWS, selecione default (padrão). Quando um AWS service (Serviço da AWS) na sua conta emite um evento, ele sempre vai para o barramento de eventos padrão da sua conta.

  6. Escolha como a regra é acionada.

    Para criar uma regra com base em… Fazer isso...

    Evento

    1. Em Tipo de Regra, escolha Regra com Padrão de Evento.

    2. Escolha Próximo.

    3. Em Event source, escolha Eventos da AWS ou eventos de parceiro do EventBridge.

    4. Na seção Event pattern (Padrão de evento), siga um destes procedimentos:

      • Para usar um modelo para criar o padrão de eventos, escolha Formulário de padrão de eventos e selecione as opções Origem do evento, Serviço da AWS e Tipo de evento. Se você escolher All Events (Todos os eventos) como tipo de evento, todos os eventos emitidos por esse AWS service (Serviço da AWS) corresponderão à regra.

        Para personalizar o modelo, escolha Padrão personalizado (editor JSON) e faça as alterações.

      • Para utilizar um padrão de evento personalizado, escolha Para personalizar o modelo, escolha Custom pattern (JSON editor) (Padrão personalizado, editor JSON) e crie seu padrão de evento.

    Schedule
    1. Em Rule type (Tipo de regra), escolha Schedule (Programação).

    2. Escolha Próximo.

    3. Em Schedule pattern (Padrão de programação), siga um destes procedimentos:

      • Para usar uma expressão cron para definir a programação, escolha A fine-grained schedule that runs at a specific time, such as 8:00 a.m. PST on the first Monday of every month (Uma programação refinada que é executada em um horário específico, como 8:00 PST na primeira segunda-feira de cada mês) e insira a expressão cron.

      • Para usar uma expressão de intervalo para definir a programação, escolha A schedule that runs at a regular rate, such as every 10 minutes (Uma programação que é executada a um intervalo regular, como a cada 10 minutos) e insira a expressão de intervalo.

  7. Escolha Next (Avançar).

  8. Em Tipos de destino, escolha Serviço da AWS.

  9. Para Select a target (Selecionar um destino), escolha Systems Manager Automation (Automation do Systems Manager).

  10. Para Document (Documento), escolha um runbook a ser usado quando o destino for invocado.

  11. Na seção Configure automation parameter(s) (Configurar parâmetros de automação), mantenha os valores dos parâmetros padrão (se disponíveis) ou insira seus próprios valores.

    nota

    Para criar um destino, você deve especificar um valor para cada parâmetro obrigatório. Se não fizer isso, o sistema criará a regra, mas a regra não será executada.

  12. Para muitos tipos de destino, o Eventbridge precisa de permissões para enviar eventos ao destino. Nesses casos, o Eventbridge pode criar o perfil do IAM necessário para o perfil ser executado. Execute um destes procedimentos:

    • Para criar um perfil do IAM automaticamente, escolha Criar um novo perfil para este recurso específico.

    • Para usar um perfil do IAM que você criou anteriormente, escolha Use existing role (Usar função existente). Observe que talvez seja necessário atualizar a política de confiança do seu perfil do IAM para incluir o EventBridge. Veja um exemplo a seguir:

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

  14. (Opcional) Insira uma ou mais tags para a regra. Para obter mais informações, consulte Marcar recursos do Amazon EventBridge no Guia do usuário do Amazon EventBridge.

  15. Escolha Próximo.

  16. Analise os detalhes da regra e selecione Criar regra.

Crie um evento do EventBridge que use um runbook (linha de comando)

O procedimento a seguir descreve como usar a AWS CLI (no Linux ou no Windows) ou o AWS Tools for PowerShell para criar uma regra de evento do EventBridge e configurar um runbook como o destino.

Para configurar um runbook como destino de uma regra de evento do EventBridge
  1. Instale e configure a AWS CLI ou o AWS Tools for PowerShell, caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI e Instalar o AWS Tools for PowerShell.

  2. Crie um comando para especificar uma nova regra de evento do EventBridge. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    Triggers com base em uma programação

    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"

    O exemplo a seguir cria uma regra de evento do EventBridge que é iniciada todos os dias às 9h (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 * * ? *)"

    Dispara com base em um 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"]}'

    O exemplo a seguir cria uma regra de evento do EventBridge que é iniciada quando o estado de qualquer instância do EC2 na região é alterado.

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

    O comando retorna detalhes da nova regra do EventBridge, semelhantes aos seguintes:

    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. Crie um comando para especificar um runbook como o destino da regra de evento do EventBridge que você criou na etapa 2. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    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

    O exemplo a seguir cria um destino para um evento do EventBridge que inicia o ID de instância especificado usando o runbook AWS-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

    O sistema retorna informações como estas.

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

    Não haverá saída se o comando for bem-sucedido para PowerShell.