Mit dem IBM Cloud Object Storage-Ereignisproduzenten arbeiten

Von einem IBM Cloud Object Storage-Abonnement werden Änderungen an einem Object Storage-Bucket überwacht. Wenn Sie ein Abonnement für ein Bucket erstellen, empfängt Ihre Anwendung bzw. Ihr Job ein separates Ereignis für jede erfolgreiche Änderung an diesem Bucket. Sie können verschiedene Ereignisse abonnieren, z. B. write, delete oder all. Pro Projekt können maximal 100 Object Storage-Abonnements erstellt werden.

IBM Cloud Object Storage-Ereigniserzeuger einrichten

Zum Einstieg müssen Sie eine IBM Cloud Object Storage-Serviceinstanz erstellen und ein regionales Bucket erstellen in einer der unterstützten Regionen für Code Engine.

Ihr Object Storage-Bucket muss ein regionales Bucket sein, das sich in derselben Region wie Ihr Code Engine-Projekt befindet. Regionsübergreifende Buckets und Buckets, die sich nur an einer Site befinden, werden nicht unterstützt. Weitere Informationen zum Einrichten des Ereigniserzeugers IBM Cloud Object Storage finden Sie unter Erste Schritte mit Object Storage.

Wenn Ihre Anwendung oder Ihr Job, der Ereignisse empfängt, mit einem Service mithilfe eines privaten Netzbetriebs kommunizieren möchte und der Service sowohl private- als auch direct-Endpunkte hat (z. B. IBM Cloud Object Storage), dann müssen die direct-Endpunkte verwendet werden.

Code Engine die Rolle eines Benachrichtigungsmanagers zuweisen

Bevor Sie ein Object Storage-Abonnement erstellen können, müssen Sie Code Engine die Rolle eines Benachrichtigungsmanagers zuweisen. Als Benachrichtigungsmanager kann Code Engine Benachrichtigungen für ein Object Storage-Bucket anzeigen, ändern und löschen.

Nur Kontoadministratoren können die Rolle "Benachrichtigungsmanager" zuweisen.

Wenn Sie Ihrem Projekt die Rolle eines Benachrichtigungsmanagers zuweisen, können Sie danach Ereignisabonnements für alle regionalen Buckets in der Object Storage-Instanz erstellen, die sich in derselben Region wie Ihr Projekt befinden.

  1. Rufen Sie im IAM-Dashboard die Seite „Service-Berechtigung erteilen“ auf.
  2. Wählen Sie unter Quellenservice die Option Code Engine aus.
  3. Wählen Sie Ressourcen auf der Basis ausgewählter Attribute und Quellenserviceinstanz aus. Wählen Sie anschließend ein Code Engine-Projekt aus.
  4. Wählen Sie unter Zielservice die Option Cloud Object Storage aus.
  5. Wählen Sie Ressourcen basierend auf ausgewählten Attributen und Serviceinstanz aus. Wählen Sie anschließend die IBM Cloud Object Storage-Instanz aus.
  6. Weisen Sie die Rolle Benachrichtigungsmanager zu und klicken Sie auf Autorisieren.

Sie können Ihrem Projekt auch mit dem Befehl ibmcloud iam authorization-policy-create die Rolle eines Benachrichtigungsmanagers zuweisen.

IBM Cloud Object Storage-Ereignisse für eine Anwendung subskribieren

Sie können mit IBM Cloud Object Storage-Subskriptionen über die Konsole oder über die CLI arbeiten, damit Ereignisse an eine Code Engine-Anwendung gesendet werden.

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 /event angibt, wird das Ereignis an https://<base application URL>/events gesendet.

Ereignisse werden als HTTP-POST-Anforderungen an Anwendungen gesendet. Weitere Informationen finden Sie im Thema Informationen zu HTTP-Headern und -Hauptteilen für Ereignisse.

IBM Cloud Object Storage-Ereignisse für eine Anwendung über die Konsole subskribieren

Sie können IBM Cloud Object Storage-Ereignissubskriptionen für eine Anwendung über die Konsole erstellen und aktualisieren.

Vorbereitende Schritte

