Aktivieren von Ereignisbenachrichtigungen für Code Engine
Als Administrator von Code Engine möchten Sie vielleicht Ereignisse von anderen IBM Cloud Diensten an Code Engine senden, um Ihre Anwendungen oder Jobs auszulösen.
Um Informationen an Event Notifications zu senden, müssen Sie Ihre Instanz Code Engine mit Event Notifications verbinden. Weitere Informationen zum Arbeiten mit Event Notifications finden Sie unter Erste Schritte mit Event Notifications.
Wie werden die Ereignisse aufgenommen?
Ihre Code Engine Instanz kann als Ziel für Event Notifications dienen.
Wenn Sie als Ziel konfiguriert sind, können Ihre Code Engine Aufträge oder Anwendungen als Reaktion auf eine Ereignisbenachrichtigung von einem anderen IBM Cloud Dienst oder sogar einer anderen Code Engine Anwendung oder einem Auftrag ausgelöst werden.
Was sind einige der wichtigsten Merkmale von Event Notifications
Überprüfen Sie die folgenden Funktionen zur Verwendung von Event Notifications mit Code Engine
-
Sie können
pingSourceaktivieren oder deaktivieren, wodurch Sie geplante Ereignisquellen, wie z. B. Zeitschaltuhren, steuern können, indem Sie sie je nach Bedarf aktivieren oder deaktivieren. Dies ist bei der Verwendung von Ereignisabonnements nicht möglich. -
Sie können die Anzahl der Wiederholungsversuche und die Warteschlangen für tote Buchstaben steuern. Beim Aufruf von Code Engine können Probleme wie Netzwerkfehler oder Anwendungsstörungen dazu führen, dass die Anfragen fehlschlagen. Ein Neuversuch wird verwendet, um die Ausfallsicherheit für externe Anforderungen bereitzustellen. Weitere Informationen finden Sie unter Anzahl der Wiederholungsversuche.
-
Sie sind nicht auf periodische Timer beschränkt. Event Notifications unterstützt verschiedene Ereignisquellen wie HTTP Ereignisse, Cloud-Service-Ereignisse (z. B. Objekt-Uploads), Funktionen und Code Engine Jobausgaben. Diese Modularität ermöglicht die Erstellung flexibler Workflows, die auf Echtzeit-Ereignisse und nicht nur auf geplante Auslöser reagieren können. Durch die Kombination mehrerer Ereignisquellen können Sie mühelos komplexe, dynamische Systeme entwerfen.
-
Sie können komplexe Arbeitsabläufe erstellen. So kann beispielsweise ein Auftrag durch einen Zeitgeber ausgelöst werden und nach Abschluss des Auftrags ein Ereignis an Event Notifications als Quelle für andere Dienste zurücksenden. Ein Szenario für diese Art von Workflow wäre, dass das Ereignis eine E-Mail-Benachrichtigung auslöst oder einen anderen Workflow initiiert.
-
Ihre Auftragsläufe werden automatisch gelöscht. Standardmäßig löscht Event Notifications Jobläufe automatisch nach 10 Minuten, um Quotenprobleme zu vermeiden. Dadurch wird sichergestellt, dass veraltete oder festgefahrene Aufträge nicht unnötig Ressourcen verbrauchen. Es hilft auch dabei, ein Überschreiten der Code Engine Auftragsquote zu vermeiden. Sie können dieses Verhalten überprüfen, indem Sie die Registerkarte "Job" in Ihrem Projekt Code Engine betrachten. Dort sehen Sie, dass der Joblauf nach dem 10-Minuten-Fenster automatisch entfernt wird.
Wie unterscheiden sich die Event Notifications Benachrichtigungen von den Abonnements?
Mit den Abonnements für Event Notifications können Sie Ihre Code Engine Anwendungen oder Aufträge mit Ereignisinformationen versorgen.
Mit Code Engine können Ihre Anwendungen und Jobs relevante Ereignisse empfangen, indem Ereignisproduzenten abonniert werden. Ereignisinformationen werden für Anwendungen als POST-HTTP-Anforderungen und für Jobs als Umgebungsvariablen empfangen.
Code Engine unterstützt die folgenden Arten von Ereignisproduzenten für Abonnements.
- Cron
- Der cron event producer basiert auf cron-job und erzeugt in regelmäßigen Abständen ein Ereignis. Verwenden Sie einen Cron-Ereignisproduzenten, wenn eine Aktion in genau definierten Intervallen oder zu bestimmten Zeitpunkten ausgeführt werden muss.
- IBM Cloud Object Storage
- Der Object Storage Event Producer erzeugt Ereignisse, wenn Änderungen an den Objekten in Ihren Objektspeicherbereichen vorgenommen werden. Eine Anwendung kann beispielsweise Ereignisse empfangen, wenn Objekte zu einem Bucket hinzugefügt werden, und dann aufgrund dieser Änderung eine Aktion ausführen (z. B. die Verarbeitung dieses neuen Objekts).
- Kafka
- Der Kafka Event Producer überwacht das Erscheinen neuer Nachrichten in einer Kafka Instanz. Wenn Sie ein Code Engine Kafka Abonnement für eine Reihe von Themen erstellen, erhält Ihre Anwendung oder Ihr Auftrag ein separates Ereignis für jede neue Nachricht, die in einem der Themen erscheint.
- Webhooks
- Sie können GitHub Webhooks verwenden, um Ereignisse von einem GitHub Repository an Ihren Code Engine Workload zu senden.
Alternativ dazu können Sie mit Event Notifications Code Engine als Ziel konfigurieren.
Wenn Sie als Ziel konfiguriert sind, können Ihre Code Engine Aufträge oder Anwendungen als Reaktion auf eine Ereignisbenachrichtigung von einem anderen IBM Cloud Dienst oder sogar einer anderen Code Engine Anwendung oder einem Auftrag ausgelöst werden.
| Task | Abonnement | Event Notifications |
|---|---|---|
| Definition der Ereignisquelle | Erstellen Sie eine periodische Timer-Cron-ähnliche Ereignisquelle, die wiederkehrende zeitbasierte Ereignisse erzeugt. | Verwendung einer vordefinierten Ereignisquelle - Periodischer Timer |
| Planung | Als nächsten Schritt planen Sie die Zeitschaltuhr | Erstellen Sie ein Thema, wählen Sie als Quelle Periodischer Timer. Konfigurieren Sie mit cronExpression |
| Endziel wählen | Wählen Sie die Stelle oder Anwendung | Erstellen Sie ein Endziel. Code Engine |
| Abonnieren Sie die Veranstaltung | Kein ausdrückliches Abonnement erforderlich. | Erstellen Sie eine Subskription. Wählen Sie ein zuvor erstelltes Ziel und Thema. |
Weitere Informationen finden Sie unter Erste Schritte mit Abonnements.
Einrichten eines Triggers in der Konsole
In diesem Beispiel verwenden Sie die IBM Cloud Konsole, um einen Timer-Trigger in Event Notifications einzurichten, der alle 6 Stunden einen Code Engine Job aufruft.
Bevor Sie beginnen, vergewissern Sie sich, dass Sie die folgenden Informationen auf Ihrem Konto haben.
- Eine Event Notifications Instanz
- Ein Projekt Code Engine.
- Eine Zielstelle innerhalb des Projekts.
Führen Sie die folgenden Schritte aus, um den Auslöser zu erstellen.
-
Richten Sie eine Quelle in Ihrer Event Notifications Instanz ein.
- Einrichten einer Quelle
- Wählen Sie Periodischer Timer als Ereignisquelle.
- Einrichten eines Themas Ein Thema dient als Filter für Ereignisse. Damit legen Sie die Ereignisse fest, die Sie interessieren.
- Geben Sie Ihrem Thema einen Namen. Zum Beispiel: " Periodic-Trigger-6hr ".
- Stellen Sie den Cron-Ausdruck
(0 */6 * * *)so ein, dass das Thema alle 6 Stunden Ereignisse ausgibt. Erfahren Sie mehr über das Erstellen eines Themas mit periodischem Timer.
-
Legen Sie ein Ziel fest. Das Ziel ist der Ort, an den das Ereignis zur Verarbeitung geschickt wird. In diesem Beispiel wählen Sie Ihren bestehenden Auftrag Code Engine aus der Liste der verfügbaren Ziele aus. Der Auftrag dient als Endpunkt, der ausgelöst wird, wenn das Ereignis eintritt.
Hinweis: Eine Genehmigung von Dienst zu Dienst ist erforderlich zwischen Event Notifications und Code Engine. Dies kann in der Konsole unter Verwalten > Zugriff > Berechtigungen konfiguriert werden. Wenn Sie jedoch die Konsole verwenden, wird dieser Teil automatisch erledigt.
-
Erstellen Sie ein Abonnement, das das Thema und das Ziel verbindet.
-
Wählen Sie das Thema " Periodic-Trigger-6hr ", das Sie zuvor erstellt haben.
-
Wählen Sie Ihren Code Engine Job als Ziel.
-
Das Abonnement stellt sicher, dass der Code Engine Job ausgelöst wird, wenn das Ereignis alle 6 Stunden eintritt. Sie können das Intervall beobachten und überprüfen, indem Sie die Registerkarte " Jobruns" Ihres Projekts überprüfen.
In den vorherigen Schritten wurde ein Auftrag als Ziel konfiguriert. Das gleiche Verfahren kann jedoch auch angewendet werden, wenn Ihr Ziel eine App ist. Geben Sie beim Einrichten des Ziels Ihre App URL an.
Einrichten eines Triggers in der CLI
In diesem Beispiel verwenden Sie die IBM Cloud CLI, um einen Timer-Trigger in Event Notifications einzurichten, der alle 6 Stunden einen Code Engine Job aufruft.
Bevor Sie beginnen, vergewissern Sie sich, dass Sie die folgenden Informationen auf Ihrem Konto haben.
- Ein Projekt Code Engine.
- Eine Zielstelle innerhalb des Projekts.
Führen Sie die folgenden Schritte aus, um den Auslöser einzurichten.
- Erstellen Sie eine Instanz von Event Notifications.
ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \ "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \ -g "$PROJECT_RESOURCE_GROUP" - Erstellen Sie eine Autorisierungsrichtlinie.
ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \ --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \ --target-service-instance-name "${PROJECT_NAME}" - Erstellen Sie ein Ziel mit Hilfe Ihres Code Engine Auftrags.
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" - Erstellen Sie ein Event Notifications-Thema. Stellen Sie das Thema
--topic-timerauf0 */6 * * *für einen Zeitraum von 6 Stunden ein.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 * * *" - Abonnieren Sie das Zielthema.
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"