Kurzanleitung: Cloud Storage-Ereignisse empfangen

In dieser Kurzanleitung wird beschrieben, wie Sie mit Eventarc Cloud Storage Ereignisse in einem nicht authentifizierten (vollständig verwalteten) Cloud Run-Dienst erhalten.

Sie können diese Kurzanleitung mit dem gcloud-Befehlszeilentool ausführen. Eine Anleitung zum Verwenden der Konsole finden Sie unter Konsole zum Empfang von Ereignissen mit Cloud-Audit-Logs verwenden.

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 Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

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

    Aktivieren Sie die APIs

  8. Aktualisieren Sie gcloud-Komponenten:
    gcloud components update
  9. Melden Sie sich mit Ihrem Konto an:

    gcloud auth login
    

  10. 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
    

  11. Aktivieren Sie in Cloud Storage für Cloud-Audit-Logs die Logtypen Administrator Lesen, Daten Lesen und Daten Schreiben:
    1. Lesen Sie die IAM-Richtlinie des Projekts und speichern Sie sie in einer Datei:
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Bearbeiten Sie die Richtlinie in /tmp/policy.yaml, wobei Sie nur die Konfiguration der Audit-Logs zum Datenzugriff hinzufügen oder ändern.

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      
      • Ersetzen Sie EMAIL_ADDRESS durch Ihre E-Mail-Adresse.
    3. Schreiben Sie die neue IAM-Richtlinie:
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      
      Wenn durch den vorangegangenen Befehl ein Konflikt mit einer anderen Änderung gemeldet wird, wiederholen Sie diese Schritte ab Schritt A.
  12. Weisen Sie dem Compute Engine-Dienstkonto die Rolle eventarc.eventReceiver 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:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --role='roles/eventarc.eventReceiver'
    

  13. Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, gewähren Sie dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator:

    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'
    

  14. 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:

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:

  1. Klonen Sie das Repository:

    Go

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

    Java

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

    .NET

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

    Node.js

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

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-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.

  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:

    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:

    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.

gcloud projects delete PROJECT_ID_OR_NUMBER
  • Ersetzen Sie PROJECT_ID_OR_NUMBER durch die Projekt-ID oder Projektnummer.

Nächste Schritte