Führen Sie die folgenden Schritte aus, um eine IBM Cloud Object Storage-Ereignissubskription für eine Anwendung über die Konsole zu erstellen und zu aktualisieren.

  1. Rufen Sie auf der Seite „ Code Engine-Projekte“ Ihr Projekt auf.

  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 "Ereignissubskription erstellen" die folgenden Schritte aus.

    1. Wählen Sie für Ereignistyp die Kachel Cloud Object Storage aus. Klicken Sie auf Weiter.
    2. Geben Sie für Allgemein einen Namen für die Object Storage-Subskription an, z. B. mycos. Sie können optional Ereignisattribute angeben. Beachten Sie, dass Ereignisattribute als HTTP-Header verfügbar sind, wenn der Object Storage-Ereigniskonsument 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. Wählen Sie für Details zu Bucketereignissen den Namen eines vorhandenen Object Storage-Buckets aus oder geben Sie diesen ein. Geben Sie die Änderungstypen für Ihr Objekt an und geben Sie optional ein Präfix oder Suffix für den Objektnamen an, um Objekte im Bucket zu filtern und Ereignisse für die Subskription auszulösen. Fahren Sie durch Klicken auf Weiter fort.
    4. Geben Sie für Ereigniskonsument die zu empfangende Anwendung 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/cos-listen-Image referenziert. Wenn Ihre App nicht vorhanden ist, können Sie den Namen Ihrer Anwendung angeben und Ihre Anwendung erstellen, nachdem Sie die Object Storage-Subskription 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.
    5. Überprüfen Sie für Zusammenfassung die Einstellungen für Ihre Object Storage-Ereignissubskription und nehmen Sie bei Bedarf Änderungen vor. Wenn Sie bereit sind, klicken Sie auf Erstellen, um die Object Storage-Subskription zu erstellen.
  5. Nachdem Ihre Object Storage-Subskription erstellt wurde, rufen Sie die Seite "Ereignissubskriptionen" auf, um einer Liste definierter Subskriptionen anzeigen.

  6. Navigieren Sie zum Aktualisieren einer Subskription zu Ihrer Object Storage-Subskriptionsseite. Klicken Sie auf der Seite 'Ereignisabonnements' auf den Namen des Abonnements, das aktualisiert werden soll.

  7. Ändern Sie auf Ihrer Object Storage-Subskriptionsseite den Typ der Objektänderung nur in delete-Objektänderungen. Wählen Sie auf der Registerkarte Details zu Bucketereignissen nur den delete-Typ der Objektänderung aus. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.

  8. Da die myapp-Anwendung auf die Beispielanwendung cos-listen verweist, die Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Nachdem ein Objekt aus dem Bucket gelöscht wurde, wird ein Ereignis für das Löschen in den App-Protokollen angezeigt. Weitere Informationen finden Sie unter Anwendungsprotokolle über die Konsole anzeigen.

Nach der Definition einer IBM Cloud Object Storage-Ereignissubskription, die auf ein bestimmtes Bucket verweist, können Sie diese Subskription nicht aktualisieren, um ein anderes Bucket zu verwenden. Sie müssen eine neue Subskription erstellen, um auf das gewünschte Bucket zu verweisen.

IBM Cloud Object Storage-Ereignisse für eine Anwendung über die CLI subskribieren

Vorbereitende Schritte

  1. Verbinden Sie Ihre Anwendung mit dem Ereigniserzeuger IBM Cloud Object Storage mithilfe des Befehls ibmcloud ce subscription cos create. Beispiel:

    ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket
    
  2. Nachdem Ihre Subskription erstellt wurde, führen Sie den Befehl subscription cos get für Details zu Ihrer Subskription aus.

    ibmcloud ce subscription cos get --name mycosevent
    

    Beispielausgabe

    Getting COS source 'mycosevent'...
    OK
    Name:          mycosevent
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           59s
    Created:       2021-03-01T20:08:36-06:00
    Destination:  App:myapp
    Bucket:       mybucket
    Event Type:   all
    Ready:        true
    Conditions:
        Type            OK    Age  Reason
        CosConfigured   true  55s
        Ready           true  55s
        ReadyForEvents  true  55s
        SinkProvided    true  55s
    Events:
        Type     Reason           Age      Source                Messages
        Normal   FinalizerUpdate  61s      cossource-controller  Updated "mycosevent" finalizers
    

