Dirigir eventos de Pub/Sub a Workflows

Un activador de Eventarc declara tu interés en un evento o en un conjunto de eventos concretos. Puede configurar el enrutamiento de eventos especificando filtros para el activador, incluida la fuente del evento y el flujo de trabajo de destino.

Los eventos se envían en formato CloudEvents a través de una solicitud HTTP. El servicio Workflows convierte el evento en un objeto JSON (siguiendo la especificación de CloudEvents) y lo transfiere a la ejecución del flujo de trabajo como un argumento de tiempo de ejecución del flujo de trabajo. Asegúrate de que el tamaño del evento no supere los 512 KB. Los eventos que superen el tamaño máximo de los argumentos de los flujos de trabajo no activarán la ejecución de flujos de trabajo.

En estas instrucciones se explica cómo configurar el enrutamiento de eventos para que se active una ejecución de tu flujo de trabajo cuando los mensajes publicados en un tema de Pub/Sub coincidan con los criterios de filtro del activador. Esto se aplica a un proveedor de eventos de Cloud Pub/Sub.

Prepararse para crear un activador

Antes de crear un activador de Eventarc para un flujo de trabajo de destino, completa las siguientes tareas.

Consola

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

    Ir al selector de proyectos

  2. Habilita las APIs Eventarc, Eventarc Publishing, Workflows y Workflow Executions.

    Habilita las APIs

  3. Si procede, habilita la API relacionada con los eventos directos. Por ejemplo, para los eventos de Cloud Pub/Sub , habilita la APICloud Pub/Sub .

  4. Si aún no tienes una, crea una cuenta de servicio gestionada por el usuario y, a continuación, concédele los roles y permisos necesarios para que Eventarc pueda gestionar eventos de un flujo de trabajo de destino.

    1. En la Google Cloud consola, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona el proyecto.

    3. En el campo Nombre de cuenta de servicio, escribe un nombre. La Google Cloud consola rellena el campo ID de cuenta de servicio con este nombre.

      En el campo Descripción de la cuenta de servicio, escribe una descripción. Por ejemplo, Service account for event trigger.

    4. Haz clic en Crear y continuar.

    5. Para proporcionar el acceso adecuado, en la lista Seleccionar un rol, elige los roles de gestión de identidades y accesos (IAM) que quieras conceder a tu cuenta de servicio. Para obtener más información, consulta Roles y permisos de los destinos de los flujos de trabajo.

      Para añadir más roles, haz clic en Añadir otro rol y añade cada rol adicional.

    6. Haz clic en Continuar.

    7. Para terminar de crear la cuenta, haga clic en Hecho.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Habilita las APIs Eventarc, Eventarc Publishing, Workflows y Workflow Executions:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. Si procede, habilita la API relacionada con los eventos directos. Por ejemplo, para los eventos, habilita Cloud Pub/Sub .pubsub.googleapis.com

  4. Si aún no tienes una, crea una cuenta de servicio gestionada por el usuario y, a continuación, concédele los roles y permisos necesarios para que Eventarc pueda gestionar eventos de un flujo de trabajo de destino.

    1. Crea la cuenta de servicio:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Sustituye SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio. Debe tener entre 6 y 30 caracteres, y puede contener caracteres alfanuméricos en minúscula y guiones. Una vez que hayas creado una cuenta de servicio, no podrás cambiar su nombre.

    2. Concede los roles o permisos de Gestión de Identidades y Accesos (IAM) necesarios. Para obtener más información, consulta Roles y permisos de los destinos de los flujos de trabajo.

Crear activador

Puedes crear un activador de Eventarc con un flujo de trabajo desplegado como receptor de eventos mediante la CLI de Google Cloud (gcloud o Terraform) o a través de la consola de Google Cloud .

