Firebase-Benachrichtigungsereignisse an Cloud Run 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 Cloud Run-Zieldienstes.

Eventarc liefert Ereignisse über eine HTTP-Anfrage an den Ereignisempfänger im CloudEvents-Format.

In dieser Anleitung erfahren Sie, wie Sie das Ereignisrouting für den Cloud Run-Dienst konfigurieren, der durch ein direktes Firebase Alerts-Ereignis ausgelöst wird. Weitere Informationen finden Sie in der Liste der unterstützten direkten Ereignisse.

Erstellung eines Triggers vorbereiten

Bevor Sie einen Trigger erstellen, müssen Sie folgende Voraussetzungen erfüllen:

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 Cloud Logging, Eventarc und Eventarc Publishing APIs.

    Aktivieren Sie die APIs

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

  4. Falls noch nicht geschehen, erstellen Sie ein nutzerverwaltetes Dienstkonto und weisen Sie ihm die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für Ihren Zieldienst verwalten kann.

    1. Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.

      Zur Seite „Dienstkonto erstellen“

    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 für einen entsprechenden Zugriff in der Liste Rolle auswählen die erforderlichen IAM-Rollen (Identity and Access Management) aus, die Ihrem Dienstkonto für authentifizierte oder nicht authentifizierte Aufrufe zugewiesen werden sollen. Weitere Informationen finden Sie unter Rollen und Berechtigungen für Cloud Run-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.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Aktivieren Sie die Cloud Logging, Eventarc und Eventarc Publishing APIs.

    gcloud services enable logging.googleapis.com \
      eventarc.googleapis.com \
      eventarcpublishing.googleapis.com

  3. Aktivieren Sie gegebenenfalls die API, die mit den direkten Ereignissen verbunden ist. Aktivieren Sie beispielsweise für Firebase Alerts-Ereignisse firestore.googleapis.com.

  4. Falls noch nicht geschehen, erstellen Sie ein nutzerverwaltetes Dienstkonto und weisen Sie ihm die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für Ihren Zieldienst verwalten kann.

    1. Erstellen Sie das Dienstkonto:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Ersetzen Sie 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) für authentifizierte oder nicht authentifizierte Aufrufe. Weitere Informationen finden Sie unter Rollen und Berechtigungen für Cloud Run-Ziele.

Trigger erstellen

