Recibe eventos de Pub/Sub mediante un servicio autenticado de Cloud Run

En este instructivo, se muestra cómo implementar una aplicación alojada en contenedores mediante un servicio autenticado de Cloud Run que recibe eventos mediante Pub/Sub. Pub/Sub es un servicio de mensajería en tiempo real completamente administrado que te permite enviar y recibir mensajes entre aplicaciones independientes.

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 REPOSITORY por un nombre único para el repositorio.

Implementa un receptor de eventos en Cloud Run

Implementa un servicio de Cloud Run que registre el contenido de un evento.

  1. Clona el repositorio de GitHub:

    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.

    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 $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  4. Implementa la imagen del contenedor en Cloud Run:

    gcloud run deploy ${SERVICE_NAME} \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  5. En el mensaje ¿Permitir invocaciones no autenticadas en trigger-pubsub (y/N)?, responde n para “No”.

Cuando veas la URL del servicio de Cloud Run, la implementación estará completa.

Crea un activador de Eventarc

Cuando se publica un mensaje en el tema de Pub/Sub, el evento activa el servicio de Cloud Run.

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

    Nuevo tema Pub/Sub

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

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

    Tema de Pub/Sub existente

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Google Cloud
    • TOPIC_ID: el ID del tema de Pub/Sub existente.

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

    Ten en cuenta que, cuando creas un activador de Eventarc por primera vez en un proyecto de Google Cloud , es posible que haya un retraso en el aprovisionamiento del agente de servicio de Eventarc. Por lo general, este problema se puede resolver si intentas crear el activador de nuevo. Para obtener más información, consulta Errores de permisos denegados.

  2. Confirma que el activador se haya creado de forma correcta. Ten en cuenta que, si bien tu activador se crea de inmediato, puede tardar hasta dos minutos para que un activador sea por completo funcional.

    gcloud eventarc triggers list --location=${REGION}

    El estado del activador que se muestra debe ser ACTIVE: Yes.

Genera y visualiza un evento

Publicar un mensaje en un tema de Pub/Sub para generar un evento y activar el servicio de Cloud Run. El servicio de Cloud Run registra los mensajes en los registros del servicio.

  1. Busca y establece el tema Pub/Sub como una variable de entorno:

    export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \
        --format='value(transport.pubsub.topic)')
  2. Envía un mensaje al tema de Pub/Sub para generar un evento:

    gcloud pubsub topics publish $TOPIC_ID --message "Hello there"

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

  3. Ve las entradas de registro relacionadas con eventos creadas por tu servicio:

    gcloud logging read 'textPayload: "Hello there!"'

    La entrada de registro debería ser similar a la siguiente:

    textPayload: 'Hello, Hello there!'

Los registros pueden tardar un poco en aparecer. Si no los ves de inmediato, vuelve a revisar en un minuto.