Instrucciones y requisitos de configuración del lab
Protege tu cuenta y tu progreso. Usa siempre una ventana de navegador privada y las credenciales del lab para ejecutarlo.

Usa Cloud Pub/Sub con Cloud Run [APPRUN]

Lab 1 hora 15 minutos universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Este contenido aún no está optimizado para dispositivos móviles.
Para obtener la mejor experiencia, visítanos en una computadora de escritorio con un vínculo que te enviaremos por correo electrónico.

Descripción general

Pub/Sub permite que las aplicaciones aprovechen las colas de mensajes eficientes. El servicio es compatible con una variedad de servicios de Google Cloud y, en este lab, aprenderás a integrarlo con Cloud Run.

Este lab se basa en usar una infraestructura sin servidores para resolver el caso de uso de un cliente. Tiene tres secciones generales que resuelven un problema técnico:

  • Descripción general de la situación
  • Recopilación de requisitos
  • Desarrollo de un producto viable mínimo

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Habilitar la API de Cloud Run
  • Implementar microservicios en Cloud Run
  • Crear un tema de Pub/Sub
  • Invocar un servicio de Cloud Run desde una suscripción a Pub/Sub

Requisitos

Estos labs se basan en conocimientos intermedios de Google Cloud. Si bien los pasos necesarios se explican en el contenido, sería útil tener conocimientos sobre cualquiera de los siguientes productos:

  • Pub/Sub
  • Cloud Run

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Nota: Lee estas instrucciones.

Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico de Google Skills te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que usarás para acceder a Google Cloud durante todo el lab.

Requisitos

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
  • Tiempo para completar el lab
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses para el lab. Nota: Si usas una Pixelbook, abre una ventana de incógnito para ejecutar el lab.

Cómo iniciar tu lab y acceder a la consola

  1. 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, verás un panel con las credenciales temporales que debes usar para este lab.

    Panel de credenciales

  2. Copia el nombre de usuario y, luego, haz clic en Abrir la consola de Google. El lab inicia los recursos y abre otra pestaña que muestra la página Elige una cuenta.

    Sugerencia: Abre las pestañas en ventanas separadas, una junto a la otra.
  3. En la página Elige una cuenta, haz clic en Usar otra cuenta. Se abrirá la página de acceso.

    Cuadro de diálogo Elige una cuenta el que se destaca la opción Usar otra cuenta

  4. Pega el nombre de usuario que copiaste del panel Detalles de la conexión. Luego, copia y pega la contraseña.

Nota: Debes usar las credenciales del panel Detalles de la conexión. No uses tus credenciales de Google Skills. Si tienes una cuenta propia de Google Cloud, no la utilices para este lab para no incurrir en cargos.
  1. Haz 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 Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Menú de la consola de Cloud

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.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

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

ID del proyecto destacado en la terminal de Cloud Shell

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:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Descripción general de la situación

Logotipo de Critter Junction

En este lab, ayudarás al equipo de desarrollo de Critter Junction a investigar el uso de Pub/Sub para sus requisitos. El equipo quiere explorar cómo realizar un procesamiento eficiente de colas en sus aplicaciones.

Recopilación de requisitos

El equipo de Critter Junction tiene una aplicación web pública y varios microservicios basados en Google Cloud. La comunicación entre los microservicios es fundamental y necesita que se establezca una forma de mensajería resiliente entre cada componente de la aplicación.

Los intentos anteriores del equipo de desarrollo no tuvieron éxito porque los microservicios necesitaban saber mucho sobre los demás (acoplamiento alto). Además, si un servicio no estuviera disponible temporalmente, se perderían los mensajes.

El equipo necesita una solución que incluya un nivel de resiliencia sin introducir dependencias de servicio adicionales (acoplamiento bajo) en sus sistemas. Ahora que sabes un poco más sobre Critter Junction y los problemas que enfrenta, intenta priorizar los criterios clave para llegar a una solución.

Define las prioridades de Critter Junction

Para determinar los casos de uso y las prioridades clave, se realizan debates iniciales con las partes interesadas de Critter Junction. Los resultados de los debates se muestran a continuación:

