Activación de notificaciones de eventos para Code Engine

Como administrador de Code Engine, es posible que desee enviar eventos de otros servicios de IBM Cloud a Code Engine para activar sus aplicaciones o trabajos.

Para enviar información a Event Notifications, debe conectar su instancia Code Engine a Event Notifications. Para obtener más información sobre cómo trabajar con Event Notifications, consulte Iniciación a Event Notifications.

¿Cómo se reciben los actos?

Su instancia Code Engine puede funcionar como destino para Event Notifications.

Cuando se configura como Destino, sus trabajos o aplicaciones de Code Engine pueden activarse en respuesta a una notificación de evento de otro servicio de IBM Cloud o incluso de otra aplicación o trabajo de Code Engine.

¿Cuáles son las principales características de Event Notifications

Revise las siguientes funciones para utilizar Event Notifications con Code Engine

  • Puede activar o desactivar pingSource que le permite controlar fuentes de eventos programados, como temporizadores, activándolos o desactivándolos según sea necesario. Esto es imposible cuando se utilizan Suscripciones a Eventos.

  • Puedes controlar el número de reintentos y las colas de letra muerta. Al llamar a Code Engine, problemas como errores de red o fallos de la aplicación pueden hacer que las solicitudes fallen. Se utiliza un reintento para proporcionar resiliencia a las solicitudes externas. Para saber más, consulta Número de reintentos.

  • No está limitado a temporizadores periódicos. Event Notifications admite varias fuentes de eventos, como eventos de HTTP, eventos de servicios en la nube (por ejemplo, cargas de objetos), funciones y salidas de trabajos de Code Engine. Esta modularidad permite crear flujos de trabajo flexibles que pueden responder a eventos en tiempo real en lugar de limitarse a activadores programados. Al combinar múltiples fuentes de eventos, puede diseñar sistemas complejos y dinámicos con facilidad.

  • Puede crear flujos de trabajo complejos. Por ejemplo, un trabajo puede ser activado por un temporizador, y cuando el trabajo se completa, puede enviar un evento de vuelta a Event Notifications como fuente para otros servicios. Un escenario para este tipo de flujo de trabajo sería que el evento desencadenara una notificación por correo electrónico o iniciara otro flujo de trabajo.

  • Sus jobruns se borran automáticamente. Por defecto, Event Notifications elimina automáticamente las ejecuciones de trabajo después de 10 minutos para evitar problemas de cuota de ejecuciones de trabajo. Esto ayuda a garantizar que los trabajos obsoletos o atascados no consuman recursos innecesariamente. También ayuda a no sobrepasar la cuota de trabajo de Code Engine. Puede verificar este comportamiento observando la pestaña Job en su proyecto Code Engine, donde verá que la ejecución del trabajo se elimina automáticamente después de la ventana de 10 minutos.

¿En qué se diferencian las notificaciones de Event Notifications de las suscripciones?

Las suscripciones para Event Notifications permiten que sus aplicaciones o trabajos de Code Engine reciban información sobre eventos.

Con Code Engine, las aplicaciones o los trabajos pueden recibir sucesos de interés suscribiéndose a productores de sucesos. La información de sucesos se recibe como solicitudes POST HTTP para aplicaciones y como variables de entorno para trabajos.

Code Engine admite los siguientes tipos de productores de eventos para suscripciones.

Cron
El productor de eventos cron se basa en cron-job y genera un evento a intervalos regulares. Utilice un productor de sucesos cron cuando haya que realizar una acción a intervalos bien definidos o en momentos específicos.
IBM Cloud Object Storage
El productor de eventos Object Storage genera eventos a medida que se realizan cambios en los objetos de sus cubos de almacenamiento de objetos. Por ejemplo, a medida que se añaden objetos a un grupo, una aplicación puede recibir un suceso y emprender una acción basada en dicho cambio, quizás consumiendo ese nuevo objeto.
Kafka
El productor de eventos Kafka está atento a la aparición de nuevos mensajes en una instancia de Kafka. Al crear una suscripción a Code Engine Kafka para un conjunto de temas, tu aplicación o trabajo recibe un evento independiente por cada nuevo mensaje que aparece en uno de los temas.
Webhooks
Puede utilizar GitHub webhooks para enviar eventos desde un repositorio GitHub a su carga de trabajo Code Engine.

Alternativamente, con Event Notifications puede configurar Code Engine como Destino.

Cuando se configura como Destino, sus trabajos o aplicaciones de Code Engine pueden activarse en respuesta a una notificación de evento de otro servicio de IBM Cloud o incluso de otra aplicación o trabajo de Code Engine.

