Ejecución de automatizaciones a partir de eventos EventBridge - AWS Systems Manager

Ejecución de automatizaciones a partir de eventos EventBridge

Puede iniciar una automatización al indicar un manual de procedimientos como destino de un evento de Amazon EventBridge. Puede iniciar las automatizaciones según una programación o cuando se produzca un evento específico del sistema de AWS. Por ejemplo, supongamos que crea un manual de procedimientos denominado BootStrapInstances, el cual instala software en una instancia cuando esta se inicia. Para especificar el manual de procedimientos BootStrapInstances (y la automatización correspondiente) como destino de un evento de EventBridge, primero debe crear una nueva regla de EventBridge. (A continuación se muestra un ejemplo de regla: Service name: EC2, Event Type: EC2 Instance State-change Notification, Specific state(s): running, Any instance). A continuación, utiliza los siguientes procedimientos para indicar el manual de procedimientos BootStrapInstances como destino del evento a través de la consola de EventBridge y la AWS Command Line Interface (AWS CLI). Cuando se inicia una instancia nueva, el sistema ejecuta la automatización e instala el software.

Para obtener más información acerca de la creación de manuales de procedimientos, consulte Creación de sus propios manuales de procedimientos.

Creación de un evento de EventBridge que utiliza un manual de procedimientos (consola)

Utilice el siguiente procedimiento para configurar un manual de procedimientos como destino de un evento de EventBridge.

Para configurar un manual de procedimientos como destino de una regla de eventos de EventBridge
  1. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. En el panel de navegación, seleccione Reglas.

  3. Elija Crear regla.

  4. Escriba un nombre y una descripción para la regla.

    Una regla no puede tener el mismo nombre que otra regla de la misma región y del mismo bus de eventos.

  5. En Bus de eventos, seleccione el bus de eventos que desea asociar a esta regla. Si desea que esta regla responda a eventos coincidentes procedentes de su propia Cuenta de AWS, seleccione default (predeterminado). Cuando un Servicio de AWS en su cuenta emite un evento, siempre va al bus de eventos predeterminado de su cuenta.

  6. Elija cómo se activa la regla.

    Para crear una regla basada en… Haga lo siguiente...

    Evento

    1. En Tipo de regla, elija Regla con un patrón de evento.

    2. Elija Siguiente.

    3. En Origen del evento, elija Eventos de AWS o eventos de socios de EventBridge.

    4. En la sección Event pattern (Patrón de eventos), realice una de las siguientes acciones:

      • Para utilizar una plantilla a fin de crear el patrón de eventos, elija Event pattern form (Formulario de patrón de eventos) y después Event source (Origen del evento), AWS service (Servicio de ) y Event type (Tipo de evento). Si elige All Events (Todos los eventos) como el tipo de evento, todos los eventos emitidos por este Servicio de AWS coincidirán con la regla.

        Para personalizar la plantilla, seleccione Patron personalizado (editor JSON) y realice los cambios.

      • Para utilizar un patrón de eventos personalizado, elija Custom pattern (JSON editor) (Patrón personalizado [editor JSON]) y cree su patrón de evento.

    Programación
    1. En Rule type (Tipo de regla), elija Schedule (Programación).

    2. Elija Siguiente.

    3. En Schedule pattern (Programar patrón), realice una de las siguientes acciones:

      • Para utilizar una expresión cron para definir la programación, elija A fine-grained schedule that runs at a specific time, such as 8:00 a.m. (Una programación detallada que se ejecuta a una hora específica, como las 8:00 h). PST on the first Monday of every month (PST el primer lunes de cada mes) e ingrese la expresión cron.

      • Para utilizar una expresión rate para definir la programación, elija A schedule that runs at a regular rate, such as every 10 minutes (Una programación que se ejecuta a una frecuencia regular, como cada 10 minutos) e ingrese la expresión rate.

  7. Elija Siguiente.

  8. En Target types (Tipos de destino), elija AWS service.

  9. Para Select a target (Seleccione un destino), elija Systems Manager Automation (Automatización de Systems Manager).

  10. En Document (Documento), elija un manual de procedimientos para utilizarlo cuando se invoque el destino.

  11. En la sección Configure automation parameter(s) (Configurar parámetros de automatización), mantenga los valores de parámetro predeterminados (si están disponibles) o escriba sus propios valores.

    nota

    Para crear un objetivo, debe especificar un valor para cada uno de los parámetros obligatorios. Si no lo hace, el sistema crea la regla, pero esta no se ejecutará.

  12. Si hay muchos tipos de destino, EventBridge necesita permisos para enviar eventos al destino. En estos casos, EventBridge puede crear el rol de IAM necesario para que se ejecute la regla. Realice una de las siguientes acciones siguientes:

    • Para crear un rol de IAM automáticamente, seleccione Crear un nuevo rol para este recurso específico.

    • Para utilizar un rol de IAM que haya creado antes, elija Use existing role (Usar rol existente) y seleccione el rol existente del menú desplegable. Tenga en cuenta que es posible que deba actualizar la política de confianza del rol de IAM para incluir EventBridge. A continuación, se muestra un ejemplo:

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

  14. (Opcional) Introduzca una o varias etiquetas para la regla. Para obtener más información, consulte Etiquetado de los recursos de Amazon EventBridge en la Guía del usuario de Amazon EventBridge.

  15. Elija Siguiente.

  16. Revise los detalles de la regla y seleccione Crear regla.

Creación de un evento de EventBridge que utiliza un manual de procedimientos (línea de comandos)

El siguiente procedimiento describe cómo utilizar la AWS CLI (en Linux o Windows) o las AWS Tools for PowerShell para crear una regla de eventos de EventBridge y configurar un manual de procedimientos como destino.

Para configurar un manual de procedimientos como destino de una regla de eventos de EventBridge
  1. Si aún no lo ha hecho, instale y configure la AWS CLI o las AWS Tools for PowerShell.

    Para obtener información, consulte Instalación o actualización de la última versión de la AWS CLI e Instalación de AWS Tools for PowerShell.

  2. Cree un comando para especificar una regla nueva de eventos de EventBridge. Reemplace cada example resource placeholder con su propia información.

    Se activa en función de una programación

    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"

    En el siguiente ejemplo, se crea una regla de eventos de EventBridge que se activa cada día a las 9:00 h (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 * * ? *)"

    Se activa en función de 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"]}'

    En el siguiente ejemplo, se crea una regla de eventos de EventBridge que se activa cuando se cambia el estado de una instancia de EC2 en la región.

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

    El comando devuelve detalles de la nueva regla de EventBridge similares a los siguientes.

    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. Cree un comando para especificar un manual de procedimientos como destino de la regla de eventos de EventBridge que creó en el paso 2. Reemplace cada example resource placeholder con su propia información.

    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

    En el siguiente ejemplo, se crea un destino de evento de EventBridge que activa el ID de instancia especificado mediante el manual de procedimientos 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

    El sistema devuelve información similar a la siguiente.

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

    No se obtienen resultados si el comando se ejecuta satisfactoriamente para PowerShell.