Trigger aus Pub/Sub-Ereignissen erstellen

In Cloud Run können Sie Dienste mit Eventarc als Reaktion auf Pub/Sub Nachrichten auslösen. Wenn Sie einen Pub/Sub-Trigger für Ihren Dienst angeben, geben Sie auch ein Pub/Sub-Thema an. Als Ergebnis dieses Triggers wird Ihr Dienst aufgerufen, wenn Sie eine Nachricht zum angegebenen Thema veröffentlichen.

Das Repository Google Events enthält zusätzliche Ressourcen für die Arbeit mit Ereignisdaten.

Hinweis

  1. Prüfen Sie, ob Sie ein neues Projekt für Cloud Run eingerichtet haben, wie in der Einrichtung Seite beschrieben.

  2. Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Run Admin API, Eventarc, Cloud Logging und Pub/Sub APIs:

    APIs aktivieren

  3. Weisen Sie die erforderlichen IAM-Rollen und ‑Berechtigungen zu.

Erforderliche Rollen für das Bereitstellerkonto

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Auslösen von Pub/Sub-Ereignissen benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Beachten Sie, dass Cloud Build -Berechtigungen standardmäßig Berechtigungen zum Hochladen und Herunterladen von Artifact Registry -Artefakten enthalten.

Trigger für Dienste erstellen

Nachdem Sie einen Dienst bereitgestellt haben, können Sie einen Trigger mit der Google Cloud Console, der Google Cloud CLI oder Terraform konfigurieren.

Console

  1. Stellen Sie Ihren Cloud Run-Dienst mit Containern oder aus der Quelle bereit.

  2. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

  3. Klicken Sie in der Liste der Dienste auf einen vorhandenen Dienst.

  4. Rufen Sie auf der Seite „Dienstdetails“ den Tab Trigger auf.

  5. Klicken Sie auf Trigger hinzufügen und wählen Sie Pub/Sub-Trigger aus.

  6. Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails wie folgt:

    1. Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.

    2. Wählen Sie in der Liste einen Triggertyp aus, um einen der folgenden Triggertypen anzugeben:

      • Google-Quellen, um Trigger für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter anzugeben.

      • Drittanbieter , um eine Einbindung in Nicht-Google-Anbieter vorzunehmen, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Ereignisse von Drittanbietern in Eventarc.

    3. Wählen Sie in der Liste Ereignisanbieter die Option Pub/Sub aus, um ein Produkt auszuwählen, das den Ereignistyp für das Auslösen Ihres Dienstes angibt. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.

    4. Wählen Sie in der Liste google.cloud.pubsub.topic.v1.messagePublished die Option google.cloud.pubsub.topic.v1.messagePublished aus. Die Triggerkonfiguration variiert je nach unterstütztem Ereignistyp. Weitere Informationen finden Sie unter Ereignistypen.

    5. Wählen Sie im Feld Cloud Pub/Sub-Thema auswählen ein Thema aus, das der Trigger überwachen soll. Nachrichten, die Sie zu diesem Thema veröffentlichen, lösen Aufrufe an Ihre Funktion aus.

    6. Wenn das Region-Feld aktiviert ist, wählen Sie einen Standort für den Eventarc -Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc Triggers mit dem Standort der Google Cloud Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihren Dienst auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.

    7. Wählen Sie im Feld Dienstkonto ein Dienstkonto aus. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihres Dienstes als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihres Dienstes haben. Standardmäßig verwendet Cloud Run das Compute Engine-Standarddienstkonto.

    8. Geben Sie optional den Dienst-URL-Pfad an, an den die eingehende Anfrage gesendet werden soll. Dies ist der relative Pfad im Zieldienst, an den die Ereignisse für den Trigger gesendet werden sollen. Beispiel: /, /route, route und route/subroute.

    9. Optional können Sie das Kästchen Bei Fehler noch einmal versuchen auswählen, um Wiederholungsversuche zu aktivieren, wenn der Zustellversuch fehlschlägt. Andernfalls wird standardmäßig nur ein Zustellversuch ohne Wiederholungsversuche unternommen. Weitere Informationen finden Sie unter Ereignisse noch einmal versuchen.

    10. Wenn Sie alle Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.

  7. Nachdem Sie den Trigger erstellt haben, können Sie seinen Status prüfen. Dazu muss im Tab Trigger ein Häkchen angezeigt werden.