Comparar suscripciones y notificaciones de eventos
Tarea Suscripción Event Notifications
Definición de la fuente de eventos Crear un temporizador periódico cron-como fuente de eventos que genera eventos recurrentes basados en el tiempo. Utilizar una fuente de eventos predefinida - Temporizador periódico
Planificación Como siguiente paso, programe el temporizador Cree un tema, elija como fuente Temporizador periódico. Configurar con cronExpression
Elegir destino final Seleccione el trabajo o la solicitud Crea un destino final. Code Engine
Suscribirse al evento No necesita suscripción explícita. Cree una suscripción. Elija un destino y un tema creados previamente.

Para obtener más información, consulte Introducción a las suscripciones.

Configurar un disparador en la consola

En este ejemplo, se utiliza la consola IBM Cloud para configurar un disparador de temporizador en Event Notifications que llama a un trabajo Code Engine cada 6 horas.

Antes de empezar, asegúrate de que tienes lo siguiente en tu cuenta.

  • Una instancia de Event Notifications
  • Un proyecto de Code Engine.
  • Un puesto objetivo dentro del proyecto.

Complete los siguientes pasos para crear el disparador.

  1. Configure una fuente en su instancia Event Notifications.

    1. Configurar una fuente
    2. Elija Temporizador periódico como fuente de eventos.
    3. Configurar un tema Un tema actúa como un filtro para los eventos. Se utilizará para definir los eventos de interés.
    4. Dale un nombre a tu tema. Por ejemplo, " Periodic-Trigger-6hr ".
    5. Establezca la expresión cron (0 */6 * * *) para que el tema emita eventos cada 6 horas. Más información sobre la creación de un tema con temporizador periódico.
  2. Establece un destino. El destino es el lugar al que se envía el evento para su procesamiento. En este ejemplo, elija su trabajo existente en Code Engine de la lista de destinos disponibles. El trabajo actuará como el punto final que se activará cuando se produzca el evento.

    Nota: Se necesita una autorización de servicio a servicio entre Event Notifications y Code Engine. Esto puede configurarse yendo a Gestionar > Acceso > Autorizaciones en la consola. Sin embargo, cuando se utiliza la consola, esta parte se gestiona automáticamente.

  3. Cree una Suscripción que vincule el Tema y el Destino.

    1. Seleccione el tema " Periodic-Trigger-6hr " que creó anteriormente.

    2. Elige como destino tu trabajo en Code Engine.

La suscripción garantiza que cuando se emita el evento cada 6 horas, se activará el trabajo Code Engine. Puede observar y verificar el intervalo revisando la pestaña Jobruns de su proyecto.

En los pasos anteriores se configuró un trabajo como destino. Sin embargo, este mismo procedimiento se puede utilizar si su destino una aplicación. Al configurar el destino, indique su aplicación URL.

Configuración de un disparador en la CLI

En este ejemplo, se utiliza la CLI IBM Cloud para configurar un disparador de temporizador en Event Notifications que llama a un trabajo Code Engine cada 6 horas.

Antes de empezar, asegúrate de que tienes lo siguiente en tu cuenta.

  • Un proyecto de Code Engine.
  • Un puesto objetivo dentro del proyecto.

Complete los siguientes pasos para configurar el activador.

  1. Cree una instancia de Event Notifications.
    ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \
    "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \
    -g "$PROJECT_RESOURCE_GROUP"
    
  2. Cree una política de autorización.
    ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \
    --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \
    --target-service-instance-name "${PROJECT_NAME}"
    
  3. Cree un destino utilizando su trabajo Code Engine.
    CONFIG_JSON=$(cat <<EOF
    {
      "params": {
        "type": "job",
        "job_name": "${JOB_NAME}",
        "project_crn": "${PROJECT_CRN}"
      }
    }
    EOF
    )
    
    ibmcloud event-notifications destination-create \
      --instance-id "${EVENT_NOTIFICATIONS_INSTANCE_ID}" \
      --name "${DESTINATION_NAME}" \
      --type "ibmce" \
      --description "${DESTINATION_DESCRIPTION}" \
      --config "$CONFIG_JSON"
    
  4. Cree un tema de Event Notifications. Configure el tema --topic-timer en 0 */6 * * * para un intervalo de 6 horas.
    ibmcloud event-notifications topic create \
    --name "$TOPIC_NAME" \
    --description "$TOPIC_DESCRIPTION" \
    --service-instance-id "$EVENT_NOTIFICATIONS_CRN" \
    --topic-type timer \
    --topic-timer "$TOPIC_CRON" # Example: "0 */6 * * *"
    
  5. Suscríbase al tema de destino.
    ibmcloud event-notifications subscription create \
    --name "$SUBSCRIPTION_NAME" \
    --description "Triggers Code Engine job from topic" \
    --service-instance-id "$EVENT_NOTIFICATIONS_CRN" \
    --topic-id "$TOPIC_ID" \
    --destination-id "$DESTINATION_ID"