Kurzanleitung: Cloud Storage-Ereignisse empfangen

Auf dieser Seite wird beschrieben, wie Sie mit Eventarc Ereignisse aus Cloud Storage in einem Cloud Run-Dienst (vollständig verwaltet) empfangen. Sie können diese Kurzanleitung mit der Google Cloud Console oder dem gcloud-Befehlszeilentool durchführen.

In dieser Kurzanleitung werden folgende Schritte erläutert:

  1. Cloud Storage-Bucket als Ereignisquelle erstellen

  2. Ereignisempfängerdienst für Cloud Run (vollständig verwaltet) bereitstellen

  3. Ereignistrigger erstellen

  4. Datei in den Cloud Storage-Bucket hochladen, um ein Ereignis zu erstellen, und in den Cloud Run-Logs (vollständig verwaltet) aufrufen

Hinweis

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

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

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc APIs aktivieren.

    Aktivieren Sie die APIs

  5. Bei Verwendung des gcloud-Tools:
    1. Aktualisieren Sie gcloud-Komponenten:
      gcloud components update
    2. Melden Sie sich mit Ihrem Konto an:

      gcloud auth login
      

    3. Legen Sie die in dieser Kurzanleitung verwendeten Konfigurationsvariablen fest:

      gcloud config set project PROJECT_ID
      gcloud config set run/region us-central1
      gcloud config set run/platform managed
      gcloud config set eventarc/location us-central1
      

    4. Aktivieren Sie in Cloud Storage für Cloud-Audit-Logs die Logtypen Administrator Lesen, Daten Lesen und Daten Schreiben:

      Zur Cloud-Audit-Logs-Konsole

    5. Weisen Sie dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator zu:

      export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
      
      gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
          --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\
          --role='roles/iam.serviceAccountTokenCreator'
      

    6. Weisen Sie dem Compute Engine-Dienstkonto die Rolle eventarc.eventReceiver zu:

      gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
          --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
          --role='roles/eventarc.eventReceiver'
      

    7. Laden Sie das Git-Quellcodeverwaltungstool herunter und installieren Sie es.

Cloud Storage-Bucket erstellen

In dieser Kurzanleitung wird Cloud Storage als Ereignisquelle verwendet. So erstellen Sie einen Storage-Bucket:

Console

  1. Wechseln Sie in der Cloud Console zu Cloud Storage.

    Cloud Storage aufrufen

  2. Klicken Sie auf Bucket erstellen.

    Neuer Bucket

  3. Geben Sie die Bucket-Informationen ein und klicken Sie zum Ausführen der einzelnen Schritte jeweils auf Weiter:

    • Geben Sie einen eindeutigen Namen ein. Beispiel: eventarcbucket.
    • Wählen Sie Region als Standorttyp aus.
    • Wählen Sie us-central1 (Iowa) als Standort aus.
    • Wählen Sie Standard als Standardspeicherklasse aus.
    • Wählen Sie unter Zugriffssteuerung die Option Einheitlich aus.
  4. Klicken Sie auf Erstellen.

Befehlszeile

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

Sobald die Ereignisquelle erstellt wurde, können Sie den Ereignisempfänger in Cloud Run (vollständig verwaltet) bereitstellen.

Ereignisempfängerdienst in Cloud Run (vollständig verwaltet) bereitstellen

Stellen Sie einen (vollständig verwalteten) Cloud Run-Dienst bereit, der Ereignisse empfängt und protokolliert. So stellen Sie den Beispiel-Ereignisempfängerdienst bereit:

Console

  1. Klonen Sie das Repository python-docs-samples in Ihrem GitHub-Konto:

    1. Rufen Sie in GitHub GoogleCloudPlatform/python-docs-samples auf.

    2. Klicken Sie auf Fork.

      Screenshot der Schaltfläche "Fork"

    3. Wählen Sie bei entsprechender Aufforderung den Speicherort für das Repository aus.

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

    Öffnen Sie Cloud Run.

  3. Klicken Sie auf Dienst erstellen, um das Formular Dienst erstellen aufzurufen.

    create-service-page

  4. Wählen Sie Cloud Run (vollständig verwaltet) aus.

  5. Wählen Sie us-central1(Iowa) als Region für den Dienst aus.

  6. Geben Sie den gewünschten Dienstnamen ein. z. B. helloworld-events.

  7. Klicken Sie auf Next (Weiter).

  8. Wählen Sie Neue Überarbeitungen aus dem Quell-Repository kontinuierlich bereitstellen aus.

  9. Klicken Sie auf Mit Cloud Build einrichten, um das Formular Mit Cloud Build einrichten zu öffnen.

    Seite "Mit Cloud Build einrichten"

    Im Formular Mit Cloud Build einrichten:

    1. Aktivieren Sie bei entsprechender Aufforderung die Cloud Build API und die Container Analysis API.
    2. Wählen Sie GitHub als Repository-Anbieter aus.

    3. Wenn Sie dazu aufgefordert werden, klicken Sie auf Google Cloud Build installieren.

    4. Wählen Sie das von Ihnen verzweigte GitHub-Repository, python-docs-samples, als Repository aus.

    5. Klicken Sie auf Next (Weiter).

    6. Geben Sie im Feld Branch den Wert ^master$ ein.

    7. Wählen Sie als Build-Typ die Option Dockerfile aus und geben Sie den Speicherort des Dockerfiles, eventarc/audit-storage/Dockerfile, an.

    8. Klicken Sie auf Speichern.

  10. Klicken Sie im Formular Dienst erstellen auf Weiter.

  11. Gehen Sie im Abschnitt Konfigurieren, wie dieser Dienst ausgelöst wird so vor:

    • Wählen Sie Gesamten Traffic zulassen aus.

    • Wählen Sie Nicht authentifizierte Aufrufe zulassen aus.

  12. Klicken Sie optional auf Trigger hinzufügen und erstellen Sie einen Trigger oder erstellen Sie einen Trigger, nachdem Sie einen Dienst erstellt haben. Weitere Informationen zum Erstellen eines Triggers finden Sie unter Eventarc-Trigger erstellen.

  13. Klicken Sie auf Erstellen.

