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.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Pub/Sub, Cloud Run, Cloud Storage and Cloud Vision APIs.
- 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 auf Projekte, Ordner und Organisationen 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-Werteurope-southwest1
(Madrid) Niedriger CO2-Ausstoßeurope-west1
(Belgien) Niedriger CO2-Ausstoßeurope-west4
(Niederlande) Niedriger CO2-Ausstoß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) Niedriger CO2-Ausstoßus-west1
(Oregon) Niedriger CO2-Ausstoß
Unterliegt Preisstufe 2
africa-south1
(Johannesburg)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-west10
(Berlin) Niedriger CO2-Ausstoßeurope-west12
(Turin)europe-west2
(London, Vereinigtes Königreich) Niedriger CO2-Ausstoßeurope-west3
(Frankfurt, Deutschland) Niedriger CO2-Ausstoßeurope-west6
(Zürich, Schweiz) Niedriger CO2-Ausstoßme-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Niedriger CO2-Ausstoßnorthamerica-northeast2
(Toronto) Niedriger CO2-Ausstoßsouthamerica-east1
(Sao Paulo, Brasilien) Niedriger CO2-Ausstoßsouthamerica-west1
(Santiago, Chile) Niedriger CO2-Ausstoß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.
Artifact Registry-Standard-Repository erstellen
Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Docker-Container-Images:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Ersetzen Sie:
- REPOSITORY durch einen eindeutigen Namen für das Repository.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Cloud Storage-Buckets einrichten
gcloud
Erstellen Sie einen Cloud Storage-Bucket zum Hochladen von Bildern. Dabei sollte INPUT_BUCKET_NAME ein global eindeutiger Bucket-Name sein:
gcloud storage buckets create 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:
gcloud storage buckets create 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.
Wenn Sie stattdessen ein von Nutzern verwaltetes Dienstkonto verwenden, stellen Sie sicher, dass Sie die erforderlichen IAM-Rollen 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.
Wenn Sie stattdessen ein von Nutzern verwaltetes Dienstkonto verwenden, stellen Sie sicher, dass Sie die erforderlichen IAM-Rollen 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: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
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
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: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:
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
Vollständiges 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.
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/
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 Artifact Registry hochladen und in Cloud Run bereitstellen.
So versenden Sie den Code:
Erstellen Sie einen Container und veröffentlichen Sie ihn in Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Dabei ist
pubsub
der Name Ihrer Funktion.Ersetzen Sie:
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Dabei ist
pubsub
der Name Ihrer Funktion.Ersetzen Sie:
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Dabei ist
pubsub
der Name Ihrer Funktion.Ersetzen Sie:
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact 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 REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/imagemagick
Ersetzen Sie:
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Verwenden Sie den gcloud Credential Helper, um Docker für das Übertragen per Push in Ihre Artifact Registry zu autorisieren.
gcloud auth configure-docker
Erstellen Sie Ihren endgültigen Container mit Jib und veröffentlichen Sie ihn in Artifact Registry:
mvn compile jib:build \ -Dimage=REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub \ -Djib.from.image=REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/imagemagick
Ersetzen Sie:
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Führen Sie den folgenden Befehl aus, um den Dienst mit demselben Dienstnamen bereitzustellen, den Sie in der Pub/Sub-Anleitung verwendet haben:
Node.js
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Python
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Go
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Java
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --memory 512M --no-allow-unauthenticated
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:- PROJECT_ID durch Ihre Google Cloud-Projekt-ID
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
- 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.
gcloud
gcloud storage service-agent --project=PROJECT_ID gcloud storage buckets notifications create gs://INPUT_BUCKET_NAME --topic=myRunTopic --payload-format=json
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 gcloud storage 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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
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
- Container-Image aus Artifact Registry löschen
- 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