In dieser Anleitung erfahren Sie, wie Sie mit Cloud Run, der Cloud Vision API und ImageMagick anstößige Bilder erkennen und unkenntlich machen, die in einen Cloud Storage-Bucket hochgeladen wurden. Diese Anleitung baut auf der Anleitung Pub/Sub mit Cloud Run verwenden auf.
In dieser Anleitung erfahren Sie, wie Sie eine vorhandene Beispielanwendung ändern. Sie können auch das vollständige Beispiel herunterladen.
Ziele
- Einen asynchronen Datenverarbeitungsdienst in Cloud Run schreiben, erstellen und bereitstellen
- Den Dienst aufrufen, indem Sie eine Datei in Cloud Storage hochladen und eine Pub/Sub-Nachricht erstellen
- Gewalttätige oder nicht jugendfreie Inhalte mit der Cloud Vision API erkennen
- Anstößige Bilder mit ImageMagick unkenntlich machen
- Den Dienst testen, indem Sie ein Bild eines fleischfressenden Zombies hochladen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
- 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.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist
-
Cloud Run and Cloud Vision APIs aktivieren.
- Installieren und initialisieren Sie die gcloud CLI.
- Aktualisieren Sie die Komponenten:
gcloud components update
- Richten Sie ein Pub/Sub-Thema, ein sicheres Push-Abo und einen ersten Cloud Run-Dienst ein, um Nachrichten zu verarbeiten. Folgen Sie dazu der Pub/Sub-Anleitung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Anleitung benötigen:
-
Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor
) -
Cloud Run-Administrator (
roles/run.admin
) -
Zugriffsberechtigter für Logbetrachtung (
roles/logging.viewAccessor
) -
Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
) -
Pub/Sub-Administrator (
roles/pubsub.admin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) -
Storage-Administrator (
roles/storage.admin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
gcloud-Standardeinstellungen einrichten
So konfigurieren Sie gcloud mit Standardeinstellungen für den Cloud Run-Dienst:
Legen Sie ein Standardprojekt fest:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch den Namen des Projekts, das Sie für diese Anleitung erstellt haben.
Konfigurieren Sie gcloud für die von Ihnen ausgewählte Region:
gcloud config set run/region REGION
Ersetzen Sie REGION durch die unterstützte Cloud Run-Region Ihrer Wahl.
Cloud Run-Standorte
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden.
Die gemeinsame Nutzung von Google Cloud-Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
asia-east1
(Taiwan)asia-northeast1
(Tokio)asia-northeast2
(Osaka)europe-north1
(Finnland)Niedriger CO2-Wert
europe-southwest1
(Madrid)Niedriger CO2-Ausstoß
europe-west1
(Belgien)Niedriger CO2-Ausstoß
europe-west4
(Niederlande)europe-west8
(Mailand)europe-west9
(Paris)Niedriger CO2-Ausstoß
me-west1
(Tel Aviv)us-central1
(Iowa)Niedriger CO2-Ausstoß
us-east1
(South Carolina)us-east4
(Northern Virginia)us-east5
(Columbus)us-south1
(Dallas)us-west1
(Oregon)Niedriger CO2-Ausstoß
Unterliegt Preisstufe 2
asia-east2
(Hongkong)asia-northeast3
(Seoul, Südkorea)asia-southeast1
(Singapur)asia-southeast2
(Jakarta)asia-south1
(Mumbai, Indien)asia-south2
(Delhi, Indien)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warschau, Polen)europe-west12
(Turin)europe-west2
(London, Vereinigtes Königreich)europe-west3
(Frankfurt, Deutschland)europe-west6
(Zürich, Schweiz)Niedriger CO2-Ausstoß
me-central1
(Doha)northamerica-northeast1
(Montreal)Niedriger CO2-Ausstoß
northamerica-northeast2
(Toronto)Niedriger CO2-Ausstoß
southamerica-east1
(Sao Paulo, Brasilien)Niedriger CO2-Ausstoß
southamerica-west1
(Santiago, Chile)us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie dessen Region im Cloud Run-Dashboard der Google Cloud Console aufrufen.
Die Reihenfolge der Vorgänge verstehen
Der Datenfluss in dieser Anleitung umfasst die folgenden Schritte:
- Ein Nutzer lädt ein Bild in einen Cloud Storage-Bucket hoch.
- Cloud Storage veröffentlicht eine Nachricht über die neue Datei an Pub/Sub.
- Pub/Sub überträgt die Nachricht an den Cloud Run-Dienst.
- Der Cloud Run-Dienst ruft die Bilddatei ab, auf die in der Pub/Sub-Nachricht verwiesen wird.
- Der Cloud Run-Dienst verwendet die Cloud Vision API, um das Bild zu analysieren.
- Wenn Inhalte mit Darstellungen von Gewalt oder Inhalte nur für Erwachsene erkannt werden, nutzt der Cloud Run-Dienst ImageMagick, um das Bild unkenntlich zu machen.
- Der Cloud Run-Dienst lädt das unkenntlich gemachte Bild zur Verwendung in einen anderen Cloud Storage-Bucket hoch.
Die nachfolgende Verwendung des unkenntlich gemachten Bildes bleibt dem Leser als Übung überlassen.
Cloud Storage-Buckets einrichten
Befehlszeile
Erstellen Sie einen Cloud Storage-Bucket zum Hochladen von Bildern. Dabei sollte INPUT_BUCKET_NAME ein global eindeutiger Bucket-Name sein:
gsutil mb gs://INPUT_BUCKET_NAME
Der Cloud Run-Dienst liest nur aus diesem Bucket.
Erstellen Sie einen zweiten Cloud Storage-Bucket zum Ablegen unkenntlich gemachter Bilder. Dabei sollte BLURRED_BUCKET_NAME ein global eindeutiger Bucket-Name sein:
gsutil mb gs://BLURRED_BUCKET_NAME
Der Cloud Run-Dienst lädt unkenntlich gemachte Bilder in diesen Bucket hoch. Durch die Verwendung eines separaten Buckets wird verhindert, dass verarbeitete Bilder den Dienst wieder auslösen.
Cloud Run-Überarbeitungen werden standardmäßig als Compute Engine-Standarddienstkonto ausgeführt. Das Compute Engine-Standarddienstkonto hat die IAM-Rolle Projektbearbeiter, die Lese- und Schreibberechtigungen für alle Ressourcen in Ihrem Google Cloud-Projekt gewährt. Wenn Sie stattdessen ein von Nutzern verwaltetes Dienstkonto verwenden, stellen Sie sicher, dass Sie die erforderliche(n) IAM-Rolle(n) zugewiesen haben, sodass es die Berechtigung
storage.objects.get
zum Lesen von INPUT_BUCKET_NAME und die Berechtigungstorage.objects.create
zum Hochladen in BLURRED_BUCKET_NAME hat.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Erstellen Sie zwei Cloud Storage-Buckets: einen zum Hochladen von Originalbildern und einen weiteren zum Hochladen von unkenntlich gemachten Bildern mit dem Cloud Run-Dienst.
Fügen Sie der vorhandenen Datei main.tf
Folgendes hinzu, um beide Cloud Storage-Buckets mit global eindeutigen Namen zu erstellen:
Cloud Run-Überarbeitungen werden standardmäßig als Compute Engine-Standarddienstkonto ausgeführt. Das Compute Engine-Standarddienstkonto hat die IAM-Rolle Projektbearbeiter, die Lese- und Schreibberechtigungen für alle Ressourcen in Ihrem Google Cloud-Projekt gewährt. Wenn Sie stattdessen ein von Nutzern verwaltetes Dienstkonto verwenden, stellen Sie sicher, dass Sie die erforderliche(n) IAM-Rolle(n) zugewiesen haben, sodass es die Berechtigung storage.objects.get
zum Lesen von google_storage_bucket.imageproc_input
und die Berechtigung storage.objects.create
zum Hochladen in google_storage_bucket.imageproc_output
hat.
In den folgenden Schritten erstellen Sie einen Dienst, der Benachrichtigungen über Dateiuploads in den INPUT_BUCKET_NAME verarbeitet, und stellen diesen bereit. Sie aktivieren die Benachrichtigungszustellung, nachdem Sie den Dienst bereitgestellt und getestet haben, um einen vorzeitigen Aufruf des neuen Dienstes zu vermeiden.
Beispielcode der Pub/Sub-Anleitung ändern
Diese Anleitung baut auf dem Code auf, der in der Pub/Sub-Anleitung zusammengestellt wurde. Wenn Sie diese Anleitung noch nicht abgeschlossen haben, tun Sie dies jetzt, überspringen Sie die Bereinigungsschritte und kehren Sie dann hierher zurück, um Bildverarbeitungsverhalten hinzuzufügen.
Bildverarbeitungscode hinzufügen
Der Bildverarbeitungscode ist zur besseren Lesbarkeit und zum einfacheren Testen von der Anfrageverarbeitung getrennt. So fügen Sie einen Bildverarbeitungscode hinzu:
Wechseln Sie in das Verzeichnis des Beispielcodes der Pub/Sub-Anleitung.
Fügen Sie Code hinzu, um die Bildverarbeitungsabhängigkeiten zu importieren, einschließlich Bibliotheken für die Integration in Google Cloud-Dienste, ImageMagick und das Dateisystem.
Node.js
Öffnen Sie eine neueimage.js
-Datei in Ihrem Editor und kopieren Sie Folgendes:Python
Öffnen Sie eine neueimage.py
-Datei in Ihrem Editor und kopieren Sie Folgendes:Einfach loslegen (Go)
Öffnen Sie eine neueimagemagick/imagemagick.go
-Datei in Ihrem Editor und kopieren Sie Folgendes:Java
Öffnen Sie eine neuesrc/main/java/com/example/cloudrun/ImageMagick.java
-Datei in Ihrem Editor und kopieren Sie Folgendes:Fügen Sie Code hinzu, um eine Pub/Sub-Nachricht als Ereignisobjekt zu empfangen und die Bildverarbeitung zu steuern.
Das Ereignis enthält Daten zum ursprünglich hochgeladenen Bild. Dieser Code bestimmt, ob das Bild unkenntlich gemacht werden muss. Die Ergebnisse einer Cloud Vision-Analyse werden dazu auf gewalttätige Inhalte oder Inhalte nur für Erwachsene überprüft.
Node.js
Python
Einfach loslegen (Go)
Java
Rufen Sie das Bild, auf das verwiesen wird, aus dem oben erstellten Cloud Storage-Eingabe-Bucket auf, verwenden Sie ImageMagick, um das Bild mit einem Effekt zum Unkenntlichmachen zu transformieren, und laden Sie das Ergebnis in den Ausgabe-Bucket hoch.
Node.js
Python
Einfach loslegen (Go)
Java
Bildverarbeitung in den Pub/Sub-Beispielcode einbinden
So ändern Sie den vorhandenen Dienst zum Einbinden des Bildverarbeitungscodes:
Fügen Sie neue Abhängigkeiten für Ihren Dienst hinzu, einschließlich der Cloud Vision- und Cloud Storage-Clientbibliotheken:
Node.js
npm install --save gm @google-cloud/storage @google-cloud/vision
Python
Fügen Sie die erforderlichen Clientbibliotheken hinzu, damit Ihrrequirements.txt
ungefähr so aussieht:Einfach loslegen (Go)
Die Go-Beispielanwendung verwendet Go-Module. Die oben in derimagemagick/imagemagick.go
-Importanweisung hinzugefügten neuen Abhängigkeiten werden automatisch beim nächsten Befehl, der sie benötigt, heruntergeladen.Java
Fügen Sie unter<dependencyManagement>
inpom.xml
die folgende Abhängigkeit hinzu: Fügen Sie unter<dependencies>
impom.xml
die folgenden Abhängigkeiten hinzu:Fügen Sie das ImageMagick-Systempaket zu Ihrem Container hinzu, indem Sie
Dockerfile
unter der AnweisungFROM
ändern. Wenn Sie ein mehrstufiges Dockerfile mit mehreren Phasen verwenden, platzieren Sie dieses in der letzten Phase.Debian/Ubuntu Alpine Weitere Informationen zum Arbeiten mit Systempaketen in Ihrem Cloud Run-Dienst finden Sie in der Anleitung zum Verwenden von Systempaketen.
Ersetzen Sie den vorhandenen Pub/Sub-Nachrichtenverarbeitungscode durch einen Funktionsaufruf für unsere neue Logik zum Unkenntlichmachen.
Node.js
Dieapp.js
-Datei definiert die Express.js-Anwendung und bereitet empfangene Pub/Sub-Nachrichten für die Verwendung vor. Nehmen Sie die folgenden Änderungen vor:- Fügen Sie Code hinzu, um die neue
image.js
-Datei zu importieren - Entfernen Sie den vorhandenen „Hello-World”-Code aus der Route
- Fügen Sie Code hinzu, um die Pub/Sub-Nachricht weiter zu validieren
Fügen Sie Code hinzu, um die neue Bildverarbeitungsfunktion aufzurufen
Wenn Sie fertig sind, sieht der Code so aus:
Python
Die Dateimain.py
definiert die Flask-Anwendung und bereitet empfangene Pub/Sub-Nachrichten für die Verwendung vor. Nehmen Sie die folgenden Änderungen vor:- Fügen Sie Code hinzu, um die neue
image.py
-Datei zu importieren - Entfernen Sie den vorhandenen „Hello-World”-Code aus der Route
- Fügen Sie Code hinzu, um die Pub/Sub-Nachricht weiter zu validieren
Fügen Sie Code hinzu, um die neue Bildverarbeitungsfunktion aufzurufen
Wenn Sie fertig sind, sieht der Code so aus:
Einfach loslegen (Go)
Die Dateimain.go
definiert den HTTP-Dienst und bereitet empfangene Pub/Sub-Nachrichten zur Verwendung vor. Nehmen Sie die folgenden Änderungen vor:- Fügen Sie Code hinzu, um die neue
imagemagick.go
-Datei zu importieren - Entfernen Sie den vorhandenen „Hello-World”-Code aus dem Handler
- Fügen Sie Code hinzu, um die Pub/Sub-Nachricht weiter zu validieren
- Fügen Sie Code hinzu, um die neue Bildverarbeitungsfunktion aufzurufen
Java
Die DateiPubSubController.java
definiert den Controller, der HTTP-Anfragen verarbeitet und empfangene Pub/Sub-Nachrichten für die Verwendung vorbereitet. Nehmen Sie die folgenden Änderungen vor:- Fügen Sie die neuen Importe hinzu
- Entfernen Sie den vorhandenen „Hello-World”-Code vom Controller
- Fügen Sie Code hinzu, um die Pub/Sub-Nachricht weiter zu validieren
- Fügen Sie Code hinzu, um die neue Bildverarbeitungsfunktion aufzurufen
- Fügen Sie Code hinzu, um die neue
Das vollständige Beispiel herunterladen
So rufen Sie das vollständige Codebeispiel für die Bildverarbeitung ab:
Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Einfach loslegen (Go)
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:
Node.js
cd nodejs-docs-samples/run/image-processing/
Python
cd python-docs-samples/run/image-processing/
Einfach loslegen (Go)
cd golang-samples/run/image-processing/
Java
cd java-docs-samples/run/image-processing/
Code versenden
Das Versenden von Code erfolgt in drei Schritten: ein Container-Image mit Cloud Build erstellen, in die Container Registry hochladen und in Cloud Run bereitstellen.
So versenden Sie den Code:
Erstellen Sie einen Container und veröffentlichen Sie ihn in Container Registry.
Node.js
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Python
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Einfach loslegen (Go)
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
pubsub
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Java
In diesem Beispiel wird Jib verwendet, um Docker-Images mit gängigen Java-Tools zu erstellen. Jib optimiert Container-Builds, ohne dass ein Dockerfile erforderlich ist oder Docker installiert sein muss. Weitere Informationen zum Erstellen von Java-Containern mit JibKonfigurieren und erstellen Sie mit dem Dockerfile ein Basis-Image mit den installierten Systempaketen, um das Standard-Basis-Image von Jib zu überschreiben:
gcloud builds submit --tag gcr.io/PROJECT_ID/imagemagick
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID.
Verwenden Sie das gcloud Credential Helper, um Docker für das Übertragen per Push in Ihre Container Registry zu autorisieren.
gcloud auth configure-docker
Erstellen Sie Ihren endgültigen Container mit Jib und veröffentlichen Sie ihn in Container Registry:
mvn compile jib:build \ -Dimage=gcr.io/PROJECT_ID/pubsub \ -Djib.from.image=gcr.io/PROJECT_ID/imagemagick
Dabei ist PROJECT_ID Ihre Google Cloud-Projekt-ID.
Führen Sie den folgenden Befehl aus, um den Dienst mit demselben Dienstnamen bereitzustellen, den Sie in der Cloud Pub/Sub-Anleitung verwendet haben:
Node.js
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Python
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Einfach loslegen (Go)
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Java
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --memory 512M --no-allow-unauthenticated
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
pubsub
ist der Containername undpubsub-tutorial
der Name des Dienstes. Beachten Sie, dass das Container-Image für den Dienst und die Region (Cloud Run) bereitgestellt wird, die Sie zuvor unter gcloud-Standardeinstellungen einrichten konfiguriert haben.Ersetzen Sie BLURRED_BUCKET_NAME durch Ihren Cloud Storage-Bucket, den Sie zuvor erstellt haben, um unkenntlich gemachte Bilder zum Festlegen der Umgebungsvariablen zu erhalten.
Das Flag
--no-allow-unauthenticated
beschränkt den nicht authentifizierten Zugriff auf den Dienst. Wenn Sie den Dienst privat nutzen, können Sie sich bei der Authentifizierung von Anfragen auf die automatische Pub/Sub-Integration von Cloud Run verlassen. Weitere Informationen zur Konfiguration finden Sie unter In Pub/Sub integrieren. Informationen zur IAM-basierten Authentifizierung finden Sie unter Zugriff verwalten.Warten Sie, bis die Bereitstellung abgeschlossen ist. Dies kann ungefähr eine halbe Minute dauern. Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt.
Benachrichtigungen aus Cloud Storage aktivieren
Konfigurieren Sie Cloud Storage so, dass eine Nachricht in einem Pub/Sub-Thema immer dann veröffentlicht wird, wenn eine Datei, die als Objekt bezeichnet wird, hochgeladen oder geändert wird. Senden Sie die Benachrichtigung an das zuvor erstellte Thema, damit beim Hochladen neuer Dateien der Dienst aufgerufen wird.
Befehlszeile
gsutil kms serviceaccount -p PROJECT_ID gsutil notification create -t myRunTopic -f json gs://INPUT_BUCKET_NAME
Der gsutil-Befehl wird als Teil des Google Cloud CLI installiert. myRunTopic
ist das Thema, das Sie in der vorherigen Anleitung erstellt haben.
Ersetzen Sie INPUT_BUCKET_NAME durch den Namen, den Sie beim Erstellen der Buckets verwendet haben.
Weitere Informationen zu Storage-Bucket-Benachrichtigungen finden Sie unter Benachrichtigungen zu Objektänderungen.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Zum Aktivieren von Benachrichtigungen muss das für das Projekt eindeutige Cloud Storage-Dienstkonto vorhanden sein und die IAM-Berechtigung pubsub.publisher
für das Pub/Sub-Thema haben. Fügen Sie der vorhandenen Datei main.tf
Folgendes hinzu, um diese Berechtigung zu erteilen und eine Cloud Storage-Benachrichtigung zu erstellen:
Testen
Laden Sie ein anstößiges Bild hoch, z. B. dieses Bild eines fleischfressenden Zombies:
curl -o zombie.jpg https://cdn.pixabay.com/photo/2015/09/21/14/24/zombie-949916_960_720.jpg gsutil cp zombie.jpg gs://INPUT_BUCKET_NAME
Dabei ist INPUT_BUCKET_NAME der Cloud Storage-Bucket, den Sie zuvor zum Hochladen von Bildern erstellt haben.
Rufen Sie die Dienstlogs auf:
- Rufen Sie die Cloud Run-Seite in der Google Cloud Console auf.
- Klicken Sie auf den Dienst
pubsub-tutorial
. - Wählen Sie den Tab Logs aus. Es kann einige Momente dauern, bis Logs angezeigt werden. Falls sie nicht sofort angezeigt werden, warten Sie kurz ab und sehen Sie dann noch einmal nach.
Suchen Sie nach der Nachricht
Blurred image: zombie.png
.Sie können die unkenntlich gemachten Bilder im zuvor erstellten Cloud Storage-Bucket BLURRED_BUCKET_NAME ansehen. Suchen Sie dazu den Bucket auf der Cloud Storage-Seite in der Google Cloud Console.
Bereinigen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Anleitungsressourcen löschen
Löschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben:
gcloud run services delete SERVICE-NAME
Dabei ist SERVICE-NAME der von Ihnen ausgewählte Dienstname.
Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.
Entfernen Sie die Konfiguration der Standardregion gcloud, die Sie während der Einrichtung für die Anleitung hinzugefügt haben:
gcloud config unset run/region
Entfernen Sie die Projektkonfiguration:
gcloud config unset project
Löschen Sie sonstige Google Cloud-Ressourcen, die in dieser Anleitung erstellt wurden:
- Löschen Sie das Pub/Sub-Thema
myRunTopic
. - Löschen Sie das Pub/Sub-Abo
myRunSubscription
- Löschen Sie das Container-Image mit dem Namen
gcr.io/PROJECT_ID/pubsub
aus Container Registry - Löschen Sie das Aufrufer-Dienstkonto
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
- Löschen Sie die Cloud Storage-Buckets, die für die Platzhalter
INPUT_BUCKET_NAME
undBLURRED_BUCKET_NAME
erstellt wurden
- Löschen Sie das Pub/Sub-Thema
Nächste Schritte
- Weitere Informationen zum Speichern von Daten mit Cloud Run über Cloud Storage
- Erfahren Sie, wie Sie mit der Cloud Vision API neben anstößigen Inhalten auch andere Dinge erkennen
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center