La computación sin servidores en Google Cloud te permite desarrollar e implementar aplicaciones muy escalables en una plataforma sin servidores completamente administrada. Los servicios se escalan vertical y horizontalmente de forma automática en función del tráfico.
Con la integración de servicios, puedes incorporar fácilmente tus servicios de forma asíncrona y con acoplamiento bajo, lo que permite una innovación rápida. Eventarc te permite crear arquitecturas basadas en eventos sin necesidad de administrar la infraestructura. Con Workflows, puedes crear aplicaciones confiables con facilidad a través de la organización de servicios y APIs. Cloud Scheduler es un servicio de trabajos cron completamente administrado para programar tus cargas de trabajo. Cloud Tasks es un servicio completamente administrado que se usa para crear listas de tareas en cola distribuidas. Eventarc, Workflows, Cloud Scheduler y Cloud Tasks te ayudan a integrar tus servicios mientras mantienes la observabilidad, la confiabilidad y la seguridad.
En este lab, usarás Workflows para crear un flujo de trabajo que administre el proceso de creación de miniaturas y extracción de metadatos de imágenes entrantes. Eventarc detecta cuando se sube una imagen a un bucket de Cloud Storage y comienza a ejecutar el flujo de trabajo.
El flujo de trabajo llama a la API de Cloud Vision para analizar la foto subida. Cloud Vision determina si la imagen es segura, detecta el texto en ella y ofrece etiquetas para su contenido. Los datos de vision se extraen con una función personalizada creada en Cloud Run Functions. Los datos extraídos se guardan en Firestore, la base de datos de documentos sin servidores y completamente administrada de Google Cloud. El flujo de trabajo también usa Cloud Tasks para poner en cola una tarea con la que se creará una miniatura.
Cloud Build se usa para compilar tres servicios que se implementan en Cloud Run, una plataforma sin servidores con la que se ejecutan servicios alojados en contenedores. Uno de estos servicios crea una miniatura en respuesta a la tarea creada por el flujo de trabajo.
El segundo servicio crea un collage de fotos de las imágenes más recientes. El servicio de collage se ejecuta en un programa creado en Cloud Scheduler.
El tercer servicio se activa con Eventarc cuando se borra una imagen del bucket de Cloud Storage. Este servicio quitará los metadatos y la miniatura de la imagen borrada.
Aprendizajes esperados
En este lab, aprenderás a hacer lo siguiente:
Activar servicios y flujos de trabajo de forma asíncrona con Eventarc
Organizar servicios y APIs con Workflows
Administrar una lista de tareas en cola distribuida con Cloud Tasks
Ejecutar servicios según un programa con Cloud Scheduler
Configuración y requisitos
En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
El botón Abrir la consola de Google Cloud
El tiempo restante
Las credenciales temporales que debes usar para el lab
Otra información para completar el lab, si es necesaria
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
Haga clic para avanzar por las páginas siguientes:
Acepta los Términos y Condiciones.
No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda.
Activa Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
Puedes solicitar el nombre de la cuenta activa con este comando:
Tarea 1: Habilita las APIs y crea buckets de Cloud Storage
En esta tarea, habilitarás las APIs requeridas. También crearás dos buckets en Cloud Storage: uno para subir imágenes y otro para almacenar las imágenes que genere tu aplicación.
Habilita las APIs
Para habilitar las APIs requeridas, ejecuta el siguiente comando:
Esta aplicación usa varios servicios de Google Cloud y debes habilitar cada una de las APIs de estos servicios.
Estas son las APIs que se habilitarán y su función:
La API de Workflows administra las definiciones de los flujos de trabajo. Un flujo de trabajo ejecutará el proceso principal cuando se suba una imagen nueva.
La API de Eventarc administra la configuración de Eventarc. Se usará Eventarc para detectar las imágenes que se agreguen y borren de un bucket de Cloud Storage.
La API de Cloud Tasks crea y administra tareas distribuidas. El flujo de trabajo creará una tarea para que se genere una miniatura.
La API de Cloud Scheduler crea y administra trabajos cron programados. Se usará un trabajo programado para crear un collage de las imágenes más recientes.
La API de Cloud Vision permite acceder a las funciones de vision de aprendizaje automático de Google.
La API de Cloud Run crea y administra servicios de Cloud Run. Los servicios de Cloud Run se proporcionan para crear una miniatura, borrar una imagen y crear un collage.
La API de Cloud Functions crea y administra funciones. Se usa una función para extraer detalles de la respuesta de Cloud Vision.
La API de Firestore crea y administra bases de datos de Firestore.
La API de App Engine crea y administra aplicaciones de App Engine. Esta API es obligatoria para habilitar Firestore.
Estos comandos crean un bucket regional público con acceso uniforme. Cada vez que se copie una imagen en el bucket, se iniciará un flujo de trabajo para analizar la foto y almacenar los metadatos y una imagen en miniatura.
Crea un segundo bucket de Cloud Storage para las imágenes que generen las aplicaciones de imágenes:
Se usará una colección de Firestore llamada images para almacenar los metadatos de las imágenes. El servicio de collage buscará en la base de datos las imágenes más recientes con miniaturas para crear el collage.
Después de crear la base de datos, debes crear un índice para admitir esta búsqueda.
Este índice permitirá que el servicio de collage encuentre las imágenes más recientes que tienen miniaturas.
El parámetro --async indica que no quieres esperar a que se complete la operación.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Firestore, haz clic en Buscar y, luego, en Firestore.
Haz clic en el ID de tu base de datos (predeterminado) y, en el panel izquierdo, haz clic en Índices.
Deberías ver que se está creando el índice de la colección images.
Nota: El índice de búsqueda puede tardar varios minutos en crearse. Puedes continuar trabajando en el lab antes de que se complete la creación del índice.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear la base de datos de Firestore y el índice compuesto
Tarea 3: Crea la lista de tareas en cola de miniaturas
En esta tarea, crearás una cola de Cloud Tasks para solicitar la creación de miniaturas por parte del servicio create-thumbnail.
Para crear la lista de tareas en cola, ingresa el siguiente comando en Cloud Shell:
Compila y, luego, implementa el servicio create-thumbnail
El servicio de miniaturas crea una miniatura para una imagen subida y la almacena en el bucket de imágenes generadas.
En Cloud Shell, haz clic en Abrir editor.
En el editor de Cloud Shell, navega a ~/code/cloud-run/create-thumbnail y examina los archivos del servicio create-thumbnail.
El directorio contiene estos tres archivos:
package.json incluye metadatos pertinentes para compilar tu aplicación de Node.js. Define el comando que inicia la aplicación (node index.js) y especifica las versiones de los paquetes que usa el código.
Dockerfile especifica la imagen inicial (node:16-slim) y contiene la lista de comandos que se ejecutan para compilar la imagen del contenedor que alojará nuestro servicio. La instalación incluye Imagemagick, que se usará para crear imágenes en miniatura a partir de las imágenes subidas.
index.js contiene el código del servicio.
Haz clic en Abrir terminal.
Para compilar la imagen de Docker del servicio create-thumbnail con Cloud Build, ejecuta los siguientes comandos en Cloud Shell:
export REPO_NAME=image-app-repo
export REPO_REGION={{{project_0.default_region|set at lab start}}}
export THUMBNAIL_SERVICE_NAME=create-thumbnail
cd ~/code/cloud-run/create-thumbnail
gcloud builds submit \
. \
--tag ${REPO_REGION}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/${REPO_NAME}/${THUMBNAIL_SERVICE_NAME}
El servicio se compila y se almacena en el repositorio de Artifact Registry.
Para implementar el servicio con Cloud Run, ejecuta los siguientes comandos en Cloud Shell:
export REPO_NAME=image-app-repo
export REPO_REGION={{{project_0.default_region|set at lab start}}}
export THUMBNAIL_SERVICE_REGION={{{project_0.default_region|set at lab start}}}
export THUMBNAIL_SERVICE_NAME=create-thumbnail
export GENERATED_IMAGES_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
cd ~/code/cloud-run/create-thumbnail
gcloud config set run/region ${THUMBNAIL_SERVICE_REGION}
gcloud config set run/platform managed
gcloud run deploy ${THUMBNAIL_SERVICE_NAME} \
--image ${REPO_REGION}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/${REPO_NAME}/${THUMBNAIL_SERVICE_NAME} \
--no-allow-unauthenticated \
--memory=1Gi \
--max-instances=1 \
--update-env-vars GENERATED_IMAGES_BUCKET=${GENERATED_IMAGES_BUCKET}
El nombre del bucket generated-images se pasa a la aplicación a través de una variable de entorno.
Compila y, luego, implementa el servicio de collage
El servicio de collage combina las imágenes subidas más recientemente en un collage y lo almacena en el bucket de imágenes generadas.
En Cloud Shell, haz clic en Abrir editor.
En el editor de Cloud Shell, navega a ~/code/cloud-run/create-collage y examina los archivos del servicio create-collage.
Este directorio contiene tres archivos: package.json, index.js y Dockerfile.
Haz clic en Abrir terminal.
Para compilar y, luego, implementar la imagen de Docker del servicio create-collage, ejecuta los siguientes comandos en Cloud Shell:
export REPO_NAME=image-app-repo
export REPO_REGION={{{project_0.default_region|set at lab start}}}
export COLLAGE_SERVICE_REGION={{{project_0.default_region|set at lab start}}}
export COLLAGE_SERVICE_NAME=create-collage
export GENERATED_IMAGES_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
cd ~/code/cloud-run/create-collage
gcloud builds submit \
. \
--tag ${REPO_REGION}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/${REPO_NAME}/${COLLAGE_SERVICE_NAME}
gcloud config set run/region ${COLLAGE_SERVICE_REGION}
gcloud config set run/platform managed
gcloud run deploy ${COLLAGE_SERVICE_NAME} \
--image ${REPO_REGION}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/${REPO_NAME}/${COLLAGE_SERVICE_NAME} \
--no-allow-unauthenticated \
--memory=1Gi \
--max-instances=1 \
--update-env-vars GENERATED_IMAGES_BUCKET=${GENERATED_IMAGES_BUCKET}
Compila y, luego, implementa el servicio de eliminación de imágenes
El servicio de eliminación de imágenes quita la imagen en miniatura del bucket de imágenes generadas y borra los metadatos de la imagen de la base de datos.
En Cloud Shell, haz clic en Abrir editor.
En el editor de Cloud Shell, navega a ~/code/cloud-run/delete-image y examina los archivos del servicio delete-image.
Este directorio solo contiene dos archivos: index.js y package.json, no hay archivo Dockerfile.
En lugar de compilar y publicar el contenedor de forma manual, este lab se basa en los paquetes de compilación de Google Cloud para compilarlo automáticamente.
También ten en cuenta que el servicio analiza la solicitud como un CloudEvent. Eventarc envía eventos con el formato estándar de CloudEvent.
Haz clic en Abrir terminal.
Para compilar y, luego, implementar el servicio delete-image en Cloud Run con los paquetes de compilación de Google Cloud, ejecuta los siguientes comandos en Cloud Shell:
export DELETE_SERVICE_REGION={{{project_0.default_region|set at lab start}}}
export DELETE_SERVICE_NAME=delete-image
export GENERATED_IMAGES_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
cd ~/code/cloud-run/delete-image
npm install
gcloud config set run/region ${DELETE_SERVICE_REGION}
gcloud config set run/platform managed
gcloud run deploy ${DELETE_SERVICE_NAME} \
--source . \
--no-allow-unauthenticated \
--max-instances=1 \
--update-env-vars GENERATED_IMAGES_BUCKET=${GENERATED_IMAGES_BUCKET}
gcloud run deploy advierte que se debe crear un repositorio de Docker de Artifact Registry para las imágenes creadas por los paquetes de compilación de Google Cloud.
Cuando se te pregunte si quieres continuar, ingresa Y.
Examina los repositorios de artefactos y los servicios de Cloud Run
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Artifact Registry, haz clic en Buscar y, luego, en Artifact Registry.
El repositorio que creaste (image-app-repo) y el repositorio creado por los paquetes de compilación de Google Cloud (cloud-run-source-deploy) están en Artifact Registry.
Haz clic en image-app-repo.
En image-app-repo, están almacenadas las imágenes de Docker que compilaste para los servicios create-collage y create-thumbnail.
Regresa a Artifact Registry > Repositorios y, luego, haz clic en cloud-run-source-deploy.
El repositorio contiene la imagen de Docker delete-image que se creó automáticamente con los paquetes de compilación de Google Cloud.
En el menú de navegación () de la consola de Google Cloud, navega a Cloud Run > Servicios.
Se implementaron los tres servicios.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear el repositorio y, luego, implementar los servicios de Cloud Run
Tarea 5: Crea una función para analizar la respuesta de Cloud Vision
En esta tarea, crearás una Cloud Run Function para analizar los datos de la imagen que devolvió la API de Cloud Vision.
En Cloud Shell, haz clic en Abrir editor.
En el editor de Cloud, navega a ~/code/cloud-functions/extract-image-metadata y examina los archivos de la función extract-image-metadata.
El servicio de Node.js contiene los archivos index.js y package.json. Cloud Run Functions usa automáticamente paquetes de compilación para crear el contenedor, por lo que no se requiere un archivo Dockerfile.
Haz clic en Abrir terminal.
Para implementar la función, ejecuta el siguiente comando en Cloud Shell:
export EXTRACT_FUNCTION_REGION={{{project_0.default_region|set at lab start}}}
export EXTRACT_FUNCTION_NAME=extract-image-metadata
cd ~/code/cloud-functions/${EXTRACT_FUNCTION_NAME}
gcloud config set functions/region ${EXTRACT_FUNCTION_REGION}
gcloud functions deploy ${EXTRACT_FUNCTION_NAME} \
--gen2 \
--source . \
--runtime=nodejs20 \
--entry-point=extract_image_metadata \
--trigger-http \
--no-allow-unauthenticated
Nota: Si la implementación indica que no se pudieron recuperar los metadatos del repositorio, intenta varias veces más hasta que la implementación de la función se ejecute con éxito.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Cloud Run Functions, haz clic en Buscar y, luego, en Cloud Run Functions.
Se implementó la función extract-image-metadata.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear la función para analizar la respuesta de Cloud Vision
Tarea 6: Crea el flujo de trabajo
En esta tarea, crearás un flujo de trabajo para organizar tus llamadas a la API y al servicio.
En Cloud Shell, haz clic en Abrir editor.
En el editor de Cloud Shell, navega a ~/code/workflows y examina el archivo YAMLimage-add-workflow.yaml.
El flujo de trabajo especifica una serie de pasos que se deben realizar cuando se inicia el flujo de trabajo. Estos son los pasos que no requieren registro:
init asigna variables que se usarán en el flujo de trabajo. bucket y filename se completan con los valores que pasa Eventarc cuando se llama al flujo de trabajo. projectId obtiene el valor de ID del proyecto de una variable de entorno que se completa automáticamente para un flujo de trabajo.
imageAnalysisCall llama a la API de Cloud Vision para analizar la imagen subida.
extractImageMetadata llama a una Cloud Run Function Run para extraer la información importante de la respuesta a la llamada a la API de Cloud Vision.
checkSafety sale del flujo de trabajo cuando la API de Cloud Vision determina que la imagen no es segura.
storeMetadata llama a la API de Firestore para almacenar los metadatos de la imagen.
getThumbnailService llama a un conector de Cloud Run para encontrar la URL del servicio de Cloud Run create-thumbnail.
queueThumbnail usa un conector de Cloud Tasks para crear una tarea que llame de forma asíncrona al servicio de miniaturas.
completed finaliza el flujo de trabajo y devuelve el identificador de la ejecución del flujo de trabajo.
Haz clic en Abrir terminal.
Para crear una cuenta de servicio para la identidad del flujo de trabajo y agregar algunos permisos básicos, ejecuta los siguientes comandos:
Los roles permiten las siguientes funcionalidades:
roles/datastore.user permite que el flujo de trabajo escriba documentos en Firestore.
roles/cloudtasks.enqueuer permite que el flujo de trabajo cree una tarea de Cloud Tasks.
roles/logging.logWriter permite que el flujo de trabajo registre variables en Cloud Logging.
roles/iam.serviceAccountUser permite que la cuenta de servicio suplante a otra cuenta de servicio, de modo que Cloud Tasks pueda enviar la solicitud con la identidad de la cuenta de servicio del flujo de trabajo.
Para agregar permisos para llamar a la función y al servicio de Cloud Run, ejecuta los siguientes comandos:
Si se te pregunta “Would you like to run this command and additionally grant permission to invoke function [extract-image-metadata] (Y/n)?”, ingresa Y.
Estos roles adicionales permiten las siguientes funcionalidades:
roles/cloudfunctions.invoker permite que el flujo de trabajo llame a la función que extrae los metadatos de la respuesta de Cloud Vision.
roles/run.viewer permite que el flujo de trabajo consulte los detalles del servicio de miniaturas.
roles/run.invoker permite que la cuenta de servicio del flujo de trabajo llame al servicio de miniaturas. Cloud Tasks usará la cuenta de servicio cuando llame al servicio.
Para implementar el flujo de trabajo, ejecuta el siguiente comando:
export WORKFLOW_NAME=image-add-workflow
export WORKFLOW_REGION={{{project_0.default_region|set at lab start}}}
export WORKFLOWS_SA=workflows-sa
cd ~/code/workflows
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=${WORKFLOW_NAME}.yaml \
--location=${WORKFLOW_REGION} \
--service-account="${WORKFLOWS_SA}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com"
Nota: Si el comando falla con el agente de servicio de Workflows, no existe. Vuelve a implementar el flujo de trabajo.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Workflows, haz clic en Buscar y, luego, en Workflows.
Haz clic en el ícono de Fijar junto a Workflows.
Haz clic en image-add-workflow y, luego, en la pestaña Fuente.
En el panel izquierdo, se muestra el código del flujo de trabajo y, en el panel derecho, se muestra una visualización del flujo de tráfico para los pasos del flujo de trabajo.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear el flujo de trabajo
Tarea 7: Crea un activador de Eventarc para iniciar el flujo de trabajo
En esta tarea, crearás un activador de Eventarc que ejecute el flujo de trabajo cuando se agregue un archivo al bucket uploaded-images.
Para crear una cuenta de servicio para el activador del flujo de trabajo y otorgarle los permisos necesarios, ejecuta el siguiente comando en Cloud Shell:
Este activador llamará al flujo de trabajo cada vez que se escriba un archivo en el bucket uploaded-images.
Nota: Si recibes un error de propagación de permisos cuando crees el activador, es posible que se deba a que un permiso aún no se propagó a Eventarc. Si vuelves a intentar crear el activador una o dos veces, debería funcionar.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear el activador de Eventarc para iniciar el flujo de trabajo
Tarea 8: Prueba el flujo de trabajo para agregar imagen
En esta tarea, probarás los pasos que se realizan cuando se agrega una imagen al bucket uploaded-images.
Para subir una imagen al bucket uploaded-images, ejecuta los siguientes comandos:
Cuando finaliza la carga, Eventarc la detecta y, luego, inicia el flujo de trabajo.
En el menú de navegación () de la consola de Google Cloud, navega a Flujos de trabajo > Flujos de trabajo.
Haz clic en image-add-workflow y, luego, en la pestaña Ejecuciones.
Pronto deberías ver una ejecución del flujo de trabajo.
Nota: Es posible que la ejecución tarde uno o dos minutos en comenzar.
Haz clic en el ID de ejecución para abrir la página Detalles de la ejecución.
En esta página, se muestran los detalles de la ejecución del flujo de trabajo.
En el panel de entrada, se muestra el contenido del evento de Cloud Storage que envió el activador de Eventarc.
En el panel de salida, se muestran los valores que se devolvieron al final del flujo de trabajo.
En el panel de registros, se muestran las entradas de registro creadas por el flujo de trabajo.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Cloud Run Functions, haz clic en Buscar y, luego, en Cloud Run Functions.
Haz clic en extract-image-metadata.
En este panel, se muestran detalles sobre la función que se usa para extraer la información de la respuesta de Cloud Vision.
Haz clic en la pestaña Registros.
Aquí se encuentran los datos registrados de la ejecución de la función. Se registraron las etiquetas y el texto de la imagen.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Firestore, haz clic en Buscar y, luego, en Firestore.
Haz clic en (predeterminado).
La colección de imágenes debería mostrar un documento llamado neon.jpg que escribió el flujo de trabajo. Se muestran las etiquetas adjuntas a la imagen y el texto que se encuentra en ella.
En el menú de navegación () de la consola de Google Cloud, navega a Cloud Run > Servicios y, luego, haz clic en create-thumbnail.
En este panel, se muestra información sobre el servicio create-thumbnail.
Haz clic en la pestaña Registros.
Aquí se encuentran los datos registrados de la ejecución del servicio.
El bucket generated-images debería tener una miniatura creada por el servicio create-thumbnail. Puedes hacer clic en los vínculos de Cloud Shell para abrir una pestaña nueva y ver las imágenes subidas y generadas.
Nota: Puede tardar un poco en que la imagen generada aparezca en el bucket y en el listado.
Haz clic en Revisar mi progreso para verificar el objetivo.
Probar el flujo de trabajo para agregar imágenes
Tarea 9: Agrega un trabajo programado para crear un collage
En esta tarea, crearás un trabajo de Cloud Scheduler para crear de forma periódica un collage de las fotos que se subieron más recientemente.
Sube imágenes
Para subir más imágenes al bucket uploaded-images, ejecuta los siguientes comandos:
Copia la URL en el portapapeles, la necesitarás cuando crees el trabajo programado.
En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Cloud Scheduler, haz clic en Buscar y, luego, en Cloud Scheduler.
Haz clic en + Crear trabajo.
Especifica los siguientes parámetros de configuración de programación:
Propiedad
Valor
Nombre
collage-schedule
Región
selecciona
Frecuencia
* * * * *
Zona horaria
busca UTC y, luego, selecciona Horario universal coordinado (UTC)
La frecuencia especifica el programa en formato unix-cron. * * * * * especifica que el trabajo se ejecutará una vez por minuto.
La frecuencia de una vez por minuto se elige para facilitar la prueba.
Haz clic en Continuar y, luego, selecciona el Tipo de objetivo de HTTP.
Especifica los siguientes parámetros de configuración de ejecución:
Propiedad
Valor
URL
pega la URL del servicio create-collage
Método HTTP
selecciona POST
Encabezado de la autenticación
selecciona Agregar token de OIDC
Cuenta de servicio
selecciona collage-schedule-sa
Público
pega la URL del servicio create-collage
Haz clic en Continuar y, luego, en Crear.
El trabajo collage-schedule se muestra en la página Trabajos de Cloud Scheduler.
El trabajo debería ejecutarse en un minuto.
Haz clic en Actualizar hasta que el trabajo collage-schedule muestre una marca de verificación, lo que indica que se completó correctamente.
Haz clic en Revisar mi progreso para verificar el objetivo.
Agregar un trabajo programado para crear el collage
En Cloud Shell, ejecuta los siguientes comandos:
export GENERATED_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
export IMAGE_NAME=collage.png
echo "generated collage: https://storage.googleapis.com/${GENERATED_BUCKET}/${IMAGE_NAME}"
echo "Listing of generated-images bucket:"
gcloud storage ls gs://${GENERATED_BUCKET}
El bucket generated-images ahora debería incluir el archivo collage.png. Puedes hacer clic en el vínculo “generated collage” en Cloud Shell para abrir una pestaña nueva y ver el collage.
Un archivo copiado en Cloud Storage está disponible inmediatamente después de que se completa el proceso de carga del archivo, por lo que el vínculo debería funcionar justo después de que se complete el trabajo programado. Cuando se enumera el contenido del bucket, es posible que el archivo no aparezca hasta poco tiempo después.
Tarea 10: Activa un servicio para borrar archivos de imagen y metadatos
En esta tarea, crearás un activador de Eventarc para quitar la imagen de miniatura asociada y el documento de Firestore cuando se borre una imagen del bucket uploaded-images.
Crea una cuenta de servicio y administrar roles
Para crear una cuenta de servicio para el activador delete-image y otorgarle los permisos necesarios, ejecuta el siguiente comando en Cloud Shell:
Estos comandos crean una cuenta de servicio llamada delete-image-trigger-sa y agregan permisos para recibir eventos e invocar el servicio delete-image.
En el menú de navegación () de la consola de Google Cloud, navega a Cloud Run y, luego, haz clic en delete-image.
En la página Detalles del servicio, haz clic en la pestaña Activadores.
Haz clic en + Agregar activador y, luego, selecciona Activador de Cloud Storage.
Especifica los siguientes parámetros de configuración del activador:
Propiedad
Valor
Nombre del activador
image-delete-trigger
Tipo de evento
selecciona google.cloud.storage.object.v1.deleted
Bucket
haz clic en Explorar, luego selecciona el bucket uploaded-images y, por último, haz clic en Seleccionar
Cuenta de servicio
selecciona la cuenta de servicio delete-image-trigger-sa
Ruta de URL de servicio
/
Si se te indica que se debe otorgar un rol a Pub/Sub, haz clic en Otorgar.
Haz clic en Guardar activador.
Este activador llamará al servicio delete-image cada vez que se borre un archivo del bucket uploaded-images.
Nota: Si recibes un mensaje de error en el que se indica que una región incumple una restricción en el recurso de activación, es posible que hayas seleccionado el bucket de Cloud Storage incorrecto. Vuelve a intentar realizar el proceso de creación y confirma la selección del bucket de imágenes subidas.
Haz clic en Revisar mi progreso para verificar el objetivo.
Activar un servicio para borrar archivos de imagen y metadatos
Prueba de eliminación de imágenes
Para enumerar una imagen en los buckets de Cloud Storage y el documento correspondiente en Firestore, ejecuta los siguientes comandos:
export UPLOAD_BUCKET=uploaded-images-${GOOGLE_CLOUD_PROJECT}
export GENERATED_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
export IMAGE_NAME=vegas.jpg
echo "Listing of image in uploaded-images bucket:"
gcloud storage ls gs://${UPLOAD_BUCKET}/${IMAGE_NAME}
echo "Listing of image in generated-images bucket:"
gcloud storage ls gs://${GENERATED_BUCKET}/${IMAGE_NAME}
echo "Image document in Firestore:"
curl -q -s -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-X GET "https://firestore.googleapis.com/v1/projects/${GOOGLE_CLOUD_PROJECT}/databases/(default)/documents/images/${IMAGE_NAME}"
Estos comandos muestran los detalles de Cloud Storage y Firestore de una sola imagen. Luego, debemos quitar esa imagen.
Para borrar una imagen del bucket uploaded-images, ejecuta el siguiente comando:
Eventarc detectará el archivo eliminado y llamará al servicio image-delete, que quitará la miniatura y el documento de Firestore.
Para verificar si se quitaron la miniatura y el documento de Firestore, ejecuta los mismos comandos que usaste antes:
export UPLOAD_BUCKET=uploaded-images-${GOOGLE_CLOUD_PROJECT}
export GENERATED_BUCKET=generated-images-${GOOGLE_CLOUD_PROJECT}
export IMAGE_NAME=vegas.jpg
echo "Listing of image in uploaded-images bucket:"
gcloud storage ls gs://${UPLOAD_BUCKET}/${IMAGE_NAME}
echo "Listing of image in generated-images bucket:"
gcloud storage ls gs://${GENERATED_BUCKET}/${IMAGE_NAME}
echo "Image document in Firestore:"
curl -q -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://firestore.googleapis.com/v1/projects/${GOOGLE_CLOUD_PROJECT}/databases/(default)/documents/images/${IMAGE_NAME}"
Se quitaron los elementos.
En el menú de navegación () de la consola de Google Cloud, navega a Cloud Run > Servicios y, luego, haz clic en delete-image.
Haz clic en Registros.
Los registros del servicio delete-image muestran que se borró la miniatura del bucket generated-images y el documento de Firestore de la base de datos.
¡Felicitaciones!
Usaste Eventarc para activar servicios y flujos de trabajo de forma correcta, organizaste servicios y APIs con flujos de trabajo, creaste y usaste una lista de tareas en cola distribuida con Cloud Tasks y, por último, creaste un trabajo para ejecutar un servicio con Cloud Scheduler.
Obtén más información sobre cómo Google Cloud permite arquitecturas sin servidores con videos del equipo de Serverless Expeditions.
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
1 estrella = Muy insatisfecho
2 estrellas = Insatisfecho
3 estrellas = Neutral
4 estrellas = Satisfecho
5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2024 Google LLC. Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
Un lab a la vez
Confirma para finalizar todos los labs existentes y comenzar este
Usa la navegación privada para ejecutar el lab
Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así
evitarás cualquier conflicto entre tu cuenta personal y la cuenta
de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
En este lab, crearás una organización de microservicios basada en eventos que procesa imágenes. Usarás cuatro servicios que admiten la integración de aplicaciones en Google Cloud: Workflows, Eventarc, Cloud Tasks y Cloud Scheduler.
Duración:
0 min de configuración
·
Acceso por 90 min
·
90 min para completar