Cloud Storage-Ereignisse an Workflows weiterleiten

Ein Eventarc-Trigger deklariert Ihr Interesse an einem bestimmten Ereignis oder einer Reihe von Ereignissen. Sie können das Ereignisrouting konfigurieren. Legen Sie dazu Filter für den Trigger fest, einschließlich der Ereignisquelle und des Zielworkflows.

Ereignisse werden im CloudEvents-Format über eine HTTP-Anfrage zugestellt. Der Workflow-Dienst konvertiert das Ereignis in ein JSON-Objekt (gemäß derCloudEvents-Spezifikation) und übergibt das Ereignis als Workflow-Laufzeitargument in die Workflow-Ausführung. Achten Sie darauf, dass die Ereignisgröße 512 KB nicht überschreitet. Ereignisse, die größer als die maximale Argumentgröße von Workflows sind, lösen keine Workflow-Ausführungen aus.

In dieser Anleitung erfahren Sie, wie Sie das Ereignisrouting konfigurieren, damit die Ausführung Ihres Workflows als Reaktion auf ein direktes Cloud Storage-Ereignis ausgelöst wird. Dies gilt für einen Cloud Storage-Ereignisanbieter. Weitere Informationen finden Sie in der Liste der unterstützten direkten Ereignisse.

Erstellung eines Triggers vorbereiten

Führen Sie die folgenden Aufgaben aus, bevor Sie einen Eventarc-Trigger für einen Zielworkflow erstellen.

Console

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Aktivieren Sie die Eventarc, Eventarc Publishing, Workflows und Workflow Executions APIs.

    Aktivieren Sie die APIs

  3. Aktivieren Sie gegebenenfalls die API, die mit den direkten Ereignissen verbunden ist. Aktivieren Sie beispielsweise für Cloud Storage-Ereignisse die Cloud Storage API.

  4. Erstellen Sie ein nutzerverwaltetes Dienstkonto, falls Sie noch keines haben, und weisen Sie ihm dann die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für einen Zielworkflow verwalten kann.

    1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

      Zur Seite „Dienstkonten“

    2. Wählen Sie Ihr Projekt aus.

    3. Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.

      Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel: Service account for event trigger

    4. Klicken Sie auf Erstellen und fortfahren.

    5. Wählen Sie in der Liste Rolle auswählen die erforderlichen IAM-Rollen (Identitäts- und Zugriffsverwaltung) aus, die Ihrem Dienstkonto zugewiesen werden sollen. Weitere Informationen finden Sie unter Rollen und Berechtigungen für Workflows-Ziele.

      Klicken Sie auf Weitere Rolle hinzufügen, um weitere Rollen hinzuzufügen.

    6. Klicken Sie auf Weiter.

    7. Klicken Sie zum Abschließen der Erstellung des Dienstkontos auf Fertig.

  5. Weisen Sie dem Cloud Storage-Dienst-Agent die Pub/Sub-Publisher-Rolle zu. Normalerweise ist dies service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com. Sie können die E-Mail-Adresse für den Cloud Storage-Dienst-Agent abrufen.

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen

    2. Klicken Sie in der Zeile für den Cloud Storage-Dienst-Agent auf Hauptkonto bearbeiten. (Wenn der Dienst-Agent nicht aufgeführt ist, fahren Sie mit dem nächsten Schritt fort.) Der Bereich Zugriff bearbeiten wird geöffnet.

      1. Klicken Sie auf Weitere Rolle hinzufügen und suchen Sie nach der Rolle Pub/Sub Publisher.
      2. Wählen Sie die Rolle aus.
      3. Klicken Sie auf Speichern.
    3. Wenn der Dienst-Agent nicht aufgeführt ist, klicken Sie auf Zugriff erlauben. Der Bereich Zugriff gewähren wird geöffnet.

      1. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
      2. Suchen Sie in der Liste Rolle auswählen nach der Rolle Pub/Sub-Publisher.
      3. Wählen Sie die Rolle aus.
      4. Klicken Sie auf Speichern.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Aktivieren Sie die Eventarc, Eventarc Publishing, Workflows und Workflow Executions APIs:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com
    

  3. Aktivieren Sie gegebenenfalls die API, die mit den direkten Ereignissen verbunden ist. Aktivieren Sie beispielsweise für Cloud Storage-Ereignisse storage.googleapis.com.

  4. Erstellen Sie ein nutzerverwaltetes Dienstkonto, falls Sie noch keines haben, und weisen Sie ihm dann die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für einen Zielworkflow verwalten kann.

    1. Erstellen Sie das Dienstkonto:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos. Der Name des Dienstkontos muss zwischen 6 und 30 Zeichen lang sein und darf alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

    2. Erteilen Sie die erforderlichen IAM-Rollen oder -Berechtigungen (Identity and Access Management). Weitere Informationen finden Sie unter Rollen und Berechtigungen für Workflows-Ziele.

  5. Wenn Sie einen Trigger für ein direktes Cloud Storage-Ereignis erstellen, weisen Sie dem Cloud Storage-Dienstkonto die Rolle pubsub.publisher zu:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/pubsub.publisher"
    