Jetzt wird von der App bei jeder Änderung am Bucket eine Benachrichtigung empfangen.

Möchten Sie ein Lernprogramm ausprobieren? Informationen hierzu finden Sie unter Objektspeicherereignisse abonnieren. Benötigen Sie weitere Codebeispiele? Sehen Sie sich das Samples for IBM Cloud Code Engine GitHub repo an.

Ereignisinformationen für eine Anwendung über die Konsole anzeigen

Gehen Sie folgendermaßen vor, um Informationen zu Ihren Ereignisabonnements anzuzeigen.

  1. Rufen Sie auf der Seite „ Code Engine-Projekte“ Ihr Projekt auf.
  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.

Wenn Ihre Anwendung wie die cos-listen-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 beispielsweise die Anwendung cos-listen), können Sie die gesendeten Informationen mit dem CLI-Befehl ibmcloud ce app logs anzeigen.

Bevor Sie Ereignisinformationen für Ihre Anwendung anzeigen können, müssen Sie zunächst ein Object Storage-Ereignis erstellen. Nehmen Sie hierfür eine Änderung an Ihrem Bucket vor.

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-a2mvv-1-deployment-d97dcd6cf-zc9lg/user-container:
Listening on port 8080
2021-04-13 19:43:45 - Received:
Body: {"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Write","format":"2.0","object_etag":"2944035e54ee1bdc423848c8eaf05e86","object_length":"4642","object_name":"NOtes.rtf","request_id":"6abc7123-382d-4115-98e8-7568b2cc03f8","request_time":"2021-04-13T19:43:36.610Z"},"operation":"Object:Write"}

Bitte beachten Sie, dass die Protokollinformationen für Apps nur eine Stunde lang gespeichert bleiben. Weitere Informationen zur Protokollierung finden Sie im Thema Protokolle anzeigen.

Benötigen Sie weitere Codebeispiele? Sehen Sie sich das Samples for IBM Cloud Code Engine GitHub repo an.

Header- und Hauptteilinformationen von IBM Cloud Object Storage für an Anwendungen übergebene Ereignisse

Alle Ereignisse, die an Anwendungen übergeben werden, werden als HTTP-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 sind die Header für Object Storage-Ereignisse 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 Object Storage-Ereignissen lautet dieser Wert https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME], wobei [BUCKET_NAME] der Name des Buckets ist, das das Objekt enthält.
ce-specversion Die Version der CloudEvents-Spezifikation. Dieser Wert ist immer 1.0.
ce-subject Gibt die Ressource an, auf die sich das Ereignis bezieht. Bei Object Storage-Ereignissen ist dies der Name (bzw. Schlüssel) des Objekts, für das eine Aktion ausgeführt wurde.
ce-time Der Zeitpunkt, an dem das Ereignis generiert wurde.
ce-type Der Typ des Ereignisses. Bei Object Storage-Ereignissen ist dies com.ibm.cloud.cos.document.[ACTION], wobei [ACTION] entweder write oder delete ist. Wenn ein Ereignis erstellt oder aktualisiert wird, wird eine write-Aktion für ce-type verwendet.

Beispiel

ce-id:  3fb2c04e-a660-4640-8899-b82efb8169b6
ce-source: https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
ce-specversion: 1.0
ce-subject: object-69-144
ce-time: 2021-08-17T20:22:02.917Z
ce-type: com.ibm.cloud.cos.document.delete

HTTP-Hauptteil

Der HTTP-Hauptteil für ein IBM Cloud Object Storage-Ereignis besitzt das folgende Format:

{
  "bucket": "mybucket",
  "endpoint": "",
  "key": "object-69-144",
  "notification": {
    "bucket_name": "mybucket",
    "content_type": "image/svg+xml",
    "event_type": "Object:Delete",
    "format": "2.0",
    "object_etag": "f3a9dbde30fdf48abc23e5f8b485d6e5",
    "object_length": "1064391",
    "object_name": "object-69-144",
    "request_id": "67a2048a-abcd-abcd-9e0c-968744094b85",
    "request_time": "2021-08-17T20:22:02.917Z"
  },
  "operation": "Object:Delete"
}