Sie können einen Eventarc-Trigger mit der Google Cloud CLI oder über die Google Cloud Console erstellen.

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 Firebase Alerts 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 Ereignissen Direkt einen Ereignistyp aus.
  7. Wählen Sie zur Angabe der Codierung der Ereignisnutzlast in der Liste Inhaltstyp des Ereignisdaten die Option application/json oder application/protobuf aus.

    Beachten Sie, dass eine im JSON-Format formatierte Ereignisnutzlast größer als eine in Protobuf formatierte ist. Dies kann sich auf die Zuverlässigkeit auswirken, je nach Ereignisziel und Limits der Ereignisgröße. Weitere Informationen finden Sie unter Bekannte Probleme.

  8. Wählen Sie in der Liste Region die Option Global aus.

    Weitere Informationen finden Sie unter Eventarc-Standorte.

  9. Im Feld Attribut 1 fungiert die Ressourcen-ID alerttype als Ereignisfilter. Wählen Sie für diesen Filter einen Operator aus:
  10. Geben Sie im Feld Attributwert 1 eine der folgenden Optionen ein:
    • appDistribution.inAppFeedback: Das Ereignis wird gesendet, wenn ein Tester In-App-Feedback für eine bestimmte Anwendung sendet
    • appDistribution.newTesterIosDevice: das Ereignis wird gesendet, wenn ein neues iOS-Tester-Gerät für eine bestimmte App registriert ist.
    • billing.planAutomatedUpdate: Das Ereignis wird gesendet, wenn der Abrechnungstarif für ein Firebase-Projekt automatisch aktualisiert wird. Das ist beispielsweise der Fall, wenn ein Tarif aufgrund von Zahlungsproblemen herabgestuft wird.
    • billing.planUpdate: Das Ereignis wird gesendet, wenn der Abrechnungstarif für ein Firebase-Projekt von einem Nutzer geändert wird. Beispiel: Ein Rechnungskonto wird mit einem Projekt verknüpft oder von diesem getrennt.
    • crashlytics.missingSymbolFile: Das Ereignis wird gesendet, wenn Firebase Crashlytics feststellt, dass es nicht die entsprechenden Fehlerbehebungssymbole hat, um einen eingehenden Absturzbericht zu symbolisieren.
    • crashlytics.newAnrIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer ANR-Fehler (Application not responding, Anwendung reagiert nicht) auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.newFatalIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer schwerwiegender Absturz auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.newNonfatalIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer nicht schwerwiegender Fehler auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.regression: Das Ereignis wird gesendet, wenn eine Anwendung bei einem Problem abstürzt, das für eine frühere Anwendungsversion als geschlossen gekennzeichnet wurde.
    • crashlytics.stabilityDigest: Das Ereignis wird gesendet, wenn eine Benachrichtigung über die häufigsten Trendprobleme in Crashlytics vorhanden ist.
    • crashlytics.velocity: Das Ereignis wird gesendet, wenn ein einzelnes Problem dafür verantwortlich ist, dass eine beträchtliche Anzahl von Anwendungssitzungen abstürzt.
    • performance.threshold: Ereignis wird gesendet, wenn die Leistung eines Messwerts den festgelegten Schwellenwert überschreitet
  11. Optional können Sie Ereignisse für eine bestimmte Firebase-App-ID filtern. Klicken Sie auf Filter hinzufügen und geben Sie die appid an.
  12. 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.

  13. Wählen Sie in der Liste Ereignisziel die Option Cloud Run aus.
  14. Wählen Sie einen Dienst aus.

    Dies ist der Name des Dienstes, der die Ereignisse für den Trigger empfängt. Der Dienst muss sich im selben Projekt wie der Trigger befinden und empfängt Ereignisse als HTTP-POST-Anfragen, die an seinen Root-URL-Pfad (/) gesendet werden, wenn das Ereignis erzeugt wird.

  15. Optional können Sie den Dienst-URL-Pfad angeben, 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, route/subroute.

  16. Klicken Sie auf Erstellen.
  17. 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

Wenn Sie einen gcloud eventarc triggers create-Befehl zusammen mit den erforderlichen und optionalen Flags ausführen, können Sie einen Trigger erstellen.

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