Ref.

Historia de usuario

1

Como desarrollador principal, quiero asegurarme de que la mensajería sea resiliente, de modo que las operaciones de servicio se restablezcan sin necesidad de intervención manual.

2

Como gerente de programas, quiero que los servicios puedan escalar sin problemas para que la carga transaccional adicional no genere inestabilidad en el sistema.

3

Como líder de operaciones, quiero que los servicios se administren para que el personal pueda enfocarse en trabajos de mantenimiento importantes.

A partir de una conversación con los líderes de equipo, se definieron las siguientes tareas de alto nivel:

Ref.

Condiciones que deben cumplirse

1

Se debe establecer un componente asíncrono para la comunicación entre servicios.

2

Se debe implementar la escalabilidad comprobada de la solución.

3

Los servicios deben ejecutarse sin supervisión.

El equipo de Critter Junction quiere definir una solución que se pueda implementar rápidamente. Teniendo en cuenta los requisitos, el equipo de desarrollo reduce sus opciones a las siguientes:

  • Pub/Sub
  • Cloud Tasks

Consulta una comparación entre Pub/Sub y Cloud Tasks para obtener más información.

Producto

Caso de uso

Elección

Pub/Sub

"Es óptimo para patrones más generales de distribución y transferencia de datos de eventos en los que se puede prescindir de cierto grado de control sobre la ejecución".

marca de verificación verde

Cloud Tasks

"Adecuado para casos de uso en los que un productor de tareas necesita diferir o controlar el tiempo de ejecución de un webhook específico o una llamada de procedimiento remoto".

marca roja de respuesta incorrecta

Después de considerar los requisitos, el equipo de desarrollo elige Pub/Sub porque solo requiere un patrón de distribución basado en envío. En el siguiente diagrama de arquitectura de alto nivel, se resume el producto viable mínimo (MVP) que se debe investigar.

El diagrama de arquitectura del MVP

En la solución propuesta, Pub/Sub se usará para controlar mensajes asíncronos entre servicios.

Tarea 1: Asegúrate de que la API de Pub/Sub esté habilitada de forma correcta

Para garantizar el acceso a la API necesaria, vuelve a habilitar la API de Pub/Sub.

  1. En el menú de navegación (menú de navegación) de la consola de Google Cloud, en APIs y servicios, haz clic en Biblioteca.

  2. En el cuadro Buscar, escribe Pub/Sub.

  3. Haz clic en el resultado de la API de Cloud Pub/Sub.

  4. Haz clic en Administrar.

  5. Haz clic en Inhabilitar API (Disable API). Si se te solicita confirmar, haz clic en Inhabilitar.

  6. Nuevamente, si aparece el mensaje ¿Quieres inhabilitar la API de Cloud Pub/Sub y las APIs dependientes?, haz clic en Confirmar.

  7. Para volver a habilitar la API, haz clic en Habilitar.

    Cuando vuelvas a habilitar la API, la página mostrará información sobre ella. Página de descripción general de la API de Pub/Sub

Tarea 2: Desarrolla un producto viable mínimo (MVP)

Critter Junction tiene varios servicios de Cloud Run que le gustaría integrar con Pub/Sub. Para crear un MVP, se requieren las siguientes tareas:

  • Implementar un servicio de productor
  • Implementar un servicio de consumidor
  • Crear una cuenta de servicio
  • Crear un tema de Pub/Sub

Implementa un servicio de productor

Critter Junction especifica que el servicio store externo debe configurarse como un extremo público, y se indican estos requisitos:

Tipo

Permiso

Descripción

Acceso por URL

--allow-unauthenticated

Hace que el servicio sea PÚBLICO (los usuarios no autenticados pueden verlo).

Permiso de invocación

allUsers

Permite que cualquiera invoque o active el servicio.

El servicio store del productor acepta conexiones públicas basadas en Internet para órdenes de compra. Para ello, el servicio no debe requerir autenticación, y cualquier persona debe poder activarlo.