In der folgenden Tabelle werden die Hauptteilfelder beschrieben.

Körperfelder für IBM Cloud Object Storage
Textfeld Beschreibung
bucket Der Bucketname für das Objekt, das sich auf das Ereignis bezieht.
endpoint Dieser Wert ist immer eine leere Zeichenfolge.
key Der Name des Objekts im Bucket.
operation Der Ereignistyp oder die Operation; der Typ lautet entweder Object:Write oder Object:Delete. Ereignisse zum Erstellen oder Hochladen werden immer als Operationen des Typs Object:Write markiert.
Notification.bucket_name Der Bucketname für das Objekt, das sich auf das Ereignis bezieht.
Notification.content_type Der MIME-Typ des Objekts, zum Beispiel text/html.
Notification.event_type Der Ereignistyp oder die Operation; der Typ lautet entweder Object:Write oder Object:Delete. Ereignisse zum Erstellen oder Hochladen werden immer als Operationen des Typs Object:Write markiert.
Notification.format Dieser Wert ist immer 2.0.
Notification.object_etag Ein eindeutiger Wert, der sich jedes Mal ändert, wenn das Objekt geändert wird. Dieser Wert wird für eine Operation des Typs Object:Delete nicht angezeigt.
Notification.object_length Die Größe des Objekts in Byte.
Notification.request_id Die eindeutige ID, die sich auf die Objektänderung bezieht.
Notification.request_time Der Zeitpunkt, an dem die Objektänderung aufgetreten ist.

IBM Cloud Object Storage-Ereignisse für einen Job subskribieren

Sie können mit IBM Cloud Object Storage-Subskriptionen über die Konsole oder über die CLI arbeiten, damit Ereignisse an einen Code Engine-Job gesendet werden.

Wenn Sie eine Ereignissubskription für einen Job erstellen, wird eine Jobausführung für jedes Ereignis erstellt, das ausgelöst wird, und diese Jobausführung enthält die Umgebungsvariablen, die sich auf den Job beziehen. Weitere Informationen zu den von IBM Cloud Object Storage gesendeten Umgebungsvariablen finden Sie im Thema Umgebungsvariablen für Ereignisse.

IBM Cloud Object Storage-Ereignisse für einen Job über die Konsole subskribieren

Sie können IBM Cloud Object Storage-Ereignissubskriptionen für einen Job über die Konsole erstellen und aktualisieren.

Vorbereitende Schritte