Trigger erstellen

Sie können einen Eventarc-Trigger mit einem bereitgestellten Workflow als Ereignisempfänger erstellen. Verwenden Sie dazu die Google Cloud CLI (gcloud oder Terraform) oder die Google Cloud Console.

Console

  1. Rufen Sie in der Google Cloud Console die Seite mit den Eventarc-Triggern auf.

    Zur Seite "Trigger"

  2. Klicken Sie auf Trigger erstellen.
  3. Geben Sie einen Triggernamen ein.

    Dies ist die ID des Triggers. Sie muss mit einem Buchstaben beginnen. Sie kann bis zu 63 Kleinbuchstaben, Ziffern oder Bindestriche enthalten.

  4. Wählen Sie als Triggertyp die Option Google-Quellen aus.
  5. Wählen Sie in der Liste Ereignisanbieter die Option Cloud Storage aus.

    Beachten Sie, dass der Name des Ereignisanbieters, der in der zugehörigen Google Cloud-Dokumentation verwendet wird, möglicherweise nicht das Präfix Cloud oder Google Cloud hat. In der Console wird Memorystore for Redis beispielsweise als Google Cloud Memorystore for Redis bezeichnet.

  6. Wählen Sie in der Liste Ereignistyp aus den Direkt-Ereignissen einen Ereignistyp aus:
    • google.cloud.storage.object.v1.archived: Das Ereignis wird gesendet, wenn eine Live-Version eines Objekts archiviert oder gelöscht wird. Dieses Ereignis wird nur für Buckets mit Versionsverwaltung gesendet.
    • google.cloud.storage.object.v1.delete: Das Ereignis wird gesendet, wenn ein Objekt endgültig gelöscht wird. Abhängig von der für den Bucket ausgewählten Objektversionierung bedeutet dies:
      • Bei Buckets mit Versionsverwaltung wird das Ereignis nur gesendet, wenn eine Version dauerhaft gelöscht wird (aber nicht, wenn ein Objekt archiviert wird).
      • Bei Buckets ohne Versionsverwaltung wird das Ereignis gesendet, wenn ein Objekt gelöscht oder überschrieben wird.
    • google.cloud.storage.object.v1.finalized: Das Ereignis wird gesendet, wenn ein neues Objekt im Bucket erstellt wird (oder ein bestehendes Objekt überschrieben wird und eine neue Generation dieses Objekts erstellt wird).
    • google.cloud.storage.object.v1.metadataUpdated: Das Ereignis wird gesendet, wenn sich die Metadaten eines vorhandenen Objekts ändern.
  7. Wählen Sie in der Liste Inhaltstyp der Ereignisdaten die Codierung der Ereignisnutzlast aus.

    Für direkte Ereignisse von Cloud Storage muss dies application/json sein.

  8. Geben Sie die global eindeutige Kennung des Cloud Storage-Buckets an oder suchen Sie danach.

    Der Cloud Storage-Bucket muss sich im selben Google Cloud-Projekt und in derselben Region oder Multiregion wie der Eventarc-Trigger befinden.

  9. Wählen Sie eine Region aus.

    Cloud Storage-Trigger für Eventarc sind an Standorten mit einer, zwei oder mehreren Regionen verfügbar. Der Cloud Storage-Bucket muss sich im selben Google Cloud-Projekt und in derselben Region oder Multiregion befinden wie der Eventarc-Trigger.

    Ereignisse werden mit Pub/Sub-Benachrichtigungen aus Cloud Storage zugestellt. Wenn zu viele Benachrichtigungen für denselben Bucket eingerichtet werden, kann das Benachrichtigungslimit für den Bucket aufgebraucht werden. Dies wird durch den Fehler Cloud Storage bucket ...: Pub/Sub notification limit reached angegeben. Der Bucket kann bis zu 10 Benachrichtigungskonfigurationen haben, die zum Auslösen von Benachrichtigungen für ein bestimmtes Ereignis festgelegt sind. Weitere Kontingente und Limits finden Sie auf der Seite Cloud Storage-Kontingente und -Limits.

  10. Wählen Sie das Dienstkonto aus, das Ihren Dienst oder Workflow aufruft.

    Alternativ können Sie ein neues Dienstkonto erstellen.

    Dies gibt die E-Mail-Adresse des IAM-Dienstkontos (Identity and Access Management) an, die dem Trigger zugeordnet ist und für die Sie zuvor bestimmte Rollen zugewiesen haben, die für Eventarc erforderlich sind.

  11. Wählen Sie in der Liste Ereignisziel die Option Workflows aus.
  12. Wählen Sie einen Workflow aus.

    Dies ist der Name des Workflows, an den Ereignisse übergeben werden. Ereignisse für eine Workflowausführung werden transformiert und als Laufzeitargumente an den Workflow übergeben.

    Weitere Informationen finden Sie unter Trigger für Workflows erstellen.

  13. Klicken Sie auf Erstellen.
  14. Nachdem ein Trigger erstellt wurde, können die Ereignisquellenfilter nicht mehr geändert werden. Erstellen Sie stattdessen einen neuen Trigger und löschen Sie den alten. Weitere Informationen finden Sie unter Trigger verwalten.

