Enruta eventos de Pub/Sub a flujos de trabajo

Un activador de Eventarc declara tu interés en un evento o conjunto de eventos determinado. Si deseas configurar el enrutamiento del evento, establece filtros para el activador, lo que incluye al origen del evento y al flujo de trabajo de destino.

Los eventos se entregan en el formato de CloudEvents a través de una solicitud HTTP. El servicio de Workflows convierte el evento en un objeto JSON (según la especificación de CloudEvents) y pasa el evento a la ejecución del flujo de trabajo como un argumento del entorno 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 argumentos de Workflows no activarán las ejecuciones de flujos de trabajo.

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

Prepárate 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 página del selector de proyectos de la consola de Google Cloud, elige o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  2. Habilitar las APIs de Eventarc, publicación de Eventarc, Workflows y Workflow Executions.

    Habilita las API

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

  4. Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos para el servicio de destino.

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

      Ir a Cuentas de servicio

    2. Elige tu proyecto.

    3. Escribe un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de la cuenta de servicio en función de este nombre.

      Opcional: 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 Identity and Access Management (IAM) necesarios para otorgar a tu cuenta de servicio. Si deseas obtener más información, consulta Roles y permisos para destinos de Workflows.

      Para obtener roles adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.

    6. Haz clic en Continuar.

    7. Para terminar de crear la cuenta, haz clic en Listo.

gcloud

  1. En la consola de Google Cloud, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Habilitar las APIs de Eventarc, publicación de Eventarc, Workflows y Workflow Executions:

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

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

  4. Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos para el servicio de destino.

    1. Cree la cuenta de servicio:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Reemplaza SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio. Debe tener entre 6 y 30 caracteres y puede contener guiones y caracteres alfanuméricos en minúscula. Después de crear una cuenta de servicio, no podrás cambiar su nombre.

    2. Otorga los roles o los permisos de Identity and Access Management (IAM) necesarios. Si deseas obtener más información, consulta Roles y permisos para destinos de Workflows.

Crear un activador

Puedes crear un activador de Eventarc con un flujo de trabajo implementado como receptor de eventos con Google Cloud CLI (gcloud o Terraform) o la consola de Google Cloud.

Consola

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

    Ir a Activadores

  2. Haz clic en Crear activador.
  3. Escribe un nombre de activador.

    Este es el ID del activador y debe empezar con una letra. Puede contener hasta 63 letras en minúscula, números o guiones.

  4. Para el Tipo de activador, elige Fuentes de Google.
  5. En la lista Proveedor del evento, elige Cloud Pub/Sub.

    Ten en cuenta que el nombre del proveedor de eventos que se usa en la documentación de Google Cloud asociada podría no tener el prefijo Cloud o Google Cloud. Por ejemplo, en la consola, Memorystore for Redis se denomina Google Cloud Memorystore para Redis.

  6. En la lista Tipo de evento, en los eventos Directos, selecciona google.cloud.pubsub.topic.v1.messagePublished.
  7. En la lista Seleccionar un tema de Cloud Pub/Sub, elige un tema o acepta la configuración predeterminada Ninguno para que se cree un tema nuevo.
  8. En la lista Región, elige la misma región que el servicio de Google Cloud que genera los eventos.

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

  9. Elige la cuenta de servicio que invocará el servicio o el flujo de trabajo.

    O bien, puedes crear una cuenta de servicio nueva.

    Esto especifica el correo electrónico de la cuenta de servicio de Identity and Access Management (IAM) asociado con el activador y al que otorgaste antes roles específicos que requiere Eventarc.

  10. En la lista Destino del evento, elige Workflows.
  11. Elige un flujo de trabajo.

    Este es el nombre del flujo de trabajo al que se pasan los eventos. Los eventos para una ejecución del flujo de trabajo se transforman y se pasan al flujo de trabajo como argumentos del entorno de ejecución.

    Para obtener más información, consulta Crea un activador para Workflows.

  12. Haz clic en Crear.
  13. Después de que se crea un activador, los filtros de fuente del evento no se pueden cambiar. En su lugar, crea un activador nuevo y borra el anterior. Para obtener más información, consulta Administra activadores.

gcloud

Mensajes de Pub/Sub (tema existente)

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"

