Mit Ereignisproduzent mit periodischem Zeitgeber (Cron) arbeiten
Der Ereignisproduzent mit periodischem Zeitgeber (Cron) generiert in regelmäßigen Abständen ein Ereignis. Dieses Intervall kann in Minuten, Stunden, Tagen, Monaten oder einer Kombination mehrerer Zeitintervalle angegeben werden. Sie können Code Engine Anwendungen, Funktionen und Jobs für den Empfang von Cron-Ereignissen abonnieren.
Das periodische Timer-Ereignisabonnement verwendet die Standard-Crontab-Syntax zur Angabe von Intervalldetails im Format * * * * *, wobei die Felder Minute, Stunde, Tag des Monats, Monat des Jahres und Tag der Woche sind. Wenn Sie
beispielsweise ein Ereignis für Mitternacht planen möchten, geben Sie 0 0 * * * an. Wenn Sie ein Ereignis für jeden Freitag um Mitternacht planen möchten, geben Sie 0 0 * * 5 an. Weitere Informationen über crontab finden
Sie unter CRONTAB.
Wenn Sie einen periodischen Timer-Ereignisproduzenten abonnieren, müssen Sie ein Ziel (Anwendung, Funktion oder Job) und einen Zieltyp für das Abonnement angeben. Wenn Sie keinen Zeitplan angeben, gilt die Standardeinstellung * * * * * (jede Minute).
Code Engine verfügt über Quoten für periodische Timer-Abonnements innerhalb eines Projekts und Abonnementgrenzen. Weitere Informationen zu Code Engine-Grenzwerte finden Sie unter Grenzwerte und Kontingente für Code Engine.
Ereignisse des periodischen Zeitgebers (Cron) für eine Anwendung abonnieren
Sie können mit periodischen Timer-Abonnements über die Konsole oder die CLI arbeiten.
Ereignisse werden als HTTP-POST-Anforderungen an Anwendungen gesendet. Weitere Informationen zu den in einem Ereignis enthaltenen Informationen finden Sie in Informationen zu HTTP-Headern und -Hauptteilen für Ereignisse.
Ereignisse des periodischen Zeitgebers (Cron) für eine Anwendung über die Konsole abonnieren
Sie können periodische Timer-Ereignisabonnements für eine Anwendung über die Konsole erstellen und aktualisieren.
Vorbereitende Schritte
- Erstellen Sie ein Projekt.
- Erstellen Sie eine Anwendung. Erstellen Sie beispielsweise eine Anwendung mit dem Namen
myapp, die dasicr.io/codeengine/cron-Image verwendet. Dieses Image wurde auscron.goerstellt, das im Samples for IBM Cloud Code Engine GitHub Repository verfügbar ist.
Führen Sie die folgenden Schritte aus, um ein Abonnement für ein periodisches Timer-Ereignis für eine Anwendung über die Konsole zu erstellen und zu aktualisieren.
-
Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
-
Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.
-
Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.
-
Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:
- Wählen Sie für Ereignistyp die Kachel für den periodischen Zeitgeber aus. Klicken Sie auf Weiter.
- Geben Sie unter Allgemein einen Namen für das Abonnement des periodischen Zeitgebers an, z. B.
myptimer. Sie können optional Ereignisattribute angeben. Beachten Sie, dass die Ereignisattribute als HTTP-Header verfügbar sind, wenn der Ereigniskonsument des periodischen Zeitgebers eine Anwendung ist. Handelt es sich bei dem Ereigniskonsumenten um einen Job, stehen Ereignisattribute als Umgebungsvariablen zur Verfügung. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Zeitplan Informationen zur Zeitsteuerung für die Ereignisse an. Der Ereigniserzeuger Periodischer Timer verwendet die Standard-Crontab-Syntax zur Angabe von Intervalldetails. Wählen Sie Ihr Intervall unter
den bereitgestellten Mustern aus oder geben Sie Ihren eigenen angepassten Cron-Ausdruck an. Ein Beispiel wäre
0 0 * * *; dieser Ausdruck gibt an, dass das Ereignis täglich um Mitternacht auftreten soll. Wählen Sie für das vorliegende Beispiel das Zeitplanmuster für jeden Tag, jede Stunde, jede Minute aus. Der Cron-Ausdruck wird übrigens automatisch für Sie generiert. Die Muster für Tag, Stunde und Minute sowie der Cron-Ausdruck sind in UTC (Coordinated Universal Time) angegeben. Falls Sie keinen Zeitplan angeben, sendet dieses Ereignisabonnement einmal pro Minute ein Ereignis. Es wird eine Liste der anstehenden geplanten Ereignisse angezeigt. Beachten Sie, dass diese anstehenden geplanten Ereignisse in Ihrer Zeitzone angezeigt werden. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Angepasste Ereignisdaten Daten an, die in den Hauptteil Ihrer Ereignisnachricht einbezogen werden sollen. Sie können die Nachricht als Klartext oder im base64-Format angeben. Geben Sie für dieses Beispiel
den Text
hello strangerals Hauptteil der Ereignisnachricht an. Wenn die Nachricht das base64-Format besitzt, können Sie angeben, dass die Nachricht beim Senden des Ereignisses decodiert werden soll. Sie können auch den Inhaltstyp für Ihre angepassten Ereignisdaten angeben. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Ereigniskonsument die Anwendung oder den Job für den Empfang von Ereignissen an. Beachten Sie, dass Sie eine Auswahl in einer Liste definierter Anwendungen und Jobs treffen können. Verwenden Sie für dieses
Beispiel die
myapp-Anwendung, die dasicr.io/codeengine/cron-Image referenziert. Wenn Sie Ihre App oder Ihren Job noch nicht erstellt haben, können Sie den Namen Ihrer Anwendung oder Ihres Jobs angeben und Ihre Anwendung erstellen oder Ihren Job erstellen, nachdem Sie das Abonnement für den periodischen Timer erstellt haben. Nur bei Anwendungen können Sie optional einen Pfad angeben. Ereignisse werden standardmäßig an die Stamm-URL der Zielanwendung weitergeleitet. Durch die Angabe eines Pfades können Sie Ereignisse an ein anderes Ziel innerhalb der App senden. Wenn in Ihrem Subskriptionspfad beispielsweise/eventsangegeben ist, werden die Ereignisse anhttps://<base application URL>/eventsgesendet. Fahren Sie durch Klicken auf Weiter fort. - Überprüfen Sie unter Zusammenfassung die Einstellungen für das Ereignisabonnement des periodischen Zeitgebers und nehmen Sie bei Bedarf Änderungen vor. Wenn Sie fertig sind, klicken Sie auf Erstellen, um das Abonnement für den periodischen Timer zu erstellen.
-
Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
-
Um ein Abonnement zu aktualisieren, navigieren Sie zu Ihrer Abonnementseite für den Periodic Timer. Klicken Sie auf der Seite 'Ereignisabonnements' auf den Namen des Abonnements, das aktualisiert werden soll.
-
Ändern Sie auf der Seite für das Abonnement des periodischen Timers die Daten in der Ereignismeldung. Ändern Sie auf der Registerkarte Angepasste Ereignisdaten die Ereignisdaten in
hello sunshine. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern. -
Da die
myapp-Anwendung auf die Beispielanwendungcronverweist, die Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Zeigen Sie die Anwendungsprotokolle für die Ereigniskonsumentenanwendungmyappan; Sie können feststellen, dass die Ereignisnachrichthello sunshinelautet. Weitere Informationen finden Sie unter Anwendungsprotokolle über die Konsole anzeigen.
Ereignisse des periodischen Zeitgebers (Cron) für eine Anwendung über die Befehlszeilenschnittstelle abonnieren
Vorbereitende Schritte
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt.
- Erstellen Sie eine Anwendung. Erstellen Sie beispielsweise eine Anwendung mit dem Namen
myapp, die dasicr.io/codeengine/cron-Image verwendet. Dieses Image wurde auscron.goerstellt, das im Samples for IBM Cloud Code Engine GitHub Repository verfügbar ist
ibmcloud ce application create --name myapp --image icr.io/codeengine/cron
Um Ihre Anwendung mit dem Abonnement des periodischen Zeitgebers über die CLI zu verbinden, verwenden Sie den ibmcloud ce sub cron create befehl.
ibmcloud ce sub cron create --name NAME --destination-type APP --destination APPLICATION_NAME --schedule CRON
Zum Beispiel, um ein Cron-Abonnement zu erstellen, das jeden Tag um Mitternacht ein Ereignis an eine App namens myapp sendet:
ibmcloud ce sub cron create --name mycronevent --destination-type app --destination myapp --schedule '0 0 * * *'
Sie müssen den Wert für den Zeitplan in Anführungszeichen einschließen, um sicherzustellen, dass er als gesamte Zeichenfolge behandelt wird.
In der folgenden Tabelle sind die Optionen zusammengefasst, die im vorherigen Beispiel beim Befehl sub cron create verwendet werden. Weitere Informationen zum Befehl und den zugehörigen Optionen finden Sie im
Abschnitt über den Befehl ibmcloud ce subscription cron create.
| Option | Beschreibung |
|---|---|
--name |
Der Name der Cron-Ereignisquelle. Dieser Wert ist erforderlich. |
--destination |
Der Name einer Anwendung oder eines Jobs von Code Engine im aktuellen Projekt, die/der die Ereignisse vom Ereignisproduzenten empfangen soll. Dieser Wert ist erforderlich. |
--destination-type |
Der Typ des Ziels (destination), in diesem Fall app. Der Standardwert ist app. |
--schedule |
Die Planung für die Häufigkeit der Ereignisauslösungen im Crontab-Format. Geben Sie beispielsweise */2 * * * * (im Zeichenfolgeformat) an, damit alle 2 Minuten ein Ereignis gesendet wird. Standardmäßig wird das Cron-Ereignis
jede Minute ausgelöst und ist auf die Zeitzone UTC gesetzt. Wenn Sie die Zeitzone ändern möchten, verwenden Sie die Option --time-zone. Dieser Wert ist optional. |
- Tipps zur Verwendung der
sub cron-Befehle -
- Ereignisse werden standardmäßig an die Stamm-URL der Zielanwendung weitergeleitet. Sie können Ereignisse an ein anderes Ziel innerhalb der App senden, indem Sie die Option
--pathverwenden. Wenn Ihre Subskription beispielsweise--path /eventsangibt, werden die Ereignisse anhttps://<base application URL>/eventsgesendet. - Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option
--dataoder die Option--data-base64verwenden, können Sie maximal 4096 Byte senden. Weitere Informationen finden Sie im Thema Grenzwerte und Kontingente für Code Engine. - Cron-Abonnements verwenden standardmäßig die Zeitzone
UTC. Sie können die Zeitzone ändern, indem Sie die Option--time-zonebeim Befehlsub cron createodersub cron updateangeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mitkubectlohne Angabe einer Zeitzone ist zu beachten, dass dieUTC-Zeitzone zugewiesen wird. - Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option
--forcebeim Befehlsub cron create, um die Erstellung des Cron-Ereignisabonnements zu erzwingen. Sie können nach der Erstellung des Cron-Abonnements den Namen Ihrer Anwendung oder Ihres Jobs angeben und Ihre Anwendung erstellen oder Ihren Job erstellen .
- Ereignisse werden standardmäßig an die Stamm-URL der Zielanwendung weitergeleitet. Sie können Ereignisse an ein anderes Ziel innerhalb der App senden, indem Sie die Option
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich erstellt wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus.
Beispielausgabe
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-03-14T13:37:51-05:00
Destination Type: app
Destination: myapp
Schedule: 0 0 * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 12s pingsource-controller Updated "mycronevent" finalizers
Anhand dieser Ausgabe können Sie erkennen, dass die Zielanwendung myapp heißt, der Zeitplan 0 0 * * * (täglich um Mitternacht) lautet und für den Bereitstatus (Ready) der Wert true angegeben ist.
Cron-Subskription über die CLI aktualisieren
Verwenden Sie zum Aktualisieren des Cron-Abonnements über die Befehlszeilenschnittstelle den Befehl ibmcloud ce subscription cron update.
Aktualisieren Sie zum Beispiel das Abonnement mycronevent, um den Zeitplan so zu ändern, dass alle 2 Minuten ein Ereignis an eine App namens myapp gesendet wird.
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich aktualisiert wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus. Der Zeitplan für das Abonnement ist aktualisiert.
Beispielausgabe
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-08-31T16:00:49-04:00
Destination Type: app
Destination: myapp
Schedule: */2 * * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal PingSourceSynchronized 7s (x3 over 13m) pingsource-controller PingSource adapter is synchronized
Möchten Sie ein Lernprogramm ausprobieren? Weitere Informationen finden enthält der Abschnitt Ereignisse des periodischen Zeitgebers (Cron) abonnieren. Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.
Ereignisinformationen für eine Anwendung über die Konsole anzeigen
Gehen Sie folgendermaßen vor, um Informationen zu Ihren Ereignisabonnements anzuzeigen.
- Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
- Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
Wenn Ihre Anwendung wie die cron-Beispielanwendung Informationen in Protokolldateien ausgibt, zeigen Sie die Protokolldateien für Ihre Ereigniskonsumentenanwendung an. Weitere Informationen finden Sie unter Anwendungsprotokolle über die Konsole anzeigen.
Ereignisinformationen für eine Anwendung über die Befehlszeilenschnittstelle anzeigen
Falls Ihre Anwendung Informationen in Protokolldateien ausgibt (wie die Beispielanwendung cron), zeigen Sie die Protokolldateien für Ihre Ereigniskonsumentenanwendung mit dem CLI-Befehl ibmcloud ce app logs an. Beispiel: Verwenden Sie den folgenden Befehl, um die Protokolle für die Anwendung anzuzeigen, die Sie im vorherigen Beispiel erstellt haben:
ibmcloud ce application logs --application myapp
Beispielausgabe
Getting logs for all instances of application 'myapp'...
OK
myapp-mw25y-1-deployment-8579d868f4-ssfnr/user-container:
Listening on port 8080
2021-04-13 17:22:08 - Received:
URL: /
Header: Accept-Encoding=[gzip]
Header: Ce-Id=[d2faa29c-8088-410f-bb30-416085c52a0b]
Header: Ce-Source=[/apis/v1/namespaces/81fvkfqi3n6/pingsources/mycronevent]
Header: Ce-Specversion=[1.0]
Header: Ce-Time=[2021-04-13T17:22:00.059682656Z]
Header: Ce-Type=[dev.knative.sources.ping]
Header: Content-Length=[0]
Header: Forwarded=[for=172.30.136.209;proto=http, for=172.30.48.203]
Header: K-Proxy-Request=[activator]
Header: Traceparent=[00-b13196fe439b6d7d67f3205b2f655788-e9fee441cd41158c-00]
Header: User-Agent=[Go-http-client/1.1]
Header: X-B3-Sampled=[0]
Header: X-B3-Spanid=[1dd2d76079811204]
Header: X-B3-Traceid=[710b7c383682d0cd1dd2d76079811204]
Header: X-Envoy-Attempt-Count=[1]
Header: X-Envoy-Decorator-Operation=[myapp-mw25y-1.81fvkfqi3n6.svc.cluster.local:80/*]
Header: X-Envoy-Internal=[true]
Header: X-Envoy-Peer-Metadata=[ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKGAoNSVNUSU9fVkVSU0lPThIHGgUxLjkuMQq+AwoGTEFCRUxTErMDKrADCh0KA2FwcBIWGhRpc3Rpby1pbmdyZXNzZ2F0ZXdheQoTCgVjaGFydBIKGghnYXRld2F5cwoUCghoZXJpdGFnZRIIGgZUaWxsZXIKNgopaW5zdGFsbC5vcGVyYXRvci5pc3Rpby5pby9vd25pbmctcmVzb3VyY2USCRoHdW5rbm93bgoZCgVpc3RpbxIQGg5pbmdyZXNzZ2F0ZXdheQoZCgxpc3Rpby5pby9yZXYSCRoHZGVmYXVsdAowChtvcGVyYXRvci5pc3Rpby5pby9jb21wb25lbnQSERoPSW5ncmVzc0dhdGV3YXlzCiAKEXBvZC10ZW1wbGF0ZS1oYXNoEgsaCTU1YjU0N2Y0ZgoSCgdyZWxlYXNlEgcaBWlzdGlvCjkKH3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLW5hbWUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXkKLwojc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtcmV2aXNpb24SCBoGbGF0ZXN0CiIKF3NpZGVjYXIuaXN0aW8uaW8vaW5qZWN0EgcaBWZhbHNlChoKB01FU0hfSUQSDxoNY2x1c3Rlci5sb2NhbAouCgROQU1FEiYaJGlzdGlvLWluZ3Jlc3NnYXRld2F5LTU1YjU0N2Y0Zi10aHN4cAobCglOQU1FU1BBQ0USDhoMaXN0aW8tc3lzdGVtCl0KBU9XTkVSElQaUmt1YmVybmV0ZXM6Ly9hcGlzL2FwcHMvdjEvbmFtZXNwYWNlcy9pc3Rpby1zeXN0ZW0vZGVwbG95bWVudHMvaXN0aW8taW5ncmVzc2dhdGV3YXkKFwoRUExBVEZPUk1fTUVUQURBVEESAioACicKDVdPUktMT0FEX05BTUUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXk=]
Header: X-Envoy-Peer-Metadata-Id=[router~172.30.48.203~istio-ingressgateway-55b547f4f-thsxp.istio-system~istio-system.svc.cluster.local]
Header: X-Forwarded-For=[172.30.136.209, 172.30.48.203, 172.30.167.171]
Header: X-Forwarded-Proto=[http]
Header: X-Request-Id=[fe8d6cec-f0e4-47c2-b9ae-81764cb377bc]
Weitere Informationen zur Protokollierung finden Sie im Thema Protokolle anzeigen.
Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.
Header- und Hauptteilinformationen von Cron für an Anwendungen übergebene Ereignisse
Alle Ereignisse, die an Anwendungen übergeben werden, werden als HTTP-POST-Nachrichten empfangen. Ereignisse enthalten bestimmte HTTP-Header, die Ihnen dabei helfen, schnell die wichtigsten Informationen zu den Ereignissen zu ermitteln, ohne
den Hauptteil (die Geschäftslogik) des Ereignisses durchsuchen zu müssen. Weitere Informationen finden Sie in der Spezifikation CloudEvents.
Kopfzeilen
In der folgenden Tabelle werden die Kopfzeilen für periodische Timer-Ereignisse (Cron) beschrieben:
| Überschrift | Beschreibung |
|---|---|
ce-id |
Eine eindeutige Kennung für das Ereignis, sofern ein Ereignis nicht wiederholt wird; im Fall einer Wiederholung wird ihm dieselbe ID zugeordnet. |
ce-source |
Ein URI-Verweis, der den Ursprung des Ereignisses innerhalb des Ereignisproduzenten angibt. Bei Cron-Ereignissen handelt es sich bei diesem Header um eine URI-Referenz mit Unterdomäne für das Projekt und den Namen des Cron-Abonnements
im folgenden Format: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
ce-specversion |
Die Version der CloudEvents-Spezifikation. Dieser Wert ist immer 1.0. |
ce-time |
Der Zeitpunkt, an dem das Ereignis generiert wurde. |
ce-type |
Der Typ des Ereignisses. Bei Cron-Ereignissen ist dies dev.knative.sources.ping. |
Beispielausgabe
ce-id: c329ed76-5004-4383-a3cc-c7a9b82e3ac6
ce-source: /apis/v1/namespaces/6b0v3x9xek5/pingsources/mycronevent
ce-specversion: 1.0
ce-time: 2021-02-26T19:19:00.497637287Z
ce-type: dev.knative.sources.ping
HTTP-Hauptteil
Der HTTP-Hauptteil enthält das eigentliche Ereignis und besitzt das Format, das Sie beim Erstellen oder Aktualisieren des Abonnements angegeben haben.
Abonnieren von periodischen Timer-(Cron-)Ereignissen für eine Funktion
Sie können mit periodischen Timer-Abonnements über die Konsole oder die CLI arbeiten.
Die Ereignisse werden als HTTP POST-Anfragen an die Funktionen gesendet. Weitere Informationen zu den in einem Ereignis enthaltenen Informationen finden Sie in Informationen zu HTTP-Headern und -Hauptteilen für Ereignisse.
Abonnieren von periodischen Timer-Ereignissen (Cron) für eine Funktion von der Konsole aus
Sie können periodische Timer-Ereignisabonnements für eine Funktion über die Konsole erstellen und aktualisieren.
Vorbereitende Schritte
- Erstellen Sie ein Projekt.
- Erstellen Sie eine Funktion. Erstellen Sie beispielsweise eine Funktion mit dem Namen
myfun, die den folgenden Inline-Beispielcode verwendet:
/**
* The `main` function is the entry-point into the function.
* It has one optional argument 'params', which carries all the
* parameters the function was invoked with.
*/
async function main(params) {
// add process environment variables
params.env = process.env
// print recognizable string to the log
console.log('Function invocation via cron subscription');
// log params object, so invocation can be observed in the logs
console.dir(params);
// craft a simple HTTP RC 200 response,
// which also echos the params object
response = {
statusCode: 200,
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: params
};
return response
}
Führen Sie die folgenden Schritte aus, um ein periodisches Timer-Ereignisabonnement für eine Funktion über die Konsole zu erstellen und zu aktualisieren.
-
Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
-
Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.
-
Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.
-
Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:
- Wählen Sie für Ereignistyp die Kachel für den periodischen Zeitgeber aus. Klicken Sie auf Weiter.
- Geben Sie unter Allgemein einen Namen für das Abonnement des periodischen Zeitgebers an, z. B.
myptimer. Sie können optional Ereignisattribute angeben. Beachten Sie, dass die Ereignisattribute als HTTP-Header verfügbar sind, wenn der Ereigniskonsument des periodischen Zeitgebers eine Anwendung ist. Wenn der Ereigniskonsument eine Funktion ist, sind Ereignisattribute als Schlüssel/Wert-Paare in der Eigenschaft__ce_headersdes Objektsparamsverfügbar. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Zeitplan Informationen zur Zeitsteuerung für die Ereignisse an. Der Ereigniserzeuger Periodischer Timer verwendet die Standard-Crontab-Syntax zur Angabe von Intervalldetails. Wählen Sie Ihr Intervall unter
den bereitgestellten Mustern aus oder geben Sie Ihren eigenen angepassten Cron-Ausdruck an. Ein Beispiel wäre
0 0 * * *; dieser Ausdruck gibt an, dass das Ereignis täglich um Mitternacht auftreten soll. Wählen Sie für das vorliegende Beispiel das Zeitplanmuster für jeden Tag, jede Stunde, jede Minute aus. Der Cron-Ausdruck wird übrigens automatisch für Sie generiert. Die Muster für Tag, Stunde und Minute sowie der Cron-Ausdruck sind in UTC (Coordinated Universal Time) angegeben. Falls Sie keinen Zeitplan angeben, sendet dieses Ereignisabonnement einmal pro Minute ein Ereignis. Es wird eine Liste der anstehenden geplanten Ereignisse angezeigt. Beachten Sie, dass diese anstehenden geplanten Ereignisse in Ihrer Zeitzone angezeigt werden. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Angepasste Ereignisdaten Daten an, die in den Hauptteil Ihrer Ereignisnachricht einbezogen werden sollen. Sie können die Nachricht als Klartext oder im base64-Format angeben. Geben Sie für dieses Beispiel
den Text
hello strangerals Hauptteil der Ereignisnachricht an. Wenn die Nachricht das base64-Format besitzt, können Sie angeben, dass die Nachricht beim Senden des Ereignisses decodiert werden soll. Sie können auch den Inhaltstyp für Ihre angepassten Ereignisdaten angeben. Fahren Sie durch Klicken auf Weiter fort. - Wählen Sie für Ereigniskonsument den Komponententyp
Functionaus und geben Sie die Funktion zum Empfangen von Ereignissen an. Beachten Sie, dass Sie aus einer Liste von definierten Funktionen auswählen können. Verwenden Sie für dieses Beispiel die Funktionmyfun, die den integrierten Beispielcode verwendet. Wenn Sie Ihre Funktion noch nicht erstellt haben, können Sie den Namen Ihrer Funktion und Funktionsworkloads mit Inline-Code erstellen nach der Erstellung der periodischen Zeitgebersubskription angeben. Fahren Sie durch Klicken auf Weiter fort. - Überprüfen Sie unter Zusammenfassung die Einstellungen für das Ereignisabonnement des periodischen Zeitgebers und nehmen Sie bei Bedarf Änderungen vor. Wenn Sie fertig sind, klicken Sie auf Erstellen, um das Abonnement für den periodischen Timer zu erstellen.
-
Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
-
Um ein Abonnement zu aktualisieren, navigieren Sie zu Ihrer Abonnementseite für den Periodic Timer. Klicken Sie auf der Seite 'Ereignisabonnements' auf den Namen des Abonnements, das aktualisiert werden soll.
-
Ändern Sie auf der Seite für das Abonnement des periodischen Timers die Daten in der Ereignismeldung. Ändern Sie auf der Registerkarte Angepasste Ereignisdaten die Ereignisdaten in
{ "hello": "world" }und wählen Sieapplication/jsonals Inhaltstyp angepasster Ereignisdaten aus. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern. -
Da die Funktion
myfunden integrierten Beispielcode verwendet, der das vollständige Objektparamsin Protokolldateien ausgibt, können Sie die Protokolle anzeigen, um zu überprüfen, ob die Funktion aufgerufen wurde. Zeigen Sie die Funktionsprotokolle für die Ereigniskonsumentenfunktionmyfunan und stellen Sie fest, dass das Objektparamsein Schlüssel/Wert-Paarhello: worldenthält. Sie können auch sehen, dass das Feldbodydes Objektsparamsden codierten Wert Base64 enthält{ "hello": "world" }Siehe Funktionsprotokolle über die Konsole anzeigen.
Abonnieren von periodischen Timer-Ereignissen (Cron) für eine Funktion mit der CLI
Vorbereitende Schritte
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt.
- Erstellen Sie eine Funktion. Erstellen Sie beispielsweise eine Funktion mit dem Namen
myfun, die den folgenden integrierten Beispielcode verwendet:
/**
* The `main` function is the entry-point into the function.
* It has one optional argument 'params', which carries all the
* parameters the function was invoked with.
*/
async function main(params) {
// add process environment variables
params.env = process.env
// print recognizable string to the log
console.log('Function invocation via cron subscription');
// log params object, so invocation can be observed in the logs
console.dir(params);
// craft a simple HTTP RC 200 response,
// which also echos the params object
response = {
statusCode: 200,
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: params
};
return response
}
Speichern Sie den Code in einer Datei namens sample_inline_code.js und erstellen Sie die Funktion mit dem folgenden Befehl:
ibmcloud ce function create --name myfun --runtime nodejs --inline-code ./sample_inline_code.js
Um Ihre Funktion mit dem Abonnement des periodischen Zeitgebers über die CLI zu verbinden, verwenden Sie den ibmcloud ce sub cron create befehl:
ibmcloud ce sub cron create --name NAME --destination-type function --destination FUNCTION_NAME --schedule CRON
Zum Beispiel, um ein Cron-Abonnement zu erstellen, das jeden Tag um Mitternacht ein Ereignis an eine App namens myfun sendet:
ibmcloud ce sub cron create --name mycronevent --destination-type function --destination myfun --schedule '0 0 * * *'
Sie müssen den Wert für den Zeitplan in Anführungszeichen einschließen, um sicherzustellen, dass er als gesamte Zeichenfolge behandelt wird.
In der folgenden Tabelle sind die Optionen zusammengefasst, die im vorherigen Beispiel beim Befehl sub cron create verwendet werden. Weitere Informationen zum Befehl und den zugehörigen Optionen finden Sie im
Abschnitt über den Befehl ibmcloud ce subscription cron create.
| Option | Beschreibung |
|---|---|
--name |
Der Name der Cron-Ereignisquelle. Dieser Wert ist erforderlich. |
--destination |
Der Name einer Code Engine Anwendung, Funktion oder eines Jobs im aktuellen Projekt, der die Ereignisse vom Ereignisproduzenten empfangen soll. Dieser Wert ist erforderlich. |
--destination-type |
Der Typ des Ziels (destination), in diesem Fall function. Der Standardwert ist app. |
--schedule |
Die Planung für die Häufigkeit der Ereignisauslösungen im Crontab-Format. Geben Sie beispielsweise */2 * * * * (im Zeichenfolgeformat) an, damit alle 2 Minuten ein Ereignis gesendet wird. Standardmäßig wird das Cron-Ereignis
jede Minute ausgelöst und ist auf die Zeitzone UTC gesetzt. Wenn Sie die Zeitzone ändern möchten, verwenden Sie die Option --time-zone. Dieser Wert ist optional. |
- Tipps zur Verwendung der
sub cron-Befehle -
- Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option
--dataoder die Option--data-base64verwenden, können Sie maximal 4096 Byte senden. Weitere Informationen finden Sie im Thema Grenzwerte und Kontingente für Code Engine. - Cron-Abonnements verwenden standardmäßig die Zeitzone
UTC. Sie können die Zeitzone ändern, indem Sie die Option--time-zonebeim Befehlsub cron createodersub cron updateangeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mitkubectlohne Angabe einer Zeitzone ist zu beachten, dass dieUTC-Zeitzone zugewiesen wird. - Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option
--forcebeim Befehlsub cron create, um die Erstellung des Cron-Ereignisabonnements zu erzwingen. Sie können den Namen Ihrer Funktion Funktion erstellen angeben, nachdem Sie die Cron-Subskription erstellen.
- Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich erstellt wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus.
Beispielausgabe
Getting cron event subscription 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2024-03-14T13:37:51-05:00
Destination Type: function
Destination: myfun
Schedule: 0 0 * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 20s pingsource-controller Updated "mycronevent" finalizers
Normal PingSourceSynchronized 20s pingsource-controller PingSource adapter is synchronized
Aus dieser Ausgabe können Sie ersehen, dass die Zielfunktion myfun, der Zeitplan 0 0 * * * (jeden Tag um Mitternacht) und der Bereitschaftsstatus true lautet.
Cron-Subskription über die CLI aktualisieren
Verwenden Sie zum Aktualisieren des Cron-Abonnements über die Befehlszeilenschnittstelle den Befehl ibmcloud ce subscription cron update.
Aktualisieren Sie zum Beispiel das Abonnement mycronevent, um den Zeitplan so zu ändern, dass alle 2 Minuten ein Ereignis an eine Funktion namens myfun gesendet wird:
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich aktualisiert wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus. Der Zeitplan für das Abonnement ist aktualisiert.
Beispielausgabe
Getting cron event subscription 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 37m41s
Created: 2024-03-14T14:04:51-05:00
Destination Type: function
Destination: myfun
Schedule: */2 * * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 20s pingsource-controller Updated "mycronevent" finalizers
Normal PingSourceSynchronized 20s pingsource-controller PingSource adapter is synchronized
Möchten Sie ein Lernprogramm ausprobieren? Weitere Informationen finden enthält der Abschnitt Ereignisse des periodischen Zeitgebers (Cron) abonnieren. Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.
Anzeigen von Ereignisinformationen für eine Funktion über die Konsole
Um Informationen über Ihre Veranstaltungsabonnements anzuzeigen:
- Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
- Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
Wenn Ihre Funktion Informationen in Protokolldateien ausgibt, wie dies beim Beispielauftrag codeengine der Fall ist, können Sie die Protokolldateien für Ihre Funktion anzeigen. Weitere Informationen finden Sie unter Jobprotokolle über die Konsole anzeigen.
Cron-Header- und Body-Informationen für Ereignisse, die an Funktionen geliefert werden
Alle Ereignisse, die an Funktionen geliefert werden, werden als HTTP POST-Nachrichten empfangen. Ereignisse enthalten bestimmte HTTP Kopfzeilen, mit deren Hilfe Sie schnell wichtige Informationen über die Ereignisse ermitteln können. HTTP
kopfzeilen werden in der Eigenschaft __ce_headers des params Objekts gespeichert, mit dem die Funktion aufgerufen wird. Weitere Informationen finden Sie in der Spezifikation CloudEvents.
Kopfzeilen
In der folgenden Tabelle sind die Schlüssel/Wert-Paare in __ce_headers für regelmäßige Zeitgeberereignisse (Cron) beschrieben:
| Überschrift | Beschreibung |
|---|---|
Ce-Id |
Eine eindeutige Kennung für das Ereignis, sofern ein Ereignis nicht wiederholt wird; im Fall einer Wiederholung wird ihm dieselbe ID zugeordnet. |
Ce-Source |
Ein URI-Verweis, der den Ursprung des Ereignisses innerhalb des Ereignisproduzenten angibt. Bei Cron-Ereignissen handelt es sich bei diesem Header um eine URI-Referenz mit Unterdomäne für das Projekt und den Namen des Cron-Abonnements
im folgenden Format: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
Ce-Specversion |
Die Version der CloudEvents-Spezifikation. Dieser Wert ist immer 1.0. |
Ce-Time |
Der Zeitpunkt, an dem das Ereignis generiert wurde. |
Ce-Type |
Der Typ des Ereignisses. Bei Cron-Ereignissen ist dies dev.knative.sources.ping. |
Beispielausgabe
__ce_headers: {
"Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
"Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
"Ce-Specversion": "1.0",
"Ce-Time": "2024-06-02T10:56:00.062572905Z",
"Ce-Type": "dev.knative.sources.ping"
}
HTTP-Hauptteil
Der Textkörper von HTTP enthält die benutzerdefinierten Ereignisdaten und hat das Format, das Sie beim Erstellen oder Aktualisieren des Abonnements angeben. Sie können über die Eigenschaft body im Objekt params auf die angepassten Ereignisdaten zugreifen.
Beispiel für ein params-Objekt für einen Ereignisaufruf mit einer benutzerdefinierten Ereignisdatei für hello stranger und einer Inhaltstyp der benutzerdefinierten Ereignisdaten für text/plain:
{
"__ce_headers": {
"Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
"Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
"Ce-Specversion": "1.0",
"Ce-Time": "2024-06-02T10:56:00.062572905Z",
"Ce-Type": "dev.knative.sources.ping",
"Content-Length": "14",
"Content-Type": "text/plain"
},
"body": "hello stranger"
}
Der Wert für body ist Base64 codiert, wenn Content Type of custom event data auf application/json gesetzt ist.
Ereignisse des periodischen Zeitgebers (cron) für einen Job abonnieren
Sie können mit periodischen Timer-Abonnements über die Konsole oder die CLI arbeiten.
Ihr Job empfängt Ereignisse als Umgebungsvariablen. Weitere Informationen zu den Umgebungsvariablen, die von Cron gesendet werden, finden Sie unter Umgebungsvariablen für Ereignisse.
Ereignisse des periodischen Zeitgebers (Cron) für einen Job über die Konsole abonnieren
Sie können periodische Timer-Ereignisabonnements für einen Auftrag über die Konsole erstellen und aktualisieren.
Vorbereitende Schritte
- Erstellen Sie ein Projekt.
- Erstellen Sie einen Job. Erstellen Sie beispielsweise einen Job mit dem Namen
myjob, der dascodeengine-Image verwendet. Dieses Image wurde auscodeengine.goerstellt, das im Samples for IBM Cloud Code Engine GitHub Repository verfügbar ist.
Führen Sie die folgenden Schritte aus, um ein periodisches Timer-Ereignisabonnement für einen Auftrag über die Konsole zu erstellen und zu aktualisieren.
-
Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
-
Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.
-
Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.
-
Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:
- Geben Sie unter Allgemein einen Namen für das Abonnement des periodischen Zeitgebers an, z. B.
myptimer2. Sie können optional Ereignisattribute angeben. Beachten Sie, dass die Ereignisattribute als HTTP-Header verfügbar sind, wenn der Ereigniskonsument des periodischen Zeitgebers eine Anwendung ist. Handelt es sich bei dem Ereigniskonsumenten um einen Job, stehen Ereignisattribute als Umgebungsvariablen zur Verfügung. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Zeitplan Informationen zur Zeitsteuerung für die Ereignisse an. Der Ereigniserzeuger Periodischer Timer verwendet die Standard-Crontab-Syntax zur Angabe von Intervalldetails. Wählen Sie Ihr Intervall unter
den bereitgestellten Mustern aus oder geben Sie Ihren eigenen angepassten Cron-Ausdruck an. Ein Beispiel wäre
0 0 * * *; dieser Ausdruck gibt an, dass das Ereignis täglich um Mitternacht auftreten soll. Wählen Sie für das vorliegende Beispiel das Zeitplanmuster für jeden Tag, jede Stunde, jede Minute aus. Der Cron-Ausdruck wird übrigens automatisch für Sie generiert. Die Muster für Tag, Stunde und Minute sowie der Cron-Ausdruck sind in UTC (Coordinated Universal Time) angegeben. Falls Sie keinen Zeitplan angeben, sendet dieses Ereignisabonnement einmal pro Minute ein Ereignis. Es wird eine Liste der anstehenden geplanten Ereignisse angezeigt. Beachten Sie, dass diese anstehenden geplanten Ereignisse in Ihrer Zeitzone angezeigt werden. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Angepasste Ereignisdaten Daten an, die in den Hauptteil Ihrer Ereignisnachricht einbezogen werden sollen. Sie können die Nachricht als Klartext oder im base64-Format angeben. Geben Sie für dieses Beispiel
den Text
hello strangerals Hauptteil der Ereignisnachricht an. Wenn die Nachricht das base64-Format besitzt, können Sie angeben, dass die Nachricht beim Senden des Ereignisses decodiert werden soll. Sie können auch den Inhaltstyp für Ihre angepassten Ereignisdaten angeben. Fahren Sie durch Klicken auf Weiter fort. - Geben Sie bei Ereigniskonsument die Anwendung oder den Job für den Empfang von Ereignissen an. Beachten Sie, dass Sie eine Auswahl in einer Liste definierter Anwendungen und Jobs treffen können. Verwenden Sie für dieses
Beispiel den Job
myjob, der dasicr.io/codeengine/codeengine-Image referenziert. Wenn Sie Ihren Auftrag noch nicht erstellt haben, können Sie den Namen Ihres Auftrags angeben und Ihren Auftrag erstellen, nachdem Sie das Abonnement für den periodischen Timer erstellt haben. Fahren Sie durch Klicken auf Weiter fort. - Überprüfen Sie unter Zusammenfassung die Einstellungen für das Ereignisabonnement des periodischen Zeitgebers und nehmen Sie bei Bedarf Änderungen vor. Wenn Sie fertig sind, klicken Sie auf Erstellen, um das Abonnement für den periodischen Timer zu erstellen.
- Geben Sie unter Allgemein einen Namen für das Abonnement des periodischen Zeitgebers an, z. B.
-
Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
-
Um ein Abonnement zu aktualisieren, navigieren Sie zu Ihrer Abonnementseite für den Periodic Timer. Klicken Sie auf der Seite 'Ereignisabonnements' auf den Namen des Abonnements, das aktualisiert werden soll.
-
Ändern Sie auf der Seite für das Abonnement des periodischen Timers die Daten in der Ereignismeldung. Ändern Sie auf der Registerkarte Angepasste Ereignisdaten die Ereignisdaten in
hello sunshine. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern. -
Da der Job
myjobdie Beispielanwendungcodeenginereferenziert, die Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Zeigen Sie die Jobprotokolle für den Ereigniskonsumentenjobmyjoban; Sie können feststellen, dass die Ereignisnachrichthello sunshinelautet. Weitere Informationen finden Sie unter Jobprotokolle über die Konsole anzeigen.
Ereignisse des periodischen Zeitgebers (Cron) für einen Job über die Befehlszeilenschnittstelle abonnieren
Vorbereitende Schritte
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt.
- Erstellen Sie einen Job. Erstellen Sie beispielsweise einen Job mit dem Namen
myjob, der dasicr.io/codeengine/codeengine-Image verwendet. Dieses Image wurde auscodeengine.goerstellt, das im Samples for IBM Cloud Code Engine GitHub Repository verfügbar ist.
ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
Um Ihren Auftrag mit dem Abonnement des periodischen Zeitgebers über die CLI zu verbinden, verwenden Sie den ibmcloud ce sub cron create befehl.
ibmcloud ce sub cron create --name NAME --destination-type job --destination JOB_NAME --schedule CRON
Geben Sie beispielsweise Folgendes ein, ein Cron-Abonnement zu erstellen, das alle 5 Minuten ein Ereignis an einen Job namens myjob sendet:
ibmcloud ce sub cron create --name mycronevent --destination-type job --destination myjob --schedule '*/5 * * * *' --data '{ "message": "Hello world!" }' --content-type application/json
Sie müssen den Wert für den Zeitplan in Anführungszeichen einschließen, um sicherzustellen, dass er als gesamte Zeichenfolge behandelt wird.
In der folgenden Tabelle sind die Optionen zusammengefasst, die beim Befehl sub cron create in diesem Beispiel verwendet werden. Weitere Informationen zum Befehl und den zugehörigen Optionen finden Sie im Abschnitt
über den Befehl ibmcloud ce subscription cron create.
| Option | Beschreibung |
|---|---|
--name |
Der Name der Cron-Ereignisquelle. |
--destination-type |
Der Typ des Ziels (destination), in diesem Fall job. |
--destination |
Der Name eines Code Engine-Jobs im aktuellen Projekt, der die Ereignisse des Ereignisproduzenten empfangen soll. |
--schedule |
Die Planung für die Häufigkeit der Ereignisauslösungen im Crontab-Format. Geben Sie beispielsweise */2 * * * * (im Zeichenfolgeformat) an, damit alle 2 Minuten ein Ereignis gesendet wird. Standardmäßig wird das Cron-Ereignis
jede Minute ausgelöst und ist auf die Zeitzone UTC gesetzt. Wenn Sie die Zeitzone ändern möchten, verwenden Sie die Option --time-zone. Dieser Wert ist optional. |
- Tipps zur Verwendung der
sub cron-Befehle -
- Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option
--dataoder die Option--data-base64verwenden, können Sie maximal 4096 Byte senden. Weitere Informationen finden Sie im Thema Grenzwerte und Kontingente für Code Engine. - Cron-Abonnements verwenden standardmäßig die Zeitzone
UTC. Sie können die Zeitzone ändern, indem Sie die Option--time-zonebeim Befehlsub cron createodersub cron updateangeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mitkubectlohne Angabe einer Zeitzone ist zu beachten, dass dieUTC-Zeitzone zugewiesen wird. - Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option
--forcebeim Befehlsub cron create, um die Erstellung des Cron-Ereignisabonnements zu erzwingen. Sie können nach der Erstellung des Cron-Abonnements den Namen Ihrer Anwendung oder Ihres Jobs angeben und Ihre Anwendung erstellen oder Ihren Job erstellen .
- Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich erstellt wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus.
Beispielausgabe
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 54s
Created: 2021-04-13T11:38:50-05:00
Destination Type: job
Destination: myjob
Schedule: */5 * * * *
Time Zone: UTC
Content Type: application/json
Data: { "message": "Hello world!" }
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 12s pingsource-controller Updated "mycronevent" finalizers
Aus dieser Ausgabe geht hervor, dass der Zieljob myjob ist, der Zeitplan */5 * * * * (alle fünf Minuten) ist und der Bereitstatus (Ready) true lautet.
Jobausführungen, die durch Subskriptionen erstellt werden, werden nach 10 Minuten gelöscht.
Cron-Subskription über die CLI (Job) aktualisieren
Verwenden Sie zum Aktualisieren des Cron-Abonnements über die Befehlszeilenschnittstelle den Befehl ibmcloud ce subscription cron update.
Aktualisieren Sie zum Beispiel das Abonnement mycronevent, um den Zeitplan so zu ändern, dass alle 2 Minuten ein Ereignis an eine App namens myapp gesendet wird.
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Um zu überprüfen, ob Ihr Cron-Abonnement erfolgreich aktualisiert wurde, führen Sie den Befehl ibmcloud ce sub cron get --name mycronevent aus. Der Zeitplan für das Abonnement ist aktualisiert.
Beispielausgabe
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-08-31T16:00:49-04:00
Destination Type: job
Destination: myjob
Schedule: */2 * * * *
Time Zone: UTC
Content Type: application/json
Data: { "message": "Hello world!" }
Ready: true
Events:
Type Reason Age Source Messages
Normal PingSourceSynchronized 7s (x3 over 13m) pingsource-controller PingSource adapter is synchronized
Ereignisinformationen für einen Job über die Konsole anzeigen
Gehen Sie folgendermaßen vor, um Informationen zu Ihren Ereignisabonnements anzuzeigen.
- Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
- Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
Wenn Ihr Job Informationen in Protokolldateien ausgibt (wie der Beispieljob codeengine), zeigen Sie die Protokolldateien für Ihren Ereigniskonsumentenjob an. Weitere Informationen finden Sie unter Jobprotokolle über die Konsole anzeigen.
Ereignisinformationen für einen Job über die Befehlszeilenschnittstelle anzeigen
Wenn Ihr Job Informationen in Protokolldateien ausgibt (wie der Beispieljob codeengine), können Sie nach der Jobausführung suchen, die ausgehend vom Ereignis des periodischen Zeitgebers (Cron) erstellt wurde, und dann die Jobausführungsprotokolle
anzeigen. Beispiel: Um die Jobausführung für den Job im vorherigen Beispiel zu ermitteln, können Sie den folgenden Befehl verwenden:
ibmcloud ce jobrun list
Beispielausgabe
Listing job runs...
OK
Name Failed Pending Requested Running Succeeded Unknown Age
myjob-kd829 0 0 0 0 1 0 43s
Zeigen Sie die Protokolle für die Jobausführung an, indem Sie den Namen der Jobausführung angeben.
ibmcloud ce jobrun logs --jobrun myjob-kd829
Beispielausgabe
Hello from helloworld! I'm a batch job! Index: 0
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-mpps4-0-0
JOB_INDEX=0
KUBERNETES_PORT=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=172.21.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
Beachten Sie, dass die Protokollinformationen für Auftragsläufe nur eine Stunde lang aufbewahrt werden. Weitere Informationen zur Protokollierung finden Sie im Thema Protokolle anzeigen.
Weitere Informationen zu den Umgebungsvariablen, die von Cron gesendet werden, finden Sie unter Umgebungsvariablen für Ereignisse.
Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.
Umgebungsvariablen für an Jobs übergebene Ereignisse
Alle Ereignisse, die an Jobs übergeben werden, werden als Umgebungsvariablen empfangen. Diese Umgebungsvariablen enthalten ein Präfix CE_ und basieren auf der Spezifikation CloudEvents.
Jedes Ereignis enthält einige allgemeine Umgebungsvariablen, die jedes Mal angezeigt werden, wenn das Ereignis an einen Job übergeben wird. In den tatsächlichen Variablen in den einzelnen Ereignissen können weitere Optionen enthalten sein.
Weitere Informationen finden Sie unter den Attributen CloudEvent.
In der folgenden Tabelle sind die speziellen Umgebungsvariablen für Cron-Ereignisse beschrieben.
| Variable | Beschreibung |
|---|---|
CE_DATA |
Die Daten (der Hauptteil) für das Ereignis. Weitere Informationen finden Sie unter CE_DATA für Cron-Ereignisse. |
CE_ID |
Eine eindeutige Kennung für das Ereignis, sofern ein Ereignis nicht wiederholt wird; im Fall einer Wiederholung wird ihm dieselbe ID zugeordnet. |
CE_SOURCE |
Ein URI-Verweis, der den Ursprung des Ereignisses innerhalb des Ereignisproduzenten angibt. Bei Cron-Ereignissen handelt es sich bei diesem Header um eine URI-Referenz mit Unterdomäne für das Projekt und den Namen des Cron-Abonnements
im folgenden Format: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
CE_SPECVERSION |
Die Version der CloudEvents-Spezifikation. Dieser Wert ist immer 1.0. |
CE_TIME |
Der Zeitpunkt, an dem das Ereignis generiert wurde. |
CE_TYPE |
Der Typ des Ereignisses. Bei Cron-Ereignissen ist dies dev.knative.sources.ping. |
CE_DATA-Umgebungsvariable
Bei periodischen Timer-Ereignissen enthält die Umgebungsvariable CE_DATA das Ereignis selbst und hat das Format, das Sie beim Erstellen oder Aktualisieren des Abonnements angeben.
Beispielausgabe
CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping
Zusätzliche Ereignisattribute definieren
Beim Erstellen eines Abonnements können Sie zusätzliche Ereignisattribute definieren, die in alle generierten Ereignisse eingeschlossen werden sollen. Diese Ereignisattribute werden ähnlich wie jedes andere CloudEvent-Attribute
in der Ereignisübergabe angegeben. Wenn Sie den Namen eines vorhandenen CloudEvent-Attributs angeben, wird der ursprüngliche Wert, der im Ereignis enthalten war, überschrieben. Weitere Informationen finden Sie unter Kann ich andere CloudEvents-Spezifikationen verwenden?
In der Konsole können Sie Ereignisattribute als Schlüssel/Wert-Paare auf der Registerkarte Allgemein für Ihr Abonnement von Ereignissen des periodischen Zeitgebers (Cron) angeben.
In der Befehlszeilenschnittstelle verwenden Sie zum Definieren von zusätzlichen Attributen die Optionen --extension beim Befehl ibmcloud ce sub cron create.
Subskription löschen
Wenn Sie ein Abonnement des periodischen Zeitgebers (Cron) nicht mehr benötigen, können Sie es löschen.
Abonnement über die Konsole löschen
- Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
- Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
- Löschen Sie in der Liste der Abonnements dasjenige Abonnement, das Sie aus Ihrer Anwendung oder Ihrem Job entfernen möchten.
Beim Löschen einer Anwendung oder eines Jobs wird das entsprechende Abonnement nicht gelöscht.
Abonnement über die Befehlszeilenschnittstelle löschen
Sie können ein Abonnement mit dem Befehl ibmcloud ce sub cron delete oder dem Befehl ibmcloud ce sub cos delete löschen.
Mit dem folgenden Befehl löschen Sie beispielsweise ein Cron-Abonnement namens mycronevent2.
ibmcloud ce subscription cron delete --name mycronevent2
Beim Löschen einer Anwendung oder eines Jobs wird das entsprechende Abonnement nicht gelöscht. Das Abonnement wird in der Befehlszeilenschnittstelle stattdessen auf den Wert false für den Bereitstatus (Ready) gesetzt, da es von
der Verfügbarkeit der Anwendung oder des Jobs abhängig ist. Wenn Sie die Anwendung bzw. den Job (oder eine andere Anwendung bzw. einen anderen Job mit demselben Namen) erneut erstellen, wird die Verbindung für das Abonnement wiederhergestellt
und der Bereitstatus lautet dann erneut true.