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

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.

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.

  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.

  3. Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.

  4. Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:

    1. Wählen Sie für Ereignistyp die Kachel für den periodischen Zeitgeber aus. Klicken Sie auf Weiter.
    2. 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.
    3. 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.
    4. 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 stranger als 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.
    5. 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 das icr.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 /events angegeben ist, werden die Ereignisse an https://<base application URL>/events gesendet. Fahren Sie durch Klicken auf Weiter fort.
    6. Ü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.
  5. Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.

  6. 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.

  7. Ä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.

  8. Da die myapp-Anwendung auf die Beispielanwendung cron verweist, die Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Zeigen Sie die Anwendungsprotokolle für die Ereigniskonsumentenanwendung myapp an; Sie können feststellen, dass die Ereignisnachricht hello sunshine lautet. 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

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.

Befehlsoptionen
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 --path verwenden. Wenn Ihre Subskription beispielsweise --path /events angibt, werden die Ereignisse an https://<base application URL>/events gesendet.
  • Die Größe der Daten für periodische Timer-Ereignisse ist auf maximal 4096 Byte begrenzt. Wenn Sie also die Option --data oder die Option --data-base64 verwenden, 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-zone beim Befehl sub cron create oder sub cron update angeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mit kubectl ohne Angabe einer Zeitzone ist zu beachten, dass die UTC-Zeitzone zugewiesen wird.
  • Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option --force beim Befehl sub 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 .

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.

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
  2. 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:

Kopfzeilenfelder für Ereignisse
Ü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

/**
 * 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.

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.

  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.

  3. Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.

  4. Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:

    1. Wählen Sie für Ereignistyp die Kachel für den periodischen Zeitgeber aus. Klicken Sie auf Weiter.
    2. 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_headers des Objekts params verfügbar. Fahren Sie durch Klicken auf Weiter fort.
    3. 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.
    4. 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 stranger als 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.
    5. Wählen Sie für Ereigniskonsument den Komponententyp Function aus 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 Funktion myfun, 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.
    6. Ü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.
  5. Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.

  6. 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.

  7. Ä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 Sie application/json als Inhaltstyp angepasster Ereignisdaten aus. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.

  8. Da die Funktion myfun den integrierten Beispielcode verwendet, der das vollständige Objekt params in Protokolldateien ausgibt, können Sie die Protokolle anzeigen, um zu überprüfen, ob die Funktion aufgerufen wurde. Zeigen Sie die Funktionsprotokolle für die Ereigniskonsumentenfunktion myfun an und stellen Sie fest, dass das Objekt params ein Schlüssel/Wert-Paar hello: world enthält. Sie können auch sehen, dass das Feld body des Objekts params den 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

/**
 * 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.

Befehlsoptionen
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 --data oder die Option --data-base64 verwenden, 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-zone beim Befehl sub cron create oder sub cron update angeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mit kubectl ohne Angabe einer Zeitzone ist zu beachten, dass die UTC-Zeitzone zugewiesen wird.
  • Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option --force beim Befehl sub 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.

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:

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
  2. 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:

Header-Dateien für Ereignisse
Ü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

Führen Sie die folgenden Schritte aus, um ein periodisches Timer-Ereignisabonnement für einen Auftrag über die Konsole zu erstellen und zu aktualisieren.

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.

  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements.

  3. Klicken Sie auf der Seite 'Ereignisabonnements' auf Erstellen, um Ihr Abonnement zu erstellen.

  4. Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:

    1. 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.
    2. 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.
    3. 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 stranger als 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.
    4. 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 das icr.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.
    5. Ü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.
  5. Nachdem Sie nun Ihr Abonnement für den periodischen Timer erstellt haben, gehen Sie zur Seite Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.

  6. 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.

  7. Ä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.

  8. Da der Job myjob die Beispielanwendung codeengine referenziert, die Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Zeigen Sie die Jobprotokolle für den Ereigniskonsumentenjob myjob an; Sie können feststellen, dass die Ereignisnachricht hello sunshine lautet. 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

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.

Befehlsoptionen
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 --data oder die Option --data-base64 verwenden, 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-zone beim Befehl sub cron create oder sub cron update angeben. Gültige Zeitzonenwerte finden Sie in der TZ-Datenbank. Beim Erstellen eines Abonnements mit kubectl ohne Angabe einer Zeitzone ist zu beachten, dass die UTC-Zeitzone zugewiesen wird.
  • Wenn Sie Ihren App- oder Jobereigniskonsumenten noch nicht erstellt haben, verwenden Sie die Option --force beim Befehl sub 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 .

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.

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
  2. 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.

Umgebungsvariablen für Ereignisse
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

  1. Gehen Sie auf der Seite Code Engine Projekte zu Ihrem Projekt.
  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.
  3. 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.