La información que recopila este servicio se pasará a los servicios de consumidor de backend.

Configura e implementa el servicio store en Cloud Run. Ejecuta los siguientes comandos en Cloud Shell:

  1. Habilita la API de Cloud Run y configura tu entorno de shell:

    gcloud services enable run.googleapis.com
  2. Crea una variable de entorno LOCATION:

    LOCATION={{{project_0.default_region|REGION}}}
  3. Establece la región de procesamiento:

    gcloud config set compute/region $LOCATION
  4. Implementa el servicio store:

gcloud run deploy store-service \ --image gcr.io/qwiklabs-resources/gsp724-store-service \ --region $LOCATION \ --allow-unauthenticated

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar el servicio store de Cloud Run

Una vez que se implementa el servicio store, se puede acceder a él de forma pública a través de Internet.

Implementa un servicio de consumidor

El equipo de desarrollo también debe configurar el servicio order al que se puede acceder en un extremo privado. A diferencia del servicio store, el servicio order no está diseñado para ser accesible públicamente a través de Internet y solo debe invocarse con una cuenta que tenga los permisos adecuados.

Para los servicios basados en Cloud Run, esto se puede lograr con la siguiente configuración:

Tipo

Permiso

Descripción

Acceso por URL

--no-allow-unauthenticated

Hace que el servicio sea PRIVADO (solo los usuarios autenticados pueden verlo).

Rol/Permiso de invocación

Invocador de Cloud Run

Permite que solo una cuenta con el rol de Invocador de Cloud Run invoque el servicio.

Configura e implementa el servicio order:

gcloud run deploy order-service \ --image gcr.io/qwiklabs-resources/gsp724-order-service \ --region $LOCATION \ --no-allow-unauthenticated

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar el servicio order de Cloud Run

Ahora, solo las cuentas autenticadas pueden acceder al servicio e invocarlo.

Descripción general de Pub/Sub

Pub/Sub es un servicio de mensajería asíncrona que separa los servicios que producen eventos de los servicios que consumen y procesan eventos.

Conceptos básicos de Pub/Sub:

  • Tema
  • Suscripción
  • Mensaje
  • Atributo del mensaje

Pub/Sub requiere que se completen algunas opciones antes de una implementación exitosa. En la consola de Google Cloud, se puede acceder a Pub/Sub en la opción de menú Macrodatos.

Campo

Descripción

Tema

Un recurso con nombre al que los publicadores envían mensajes.

Suscripción

Un recurso con nombre que representa la transmisión de mensajes de un único tema específico que se deben entregar a la aplicación suscripta. Para obtener más detalles sobre la semántica de entrega de mensajes y las suscripciones, consulta la guía para suscriptores.

Mensaje

La combinación de datos y atributos (opcionales) que un publicador envía a un tema y se entrega por último a los suscriptores.

Atributo del mensaje

Un par clave-valor que un publicador puede definir para un mensaje. Por ejemplo, la clave iana.org/language_tag y el valor en se podrían agregar a los mensajes para indicar que un suscriptor de habla inglesa puede leerlo.

Pub/Sub puede usarse en una amplia variedad de casos de uso, y los más comunes se enumeran a continuación:

Caso de uso

Ejemplo

Balanceo de cargas de trabajo en clústeres de red

Por ejemplo, una gran cola de tareas se puede distribuir de forma eficiente entre varios trabajadores, como las instancias de Compute Engine.

Implementación de flujos de trabajo asíncronos

Por ejemplo, una aplicación de procesamiento de pedidos puede colocar un pedido en un tema, desde el cual uno o más trabajadores pueden procesarlo.

Distribución de notificaciones de eventos

Por ejemplo, un servicio que acepta registros de usuarios puede enviar notificaciones cada vez que un usuario nuevo se registra, y los servicios downstream pueden suscribirse para recibir notificaciones del evento.

Actualización de cachés distribuidas

Por ejemplo, una aplicación puede publicar eventos de invalidación para actualizar los IDs de los objetos que cambiaron.

Registro en varios sistemas

Por ejemplo, una instancia de Google Compute Engine puede escribir registros en el sistema de supervisión, en una base de datos para consultas posteriores, etcétera.

Transmisión de datos de varios procesos o dispositivos

Por ejemplo, un sensor residencial puede transmitir datos a servidores de backend alojados en la nube.

Mejora de la confiabilidad

Por ejemplo, un servicio de Compute Engine de una zona puede operar en zonas adicionales mediante una suscripción a un tema común para recuperarse ante fallas en una zona o región.

Tarea 3: Implementa Pub/Sub

Ahora que los servicios de productor (store service) y consumidor (order service) se implementaron correctamente, puedes enfocarte en las funciones principales de Pub/Sub. Para usar Pub/Sub, se requieren dos actividades:

  • Crear un tema
  • Crear una suscripción

Crea un tema

Cuando se crea un evento asíncrono (envío) en un tema, las aplicaciones que se suscriben al tema podrán procesar los mensajes asociados. El procesamiento de eventos de envío con Pub/Sub proporciona una forma escalable de manejar la mensajería en Google Cloud.

El nuevo tema de Pub/Sub tendrá los siguientes valores.

Campo

Valor

Nombre

ORDER_PLACED

Encriptación

Clave administrada por Google

  1. Crea un tema en Pub/Sub:
gcloud pubsub topics create ORDER_PLACED Nota: Los mensajes que se envían con Pub/Sub se codifican como base64 cuando se transmiten y deben decodificarse cuando se reciben.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un tema de Pub/Sub

Con la creación del tema de Pub/Sub, los mensajes ahora se pueden almacenar y entregar de forma independiente y resiliente.

Crearás una suscripción en una tarea posterior.

Tarea 4: Crea una cuenta de servicio

Para entregar un mensaje de Pub/Sub a un servicio de Cloud Run, necesitas una suscripción a Pub/Sub. La suscripción debe poder invocar el servicio con una cuenta de servicio que tenga los permisos adecuados. En este lab, el servicio order del consumidor se invocará con una suscripción que usa la cuenta de servicio.

Para lograr esta funcionalidad, se requieren las siguientes actividades:

  • Crear una cuenta de servicio
  • Vincular los permisos del rol de Invocador a la cuenta de servicio

Creación de cuentas de servicio

Crea una nueva cuenta de servicio que proporcione acceso autenticado.

  1. Crea una cuenta de servicio nueva llamada Order Initiator:

    gcloud iam service-accounts create pubsub-cloud-run-invoker \ --display-name "Order Initiator"
  2. Confirma que se haya creado la cuenta de servicio:

    gcloud iam service-accounts list --filter="Order Initiator"

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una cuenta de servicio

En este punto, la cuenta de servicio Order Initiator está disponible. Sin embargo, no tiene roles ni permisos asignados. Para asignarle permisos de IAM, debes aplicar o vincular permisos de rol a la cuenta de servicio.

Vincula permisos de rol

Para vincular permisos a una cuenta que se usa para invocar un servicio en Cloud Run, necesitas la siguiente información:

Categoría

Descripción

Nombre del servicio

El nombre del servicio implementado que se invocará.

Miembro

La cuenta a la que se le otorgarán los permisos de rol.

Región

La región en la que se implementa el servicio.

Plataforma

El tipo de plataforma, como Cloud Run (administrada), Cloud Run for Anthos o Cloud Run para VMWare.

  1. Vincula la cuenta de servicio con el rol Invocador de Cloud Run en el servicio order:

    gcloud run services add-iam-policy-binding order-service --region $LOCATION \ --member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \ --role=roles/run.invoker --platform managed

    Ahora, la nueva cuenta de servicio tiene permisos para invocar un servicio de Cloud Run.

  2. Crea una variable de entorno para almacenar el número de proyecto:

    PROJECT_NUMBER=$(gcloud projects list \ --filter="qwiklabs-gcp" \ --format='value(PROJECT_NUMBER)')
  3. Habilita la cuenta de servicio del proyecto para crear tokens:

    gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator

Tarea 5: Crea una suscripción a Pub/Sub