Befehlszeile

  1. Klonen Sie das Repository:

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    
  2. Erstellen Sie den Container und laden Sie ihn in Cloud Build hoch:

    gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. Stellen Sie das Container-Image für Cloud Run (vollständig verwaltet) bereit:

    gcloud run deploy helloworld-events \
        --image gcr.io/$(gcloud config get-value project)/helloworld-events \
        --allow-unauthenticated
    

    Wenn die Bereitstellung erfolgreich war, wird in der Befehlszeile die Dienst-URL angezeigt.

Sie haben den Ereignisempfänger mithilfe von helloworld-events in Cloud Run (vollständig verwaltet) bereitgestellt. Nun können Sie einen Trigger einrichten.

Eventarc-Trigger erstellen

Der Eventarc-Trigger sendet Ereignisse aus dem Cloud Storage-Bucket an den Cloud Run-Dienst (vollständig verwaltet) helloworld-events.

Console

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

    Öffnen Sie Cloud Run.

  2. Klicken Sie in der Liste der Dienste auf den von Ihnen erstellten Dienst, um die Seite Dienstdetails aufzurufen.

  3. Klicken Sie auf den Tab Trigger und dann auf Trigger hinzufügen.

  4. Wählen Sie in der Drop-down-Liste Ereignis auswählen die Option Cloud Storage > storage.objects.create aus.

  5. Wählen Sie im Feld Ereignisse erhalten aus die Option Einzelne Region aus.

  6. Aktivieren Sie Cloud-Audit-Logs für den Dienst storage.googleapis.com.

  7. Wenn Sie dazu aufgefordert werden, weisen Sie dem Compute Engine-Dienstkonto die Rolle eventarc.eventReceiver und dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator zu.

    Neuen Trigger einrichten

  8. Klicken Sie auf Speichern.

Befehlszeile

  1. Erstellen Sie einen Trigger, der Cloud Storage-Ereignisse filtert, die das Compute Engine-Standarddienstkonto des Google Cloud-Projekts verwenden:

    gcloud eventarc triggers create events-quickstart-trigger \
        --destination-run-service=helloworld-events \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
    

    Dadurch wird ein Trigger mit dem Namen events-quickstart-trigger erstellt.

  2. Führen Sie diesen Befehl aus, um zu prüfen, ob events-quickstart-trigger erfolgreich erstellt wurde:

    gcloud eventarc triggers list --location=us-central1
    

    events-quickstart-trigger wird mit dem Ziel helloworld-events angezeigt.

Ereignisse erstellen und ansehen

  1. So erstellen Sie ein Ereignis:

    Console

    1. Erstellen Sie eine Textdatei mit dem Dateinamen random.txt und dem Text "Hello World".

    2. Wechseln Sie in der Cloud Console zu Cloud Storage.

      Cloud Storage aufrufen

    3. Wählen Sie den von Ihnen erstellten Storage-Bucket aus.

    4. Klicken Sie auf dem Tab Objekte auf Dateien hochladen und laden Sie die Datei random.txt hoch.

    Befehlszeile

    Laden Sie eine Datei in Cloud Storage hoch:

    echo "Hello World" > random.txt
    gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt
    

    Beim Upload wird ein Ereignis erstellt und der Cloud Run-Dienst (vollständig verwaltet) protokolliert die Nachricht des Ereignisses.

  2. So rufen Sie den Logeintrag auf:

    Console

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

      Öffnen Sie Cloud Run.

    2. Klicken Sie in der Liste der Dienste auf den Namen des erstellten Dienstes, um die zugehörige Seite Dienstdetails aufzurufen.

    3. Klicken Sie auf den Tab Logs, um die Anfrage- und Containerlogs für alle Überarbeitungen des Dienstes abzurufen. Sie können nach Logschweregrad filtern.

    4. Suchen Sie nach einem Logeintrag wie dem folgenden:

      Trigger-Logs

    Befehlszeile

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    2. Suchen Sie nach einem Logeintrag wie dem folgenden:

      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      

      Dabei ist BUCKET_NAME der Name des Cloud Storage-Buckets.

Glückwunsch! Sie haben erfolgreich einen Ereignisempfänger-Dienst für Cloud Run (vollständig verwaltet) bereitgestellt, einen Eventarc-Trigger erstellt, ein Ereignis aus Cloud Storage generiert und es in den Cloud Run-Logs (vollständig verwaltet) angezeigt.

Bereinigen

Für Cloud Run fallen keine Kosten an, wenn der Dienst nicht verwendet wird. Allerdings können für das Speichern des Container-Images in Container Registry, die Eventarc-Ressourcen und das Speichern von Dateien im Cloud Storage-Bucket Gebühren berechnet werden.

Sie können das Image löschen und Ihren Storage-Bucket löschen. So löschen Sie den Eventarc-Trigger:

gcloud eventarc triggers delete events-quickstart-trigger

Alternativ können Sie Ihr Google Cloud-Projekt löschen, um wiederkehrende Gebühren zu vermeiden. Durch das Löschen des Cloudprojekts wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte