En este instructivo, se demuestra cómo usar Cloud Run, ImageMagick y la API de Cloud Vision para detectar y difuminar imágenes ofensivas subidas a un bucket de Cloud Storage. Este instructivo se basa en el instructivo Usa Pub/Sub con Cloud Run.
En este instructivo, se explica cómo modificar una app de muestra existente. También puedes descargar la muestra completa si lo deseas.
Objetivos
- Escribir, compilar y, luego, implementar un servicio de procesamiento de datos asíncrono en Cloud Run
- Invocar el servicio mediante la carga de un archivo a Cloud Storage y la creación de un mensaje de Pub/Sub
- Usar la API de Cloud Vision para detectar contenido violento o destinado a adultos
- Usar ImageMagick para difuminar imágenes ofensivas
- Probar el servicio mediante la carga de una imagen de un zombi que come carne humana
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- 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.
- Instala e inicializa la CLI de gcloud.
- Actualiza los componentes, como se indica a continuación:
gcloud components update
- Configura un tema de Pub/Sub, una suscripción de envío segura y un servicio de Cloud Run inicial para controlar los mensajes de acuerdo con el instructivo Usa Pub/Sub.
Roles obligatorios
Si quieres obtener los permisos que necesitas para completar el instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Editor de Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrador de Cloud Run (
roles/run.admin
) -
Descriptor de acceso de vista de registros (
roles/logging.viewAccessor
) -
Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin
) -
Administrador de Pub/Sub (
roles/pubsub.admin
) -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) -
Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Administrador de almacenamiento (
roles/storage.admin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Configura los valores predeterminados de gcloud
A fin de configurar gcloud con los valores predeterminados para el servicio de Cloud Run, sigue estos pasos:
Configura el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el nombre del proyecto que creaste para este instructivo.
Configura gcloud en la región que elegiste:
gcloud config set run/region REGION
Reemplaza REGION por la región de Cloud Run compatible que prefieras.
Ubicaciones de Cloud Run
Cloud Run es regional, lo que significa que la infraestructura que ejecuta los servicios se ubica en una región específica, y Google la administra para que esté disponible de manera redundante en todas las zonas de esa región.
El cumplimiento de los requisitos de latencia, disponibilidad o durabilidad es el factor principal para seleccionar la región en la que se ejecutan los servicios de Cloud Run.
Por lo general, puedes seleccionar la región más cercana a los usuarios, pero debes considerar la ubicación de los otros productos de Google Cloud que usa el servicio de Cloud Run.
Si usas productos de Google Cloud en varias ubicaciones, la latencia y el costo del servicio pueden verse afectados.
Cloud Run está disponible en las siguientes regiones:
Sujetas a los Precios del nivel 1
asia-east1
(Taiwán)asia-northeast1
(Tokio)asia-northeast2
(Osaka)europe-north1
(Finlandia) Bajo nivel de CO2europe-southwest1
(Madrid) Bajo nivel de CO2europe-west1
(Bélgica) Bajo nivel de CO2europe-west4
(Países Bajos) Bajo nivel de CO2europe-west8
(Milán)europe-west9
(París) Bajo nivel de CO2me-west1
(Tel Aviv)us-central1
(Iowa) Bajo nivel de CO2us-east1
(Carolina del Sur)us-east4
(Virginia del Norte)us-east5
(Columbus)us-south1
(Dallas) Bajo nivel de CO2us-west1
(Oregón) Bajo nivel de CO2
Sujetas a los Precios del nivel 2
africa-south1
(Johannesburgo)asia-east2
(Hong Kong)asia-northeast3
(Seúl, Corea del Sur)asia-southeast1
(Singapur)asia-southeast2
(Yakarta)asia-south1
(Bombay, India)asia-south2
Delhi (India)australia-southeast1
(Sídney)australia-southeast2
(Melbourne)europe-central2
(Varsovia, Polonia)europe-west10
(Berlín) Bajo nivel de CO2europe-west12
(Turín)europe-west2
(Londres, Reino Unido) Bajo nivel de CO2europe-west3
(Fráncfort, Alemania) Bajo nivel de CO2europe-west6
(Zúrich, Suiza) Bajo nivel de CO2me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Bajo nivel de CO2northamerica-northeast2
(Toronto) Bajo nivel de CO2southamerica-east1
(São Paulo, Brasil) Bajo nivel de CO2southamerica-west1
(Santiago, Chile) Bajo nivel de CO2us-west2
(Los Ángeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si ya creaste un servicio de Cloud Run, puedes ver la región en el panel de Cloud Run en la consola de Google Cloud.
Comprende la secuencia de operaciones
El flujo de datos en este instructivo sigue estos pasos:
- Un usuario sube una imagen a un bucket de Cloud Storage.
- Cloud Storage publica un mensaje sobre el archivo nuevo en Pub/Sub.
- Pub/Sub envía el mensaje al servicio de Cloud Run.
- El servicio de Cloud Run recupera el archivo de imagen al que se hace referencia en el mensaje de Pub/Sub.
- El servicio de Cloud Run usa la API de Cloud Vision para analizar la imagen.
- Si se detecta contenido violento o para adultos, el servicio de Cloud Run usa ImageMagick a fin de difuminar la imagen.
- El servicio de Cloud Run sube la imagen difuminada a otro bucket de Cloud Storage para usarla.
El uso posterior de la imagen difuminada se deja como un ejercicio para el lector.
Crea un repositorio estándar de Artifact Registry
Crea un repositorio estándar de Artifact Registry para almacenar tu imagen de contenedor:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Reemplaza lo siguiente:
- REPOSITORY por un nombre único para el repositorio.
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Configura buckets de Cloud Storage
gcloud
Crea un bucket de Cloud Storage para subir imágenes, en el que INPUT_BUCKET_NAME es un nombre de bucket único a nivel global:
gcloud storage buckets create gs://INPUT_BUCKET_NAME
El servicio de Cloud Run solo lee desde este bucket.
Crea un segundo depósito de Cloud Storage para recibir imágenes difuminadas, en el que BLURRED_BUCKET_NAME es un nombre de depósito único a nivel global:
gcloud storage buckets create gs://BLURRED_BUCKET_NAME
El servicio de Cloud Run sube imágenes difuminadas a este bucket. Si usas un bucket diferente, evitarás que las imágenes procesadas vuelvan a activar el servicio.
De forma predeterminada, las revisiones de Cloud Run se ejecutan como la cuenta de servicio predeterminada de Compute Engine.
Si, en cambio, usas una cuenta de servicio administrada por el usuario, asegúrate de haber asignado los roles de IAM necesarios para que tenga el permiso
storage.objects.get
para leer desde INPUT_BUCKET_NAME y el permisostorage.objects.create
para subir BLURRED_BUCKET_NAME.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Crea dos buckets de Cloud Storage: uno para subir imágenes originales y otro del servicio de Cloud Run a fin de subir imágenes difuminadas.
Para crear ambos buckets de Cloud Storage con nombres únicos a nivel global, agrega lo siguiente a tu archivo main.tf
existente:
De forma predeterminada, las revisiones de Cloud Run se ejecutan como la cuenta de servicio predeterminada de Compute Engine.
Si, en cambio, usas una cuenta de servicio administrada por el usuario, asegúrate de haber asignado los roles de IAM necesarios para que tenga el permiso storage.objects.get
para leer desde google_storage_bucket.imageproc_input
y el permiso storage.objects.create
para subir google_storage_bucket.imageproc_output
.
Mediante los siguientes pasos, crearás y, luego, implementarás un servicio que procesa la notificación de las cargas de archivos a INPUT_BUCKET_NAME. Debes activar la entrega de notificaciones después de implementar y probar el servicio para evitar la invocación prematura del servicio nuevo.
Modifica el código de muestra del instructivo de Pub/Sub
Este instructivo se basa en el código ensamblado en el instructivo Usa Pub/Sub. Si aún no completaste ese instructivo, hazlo ahora. Omite los pasos de limpieza y, luego, regresa para agregar el comportamiento del procesamiento de imágenes.
Agrega código de procesamiento de imágenes
El código de procesamiento de imágenes está separado de la administración de solicitudes para facilitar la lectura y la prueba. Para agregar código de procesamiento de imágenes, sigue estos pasos:
Ve al directorio en el que se encuentra el código de muestra del instructivo de Pub/Sub.
Agrega el código a fin de importar las dependencias de procesamiento de imágenes, incluidas las bibliotecas para integrar en los servicios de Google Cloud, ImageMagick y el sistema de archivos.
Node.js
Abre un archivoimage.js
nuevo en tu editor y copia lo que se muestra a continuación:Python
Abre un archivoimage.py
nuevo en tu editor y copia lo que se muestra a continuación:Go
Abre un archivoimagemagick/imagemagick.go
nuevo en el editor y copia lo que se muestra a continuación:Java
Abre un archivosrc/main/java/com/example/cloudrun/ImageMagick.java
nuevo en el editor y copia lo que se muestra a continuación:Agrega el código a fin de recibir un mensaje de Pub/Sub como objeto de evento y controla el procesamiento de imágenes.
El evento contiene datos sobre la imagen que se subió originalmente. Este código verifica los resultados de un análisis de Cloud Vision de contenido violento o para adultos y determina si la imagen debe difuminarse.
Node.js
Python
Go
Java
Recupera la imagen a la que se hace referencia desde el bucket de entrada de Cloud Storage creado antes, usa ImageMagick para transformar la imagen con un efecto de difuminado y sube el resultado al bucket de salida.
Node.js
Python
Go
Java
Integra el procesamiento de imágenes en el código de muestra de Pub/Sub
Para modificar el servicio existente a fin de incorporar el código de procesamiento de imágenes, sigue estos pasos:
Agrega dependencias nuevas para el servicio, incluidas las bibliotecas cliente de Cloud Vision y Cloud Storage:
Node.js
npm install --save gm @google-cloud/storage @google-cloud/vision
Python
Agrega las bibliotecas cliente necesarias para que turequirements.txt
se vea similar al siguiente:Go
La aplicación de muestra de Go usa módulos de Go; el siguiente comando que necesite las dependencias nuevas agregadas antes en la instrucción de importaciónimagemagick/imagemagick.go
, las descargará de forma automática.Java
Agrega la dependencia siguiente en<dependencyManagement>
enpom.xml
: Agrega las dependencias siguientes en<dependencies>
en elpom.xml
:Puedes agregar el paquete del sistema de ImageMagick al contenedor mediante la modificación de
Dockerfile
en la instrucciónFROM
. Si usas un Dockerfile de “etapas múltiples”, colócalo en la etapa final.Debian y Ubuntu Alpine Obtén más información sobre cómo trabajar con paquetes del sistema en el servicio de Cloud Run en el instructivo Usa paquetes del sistema.
Reemplaza el código de administración de mensajes de Pub/Sub existente con una llamada a función a nuestra lógica de difuminado nueva.
Node.js
El archivoapp.js
define la app de Express.js y prepara los mensajes de Pub/Sub recibidos para su uso. Realiza los siguientes cambios:- Agrega el código para importar el archivo
image.js
nuevo. - Quita el código “Hello World” existente de la ruta.
- Agrega el código para validar el mensaje de Pub/Sub.
Agrega el código para llamar a la función de procesamiento de imágenes nueva.
Cuando termines, el código se verá de la siguiente manera:
Python
El archivomain.py
define la app de Flask y prepara los mensajes de Pub/Sub recibidos para su uso. Realiza los siguientes cambios:- Agrega el código para importar el archivo
image.py
nuevo. - Quita el código “Hello World” existente de la ruta.
- Agrega el código para validar el mensaje de Pub/Sub.
Agrega el código para llamar a la función de procesamiento de imágenes nueva.
Cuando termines, el código se verá de la siguiente manera:
Go
El archivomain.go
define el servicio HTTP y prepara los mensajes de Pub/Sub recibidos para su uso. Realiza los siguientes cambios:- Agrega el código para importar el archivo
imagemagick.go
nuevo. - Quita el código “Hello World” existente del controlador.
- Agrega el código para validar el mensaje de Pub/Sub.
- Agrega el código para llamar a la función de procesamiento de imágenes nueva.
Java
El archivoPubSubController.java
define el controlador que administra las solicitudes HTTP y prepara los mensajes de Pub/Sub recibidos para su uso. Realiza los siguientes cambios:- Agrega las importaciones nuevas.
- Quita el código “Hello World” existente del controlador.
- Agrega el código para validar el mensaje de Pub/Sub.
- Agrega el código para llamar a la función de procesamiento de imágenes nueva.
- Agrega el código para importar el archivo
Descarga la muestra completa
Si deseas recuperar la muestra de código del procesamiento de imágenes completa para usar, sigue estos pasos:
Clona el repositorio de la app de muestra en tu máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Ve al directorio que contiene el código de muestra de Cloud Run:
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/
Envía el código
El código de envío consta de tres pasos: compilar una imagen de contenedor con Cloud Build, subir la imagen de contenedor a Artifact Registry y, luego, implementar la imagen de contenedor en Cloud Run.
Para enviar el código, haz lo siguiente:
Compila el contenedor y publica en Artifact Registry:
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Donde
pubsub
es el nombre de tu servicio.Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Si la operación se completa de manera correcta, verás un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Artifact Registry y puede volver a usarse si así se desea.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Donde
pubsub
es el nombre de tu servicio.Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Si la operación se completa de manera correcta, verás un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Artifact Registry y puede volver a usarse si así se desea.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Donde
pubsub
es el nombre de tu servicio.Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Si la operación se completa de manera correcta, verás un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Artifact Registry y puede volver a usarse si así se desea.
Java
En esta muestra, se usa Jib para compilar imágenes de Docker mediante herramientas de Java comunes. Jib optimiza las compilaciones de contenedores sin la necesidad de tener un Dockerfile o tener Docker instalado. Obtén más información sobre la compilación de contenedores de Java con Jib.Mediante Dockerfile, configura y compila una imagen base con los paquetes de sistema instalados a fin de anular la imagen base predeterminada de Jib:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/imagemagick
Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Usa el auxiliar de credenciales de gcloud para autorizar a Docker a que envíe contenido a tu Artefact Registry.
gcloud auth configure-docker
Compila el contenedor final con Jib y publica en 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
Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
Ejecuta el siguiente comando para implementar el servicio mediante el mismo nombre de servicio que usaste en el instructivo Usa Pub/Sub:
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
Donde
pubsub
es el nombre del contenedor ypubsub-tutorial
es el nombre del servicio. Ten en cuenta que la imagen de contenedor se implementa en el servicio y la región (Cloud Run) que configuraste antes en Configura los valores predeterminados de gcloud. Reemplaza lo siguiente:- PROJECT_ID por el ID del proyecto de Google Cloud
- REPOSITORY por el nombre del repositorio de Artifact Registry
- REGION por la región de Google Cloud que se usará para el repositorio de Artifact Registry.
- BLURRED_BUCKET_NAME por el depósito de Cloud Storage que creaste antes para recibir imágenes difuminadas a fin de configurar la variable de entorno.
La marca
--no-allow-unauthenticated
restringe el acceso no autenticado al servicio. Si mantienes el servicio privado, puedes confiar en la integración automática de Pub/Sub de Cloud Run para autenticar las solicitudes. Consulta Integra en Pub/Sub para obtener más detalles sobre cómo se configura. Consulta Administra el acceso para obtener más detalles sobre la autenticación basada en IAM.Espera hasta que finalice la implementación; esto puede tomar alrededor de medio minuto. Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio.
Activa las notificaciones desde Cloud Storage
Configura Cloud Storage para publicar un mensaje en un tema de Pub/Sub cada vez que se suba o se cambie un archivo (conocido como objeto). Envía la notificación al tema creado antes de modo que cualquier carga de archivo nuevo invoque el servicio.
gcloud
gcloud storage service-agent --project=PROJECT_ID gcloud storage buckets notifications create gs://INPUT_BUCKET_NAME --topic=myRunTopic --payload-format=json
myRunTopic
es el tema que creaste en el instructivo anterior.
Reemplaza INPUT_BUCKET_NAME por el nombre que usaste cuando creaste los buckets.
Para obtener más detalles sobre las notificaciones del depósito de almacenamiento, lee las notificaciones de cambios de objetos.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Para habilitar las notificaciones, debe existir la cuenta de servicio de Cloud Storage única del proyecto y tener el permiso de IAM pubsub.publisher
en el tema de Pub/Sub. Para otorgar este permiso y crear una notificación de Cloud Storage, agrega lo siguiente a tu archivo main.tf
existente:
Probarlo
Sube una imagen ofensiva, como esta imagen de un zombi que come carne humana:
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
En el ejemplo anterior, INPUT_BUCKET_NAME es el depósito de Cloud Storage que creaste antes para subir imágenes.
Navega a los registros de servicio:
- Navega a la página de Cloud Run en la consola de Google Cloud.
- Haz clic en el servicio
pubsub-tutorial
. - Selecciona la pestaña Registros. Los registros pueden tardar un poco en aparecer. Si no los ves de inmediato, vuelve a revisar en unos minutos.
Busca el mensaje
Blurred image: zombie.png
.Puedes ver las imágenes difuminadas en el depósito BLURRED_BUCKET_NAME de Cloud Storage que creaste antes. Ubica el depósito en la página de Cloud Storage en la consola de Google Cloud.
Limpia
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y deseas conservarlo sin los cambios que se agregaron en este instructivo, borra los recursos creados para el instructivo.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, sigue estos pasos:
- 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.
Borra los recursos del instructivo
Usa este comando para borrar el servicio de Cloud Run que implementaste en este instructivo:
gcloud run services delete SERVICE-NAME
En el ejemplo anterior, SERVICE-NAME es el nombre del servicio que elegiste.
También puedes borrar los servicios de Cloud Run desde la consola de Google Cloud.
Quita la configuración de región predeterminada de gcloud que agregaste durante la configuración en el instructivo:
gcloud config unset run/region
Quita la configuración del proyecto:
gcloud config unset project
Borra otros recursos de Google Cloud que creaste en este instructivo:
- Borra el tema de Pub/Sub
myRunTopic
. - Borra la suscripción a Pub/Sub
myRunSubscription
. - Borra la imagen del contenedor de Artifact Registry.
- Borra la cuenta de servicio de invocador
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
. - Borra los depósitos de Cloud Storage que se crearon para los marcadores de posición
INPUT_BUCKET_NAME
yBLURRED_BUCKET_NAME
.
- Borra el tema de Pub/Sub
¿Qué sigue?
- Obtén más información sobre la persistencia de los datos con Cloud Run a través de Cloud Storage
- Comprende cómo usar la API de Cloud Vision para detectar el contenido que no sea explícito.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.