Recibe un evento de Pub/Sub


En esta página del instructivo, se muestra cómo implementar un servicio no autenticado (completamente administrado) de Cloud Run que recibe eventos mediante Pub/Sub.

Objetivos

En este instructivo, podrás:

  1. Implementar un servicio de receptor de eventos en Cloud Run

  2. Crear un activador de eventos

  3. Publicar un mensaje en un tema de Pub/Sub para generar un evento y visualizarlo en los registros de Cloud Run (completamente administrado).

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. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  7. Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Habilita las API

  8. Instala y, luego, inicializa Google Cloud CLI.
  9. Actualiza los componentes de gcloud:
    gcloud components update
  10. Accede con tu cuenta:
    gcloud auth login
  11. Establece las variables de configuración que se usan en este instructivo:
    gcloud config set project PROJECT_ID
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    
    En el ejemplo anterior, PROJECT_ID es el ID del proyecto de Google Cloud.

Implementa un receptor de eventos en Cloud Run

Implementa un servicio de Cloud Run que reciba y registre eventos.

Para implementar el servicio del receptor de eventos de muestra, haz lo siguiente:

  1. Clona el repositorio:

    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.

    Comienza a usarlo

    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.

    Ruby

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

    De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git

    De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.

  2. Ve al directorio que contiene el código de muestra de Cloud Run:

    Node.js

    cd nodejs-docs-samples/eventarc/pubsub/

    Python

    cd python-docs-samples/eventarc/pubsub/

    Go

    cd golang-samples/eventarc/pubsub/

    Java

    cd java-docs-samples/eventarc/pubsub/

    Ruby

    cd ruby-docs-samples/eventarc/pubsub/

    C#

    cd dotnet-docs-samples/eventarc/pubsub/
  3. Compila el contenedor y súbelo a Cloud Build:

    gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/events-pubsub
    
  4. Implementar la imagen del contenedor en Cloud Run

    gcloud run deploy helloworld-events-pubsub-tutorial \
        --image gcr.io/$(gcloud config get-value project)/events-pubsub \
        --allow-unauthenticated
    

Cuando veas la URL del servicio, se completará la implementación.

Crea un activador de Eventarc

El activador de eventos envía mensajes al servicio del receptor de eventos implementado en Cloud Run cuando se publica un mensaje en el tema de Pub/Sub.

Sigue estos pasos para crear un activador de Pub/Sub de Eventarc:

  1. Crea un activador para detectar los mensajes de Pub/Sub:

    Nuevo tema Pub/Sub

    gcloud eventarc triggers create events-pubsub-trigger \
      --destination-run-service=helloworld-events-pubsub-tutorial \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
    

    Esto crea un nuevo tema de Pub/Sub y un activador llamado events-pubsub-trigger para este.

    Tema de Pub/Sub existente

    gcloud eventarc triggers create events-pubsub-trigger \
      --destination-run-service=helloworld-events-pubsub-tutorial \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME
    

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto de Google Cloud.
    • TOPIC_NAME es el nombre del tema de Pub/Sub existente.

    Esto crea un activador llamado events-pubsub-trigger para el tema de Pub/Sub existente.

  2. Confirma que el activador se haya creado correctamente:

    gcloud eventarc triggers list --location=us-central1
    
  3. Busca y establece el tema Pub/Sub como una variable de entorno:

    export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \
        --format='value(transport.pubsub.topic)')
    
  4. Envía un mensaje al tema de Pub/Sub para generar un evento:

    gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
    

    El evento se envía al servicio de Cloud Run, que registra el mensaje del evento.

  5. Para ver el mensaje del evento, ve a los registros del servicio de Cloud Run:

    1. Ve a la consola de Google Cloud
    2. Haz clic en el servicio helloworld-events-pubsub-tutorial.
    3. Selecciona la pestaña Registros.

      Los registros pueden tomar un tiempo en aparecer. Si no los ves de inmediato, vuelve a revisar en unos minutos.

  6. Busca el mensaje “Hello Runner!”.

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, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Elimina recursos de instructivos

  1. 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.

  2. Quita todas las opciones de configuración predeterminadas de la CLI de gcloud que agregaste durante la configuración del instructivo.

    Por ejemplo:

    gcloud config unset run/region

    o

    gcloud config unset project

  3. Borra otros recursos de Google Cloud que creaste en este instructivo:

    • Borrar el activador de Eventarc:
      gcloud eventarc triggers delete TRIGGER_NAME
      
      Reemplaza TRIGGER_NAME por el nombre de tu activador.

¿Qué sigue?