Consola

  1. En la Google Cloud consola, ve a la página Triggers (Activadores) de Eventarc.

    Ir a Activadores

  2. Haz clic en Crear activador.
  3. Escribe un Nombre del activador.

    Es el ID del activador y debe empezar por una letra. Puede contener hasta 63 letras minúsculas, números o guiones.

  4. En Tipo de activador, selecciona Fuentes de Google.
  5. En la lista Event provider (Proveedor de eventos), seleccione Cloud Pub/Sub.

    Tenga en cuenta que el nombre del proveedor de eventos que se usa en la documentaciónGoogle Cloud asociada puede no tener el prefijo Cloud o Google Cloud. Por ejemplo, en la consola, Memorystore para Redis se denomina Google Cloud Memorystore para Redis.

  6. En la lista Tipo de evento, en los eventos Direct (Directo), selecciona google.cloud.pubsub.topic.v1.messagePublished.
  7. En la lista Selecciona un tema de Cloud Pub/Sub, elige un tema o acepta el valor predeterminado Ninguno para que se cree un tema.
  8. En la lista Región, selecciona la misma región que el Google Cloud servicio que genera eventos.

    Para obtener más información, consulta Ubicaciones de Eventarc.

  9. Selecciona la cuenta de servicio que invocará tu servicio o flujo de trabajo.

    También puedes crear una cuenta de servicio.

    Especifica la dirección de correo de la cuenta de servicio de Gestión de Identidades y Accesos (IAM) asociada al activador y a la que has concedido roles específicos necesarios para Eventarc.

  10. En la lista Destino del evento, selecciona Workflows.
  11. Selecciona un flujo de trabajo.

    Es el nombre del flujo de trabajo al que se enviarán los eventos. Los eventos de una ejecución de flujo de trabajo se transforman y se transfieren al flujo de trabajo como argumentos de tiempo de ejecución.

    Para obtener más información, consulta el artículo Crear un activador para Workflows.

  12. Si quieres añadir una etiqueta, puedes hacer clic en Añadir etiqueta. Las etiquetas son pares clave-valor que te ayudan a organizar tus recursosGoogle Cloud . Para obtener más información, consulta ¿Qué son las etiquetas?
  13. Haz clic en Crear.
  14. Una vez creado un activador, no se pueden modificar los filtros de origen de eventos. En su lugar, cree un nuevo activador y elimine el antiguo. Para obtener más información, consulta Gestionar activadores.

gcloud

Mensajes de Pub/Sub (tema ya creado)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=TOPIC_ID \
    --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Haz los cambios siguientes:

  • TRIGGER: el ID del activador o un identificador completo.
  • LOCATION: la ubicación del activador de Eventarc. También puedes definir la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1. Los activadores de Pub/Sub de Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.
  • DESTINATION_WORKFLOW: el ID del flujo de trabajo implementado que recibe los eventos del activador. El flujo de trabajo puede estar en cualquiera de las ubicaciones admitidas de Workflows y no tiene por qué estar en la misma ubicación que el activador. Sin embargo, el flujo de trabajo debe estar en el mismo proyecto que el activador.
  • DESTINATION_WORKFLOW_LOCATION (opcional): la ubicación en la que se implementa el flujo de trabajo de destino. Si no se especifica, se da por hecho que el flujo de trabajo está en la misma ubicación que el activador.

  • TOPIC_ID: ID del tema de Pub/Sub. El tema debe estar en el mismo proyecto que el activador.
  • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio de gestión de identidades y accesos que has creado y a la que has concedido los roles específicos que necesita Workflows.
  • PROJECT_ID: tu ID de proyecto Google Cloud

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria y no se puede cambiar. Si quieres usar otro tipo de evento, debes crear un nuevo activador.
  • --service-account: La dirección de correo de la cuenta de servicio de gestión de identidades y accesos que usará el activador de Eventarc para invocar las ejecuciones del flujo de trabajo. Te recomendamos que utilices una cuenta de servicio con los privilegios mínimos necesarios para acceder a los recursos requeridos. Para obtener más información sobre las cuentas de servicio, consulta el artículo Crear y gestionar cuentas de servicio.
  • Cada activador puede tener varios filtros de eventos, separados por comas en una --event-filters=[ATTRIBUTE=VALUE,...] marca, o puede repetir la marca para añadir más filtros. Solo se envían al destino los eventos que coinciden con todos los filtros. No se admiten comodines ni expresiones regulares.
  • La marca --transport-topic se usa para especificar el ID del tema de Pub/Sub o su identificador completo.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc se conservan independientemente de la actividad y no caducan. Para cambiar la duración de la inactividad, consulta Propiedades de la suscripción.

