Crea un activador para Cloud Run

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puedes crear un activador de Eventarc para que el servicio de Cloud Run reciba notificaciones de un evento o del conjunto de eventos especificado. Si especificas filtros para el activador, puedes configurar el enrutamiento del evento, incluida la fuente del evento y el servicio de Cloud Run de destino.

Las solicitudes a tu servicio se activan mediante los siguientes tipos de eventos:

Puedes crear activadores con la CLI de Google Cloud o la consola de Google Cloud.

Algunos de los pasos de este documento podrían no funcionar correctamente si tu organización aplica restricciones a tu entorno de Google Cloud. En ese caso, es posible que no puedas completar tareas como crear direcciones IP públicas o claves de cuenta de servicio. Si realizas una solicitud que muestra un error sobre las restricciones, consulta cómo desarrollar aplicaciones en un entorno restringido de Google Cloud.

Prepárate para crear un activador

Antes de crear un activador, completa estos requisitos previos:

  1. Habilita las API:

    gcloud services enable cloudbuild.googleapis.com \
        eventarc.googleapis.com \
        logging.googleapis.com \
        pubsub.googleapis.com \
        run.googleapis.com \
        workflows.googleapis.com
    
  2. Crea una cuenta de servicio administrado por el usuario si aún no tienes una o usa la cuenta de servicio predeterminada.

    SERVICE_ACCOUNT=SA_NAME
    gcloud iam service-accounts create ${SERVICE_ACCOUNT}

    Reemplaza SA_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.

    Ten en cuenta que se usa la cuenta de servicio predeterminada de Compute Engine en los ejemplos de esta página.

  3. Otorga los roles, permisos y marcas necesarios de Identity and Access Management (IAM) para las invocaciones autenticadas y no autenticadas. Para obtener más información, consulta Roles y permisos de Eventarc.

  4. Si creas un activador para un evento directo desde Cloud Storage, otorga el rol pubsub.publisher a la cuenta de servicio de Cloud Storage:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Puedes buscar el ID del proyecto en la página Panel de la consola de Google Cloud.

Crea un activador mediante gcloud

Para crear un activador, ejecuta un comando gcloud junto con marcas necesarias y opcionales.

Eventos de Registros de auditoría de Cloud

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • LOCATION: ubicación del activador de Eventarc. De manera alternativa, configura la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1.

    Los activadores de Cloud Audit Logging para Eventarc están disponibles en regiones específicas y en la global, pero no están disponibles en ubicaciones birregionales o multirregionales. Para evitar cualquier problema de rendimiento y residencia de datos causado por un activador global, te recomendamos que la ubicación coincida con la del servicio de Google Cloud que genera eventos.

    Si especificas la ubicación global, recibirás eventos de todas las ubicaciones que generen coincidencias para los filtros de eventos. Por ejemplo, si creas un activador de Eventarc global, puedes recibir eventos de recursos como los buckets de Cloud Storage en las multirregiones de EE.UU. y UE.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • SERVICE_NAME: Es el identificador del servicio de Google Cloud.
  • METHOD_NAME: Es el identificador de la operación.
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • Estas marcas son obligatorias:
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • Para obtener una lista de los eventos de registro de auditoría compatibles con Eventarc, incluidos los valores serviceName y methodName, consulta Eventos compatibles con Eventarc.
  • Cada activador puede tener varios filtros de eventos, delimitados por comas en una --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. Consulta Determina filtros de eventos para los registros de auditoría de Cloud.
  • La marca --service-account especifica el correo electrónico de la cuenta de servicio de Identity and Access Management (IAM) asociado con el activador.
  • De manera opcional, filtra eventos para un recurso específico mediante la marca --event-filters="resourceName=VALUE" y la especificación de la ruta completa al recurso. Omite la marca para los recursos creados de forma dinámica que tienen identificadores generados en el momento de la creación. O bien, filtra eventos para un conjunto de recursos mediante la marca --event-filters-path-pattern="resourceName=VALUE" y la especificación del patrón de ruta de recurso.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.
.

Ejemplo:

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Este comando crea un activador llamado helloworld-trigger para los registros de auditoría que escribe storage.googleapis.com y para la operación identificada como storage.buckets.update.

