Abilitazione delle notifiche di eventi per Code Engine
Come amministratore di Code Engine, si potrebbe voler inviare eventi da altri servizi di IBM Cloud a Code Engine per attivare le proprie applicazioni o lavori.
Per inviare informazioni a Event Notifications, è necessario collegare l'istanza Code Engine a Event Notifications. Per ulteriori informazioni su come lavorare con Event Notifications, si veda Iniziare a lavorare con Event Notifications.
Come vengono accolti gli eventi?
L'istanza Code Engine può funzionare come destinazione per Event Notifications.
Se configurati come destinazione, i lavori o le applicazioni di Code Engine possono essere attivati in risposta a una notifica di evento proveniente da un altro servizio di IBM Cloud o persino da un'altra applicazione o lavoro di Code Engine.
Quali sono le caratteristiche principali di Event Notifications
Esaminate le seguenti caratteristiche per l'utilizzo di Event Notifications con Code Engine
-
È possibile attivare o disattivare
pingSource, che consente di controllare le sorgenti di eventi programmati, come i timer, attivandoli o disattivandoli a seconda delle necessità. Questo è impossibile quando si utilizzano le sottoscrizioni agli eventi. -
È possibile controllare il numero di tentativi e di code di lettere morte. Quando si chiama Code Engine, problemi come errori di rete o malfunzionamenti dell'applicazione possono far fallire le richieste. Un tentativo viene utilizzato per fornire resilienza alle richieste esterne. Per saperne di più, consultare Numero di tentativi.
-
Non ci si limita ai timer periodici. Event Notifications supporta diverse sorgenti di eventi, come gli eventi di HTTP, gli eventi dei servizi cloud (ad esempio, il caricamento di oggetti), le funzioni e i risultati dei lavori di Code Engine. Questa modularità consente di creare flussi di lavoro flessibili che possono rispondere a eventi in tempo reale anziché a semplici trigger programmati. Combinando più fonti di eventi, è possibile progettare con facilità sistemi complessi e dinamici.
-
È possibile creare flussi di lavoro complessi. Ad esempio, un lavoro può essere attivato da un timer e, una volta completato, può inviare un evento a Event Notifications come fonte per altri servizi. Uno scenario per questo tipo di flusso di lavoro è che l'evento attivi una notifica via e-mail o avvii un altro flusso di lavoro.
-
I jobrun vengono cancellati automaticamente. Per impostazione predefinita, Event Notifications elimina automaticamente le esecuzioni dei lavori dopo 10 minuti per evitare problemi di quote. In questo modo si evita che i lavori fermi o bloccati consumino inutilmente le risorse. Inoltre, aiuta a non superare la quota di lavoro di Code Engine. È possibile verificare questo comportamento osservando la scheda Job nel progetto Code Engine, dove si vedrà che l'esecuzione del lavoro viene rimossa automaticamente dopo la finestra di 10 minuti.
In che modo le notifiche di Event Notifications sono diverse dagli abbonamenti?
Le sottoscrizioni per Event Notifications consentono alle app o ai lavori di Code Engine di ricevere informazioni sugli eventi.
Con Code Engine, le applicazioni o i lavori possono ricevere gli eventi di interesse sottoscrivendo i produttori di eventi. Le informazioni sugli eventi vengono ricevute come richieste POST HTTP per le applicazioni e come variabili d'ambiente per i lavori.
Code Engine supporta i seguenti tipi di produttori di eventi per le sottoscrizioni.
- Cron
- Il produttore di eventi cron si basa su cron-job e genera un evento a intervalli regolari. Utilizzate un produttore di eventi cron quando è necessario eseguire un'azione a intervalli ben definiti o a orari specifici.
- IBM Cloud Object Storage
- Il produttore di eventi Object Storage genera eventi quando vengono apportate modifiche agli oggetti nei bucket di archiviazione degli oggetti. Ad esempio, quando gli oggetti vengono aggiunti a un bucket, un'applicazione può ricevere un evento ed eseguire un'azione basata su tale modifica, magari consumando il nuovo oggetto.
- Kafka
- Il produttore di eventi di Kafka osserva la comparsa di nuovi messaggi in un'istanza di Kafka. Quando si crea una sottoscrizione a Code Engine Kafka per un insieme di argomenti, l'applicazione o il lavoro riceve un evento separato per ogni nuovo messaggio visualizzato in uno degli argomenti.
- Webhook
- Si possono usare i webhook di GitHub per inviare eventi da un repository di GitHub al carico di lavoro di Code Engine.
In alternativa, con Event Notifications è possibile configurare Code Engine come destinazione.
Se configurati come destinazione, i lavori o le applicazioni di Code Engine possono essere attivati in risposta a una notifica di evento proveniente da un altro servizio di IBM Cloud o persino da un'altra applicazione o lavoro di Code Engine.
| Attività | Sottoscrizione | Event Notifications |
|---|---|---|
| Definizione della sorgente dell'evento | Creare una sorgente di eventi periodica simile a un timer, che genera eventi ricorrenti basati sul tempo. | Utilizzare una sorgente di eventi predefinita - Timer periodico |
| Pianificazione | Come passo successivo, programmare il timer | Creare un argomento, scegliere la fonte come Timer periodico. Configurare utilizzando cronExpression |
| Scegliere la destinazione finale | Selezionare il lavoro o l'applicazione | Creare una destinazione finale. Code Engine |
| Iscriviti all'evento | Non è necessario un abbonamento esplicito. | Creare un abbonamento. Scegliere la destinazione e l'argomento creati in precedenza. |
Per saperne di più, vedere Come iniziare con gli abbonamenti.
Impostazione di un trigger nella console
In questo esempio, si utilizza la console IBM Cloud per impostare un timer di attivazione in Event Notifications che richiama un lavoro di Code Engine ogni 6 ore.
Prima di iniziare, assicuratevi di disporre di quanto segue nel vostro account.
- Un'istanza Event Notifications
- Un progetto Code Engine.
- Un lavoro di destinazione all'interno del progetto.
Completate i seguenti passaggi per creare il trigger.
-
Impostare una sorgente nell'istanza di Event Notifications.
- Impostare una sorgente
- Scegliere Timer periodico come sorgente dell'evento.
- Impostazione di un argomento Un argomento funge da filtro per gli eventi. Si utilizzerà per definire gli eventi di interesse.
- Date un nome al vostro argomento. Ad esempio, " Periodic-Trigger-6hr ".
- Impostare l'espressione cron
(0 */6 * * *)in modo che l'argomento emetta eventi ogni 6 ore. Ulteriori informazioni sulla creazione di un argomento con timer periodico.
-
Impostare una destinazione. La destinazione è il luogo in cui l'evento viene inviato per l'elaborazione. In questo esempio, scegliere il lavoro Code Engine esistente dall'elenco delle destinazioni disponibili. Il lavoro fungerà da endpoint che verrà attivato quando si verifica l'evento.
Nota: è necessaria un'autorizzazione da servizio a servizio tra Event Notifications e Code Engine. Questo può essere configurato andando su Gestione > Accesso > Autorizzazioni nella console. Tuttavia, quando si utilizza la console, questa parte viene gestita automaticamente.
-
Creare una Sottoscrizione che colleghi l'Argomento e la Destinazione.
-
Selezionare l'argomento " Periodic-Trigger-6hr " creato in precedenza.
-
Scegliete il vostro lavoro Code Engine come destinazione.
-
La sottoscrizione assicura che quando l'evento viene emesso ogni 6 ore, il lavoro Code Engine venga attivato. È possibile osservare e verificare l'intervallo esaminando la scheda Jobruns del progetto.
I passaggi precedenti hanno configurato un lavoro come destinazione. Tuttavia, questa stessa procedura può essere utilizzata se la destinazione è un'applicazione. Quando si imposta la destinazione, fornire l'applicazione URL.
Impostazione di un trigger nella CLI
In questo esempio, si usa la CLI di IBM Cloud per impostare un timer di attivazione in Event Notifications che richiama un lavoro di Code Engine ogni 6 ore.
Prima di iniziare, assicuratevi di disporre di quanto segue nel vostro account.
- Un progetto Code Engine.
- Un lavoro di destinazione all'interno del progetto.
Completate i seguenti passaggi per impostare l'attivazione.
- Creare un'istanza di Event Notifications.
ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \ "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \ -g "$PROJECT_RESOURCE_GROUP" - Creare un criterio di autorizzazione.
ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \ --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \ --target-service-instance-name "${PROJECT_NAME}" - Creare una destinazione utilizzando il lavoro 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" - Creare un argomento Event Notifications. Impostare l'argomento
--topic-timersu0 */6 * * *per un intervallo di 6 ore.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 * * *" - Abbonarsi all'argomento di destinazione.
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"