gcloud

  1. Stellen Sie Ihren Cloud Run-Dienst mit Containern oder aus der Quelle bereit.

  2. Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert und weiterleitet:

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=DESTINATION_RUN_SERVICE  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Ersetzen Sie Folgendes:

    • TRIGGER_NAME: die ID des Triggers oder eine voll qualifizierte Kennzeichnung.
    • LOCATION: der Standort des Eventarc Triggers. Alternativ können Sie das Attribut eventarc/location festlegen. Beispiel: gcloud config set eventarc/location us-central1.

      Zur Vermeidung von Leistungs- und Datenstandortproblemen muss der Standort mit dem Standort des Google Cloud Dienstes übereinstimmen, der die Ereignisse generiert. Weitere Informationen finden Sie unter Eventarc-Standorte.

    • DESTINATION_RUN_SERVICE: der Name des Cloud Run-Dienstes, der die Ereignisse für den Trigger empfängt. Der Dienst kann sich an einem der von Cloud Run unterstützten Standorte befinden und muss sich nicht am selben Standort wie der Trigger befinden. Er muss sich aber im selben Projekt wie der Trigger befinden. Der Dienst empfängt Ereignisse als HTTP-POST-Anfragen, die an seinen Root-URL-Pfad (/) gesendet werden, wenn das Ereignis erzeugt wird.
    • DESTINATION_RUN_REGION: (optional) der Cloud Run-Standort, an dem sich der Cloud Run-Zieldienst befindet. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sich der Dienst in derselben Region wie der Trigger befindet.
    • Das Flag --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" ist erforderlich und kann nicht geändert werden. Für einen anderen Ereignistyp müssen Sie einen neuen Trigger erstellen.
    • TOPIC_ID: die ID des vorhandenen Pub/Sub-Themas. Das Thema muss sich im selben Projekt wie der Trigger befinden.
    • SERVICE_ACCOUNT_NAME: der Name Ihres nutzerverwalteten Dienstkontos.
    • PROJECT_ID: Ihre Google Cloud Projekt-ID.

    Hinweise:

    • Optional können Sie das Flag --max-retry-attempts verwenden, um einen einzelnen Zustellversuch ohne Wiederholungsversuche anzugeben. Der einzige gültige Wert ist 1. Wenn Sie das Flag weglassen, gilt das Standardverhalten für Wiederholungsversuche. Weitere Informationen finden Sie unter Ereignisse noch einmal versuchen.
    • Es sind weitere Flags verfügbar. Weitere Informationen finden Sie unter gcloud eventarc triggers create.

Terraform

Informationen zum Erstellen eines Eventarc-Triggers für einen Cloud Run-Dienst finden Sie unter Trigger mit Terraform erstellen.

Trigger für Funktionen erstellen

Nachdem Sie eine Funktion bereitgestellt haben, können Sie einen Trigger mit der Google Cloud Console, Google Cloud CLI oder Terraform konfigurieren.

Console

Wenn Sie die Google Cloud Console verwenden, um eine Funktion zu erstellen, können Sie Ihrer Funktion auch einen Trigger hinzufügen. So erstellen Sie einen Trigger für Ihre Funktion:

  1. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

  2. Klicken Sie auf Funktion schreiben und geben Sie die Funktionsdetails ein. Weitere Informationen zum Konfigurieren von Funktionen während der Bereitstellung finden Sie unter Funktionen bereitstellen.

  3. Klicken Sie im Bereich Trigger auf Trigger hinzufügen.

  4. Wählen Sie Pub/Sub-Trigger aus.

  5. Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails wie folgt:

    1. Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.

    2. Wählen Sie in der Liste einen Triggertyp aus:

      • Google-Quellen, um Trigger für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter anzugeben.

      • Drittanbieter , um eine Einbindung in Nicht-Google-Anbieter vorzunehmen, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Ereignisse von Drittanbietern in Eventarc.

    3. Wählen Sie in der Liste Ereignisanbieter die Option Pub/Sub aus, um ein Produkt auszuwählen, das den Ereignistyp für das Auslösen Ihrer Funktion angibt. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.

    4. Wählen Sie in der Liste google.cloud.pubsub.topic.v1.messagePublished die Option google.cloud.pubsub.topic.v1.messagePublished aus. Die Triggerkonfiguration variiert je nach unterstütztem Ereignistyp. Weitere Informationen finden Sie unter Ereignistypen.

    5. Wählen Sie im Feld Cloud Pub/Sub-Thema auswählen ein Thema aus, das der Trigger überwachen soll. Nachrichten, die Sie zu diesem Thema veröffentlichen, lösen Aufrufe an Ihre Funktion aus.

    6. Wenn das Region-Feld aktiviert ist, wählen Sie einen Standort für den Eventarc-Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.

    7. Wählen Sie im Feld Dienstkonto ein Dienstkonto aus. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Standardmäßig verwendet Cloud Run das Compute Engine-Standarddienstkonto.

    8. Geben Sie optional den Dienst-URL-Pfad an, an den die eingehende Anfrage gesendet werden soll. Dies ist der relative Pfad im Zieldienst, an den die Ereignisse für den Trigger gesendet werden sollen. Beispiel: /, /route, route und route/subroute.

    9. Optional können Sie das Kästchen Bei Fehler noch einmal versuchen auswählen, um Wiederholungsversuche zu aktivieren, wenn der Zustellversuch fehlschlägt. Andernfalls wird standardmäßig nur ein Zustellversuch ohne Wiederholungsversuche unternommen. Weitere Informationen finden Sie unter Ereignisse noch einmal versuchen.

  6. Wenn Sie alle Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.

  7. Klicken Sie auf Erstellen.

  8. Bearbeiten Sie auf dem Tab Quelle bei Bedarf den Quellcode und wählen Sie dann Speichern und neu bereitstellen aus.