Führen Sie die folgenden Schritte aus, um über die Konsole ein „ IBM Cloud Object Storage “-Ereignisabonnement für einen Job zu erstellen oder zu aktualisieren:

  1. Rufen Sie auf der Seite „ Code Engine-Projekte“ Ihr Projekt auf.

  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 „Abonnement für ein Ereignis erstellen“ die folgenden Schritte aus:

    1. Wählen Sie für Ereignistyp die Kachel Cloud Object Storage aus. Klicken Sie auf Weiter.

    2. Geben Sie für Allgemein einen Namen für die Object Storage-Subskription an, z. B. mycos-job. Sie können optional Ereignisattribute angeben. Wenn der Ereigniskonsument ein Job ist, sind Ereignisattribute als Umgebungsvariablen verfügbar. Fahren Sie durch Klicken auf Weiter fort.

    3. Um die Details eines Bucket-Ereignisses anzuzeigen, wählen Sie den Namen eines vorhandenen Object Storage-Buckets aus oder geben Sie ihn ein und geben Sie die Änderungstypen für Ihr Objekt an, für die Sie Ereignisse auslösen möchten.

      Geben Sie für den Objekttyp "Änderung" an, wann Sie Ereignisse für Aktionen auf Ihrem Object Storage-Objekt erhalten möchten. Sie können einen oder beide Typen von Objektänderungen auswählen:

      • Verwenden Sie Erstellen und Aktualisieren, um ein Ereignis zu empfangen, wenn ein neues Objekt erstellt oder ein vorhandenes Objekt aktualisiert wird.
      • Verwenden Sie "Löschen ", um eine Benachrichtigung zu erhalten, wenn ein vorhandenes Objekt aus Ihrem Sammelbehälter entfernt wird.

      Optional können Sie auch ein Präfix oder Suffix für den Objektnamen angeben, um Objekte im Bucket zu filtern und Ereignisse für das Abonnement auszulösen. Geben Sie die Werte für das Objektnamen-Präfix oder das Objektnamen-Suffix an, um Zeichenfolgen anzugeben, die mit dem Anfang (Präfix) oder Ende (Suffix) der Objektnamen übereinstimmen, für die Sie Ereignisse erhalten möchten. Der Wert beschränkt die Objekte in Ihrem Object Storage-Ordner, die Ereignisse auslösen, auf die Dateinamen, die mit dem angegebenen Präfix oder Suffix beginnen oder enden. Verwenden Sie keine Platzhalterzeichen oder regulären Ausdrücke. Geben Sie für Präfix und Suffix nur reinen Text an (geben Sie beispielsweise abc an, nicht *abc, um alle Objekte anzugeben, die mit abc beginnen). Außerdem enthalten Dateinamen die Dateierweiterung (wenn Sie z. B. json als Suffix angeben, wird das Ereignis für Dateien wie abc.json, aber nicht für abcjson.txt behandelt).

      Fahren Sie durch Klicken auf Weiter fort.

    4. Geben Sie für Ereigniskonsument den Job zum Empfangen von Ereignissen an. Beachten Sie, dass Sie aus einer Liste definierter Jobs auswählen können. Verwenden Sie für dieses Beispiel den Job myjob, der das icr.io/codeengine/codeengine-Image referenziert. Wenn Ihr Job nicht vorhanden ist, können Sie den Namen Ihres Jobs angeben und Ihren Job erstellen, nachdem Sie die Object Storage-Subskription erstellt haben. Fahren Sie durch Klicken auf Weiter fort.

    5. Überprüfen Sie für Zusammenfassung die Einstellungen für Ihre Object Storage-Ereignissubskription und nehmen Sie bei Bedarf Änderungen vor. Wenn Sie bereit sind, klicken Sie auf Erstellen, um die Object Storage-Subskription zu erstellen.

  5. Nachdem Ihre Object Storage-Subskription erstellt wurde, rufen Sie die Seite "Ereignissubskriptionen" auf, um einer Liste definierter Subskriptionen anzeigen.

  6. Navigieren Sie zum Aktualisieren einer Subskription zu Ihrer Object Storage-Subskriptionsseite. Klicken Sie auf der Seite 'Ereignisabonnements' auf den Namen des Abonnements, das aktualisiert werden soll.

  7. Ändern Sie auf Ihrer Object Storage-Subskriptionsseite den Typ der Objektänderung nur in delete-Objektänderungen. Wählen Sie auf der Registerkarte Details zu Bucketereignissen nur den Typ delete der Objektänderung aus. Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.

  8. Da der myjob-Job auf den Beispieljob icr.io/codeengine/codeengine verweist, der Informationen in Protokolldateien ausgibt, können Sie die Protokolle anzeigen. Nachdem ein Objekt aus dem Bucket gelöscht wurde, wird ein Ereignis für das Löschen in den Protokollen für die Jobausführung angezeigt. Weitere Informationen finden Sie unter Jobprotokolle über die Konsole anzeigen.

Jobausführungen, die durch Subskriptionen erstellt werden, werden nach 10 Minuten gelöscht.

Nach der Definition einer IBM Cloud Object Storage-Ereignissubskription, die auf ein bestimmtes Bucket verweist, können Sie diese Subskription nicht aktualisieren, um ein anderes Bucket zu verwenden. Sie müssen eine neue Subskription erstellen, um auf das gewünschte Bucket zu verweisen.

IBM Cloud Object Storage-Ereignisse für einen Job über die CLI abonnieren

Vorbereitende Schritte

  1. Verbinden Sie Ihren Job mit dem Ereigniserzeuger IBM Cloud Object Storage mithilfe des Befehls ibmcloud ce subscription cos create.

    ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket
    
  2. Nachdem Ihre Subskription erstellt wurde, führen Sie den Befehl subscription cos get für Details zu Ihrer Subskription aus.

    ibmcloud ce subscription cos get --name mycosevent
    

    Beispielausgabe

    Getting COS source 'mycosevent'...
    OK
    Name:          mycosevent
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           59s
    Created:       2021-03-01T20:08:36-06:00
    Destination Type:  job
    Destination:       myjob
    Bucket:       mybucket
    Event Type:   all
    Ready:        true
    Conditions:
        Type            OK    Age  Reason
        CosConfigured   true  55s
        Ready           true  55s
        ReadyForEvents  true  55s
        SinkProvided    true  55s
    Events:
        Type     Reason           Age      Source                Messages
        Normal   FinalizerUpdate  61s      cossource-controller  Updated "mycosevent" finalizers
    