Eventos directos

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • LOCATION: ubicación del activador de Eventarc. De manera alternativa, configura la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1.

    Los activadores de Cloud Storage para Eventarc están disponibles en ubicaciones de una sola región, birregional y multirregión. Ten en cuenta que el activador debe estar en la misma ubicación que el bucket de Cloud Storage.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • EVENT_FILTER_TYPE es el identificador del evento de Cloud Storage y puede ser una de las siguientes opciones:
    • google.cloud.storage.object.v1.finalized: este evento se envía cuando se crea un objeto nuevo (o se sobrescribe un objeto existente y se crea una generación nueva de ese objeto) en el bucket
    • google.cloud.storage.object.v1.archived: este evento se envía cuando una versión publicada de un objeto se archiva o se borra. Este evento solo se envía para bucket con control de versiones.
    • google.cloud.storage.object.v1.deleted: este evento se envía cuando se borra un objeto de manera permanente. Según la configuración del control de versiones del objeto de un bucket , esto significa lo siguiente:
      • En el caso de los depósitos con control de versiones, este solo se envía cuando se borra una versión de manera permanente (pero no cuando se archiva un objeto).
      • En el caso de los depósitos sin control de versiones, este se envía cuando se borra o se sobrescribe un objeto.
    • google.cloud.storage.object.v1.metadataUpdated: este evento se envía cuando los metadatos de un objeto existente cambian.
  • BUCKET: Es el identificador único global del bucket de Cloud Storage.
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • Estas marcas son obligatorias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Una vez que se crea un activador, EVENT_FILTER_TYPE no se puede modificar. En su lugar, crea un activador nuevo y borra el anterior.
  • Los eventos se entregan mediante las notificaciones de Pub/Sub desde Cloud Storage. La configuración de demasiadas notificaciones registradas en el mismo bucket puede agotar el límite de notificaciones de este, como se indica en el error Cloud Storage bucket ...: Pub/Sub notification limit reached. El bucket puede tener hasta 10 configuraciones de notificación definidas para activar un evento específico. Consulta más cuotas y limitaciones en la página de cuotas y límites de Cloud Storage.
  • Cada activador puede tener varios filtros de eventos, delimitados por comas en una --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 --service-account se usa para especificar el correo electrónico de la cuenta de servicio de administración de identidades y accesos (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.
  • El bucket de Cloud Storage debe residir en el mismo proyecto de Google Cloud y región o multirregión que el activador de Eventarc.

Ejemplo:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Con este comando, se crea un activador llamado helloworld-trigger para el bucket de Cloud Storage my-project-bucket y el evento identificado como google.cloud.storage.object.v1.finalized.

Alertas de Firebase

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • ALERT_TYPE: el tipo de alerta de Firebase, que puede ser uno de los siguientes:
    • appDistribution.newTesterIosDevice: Se envía un evento cuando se registra un nuevo dispositivo iOS desde una app determinada
    • billing.planAutomatedUpdate: Se envía el evento cuando se actualiza automáticamente el plan de facturación de un proyecto de Firebase. Por ejemplo, cuando un plan cambia a una versión inferior debido a problemas de pago
    • billing.planUpdate: Se envía el evento cuando un usuario modifica el plan de facturación para un proyecto de Firebase. Por ejemplo, cuando una cuenta de facturación se adjunta a un proyecto o se desconecta de él
    • crashlytics.newAnrIssue: Se envía el evento cuando una app experimenta un error nuevo de Aplicación no responde (ANR) (no para ningún evento idéntico posterior)
    • crashlytics.newFatalIssue: Se envía el evento cuando una app experimenta una falla irrecuperable nueva (no para ningún evento idéntico posterior)
    • crashlytics.newNonfatalIssue: Se envía el evento cuando una app experimenta un error nuevo no recuperable (no para ningún evento idéntico posterior)
    • crashlytics.regression: Se envía el evento cuando una app experimenta una falla por un problema marcado como cerrado para una versión anterior de la app
    • crashlytics.stabilityDigest: Se envía el evento cuando hay una notificación sobre los principales problemas del momento en Crashlytics
    • crashlytics.velocity: Se envía un evento cuando un solo problema es responsable de provocar que una cantidad significativa de sesiones de la app fallen.
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • La marca --location debe ser global. Para obtener más información, consulta Ubicaciones de Eventarc.
  • Las marcas --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" y --event-filters="alerttype=ALERT_TYPE" son obligatorias.
  • De manera opcional, puedes filtrar eventos para un ID de app de Firebase específico con la marca --event-filters="appid=APP_ID" y especificando una coincidencia exacta.
  • Una vez que se crea un activador, el tipo de filtro de evento no se puede modificar. En su lugar, crea un activador nuevo y borra el anterior.
  • La marca --service-account se usa para especificar el correo electrónico de la cuenta de servicio de administración de identidades y accesos (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.

Ejemplo:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Con este comando, se crea un activador llamado helloworld-trigger para el evento identificado como google.firebase.firebasealerts.alerts.v1.published y un tipo de alerta crashlytics.velocity.

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • LOCATION: ubicación del activador de Eventarc. De manera alternativa, configura la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1. Los activadores de Firebase Realtime Database para Eventarc solo están disponibles en las siguientes ubicaciones:

    • us-central1
    • europe-west1
    • asia-southeast1

    Ten en cuenta que el activador debe estar en la misma ubicación que la instancia de Firebase Realtime Database. Para obtener más información, consulta Ubicaciones de Realtime Database.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • EVENT_FILTER_TYPE: es el identificador del evento de Firebase Realtime Database y puede ser uno de los siguientes:

    • google.firebase.database.ref.v1.created: Se envía un evento cuando se crean datos en la base de datos.
    • google.firebase.database.ref.v1.updated: Se envía un evento cuando se actualizan los datos en la base de datos.
    • google.firebase.database.ref.v1.deleted: Se envía un evento cuando se borran datos en la base de datos.
    • google.firebase.database.ref.v1.written: Se envía un evento cuando se crean, actualizan o borran datos en la base de datos.
  • INSTANCE: Una instancia de base de datos única y el operador pueden ser uno de los siguientes:

  • REF: Es la ruta de acceso dentro de la instancia de base de datos para la que deseas recibir eventos desde la creación, actualización o eliminación de datos en esa ruta o en cualquiera de sus elementos secundarios.

  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • Estas marcas son obligatorias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" o --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • Una vez que se crea un activador, el tipo de filtro de evento no se puede modificar. En su lugar, crea un activador nuevo y borra el anterior.
  • La marca --service-account se usa para especificar el correo electrónico de la cuenta de servicio de administración de identidades y accesos (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.

Ejemplo:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Este comando crea un activador llamado helloworld-trigger para el evento identificado como google.firebase.database.ref.v1.created.

Firebase Remote Config

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • La marca --location debe ser global. Para obtener más información, consulta Ubicaciones de Eventarc.
  • La marca --event-filters es obligatoria y el tipo debe ser google.firebase.remoteconfig.remoteConfig.v1.updated. Se envía un evento cuando se actualiza una plantilla de Remote Config.
  • Una vez que se crea un activador, el tipo de filtro de evento no se puede modificar. En su lugar, crea un activador nuevo y borra el anterior.
  • La marca --service-account se usa para especificar el correo electrónico de la cuenta de servicio de administración de identidades y accesos (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.

Ejemplo:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Este comando crea un activador llamado helloworld-trigger para el evento identificado como google.firebase.remoteconfig.remoteConfig.v1.updated.

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud.

Notas:

  • La marca --location debe ser global. Para obtener más información, consulta Ubicaciones de Eventarc.
  • La marca --event-filters es obligatoria y el tipo debe ser google.firebase.testlab.testMatrix.v1.completed. Se envía un evento cuando se completa una TestMatrix.
  • Una vez que se crea un activador, el tipo de filtro de evento no se puede modificar. En su lugar, crea un activador nuevo y borra el anterior.
  • La marca --service-account se usa para especificar el correo electrónico de la cuenta de servicio de administración de identidades y accesos (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.

Ejemplo:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Este comando crea un activador llamado helloworld-trigger para el evento identificado como google.firebase.testlab.testMatrix.v1.completed.

Mensajes de Pub/Sub (tema existente)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • LOCATION: Es la ubicación del activador de Eventarc. De manera alternativa, configura la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1.

    Los activadores de Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • TOPIC_NAME: el nombre del tema de Pub/Sub existente. El tema debe estar en el mismo proyecto que el activador.

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria.
  • Cada activador puede tener varios filtros de eventos, delimitados por comas en una --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 manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, independientemente de la actividad, y no vencen. Para cambiar la duración de la inactividad, consulta Administra suscripciones.

Ejemplo:

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

Este comando crea un activador llamado pubsub-trigger-existing para el tema de Pub/Sub identificado por projects/${PROJECT_ID}/topics/${TOPIC_NAME}.

Mensajes de Pub/Sub (tema nuevo)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

Reemplaza lo siguiente:

  • TRIGGER: Es ID del activador o un identificador completamente calificado.
  • LOCATION: Es la ubicación del activador de Eventarc. De manera alternativa, configura la propiedad eventarc/location. Por ejemplo, gcloud config set eventarc/location us-central1.

    Los activadores de Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.

Notas:

  • La marca --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" es obligatoria.
  • Cada activador puede tener varios filtros de eventos, delimitados por comas en una --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 manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador mediante la marca --destination-run-path.
  • De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, independientemente de la actividad, y no vencen. Para cambiar la duración de la inactividad, consulta Administra suscripciones.

Ejemplo:

  gcloud eventarc triggers create pubsub-trigger-new \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --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 pubsub-trigger-new para este.

Como práctica recomendada, Google recomienda no volver a usar el tema de Pub/Sub creado por un activador porque borrar un activador de Eventarc también borra cualquier tema de Pub/Sub que haya creado el activador.

Crea un activador a través de la consola

Puedes usar la página de la consola de Cloud Run a fin de crear activadores para los Registros de auditoría de Cloud y los tipos de eventos de Pub/Sub. Sin embargo, para crear activadores para eventos directos (por ejemplo, desde Cloud Storage o Firebase Alerts), debes usar la CLI de gcloud o la página de la consola de Eventarc.

  1. Si es necesario, habilita la API de Eventarc.

    Habilitar la API

  2. En la consola de Google Cloud ve a Cloud Run.

    Ir a Cloud Run

  3. En la lista de servicios, haz clic en un servicio existente o crea uno nuevo.

  4. En la página de detalles del servicio, haz clic en la pestaña Activadores.

  5. Haz clic en Agregar activador de Eventarc.

  6. En la lista Elegir un evento, busca todos los eventos y proveedores de eventos que son compatibles.

    Agrega un activador a través de la consola

  7. Selecciona un proveedor de eventos y elige un evento.

    Por ejemplo, selecciona Cloud Scheduler > google.cloud.scheduler.v1.CloudScheduler.UpdateJob.

    Debes identificar qué evento filtrar. Consulta Determina filtros de eventos para Registros de auditoría de Cloud.

  8. Si seleccionas el evento Tema de Cloud Pub/Sub, puedes seleccionar un tema existente o crear un tema nuevo para el activador.

    De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, independientemente de la actividad, y no vencen. Para cambiar la duración de la inactividad, consulta Administra suscripciones.
  9. Selecciona una de las siguientes opciones:

    • Cualquier recurso: Es el valor predeterminado y, además, incluye los recursos creados de forma dinámica que tienen identificadores generados en el momento de la creación.

    • Recurso específico: Debes proporcionar el nombre completo del recurso. Por ejemplo, escribe projects/_/buckets/eventarc-bucket/objects/random.txt.

  10. Especifica una región de la cual recibir eventos.

    Los activadores de Eventarc están disponibles en regiones específicas. Para evitar cualquier problema de rendimiento y residencia de datos causado por un activador global, te recomendamos que la ubicación coincida con la del servicio de Google Cloud que genera eventos.

  11. Selecciona la cuenta de servicio que invoca el servicio de Cloud Run.

    También puedes crear una cuenta de servicio nueva.

    Esto especifica el correo electrónico de la cuenta de servicio de IAM asociada con el activador. En los destinos de Cloud Run, esta cuenta de servicio se usa para generar tokens de identidad cuando se invoca el servicio.

  12. De manera opcional, especifica la ruta de URL del servicio a la que se enviará la solicitud entrante.

    Esta es la ruta relativa en el servicio de destino al que se deben enviar los eventos del activador. Por ejemplo: /, /route, route y route/subroute.

  13. Después de crear el activador, verifica su estado. Para esto, asegúrate de que haya una marca de verificación en la pestaña Activadores.

¿Qué sigue?