Activation des notifications d'événements pour Code Engine

En tant qu'administrateur de Code Engine, vous pouvez vouloir envoyer des événements provenant d'autres services IBM Cloud à Code Engine pour déclencher vos applications ou vos travaux.

Pour envoyer des informations à Event Notifications, vous devez connecter votre instance Code Engine à Event Notifications. Pour plus d'informations sur l'utilisation de Event Notifications, voir Initiation à Event Notifications.

Comment les événements sont-ils reçus?

Votre instance Code Engine peut servir de destination à Event Notifications.

Lorsqu'ils sont configurés en tant que destination, vos travaux ou applications Code Engine peuvent être déclenchés en réponse à une notification d'événement provenant d'un autre service IBM Cloud ou même d'une autre application ou d'un autre travail Code Engine.

Quelles sont les principales caractéristiques de Event Notifications

Passez en revue les fonctionnalités suivantes pour l'utilisation de Event Notifications avec Code Engine

  • Vous pouvez activer ou désactiver pingSource, ce qui vous permet de contrôler les sources d'événements programmés, comme les minuteries, en les activant ou en les désactivant selon les besoins. Cela est impossible lorsque l'on utilise des abonnements à des événements.

  • Vous pouvez contrôler le nombre de tentatives et les files d'attente de lettres mortes. Lors de l'appel à Code Engine, des problèmes tels que des erreurs de réseau ou des dysfonctionnements de l'application peuvent faire échouer les demandes. Une nouvelle tentative est utilisée pour fournir la résilience aux demandes externes. Pour en savoir plus, consultez la rubrique Nombre de tentatives.

  • Vous n'êtes pas limité aux minuteries périodiques. Event Notifications prend en charge diverses sources d'événements telles que les événements HTTP, les événements des services en nuage (par exemple, les téléchargements d'objets), les fonctions et les sorties de tâches Code Engine. Cette modularité permet de créer des flux de travail flexibles qui peuvent répondre à des événements en temps réel plutôt qu'à des déclenchements programmés. En combinant plusieurs sources d'événements, vous pouvez facilement concevoir des systèmes complexes et dynamiques.

  • Vous pouvez créer des flux de travail complexes. Par exemple, un travail peut être déclenché par une minuterie, puis lorsque le travail est terminé, il peut renvoyer un événement à Event Notifications en tant que source pour d'autres services. Un scénario pour ce type de flux de travail consisterait à faire en sorte que l'événement déclenche une notification par courrier électronique ou initie un autre flux de travail.

  • Vos jobruns sont automatiquement supprimés. Par défaut, Event Notifications supprime automatiquement les travaux au bout de 10 minutes afin d'éviter les problèmes de quotas de travaux. Cela permet de s'assurer que les travaux périmés ou bloqués ne consomment pas de ressources inutilement. Il permet également d'éviter de dépasser le quota d'emplois de Code Engine. Vous pouvez vérifier ce comportement en observant l'onglet Job dans votre projet Code Engine, où vous verrez que l'exécution du job est automatiquement supprimée après la fenêtre de 10 minutes.

En quoi les notifications Event Notifications sont-elles différentes des abonnements?

Les abonnements à Event Notifications permettent à vos applications ou tâches Code Engine de recevoir des informations sur les événements.

Avec Code Engine, vos applications ou vos travaux peuvent recevoir des événements d'intérêt grâce à un abonnement à des producteurs d'événements. Les informations relatives aux événements sont reçues sous forme de demandes HTTP POST pour les applications et sous forme de variables d'environnement pour les travaux.

Code Engine prend en charge les types suivants de producteurs d'événements pour les abonnements.

Cron
Le producteur d'événements cron est basé sur cron-job et génère un événement à intervalles réguliers. Utilisez un producteur d'événement cron lorsqu'une action doit être effectuée à des intervalles définis ou à des heures spécifiques.
IBM Cloud Object Storage
Le producteur d'événements Object Storage génère des événements au fur et à mesure que des modifications sont apportées aux objets de vos ensembles de stockage d'objets. Par exemple, lorsque des objets sont ajoutés à un compartiment, une application peut recevoir un événement, puis effectuer une action en fonction de cette modification, peut-être en consommant ce nouvel objet.
Kafka
Le producteur d'événements Kafka surveille l'apparition de nouveaux messages dans une instance Kafka. Lorsque vous créez un abonnement Code Engine Kafka pour un ensemble de sujets, votre application ou votre tâche reçoit un événement distinct pour chaque nouveau message apparaissant dans l'un des sujets.
Webhooks
Vous pouvez utiliser les webhooks GitHub pour envoyer des événements d'un référentiel GitHub à votre charge de travail Code Engine.

Vous pouvez également configurer Code Engine en tant que destination à l'aide de Event Notifications.

Lorsqu'ils sont configurés en tant que destination, vos travaux ou applications Code Engine peuvent être déclenchés en réponse à une notification d'événement provenant d'un autre service IBM Cloud ou même d'une autre application ou d'un autre travail Code Engine.

Comparer les abonnements et les notifications d'événements
Tâche Abonnement Event Notifications
Définition de la source de l'événement Créez une source d'événements périodique de type cron qui génère des événements récurrents basés sur le temps. Utiliser une source d'événement prédéfinie - Minuterie périodique
Planification L'étape suivante consiste à programmer la minuterie Créez un sujet, choisissez la source comme Periodic Timer. Configurer à l'aide de cronExpression
Choisir la destination finale Sélectionner l'emploi ou la demande Créer une destination finale. Code Engine
S'abonner à l'événement Aucun abonnement explicite n'est nécessaire. Créez un abonnement. Choisissez une destination et un sujet créés précédemment.

Pour en savoir plus, consultez la section Premiers pas avec les abonnements.

Mise en place d'un déclencheur dans la console

Dans cet exemple, vous utilisez la console IBM Cloud pour configurer un déclencheur de temporisation dans Event Notifications qui appelle un travail Code Engine toutes les 6 heures.

Avant de commencer, assurez-vous que vous disposez des éléments suivants sur votre compte.

  • Une instance Event Notifications
  • Un projet Code Engine.
  • Un emploi cible au sein du projet.

Effectuez les étapes suivantes pour créer le déclencheur.

  1. Configurez une source dans votre instance Event Notifications.

    1. Mise en place d'une source
    2. Choisissez Periodic Timer comme source d'événement.
    3. Configurer un thème Un thème sert de filtre pour les événements. Vous l'utiliserez pour définir les événements qui vous intéressent.
    4. Donnez un nom à votre sujet. Par exemple, " Periodic-Trigger-6hr ".
    5. Définissez l'expression cron (0 */6 * * *) pour que le sujet émette des événements toutes les 6 heures. En savoir plus sur la création d'un sujet avec minuterie périodique.
  2. Définir une destination. La destination est l'endroit où l'événement est envoyé pour traitement. Dans cet exemple, choisissez votre travail Code Engine existant dans la liste des destinations disponibles. Le travail servira de point final qui sera déclenché lorsque l'événement se produira.

    Note : Une autorisation de service à service est nécessaire entre Event Notifications et Code Engine. Ceci peut être configuré en allant dans Gestion > Accès > Autorisations dans la console. Cependant, lorsque vous utilisez la console, cette partie est gérée automatiquement.

  3. Créez un abonnement qui relie le sujet et la destination.

    1. Sélectionnez la rubrique " Periodic-Trigger-6hr " que vous avez créée précédemment.

    2. Choisissez votre emploi Code Engine comme destination.

L'abonnement garantit que lorsque l'événement est émis toutes les 6 heures, la tâche Code Engine est déclenchée. Vous pouvez observer et vérifier l'intervalle en consultant l'onglet Jobruns de votre projet.

Les étapes précédentes ont permis de configurer un travail comme destination. Cependant, cette même procédure peut être utilisée si votre destination est une application. Lors de la configuration de la destination, indiquez votre application URL.

Configuration d'un déclencheur dans l'interface de programmation

Dans cet exemple, vous utilisez l'interface CLI IBM Cloud pour configurer un déclencheur de temporisation dans Event Notifications qui appelle un travail Code Engine toutes les 6 heures.

Avant de commencer, assurez-vous que vous disposez des éléments suivants sur votre compte.

  • Un projet Code Engine.
  • Un emploi cible au sein du projet.

Suivez les étapes suivantes pour configurer le déclencheur.

  1. Créer une instance 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. Créer une politique d'autorisation.
    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. Créez une destination en utilisant votre emploi 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. Créez une rubrique Event Notifications. Réglez le thème --topic-timer sur 0 */6 * * * pour un intervalle de 6 heures.
    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. S'abonner au thème de destination.
    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"