Jetzt empfängt Ihr Job bei jeder Änderung am Bucket eine entsprechende Benachrichtigung.

Jobausführungen, die durch Subskriptionen erstellt werden, werden nach 10 Minuten gelöscht.

Möchten Sie ein Lernprogramm ausprobieren? Informationen hierzu finden Sie unter Objektspeicherereignisse abonnieren. Benötigen Sie weitere Codebeispiele? Sehen Sie sich das Samples for IBM Cloud Code Engine GitHub repo an.

Ereignisinformationen für einen Job über die Konsole anzeigen

Gehen Sie folgendermaßen vor, um Informationen zu Ihren Ereignisabonnements anzuzeigen.

  1. Rufen Sie auf der Seite „ Code Engine-Projekte“ Ihr Projekt auf.
  2. Klicken Sie auf der Seite 'Übersicht' auf Ereignisabonnements, um eine Liste der definierten Abonnements anzuzeigen.

Wenn Ihr Job wie der Beispieljob codeengine Informationen in Protokolldateien ausgibt, zeigen Sie die Protokolldateien für Ihre Ereigniskonsumentenanwendung an. Weitere Informationen finden Sie unter Jobprotokolle über die Konsole anzeigen.

Ereignisinformationen für einen Job über die Befehlszeilenschnittstelle anzeigen

Wenn Ihr Job wie der Job codeengine Informationen in Protokolldateien ausgibt, dann verwenden Sie den CLI-Befehl ibmcloud ce jobrun logs, um die gesendeten Informationen anzuzeigen.

Bevor Sie Ereignisinformationen für Ihren Job anzeigen können, müssen Sie zunächst ein Object Storage-Ereignis erstellen. Nehmen Sie hierfür eine Änderung an Ihrem Bucket vor.

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-pnz6m  0       0        0          0        1          0        39s

Zeigen Sie die Protokolle für die Jobausführung an, indem Sie den Namen der Jobausführung angeben.

ibmcloud ce jobrun logs --jobrun myjob-pnz6m

Beispielausgabe

Getting logs for all instances of job run 'myjob-pnz6m'...
Getting jobrun 'myjob-pnz6m'...
Getting instances of jobrun 'myjob-pnz6m'...
OK
myjob-pnz6m-0-0/myjob:
Hello from helloworld! I'm a batch job! Index: 0
Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-pnz6m-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

Bitte beachten Sie, dass die Protokollinformationen zu den Auftragsausführungen nur eine Stunde lang gespeichert bleiben. Weitere Informationen zur Protokollierung finden Sie im Thema Protokolle anzeigen.

Benötigen Sie weitere Codebeispiele? Sehen Sie sich das Samples for IBM Cloud Code Engine GitHub repo an.

Umgebungsvariablen für an Jobs übergebene Ereignisse

Alle Ereignisse, die an Jobs übergeben werden, werden als Umgebungsvariablen empfangen. Diese Umgebungsvariablen enthalten das 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 und zusätzliche Optionen für Umgebungsvariablen finden Sie unter den Attributen von „ CloudEvent “.

In der folgenden Tabelle sind die speziellen Umgebungsvariablen für IBM Cloud Object Storage-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 Object Storage-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 Object Storage-Ereignissen lautet dieser Wert https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME], wobei [BUCKET_NAME] der Name des Buckets ist, das das Objekt enthält.
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 Object Storage-Ereignissen ist dies com.ibm.cloud.cos.document.[ACTION], wobei [ACTION] entweder write oder delete ist.

CE_DATA-Umgebungsvariable

Beachten Sie, dass das folgende Beispiel für CE_DATA im Hinblick auf eine bessere Lesbarkeit formatiert worden ist.