gcloud

Wenn Sie eine Funktion mit der gcloud CLI erstellen, müssen Sie sie zuerst bereitstellen und dann einen Trigger erstellen. So erstellen Sie einen Trigger für Ihre Funktion:

  1. Führen Sie den folgenden Befehl in dem Verzeichnis aus, das den Beispielcode enthält, um Ihre Funktion bereitzustellen:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image BASE_IMAGE_ID \
        --region REGION
    

    Ersetzen Sie Folgendes:

    • FUNCTION: der Name der Funktion, die Sie bereitstellen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.

    • FUNCTION_ENTRYPOINT: der Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.

    • BASE_IMAGE_ID: die Basisimage-Umgebung für Ihre Funktion. Weitere Informationen zu Basisimages und den in den einzelnen Images enthaltenen Paketen finden Sie unter Basisimages für Laufzeiten.

    • REGION: die Google Cloud Region, in der Sie Ihre Funktion bereitstellen möchten. Beispiel: europe-west1.

  2. Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert und weiterleitet:

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=FUNCTION  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Ersetzen Sie Folgendes:

    • TRIGGER_NAME: die ID des Triggers oder eine voll qualifizierte Kennzeichnung.
    • LOCATION: der Standort des Eventarc Triggers. Alternativ können Sie das Attribut eventarc/location festlegen. Beispiel: gcloud config set eventarc/location us-central1.

      Zur Vermeidung von Leistungs- und Datenstandortproblemen muss der Standort mit dem Standort des Google Cloud Dienstes übereinstimmen, der die Ereignisse generiert. Weitere Informationen finden Sie unter Eventarc-Standorte.

    • FUNCTION: der Name der bereitgestellten Cloud Run-Funktion , die die Ereignisse für den Trigger empfängt.
    • DESTINATION_RUN_REGION: (optional) der Cloud Run-Standort, an dem sich die Cloud Run-Zielfunktion befindet. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sich die Funktion in derselben Region wie der Trigger befindet.
    • Das Flag --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" ist erforderlich und kann nicht geändert werden. Für einen anderen Ereignistyp müssen Sie einen neuen Trigger erstellen.
    • TOPIC_ID: die ID des vorhandenen Pub/Sub-Themas. Das Thema muss sich im selben Projekt wie der Trigger befinden.
    • SERVICE_ACCOUNT_NAME: der Name Ihres nutzerverwalteten Dienstkontos.
    • PROJECT_ID: Ihre Google Cloud Projekt-ID.

    Hinweise:

    • Optional können Sie das Flag --max-retry-attempts verwenden, um einen einzelnen Zustellversuch ohne Wiederholungsversuche anzugeben. Der einzige gültige Wert ist 1. Wenn Sie das Flag weglassen, gilt das Standardverhalten für Wiederholungsversuche. Weitere Informationen finden Sie unter Ereignisse noch einmal versuchen.
    • Es sind weitere Flags verfügbar. Weitere Informationen finden Sie unter gcloud eventarc triggers create.

Terraform

Informationen zum Erstellen eines Eventarc-Triggers für eine Cloud Run-Funktion, siehe Trigger mit Terraform erstellen.

Nächste Schritte