Publica eventos desde fuentes de Google

Puedes habilitar la recopilación y publicación de eventos de fuentes de Google para un bus de Eventarc Advanced específico creando un recurso GoogleApiSource.

Los eventos de las fuentes de Google se activan directamente por un evento no mediado, como la creación de una función de Cloud Run o un cambio de estado en un trabajo de Dataflow. Para obtener más información, consulta los tipos de eventos de Google compatibles con Eventarc.

Ten en cuenta lo siguiente:

  • De forma predeterminada, los eventos se recopilan del proyecto Google Cloud en el que existe el recursoGoogleApiSource. También puedes usar gcloud CLI para recopilar eventos de varios proyectos que se encuentran en la misma organización que el recurso GoogleApiSource. Para obtener más información, consulta Publica eventos desde varios proyectos en este documento.
  • Puedes publicar eventos en un bus que se encuentre en un Google Cloud proyecto diferente del que contiene el recurso GoogleApiSource. Puedes configurar esto con gcloud CLI o enviando una solicitud a la API de Eventarc (pero no a través de la consola de Google Cloud ).
  • Hay un límite de un recurso GoogleApiSource por proyecto y por región. Google Cloud

Antes de comenzar

Antes de comenzar, asegúrate de haber completado los siguientes pasos:

  1. Si usas Google Cloud CLI para ejecutar los comandos de esta página, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

  2. Habilita la API de Eventarc y la API de Eventarc Publishing:

    Console

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    gcloud

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Habilita eventos de fuentes de Google

Para publicar eventos desde fuentes de Google, debes crear un recurso GoogleApiSource. Este recurso representa una suscripción a eventos de la API de Google en un Google Cloud proyecto específico para un bus de Eventarc Advanced en particular.

Puedes habilitar la publicación de eventos de fuentes de Google de las siguientes maneras:

  • En la consola de Google Cloud
  • Con Google Cloud CLI en tu terminal o Cloud Shell
  • Envía una solicitud a la API de Eventarc

Console

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

    Ir a Bus

  2. Puedes crear un colectivo o, si vas a actualizar uno, haz clic en Editar.

  3. En la página Editar bus, para agregar una fuente de mensajes, haz clic en Agregar fuente.

    1. En el panel Agregar fuente de mensajes, para el proveedor de mensajes de la API de Google, acepta el valor predeterminado google-api-source o ingresa un nombre de fuente de mensajes diferente.
    2. Haz clic en Crear.
  4. Haz clic en Guardar.

gcloud

  1. Abre una terminal.

  2. Puedes habilitar los eventos de fuentes de Google con el comando gcloud eventarc google-api-sources create:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID

    Reemplaza lo siguiente:

    • GOOGLE_API_SOURCE_NAME: Es el ID o el identificador completamente calificado de tu recurso GoogleApiSource, que representa una suscripción a los eventos de la API de Google para un bus en particular.
    • BUS_NAME: Es el ID o el identificador completamente calificado del colectivo al que deseas suscribirte para recibir eventos de la API de Google.
    • BUS_PROJECT_ID: ID del proyecto Google Cloud del colectivo

    Opcional: También puedes usar las siguientes marcas:

    • --async para volver del comando de inmediato, sin esperar a que se complete la operación en curso.
    • --crypto-key para especificar el nombre completamente calificado de una clave de encriptación administrada por el cliente. Si no se especifica,se usan Google-owned and managed keys .
    • --logging-config para configurar el nivel de registro, que debe ser uno de los siguientes: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY Para obtener más información, consulta LogSeverity.

API de REST

Para habilitar los eventos de las fuentes de Google, usa el método projects.locations.googleApiSources.create.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • GOOGLE_API_SOURCE_NAME: Es el nombre visible del recurso GoogleApiSource que representa una suscripción a eventos de la API de Google para un bus en particular, por ejemplo, my_google_source.
  • LABEL_KEY y LABEL_VALUE: Opcionales. Es un mapa de pares clave-valor de etiquetas que te ayudan a organizar tus recursos de Google Cloud . Para obtener más información, consulta ¿Qué son las etiquetas?
  • ANNOTATION_KEY y ANNOTATION_VALUE: Opcionales. Es un mapa de pares clave-valor de anotación de texto de formato libre. Puedes usarlos para adjuntar información arbitraria asociada al recurso. Para obtener más información, consulta Anotaciones.
  • DESTINATION: Es el identificador completamente calificado del bus de Eventarc Advanced en el que se deben publicar los eventos de la fuente de Google en el formato projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME. Para obtener más información, consulta Crea un bus para enrutar mensajes.
  • ENCRYPT_KEY: es opcional. Una clave de Cloud KMS que el recurso GoogleApiSource debe usar para la encriptación de datos en el formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Para obtener más información, consulta Usa claves de encriptación administradas por el cliente.
  • PROJECT_ID: Es el ID del proyecto en el que se creará el recurso Google Cloud.GoogleApiSource
  • LOCATION: Es la región admitida en la que se creará el recurso GoogleApiSource, por ejemplo, us-central1.
  • LOG_SEVERITY: es opcional. Es la gravedad mínima del evento que se describe en una entrada de registro. Uno de los siguientes: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. El valor predeterminado es NONE. Para obtener más información, consulta LogSeverity.