gcloud

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Ersetzen Sie Folgendes:

  • TRIGGER: ID des Triggers oder eine voll qualifizierte Kennzeichnung.
  • LOCATION: der Standort des Eventarc-Triggers, der an Standorten mit einer, zwei und mehreren Regionen verfügbar ist; Sie können keinen global-Eventarc-Trigger erstellen. Der Cloud Storage-Bucket muss sich im selben Google Cloud-Projekt und in derselben Region wie der Eventarc-Trigger befinden. Weitere Informationen finden Sie unter Eventarc-Standorte.
  • DESTINATION_WORKFLOW: die ID des bereitgestellten Workflows, der die Ereignisse vom Trigger empfängt. Der Workflow kann sich an einem der von Workflows unterstützten Standorte befinden und muss sich nicht am selben Standort wie der Trigger vorhanden sein. Der Workflow muss sich jedoch im selben Projekt wie der Trigger befinden.
  • DESTINATION_WORKFLOW_LOCATION (optional): der Standort, an dem der Zielworkflow bereitgestellt wird. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sich der Workflow am selben Standort wie der Trigger befindet.
  • EVENT_FILTER_TYPE: die Kennzeichnung des Cloud Storage-Ereignisses und kann eine der folgenden sein:
    • google.cloud.storage.object.v1.finalized: Dieses Ereignis wird gesendet, wenn ein neues Objekt im Bucket erstellt wird (oder ein vorhandenes Objekt überschrieben und eine neue Objektgeneration erstellt wird).
    • google.cloud.storage.object.v1.archived: Dieses Ereignis wird gesendet, wenn eine Live-Version eines Objekts archiviert oder gelöscht wird. Dieses Ereignis wird nur für Buckets mit Versionsverwaltung gesendet.
    • google.cloud.storage.object.v1.deleted: Dieses Ereignis wird gesendet, wenn ein Objekt dauerhaft gelöscht wird. Abhängig von der für den Bucket ausgewählten Objektversionsverwaltung bedeutet dies:
      • Bei Buckets mit Versionsverwaltung wird das Ereignis nur gesendet, wenn eine Version dauerhaft gelöscht wird (aber nicht, wenn ein Objekt archiviert wird).
      • Bei Buckets ohne Versionsverwaltung wird das Ereignis gesendet, wenn ein Objekt gelöscht oder überschrieben wird.
    • google.cloud.storage.object.v1.metadataUpdated: Dieses Ereignis wird gesendet, wenn die Metadaten eines vorhandenen Objekts geändert werden.
  • BUCKET: die global eindeutige Kennzeichnung des Cloud Storage-Buckets.
  • SERVICE_ACCOUNT_NAME: der Name des von Ihnen erstellten IAM-Dienstkontos, dem Sie bestimmte Rollen zugewiesen haben, die für Workflows erforderlich sind.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID

Hinweise:

  • Bei direkten Ereignissen aus Cloud Storage lautet die Codierung der Ereignisnutzlast application/json.
  • Diese Flags sind erforderlich:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Nachdem ein Trigger erstellt wurde, kann EVENT_FILTER_TYPE nicht mehr geändert werden. Für einen anderen Ereignistyp müssen Sie einen neuen Trigger erstellen.
  • --service-account: Die IAM-Dienstkonto-E-Mail, mit der Ihr Eventarc-Trigger die Workflow-Ausführungen aufruft. Es wird dringend empfohlen, ein Dienstkonto mit den geringsten Berechtigungen zu verwenden, die für den Zugriff auf die benötigten Ressourcen erforderlich sind. Weitere Informationen zu Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.
  • Ereignisse werden mit Pub/Sub-Benachrichtigungen aus Cloud Storage zugestellt. Wenn zu viele Benachrichtigungen für denselben Bucket eingerichtet werden, kann das Benachrichtigungslimit für den Bucket aufgebraucht werden. Dies wird durch den Fehler Cloud Storage bucket ...: Pub/Sub notification limit reached angegeben. Der Bucket kann bis zu 10 Benachrichtigungskonfigurationen haben, die zum Auslösen von Benachrichtigungen für ein bestimmtes Ereignis festgelegt sind. Weitere Kontingente und Limits finden Sie auf der Seite Cloud Storage-Kontingente und -Limits.
  • Jeder Trigger kann mehrere Ereignisfilter haben, die durch Kommata in einem --event-filters=[ATTRIBUTE=VALUE,...]-Flag getrennt sind. Sie können das Flag aber auch wiederholen, um weitere Filter hinzuzufügen. Nur Ereignisse, die mit allen Filtern übereinstimmen, werden an das Ziel gesendet. Platzhalter und reguläre Ausdrücke werden nicht unterstützt.
  • Der Cloud Storage-Bucket muss sich im selben Google Cloud-Projekt und in derselben Region oder Multiregion wie der Eventarc-Trigger befinden.
  • Standardmäßig bleiben für Eventarc erstellte Pub/Sub-Abos unabhängig von ihrer Aktivität bestehen und laufen nicht ab. Informationen zum Ändern des Inaktivitätszeitraums finden Sie unter Abo-Attribute.

Beispiel:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-workflow=my-workflow \
    --destination-workflow-location=europe-west4 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

Dieser Befehl erstellt einen Trigger mit dem Namen helloworld-trigger für den Cloud Storage-Bucket my-project-bucket und das als google.cloud.storage.object.v1.finalized identifizierte Ereignis.

Terraform

Sie können mit Terraform einen Trigger für einen Workflow erstellen. Weitere Informationen finden Sie unter Workflow mit Eventarc und Terraform auslösen.

Trigger auflisten

Sie können die Erstellung eines Triggers bestätigen, indem Sie Eventarc-Trigger mit der Google Cloud CLI oder über die Google Cloud Console auflisten.

Console

  1. Rufen Sie in der Google Cloud Console die Seite mit den Eventarc-Triggern auf.

    Zur Seite "Trigger"

    Auf dieser Seite werden Ihre Trigger an allen Standorten aufgelistet. Außerdem enthält sie Details wie Namen, Regionen, Ereignisanbieter, Ziele usw.

  2. So filtern Sie die Trigger:

    1. Klicken Sie auf Filter oder das Feld Trigger filtern.
    2. Wählen Sie in der Liste Attribute eine Option aus, nach der die Trigger gefiltert werden sollen.

    Sie können ein einzelnes Attribut auswählen oder den logischen Operator OR verwenden, um weitere Attribute hinzuzufügen.

  3. Klicken Sie zum Sortieren der Trigger neben jeder unterstützten Spaltenüberschrift auf Sortieren.

gcloud

Führen Sie den folgenden Befehl aus, um die Trigger aufzulisten:

gcloud eventarc triggers list --location=-

Dieser Befehl listet Ihre Trigger an allen Standorten auf und enthält Details wie Namen, Typen, Ziele und Status.

Nächste Schritte