Ersetzen Sie Folgendes:

  • TRIGGER: die ID des Triggers oder eine voll qualifizierte Kennzeichnung.
  • 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) die Region, in der sich der Cloud Run-Zieldienst befindet. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sich der Dienst in derselben Region wie der Trigger befindet.
  • ALERT_TYPE. der Typ der Firebase-Benachrichtigung und kann einer der Folgenden sein:
    • appDistribution.inAppFeedback: Das Ereignis wird gesendet, wenn ein Tester In-App-Feedback für eine bestimmte Anwendung sendet
    • appDistribution.newTesterIosDevice: das Ereignis wird gesendet, wenn ein neues iOS-Tester-Gerät für eine bestimmte App registriert ist.
    • billing.planAutomatedUpdate: Das Ereignis wird gesendet, wenn der Abrechnungstarif für ein Firebase-Projekt automatisch aktualisiert wird. Das ist beispielsweise der Fall, wenn ein Tarif aufgrund von Zahlungsproblemen herabgestuft wird.
    • billing.planUpdate: Das Ereignis wird gesendet, wenn der Abrechnungstarif für ein Firebase-Projekt von einem Nutzer geändert wird. Beispiel: Ein Rechnungskonto wird mit einem Projekt verknüpft oder von diesem getrennt.
    • crashlytics.missingSymbolFile: Das Ereignis wird gesendet, wenn Firebase Crashlytics feststellt, dass es nicht die entsprechenden Fehlerbehebungssymbole hat, um einen eingehenden Absturzbericht zu symbolisieren.
    • crashlytics.newAnrIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer ANR-Fehler (Application not responding, Anwendung reagiert nicht) auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.newFatalIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer schwerwiegender Absturz auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.newNonfatalIssue: Das Ereignis wird gesendet, wenn bei einer Anwendung ein neuer nicht schwerwiegender Fehler auftritt (nicht für nachfolgende, identische Ereignisse).
    • crashlytics.regression: Das Ereignis wird gesendet, wenn eine Anwendung bei einem Problem abstürzt, das für eine frühere Anwendungsversion als geschlossen gekennzeichnet wurde.
    • crashlytics.stabilityDigest: Das Ereignis wird gesendet, wenn eine Benachrichtigung über die häufigsten Trendprobleme in Crashlytics vorhanden ist.
    • crashlytics.velocity: Das Ereignis wird gesendet, wenn ein einzelnes Problem dafür verantwortlich ist, dass eine beträchtliche Anzahl von Anwendungssitzungen abstürzt.
    • performance.threshold: Ereignis wird gesendet, wenn die Leistung eines Messwerts den festgelegten Schwellenwert überschreitet
    Der Operator für ALERT_TYPE muss einer der folgenden sein:
    • Gleich. Beispiel: --event-filters="alerttype=appDistribution.inAppFeedback"
    • Pfadmuster; Beispiel: --event-filters-path-pattern="alerttype=appDistribution.*" oder --event-filters-path-pattern="alerttype=crashlytics.new*".

      Weitere Informationen finden Sie unter Informationen zu Pfadmustern.

  • EVENT_DATA_CONTENT_TYPE: (optional) die Codierung der Ereignisnutzlast. Das kann application/json oder application/protobuf sein. Die Standardcodierung ist application/json.

    Beachten Sie, dass eine im JSON-Format formatierte Ereignisnutzlast größer als eine in Protobuf formatierte ist. Dies kann sich auf die Zuverlässigkeit auswirken, je nach Ereignisziel und Limits der Ereignisgröße. Weitere Informationen finden Sie unter Bekannte Probleme.

  • SERVICE_ACCOUNT_NAME: der Name Ihres nutzerverwalteten Dienstkontos.
  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.

Hinweise:

  • Das Flag --location muss global sein. Weitere Informationen finden Sie unter Eventarc-Standorte.
  • Diese Flags sind erforderlich:

    • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published"
    • --event-filters="alerttype=ALERT_TYPE" oder --event-filters-path-pattern="alerttype=ALERT_TYPE"
  • Optional können Sie Ereignisse für eine bestimmte Firebase-App-ID filtern. Verwenden Sie dazu das Flag --event-filters="appid=APP_ID" und geben Sie eine genaue Übereinstimmung an.

  • Nachdem ein Trigger erstellt wurde, kann der Ereignisfiltertyp nicht mehr geändert werden. Für einen anderen Ereignistyp müssen Sie einen neuen Trigger erstellen.
  • Mit dem Flag --service-account wird die E-Mail-Adresse des IAM-Dienstkontos (Identity and Access Management) angegeben, das mit dem Trigger verknüpft ist.
  • Optional können Sie einen relativen Pfad im Cloud Run-Zieldienst angeben, an den die Ereignisse für den Trigger durch Verwendung des Flags --destination-run-path gesendet werden sollen.

Beispiel:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Dieser Befehl erstellt einen Trigger mit dem Namen helloworld-trigger für das als google.firebase.firebasealerts.alerts.v1.published identifizierte Ereignis und für einen Benachrichtigungstyp crashlytics.velocity.

Terraform

Sie können einen Trigger für ein Cloud Run-Ziel mit Terraform erstellen. Weitere Informationen finden Sie unter Trigger mit Terraform erstellen.

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