Reemplaza lo siguiente:

  • TRIGGER: el ID del activador o un identificador completamente calificado.
  • LOCATION: ubicación del activador de Eventarc. De forma alternativa, puedes establecer la propiedad eventarc/location; por ejemplo, gcloud config set eventarc/location us-central1. Los activadores de Pub/Sub para Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.
  • DESTINATION_WORKFLOW: Es el ID del flujo de trabajo implementado que recibe los eventos del activador. El flujo de trabajo puede estar en cualquiera de las ubicaciones compatibles con Workflows y no necesita 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 supone que el flujo de trabajo se encuentra en la misma ubicación que el activador.

  • TOPIC_ID: el ID del tema de Pub/Sub existente. El tema debe estar en el mismo proyecto que el activador.
  • SERVICE_ACCOUNT_NAME: El nombre de la cuenta de servicio de IAM que creaste a la que otorgaste roles específicos que requieren los flujos de trabajo.
  • PROJECT_ID: El ID del proyecto de Google Cloud.

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo.
  • --service-account: El correo electrónico de la cuenta de servicio de IAM que el activador Eventarc usará para invocar las ejecuciones del flujo de trabajo. Recomendamos usar 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 Crea y administra cuentas de servicio.
  • Cada activador tiene varios filtros de eventos, delimitados por comas en una marca --event-filters=[ATTRIBUTE=VALUE,…], o puedes repetir la marca para agregar más filtros. Solo los eventos que coinciden con todos los filtros se envían al destino. No se admiten comodines ni expresiones regulares.
  • La marca --transport-topic se usa para especificar el ID del tema existente de Pub/Sub o su identificador completamente calificado.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, de forma independiente de la actividad y no vencen. 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"

Esto 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"

Reemplaza lo siguiente:

  • TRIGGER: el ID del activador o un identificador completamente calificado.
  • LOCATION: ubicación del activador de Eventarc. De forma alternativa, puedes establecer la propiedad eventarc/location; por ejemplo, gcloud config set eventarc/location us-central1. Los activadores de Pub/Sub para Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.
  • DESTINATION_WORKFLOW: Es el ID del flujo de trabajo implementado que recibe los eventos del activador. El flujo de trabajo puede estar en cualquiera de las ubicaciones compatibles con Workflows y no necesita 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 supone que el flujo de trabajo se encuentra en la misma ubicación que el activador.
  • SERVICE_ACCOUNT_NAME: El nombre de la cuenta de servicio de IAM que creaste a la que otorgaste roles específicos que requieren los flujos de trabajo.
  • PROJECT_ID: El ID del proyecto de Google Cloud.

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo.
  • --service-account: El correo electrónico de la cuenta de servicio de IAM que el activador Eventarc usará para invocar las ejecuciones del flujo de trabajo. Recomendamos usar 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 Crea y administra cuentas de servicio.
  • Cada activador tiene varios filtros de eventos, delimitados por comas en una marca --event-filters=[ATTRIBUTE=VALUE,…], o puedes repetir la marca para agregar más filtros. Solo los eventos que coinciden con todos los filtros se envían al destino. No se admiten comodines ni expresiones regulares.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, de forma independiente de la actividad y no vencen. 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"

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

Como práctica recomendada, te sugerimos que no vuelvas a usar el tema de Pub/Sub creado por un activador porque borrar un activador de Eventarc también borra los temas de Pub/Sub que el activador lo creó.

Terraform

Puedes crear un activador para un flujo de trabajo con Terraform. Para obtener más detalles, consulta Activa un flujo de trabajo con Eventarc y Terraform.

Enumera un activador

Para confirmar la creación de un activador, enumera los activadores de Eventarc con Google Cloud CLI o a través de la consola de Google Cloud.

Consola

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

    Ir a Activadores

    En esta página, se enumeran tus activadores en todas las ubicaciones y se incluyen detalles, como nombres, regiones, proveedores de eventos, destinos y mucho más.

  2. Para filtrar tus activadores, haz lo siguiente:

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

    Puedes elegir una sola propiedad o usar el operador lógico OR para agregar más propiedades.

  3. Para ordenar los activadores, junto con el encabezado de la columna compatible, haz clic en Ordenar.

gcloud

Ejecuta el siguiente comando para enumerar los activadores:

gcloud eventarc triggers list --location=-

Este comando enumera tus activadores en todas las ubicaciones y, además, incluye detalles como nombres, tipos, destinos y estados.

¿Qué sigue?