{
"bucket":"mybucket",
"endpoint":"",
"key":"Notes.rtf",
"notification": {
    "bucket_name":"mybucket",
    "content_type":"text/rtf",
    "event_type":"Object:Delete",
    "format":"2.0",
    "object_length":"4642",
    "object_name":"Notes.rtf",
    "request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b",
    "request_time":"2021-04-13T20:10:37.631Z"
},
"operation":"Object:Delete"}

In der folgenden Tabelle wird ist Umgebungsattribut CE_DATA beschrieben.

Umgebungsvariablen für IBM Cloud Object Storage
Attribut Beschreibung
bucket Der Bucketname für das Objekt, das sich auf das Ereignis bezieht.
endpont Dieser Wert ist immer eine leere Zeichenfolge.
key Der Name des Objekts im Bucket.
operaton Der Ereignistyp oder die Operation; der Typ lautet entweder Object:Write oder Object:Delete. Ereignisse zum Erstellen oder Hochladen werden immer als Operationen des Typs Object:Write markiert.
Notification.bucket_name Der Bucketname für das Objekt, das sich auf das Ereignis bezieht.
Notification.content_type Der MIME-Typ des Objekts, zum Beispiel text/rtf.
Notification.event_type Der Ereignistyp oder die Operation; der Typ lautet entweder Object:Write oder Object:Delete. Ereignisse zum Erstellen oder Hochladen werden immer als Operationen des Typs Object:Write markiert.
Notification.format Dieser Wert ist immer 2.0.
Notification.object_etag Ein eindeutiger Wert, der sich jedes Mal ändert, wenn das Objekt geändert wird. Dieser Wert wird für eine Operation des Typs Object:Delete nicht angezeigt.
Notification.object_length Die Größe des Objekts in Byte.
Notification.request_id Die eindeutige ID, die sich auf die Objektänderung bezieht.
Notification.request_time Der Zeitpunkt, an dem die Objektänderung aufgetreten ist.

Beispielausgabe

CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete

Zusätzliche Ereignisattribute definieren

Wenn Sie ein Abonnement erstellen, können Sie zusätzliche CloudEvent-Attribute definieren, die in alle generierten Ereignisse einbezogen werden sollen. Diese Attribute werden ähnlich wie jedes andere Attribut CloudEvent in der Ereignisbereitstellung angezeigt. Wenn Sie den Namen eines vorhandenen CloudEvent-Attributs angeben, wird der ursprüngliche Wert, der im Ereignis enthalten war, überschrieben.

Verwenden Sie zum Definieren von Additionsattributen die Optionen --extension mit dem CLI-Befehl ibmcloud ce subscription cos create.

Weitere Informationen finden Sie unter Kann ich andere CloudEvents-Spezifikationen verwenden?

Subskription löschen

Wenn Sie eine IBM Cloud Object Storage-Subskription nicht mehr benötigen, können Sie sie löschen.

Abonnement über die Konsole löschen

  1. Rufen Sie auf der Seite „ Code Engine-Projekte“ Ihr Projekt auf.
  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.

Wenn Sie eine App oder einen Job löschen, der der Subskription zugeordnet ist, wird das Abonnement nicht gelöscht. Wenn Sie die Anwendung oder den Job (oder eine andere App oder einen Job mit demselben Namen) erneut erstellen, stellt Ihre Subskription die Verbindung zur App oder zum Job wieder her.

Abonnement über die Befehlszeilenschnittstelle löschen

Sie können eine IBM Cloud Object Storage-Subskription mit dem Befehl ibmcloud ce subscription cos delete löschen.

Verwenden Sie beispielsweise den folgenden Befehl, um eine IBM Cloud Object Storage-Subskription namens mycosevent zu löschen:

ibmcloud ce subscription cos delete --name mycosevent

Wenn Sie eine App oder einen Job löschen, der der Subskription zugeordnet ist, wird das Abonnement nicht gelöscht. Stattdessen wechselt er in den Bereitstatus von false, da die Subskription von der Verfügbarkeit der App oder des Jobs abhängt. Wenn Sie die Anwendung oder den Job (oder eine andere App oder einen Job mit demselben Namen) erneut erstellen, wird Ihre Subskription erneut verbunden und der Bereitstatus ist true.