Cuerpo JSON de la solicitud:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

Para enviar tu solicitud, expande una de estas opciones:

Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene una instancia recién creada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Ahora, los eventos de las fuentes de Google en el mismo proyecto Google Cloud que el recursoGoogleApiSourcese recopilan y publican en el bus.

Inhabilita los eventos de fuentes de Google

Para inhabilitar la publicación de eventos de fuentes de Google en un bus de Eventarc Advanced de un proyectoGoogle Cloud específico, debes borrar el recurso GoogleApiSource.

Puedes inhabilitar la publicación de eventos de fuentes de Google de las siguientes maneras:

  • En la consola de Google Cloud
  • Con gcloud CLI en tu terminal o Cloud Shell
  • Envía una solicitud a la API de Eventarc

Console

  1. En la consola de Google Cloud , ve a la página Eventarc > Detalles del bus.

    Ir a Detalles del autobús

  2. Haz clic en Editar.

  3. En la página Edit bus, para borrar el proveedor de mensajes de la API de Google, haz clic en Borrar recurso para la fuente de mensajes google-api-source (o el nombre que le hayas asignado).

  4. En el mensaje Borrar recurso, haz clic en Confirmar.

  5. Haz clic en Guardar.

gcloud

  1. Abre una terminal.

  2. Puedes inhabilitar los eventos de fuentes de Google con el comando gcloud eventarc google-api-sources delete:

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    Reemplaza lo siguiente:

    • GOOGLE_API_SOURCE_NAME: Es el ID o el identificador completamente calificado del recurso GoogleApiSource.
    • REGION: la ubicación del recurso GoogleApiSource

API de REST

Para inhabilitar los eventos de las fuentes de Google, usa el método projects.locations.googleApiSources.delete.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto Google Cloud en el que se crea el recursoGoogleApiSource.
  • LOCATION: la región en la que se crea el recurso GoogleApiSource, por ejemplo, us-central1.
  • GOOGLE_API_SOURCE_NAME: Es el nombre del recurso GoogleApiSource que deseas borrar.

Para enviar tu solicitud, expande una de estas opciones:

Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene una instancia recién creada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Ya no se recopilan ni publican los eventos de las fuentes de Google en el mismo proyecto Google Cloud que el recursoGoogleApiSourceborrado.

Publica eventos desde varios proyectos

Para recopilar y publicar eventos de fuentes de Google desde varios proyectos de Google Cloud , debes crear un recurso deGoogleApiSource, y los proyectos deben estar en la misma organización que el recurso deGoogleApiSource. Para obtener más información sobre las organizaciones, consulta Jerarquía de recursos.

Ten en cuenta lo siguiente:

  • La publicación de eventos desde varios proyectos se debe configurar con gcloud CLI y no se muestra en la consola de Google Cloud .
  • Si el proyecto que contiene el recurso GoogleApiSource se mueve a otra organización, los eventos de publicación de varios proyectos ya no funcionarán como se espera. Debes actualizar o volver a crear el recurso GoogleApiSource.

1. Otorga al agente de servicio de Eventarc el rol de IAM adecuado

Para recopilar eventos a nivel de la organización, usa el comando gcloud organizations add-iam-policy-binding para otorgar al agente de servicio de Eventarc el rol de Identity and Access Management (IAM) adecuado:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

Reemplaza lo siguiente:

  • ORGANIZATION_ID: Es el ID del recurso de tu organización.
  • SERVICE_AGENT_EMAIL: Es la dirección de correo electrónico del agente de servicio principal de Eventarc en el proyecto en el que creas el recurso GoogleApiSource. La dirección de correo electrónico tiene el siguiente formato:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
    

    Reemplaza PROJECT_NUMBER por elGoogle Cloud número de tu proyecto. Para encontrar el número del proyecto, ve a la página de bienvenida de la consola de Google Cloud o ejecuta el siguiente comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    

2. Publicar desde todos los proyectos o una lista de proyectos

Para publicar eventos de fuentes de Google en varios proyectos, usa el comando gcloud eventarc google-api-sources create de una de las siguientes maneras:

  • Publica desde todos Google Cloud los proyectos de la misma organización que el recurso GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • Publica desde una lista de proyectos Google Cloud en la misma organización que el recurso GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    Reemplaza lo siguiente:

    • GOOGLE_API_SOURCE_NAME: Es el ID o el identificador completamente calificado del recurso GoogleApiSource.
    • REGION: la ubicación del recurso GoogleApiSource
    • BUS_NAME: Es el ID o el identificador completamente calificado del colectivo al que deseas suscribirte para recibir eventos de la API de Google.
    • BUS_PROJECT_ID: ID del proyecto Google Cloud del colectivo
    • LIST_OF_PROJECTS: Es una lista delimitada por comas deGoogle Cloud IDs o números de proyectos. Puedes combinar IDs y números en la misma lista. Para publicar eventos desde el proyectoGoogle Cloud que contiene el recurso GoogleApiSource, debes incluir de forma explícita el ID o el número del proyecto en la lista.

¿Qué sigue?