Ejemplo:

  gcloud eventarc triggers create pubsub-workflows-trigger-existing \
      --location=us-central1 \
      --destination-workflow=my-workflow \
      --destination-workflow-location=europe-west4 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=${TOPIC_ID} \
      --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

De esta forma, se crea un activador llamado pubsub-workflows-trigger-existing para el tema de Pub/Sub identificado por ${TOPIC_ID}.

Mensajes de Pub/Sub (tema nuevo)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Haz los cambios siguientes:

  • TRIGGER: el ID del activador o un identificador completo.
  • LOCATION: la ubicación del activador de Eventarc. También puedes definir la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1. Los activadores de Pub/Sub de Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.
  • DESTINATION_WORKFLOW: el ID del flujo de trabajo implementado que recibe los eventos del activador. El flujo de trabajo puede estar en cualquiera de las ubicaciones admitidas de Workflows y no tiene por qué estar en la misma ubicación que el activador. Sin embargo, el flujo de trabajo debe estar en el mismo proyecto que el activador.
  • DESTINATION_WORKFLOW_LOCATION (opcional): la ubicación en la que se implementa el flujo de trabajo de destino. Si no se especifica, se da por hecho que el flujo de trabajo está en la misma ubicación que el activador.
  • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio de gestión de identidades y accesos que has creado y a la que has concedido los roles específicos que necesita Workflows.
  • PROJECT_ID: tu ID de proyecto Google Cloud

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria y no se puede cambiar. Si quieres usar otro tipo de evento, debes crear un nuevo activador.
  • --service-account: La dirección de correo de la cuenta de servicio de gestión de identidades y accesos que usará el activador de Eventarc para invocar las ejecuciones del flujo de trabajo. Te recomendamos que utilices una cuenta de servicio con los privilegios mínimos necesarios para acceder a los recursos requeridos. Para obtener más información sobre las cuentas de servicio, consulta el artículo Crear y gestionar cuentas de servicio.
  • Cada activador puede tener varios filtros de eventos, separados por comas en una --event-filters=[ATTRIBUTE=VALUE,...] marca, o puede repetir la marca para añadir más filtros. Solo se envían al destino los eventos que coinciden con todos los filtros. No se admiten comodines ni expresiones regulares.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc se conservan independientemente de la actividad y no caducan. Para cambiar la duración de la inactividad, consulta Propiedades de la suscripción.

Ejemplo:

  gcloud eventarc triggers create pubsub-workflows-trigger-new \
      --location=us-central1 \
      --destination-workflow=my-workflow \
      --destination-workflow-location=europe-west4 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

De esta forma, se crea un tema de Pub/Sub y un activador para él llamado pubsub-workflows-trigger-new.

Como práctica recomendada, te aconsejamos que no reutilices el tema de Pub/Sub creado por un activador, ya que si eliminas un activador de Eventarc, también se eliminarán los temas de Pub/Sub que haya creado.

Terraform

Puedes crear un activador para un flujo de trabajo con Terraform. Para obtener más información, consulta el artículo Activar un flujo de trabajo con Eventarc y Terraform.

Mostrar un activador

Para confirmar que se ha creado un activador, puedes enumerar los activadores de Eventarc con la CLI de Google Cloud o a través de la Google Cloud consola.

Consola

  1. En la Google Cloud consola, ve a la página Triggers (Activadores) de Eventarc.

    Ir a Activadores

    En esta página se muestran todos tus activadores de todas las ubicaciones, así como detalles como nombres, regiones, proveedores de eventos, destinos y más.

  2. Para filtrar tus activadores, sigue estos pasos:

    1. Haz clic en Filtrar o en el campo Activar filtros.
    2. En la lista Propiedades, seleccione una opción para filtrar los activadores.

    Puede seleccionar una sola propiedad o usar el operador lógico OR para añadir más propiedades.

  3. Para ordenar los activadores, junto al encabezado de cualquier columna admitida, haz clic en Ordenar.

gcloud

Ejecuta el siguiente comando para ver una lista de tus activadores:

gcloud eventarc triggers list --location=-

Este comando muestra los activadores de todas las ubicaciones e incluye detalles como nombres, tipos, destinos y estados.

Siguientes pasos