Enruta eventos del Administrador de certificados 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 en respuesta a un evento directo Certificate Manager . Para obtener más detalles, consulta la lista de eventos directos compatibles.

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 Certificate Manager , habilita la APICertificate Manager .

  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 Certificate Manager , habilita certificatemanager.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 Certificate Manager.

    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 un tipo de evento.
  7. Para especificar la codificación de la carga útil del evento, en la lista Tipo de contenido de datos de eventos, elige application/json o application/protobuf.

    Ten en cuenta que una carga útil de evento con formato JSON es mayor que una con formato en Protobuf. Esto puede afectar la confiabilidad según el destino del evento y los límites de tamaño del evento. Para obtener más información, consulta Problemas conocidos.

  8. En la lista Región, elige global (Global).

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

  9. Si corresponde al proveedor de eventos, haz clic en Agregar filtro y especifica lo siguiente:
    1. En el campo Atributo 1, según el evento directo que elijas, elige un ID de recurso que pueda funcionar como un filtro de evento.
    2. Elige un operador:
    3. En el campo Valor del atributo 1, según el operador que elegiste, escribe el valor exacto o aplica un patrón de ruta de acceso.
    4. Si se aplican más filtros de atributos, haz clic en Agregar filtro y especifica los valores adecuados.
  10. 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.

  11. En la lista Destino del evento, elige Workflows.
  12. 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.

  13. Haz clic en Crear.
  14. 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.

  1. Haz clic en Crear.

gcloud

Para crear un activador, ejecuta un comando gcloud eventarc triggers create junto con las marcas obligatorias y opcionales.

gcloud eventarc triggers create TRIGGER \
  --location=global \
  --destination-workflow=DESTINATION_WORKFLOW  \
  --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
  --event-filters="type=EVENT_FILTER_TYPE" \
  --event-filters="COLLECTION_ID=RESOURCE_ID" \
  --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
  --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
  --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Replace the following:

  • TRIGGER: the ID of the trigger or a fully qualified identifier.
  • DESTINATION_WORKFLOW: the ID of the deployed workflow that receives the events from the trigger. The workflow can be in any of the Workflows supported locations and does not need to be in the same location as the trigger. However, the workflow must be in the same project as the trigger.
  • DESTINATION_WORKFLOW_LOCATION (optional): the location in which the destination workflow is deployed. If not specified, it is assumed that the workflow is in the same location as the trigger.
  • EVENT_FILTER_TYPE: the identifier of the event. An event is generated when an API call for the method succeeds. For long-running operations, the event is only generated at the end of the operation, and only if the action is performed successfully. For a list of supported event types, see Event types supported by Eventarc.
  • COLLECTION_ID (optional): the resource component that can act as an event filter, and is one of the following:
    • certificate
    • certificateissuanceconfig
    • certificatemap
    • certificatemapentry
    • dnsauthorization
  • RESOURCE_ID: the identifier of the resource used as the filtering value for the associated collection. For more information, see Resource ID.
  • PATH_PATTERN: the path pattern to apply when filtering for the resource
  • EVENT_DATA_CONTENT_TYPE: (optional) the encoding of the event payload. This can be application/json or application/protobuf. The default encoding is application/json.

    Note that an event payload formatted in JSON is larger than one formatted in Protobuf. This might impact reliability depending on your event destination and its limits on event size. For more information, see Known issues.

  • SERVICE_ACCOUNT_NAME: the name of the IAM service account you created to which you granted specific roles required by Workflows.
  • PROJECT_ID: your Google Cloud project ID

Notes:

  • The --location flag must be global. For more information, see Eventarc locations.
  • The --event-filters="type=EVENT_FILTER_TYPE" flag is required. If no other event filter is set, events for all resources are matched.
  • EVENT_FILTER_TYPE cannot be changed after creation. To change EVENT_FILTER_TYPE, create a new trigger and delete the old one.
  • Each trigger can have multiple event filters, comma delimited in one --event-filters=[ATTRIBUTE=VALUE,...] flag, or you can repeat the flag to add more filters. Only events that match all the filters are sent to the destination. Wildcards and regular expressions are not supported; however, when using the --event-filters-path-pattern flag, you can define a resource path pattern.
  • The --service-account flag is used to specify the Identity and Access Management (IAM) service account email associated with the trigger.

Example:

gcloud eventarc triggers create helloworld-trigger \
  --location=global \
  --destination-workflow=my-workflow \
  --destination-workflow-location=us-central1 \
  --event-filters="type=google.cloud.certificatemanager.certificate.v1.updated" \
  --event-filters-path-pattern="certificate=my-certificate-*" \
  --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

Con este comando, se crea un activador llamado helloworld-trigger para el evento identificado como google.cloud.certificatemanager.certificate.v1.updated y coincide con los eventos para los IDs de certificate que comienzan con my-certificate-.