En esta tarea, crearás la suscripción a Pub/Sub y la configurarás para usar la nueva cuenta de servicio.

  1. Crea una variable de entorno para almacenar el extremo del servicio order:

    ORDER_SERVICE_URL=$(gcloud run services describe order-service \ --region $LOCATION \ --format="value(status.address.url)")
  2. Crea una suscripción y vincúlala al servicio order:

    gcloud pubsub subscriptions create order-service-sub \ --topic ORDER_PLACED \ --push-endpoint=$ORDER_SERVICE_URL \ --push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com

Haz clic en Revisar mi progreso para verificar el objetivo. Crear una suscripción

Tarea 6: Prueba la aplicación

Para probar la aplicación, envía una carga útil de JSON de muestra al servicio store.

  1. Crea un archivo llamado test.json con el siguiente contenido. Puedes usar el editor que prefieras, como nano, vi o el editor de Cloud Shell.

    { "billing_address": { "name": "Kylie Scull", "address": "6471 Front Street", "city": "Mountain View", "state_province": "CA", "postal_code": "94043", "country": "US" }, "shipping_address": { "name": "Kylie Scull", "address": "9902 Cambridge Grove", "city": "Martinville", "state_province": "BC", "postal_code": "V1A", "country": "Canada" }, "items": [ { "id": "RW134", "quantity": 1, "sub-total": 12.95 }, { "id": "IB541", "quantity": 2, "sub-total": 24.5 } ] }
  2. Crea una variable de entorno para almacenar el extremo del servicio store:

    STORE_SERVICE_URL=$(gcloud run services describe store-service \ --region $LOCATION \ --format="value(status.address.url)")
  3. Para probar la comunicación entre los microservicios y generar un ID de pedido, publica un mensaje en el servicio store:

    curl -X POST -H "Content-Type: application/json" -d @test.json $STORE_SERVICE_URL

    El resultado del comando indica que se creó un pedido correctamente y debería ser similar al siguiente:

    {"status":"success","order_id":"6pa5mmh"}

Servicio store

El servicio store (extremo público) usa Pub/Sub para transmitir información al servicio order (extremo privado).

  1. En el menú de navegación de la consola de Google Cloud (menú de navegación), haz clic en Cloud Run.

  2. Haz clic en el vínculo de store-service.

  3. Para ver los registros del servicio, haz clic en Registros (Logs). Verifica los registros del servicio store para ver el ID del pedido que se generó.

  4. Agrega el filtro de registro ORDER ID para ver el ID generado por el servicio store.

    La página con la pestaña Registros en la que se muestra el ID de pedido generado

Servicio order

El servicio order recibe un mensaje del servicio store que se pasó con Pub/Sub.

  1. Consulta los registros del servicio order para confirmar que los datos JSON se transfirieron correctamente.

  2. Agrega el filtro de registro Order Placed para ver el ID de pedido generado que se pasó al servicio order.

    La página con la pestaña Registros en la que se muestra el ID generado del pedido realizado

Critter Junction actualizó su solución para aprovechar Pub/Sub. En el siguiente diagrama de arquitectura de alto nivel, se resume la solución implementada.

Diagrama de arquitectura

Implementaste Pub/Sub en Google Cloud de forma correcta para comunicarte de manera asíncrona entre los servicios de Cloud Run.

¡Felicitaciones!

En este lab, aprendiste a integrar servicios de Cloud Run con Pub/Sub en tu infraestructura de Google Cloud. Aprendiste todo esto:

  • Implementar servicios en Cloud Run
  • Crear una cuenta de servicio con el rol y los permisos adecuados
  • Definir un tema de Pub/Sub
  • Vincular una suscripción a Pub/Sub con una cuenta de servicio

Próximos pasos y más información

Sigue la serie de videos Serverless Expeditions para obtener más información sobre cómo usar estos productos en tu proyecto.

Última actualización del manual: 20 de febrero de 2024

Prueba más reciente del lab: 20 de febrero de 2024

Copyright 2026 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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. 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.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. 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.