Crea un bus para enrutar mensajes

Un bus de Eventarc Advanced te permite centralizar, supervisar y hacer un seguimiento del flujo de mensajes a través de tu sistema y actúa como un router. Recibe eventos de una fuente de mensajes o publicados por un proveedor y los evalúa según una inscripción. Una inscripción identifica una suscripción a un bus en particular y define los criterios de coincidencia para los mensajes, lo que hace que se enruten según corresponda. Para obtener más información, consulta Cómo crear una inscripción para recibir eventos.

Los proveedores de eventos y los destinos pueden usar un bus en tu proyecto o en otros proyectos. Para obtener más información, consulta Diseños de proyectos.

Roles obligatorios

Un rol de Identity and Access Management (IAM) contiene un conjunto de permisos que te permite realizar acciones específicas en los recursos de Google Cloud . Se requieren los siguientes roles y permisos cuando se crea un bus para enrutar mensajes:

  • Para obtener el permiso que necesitas para crear un bus, pídele a tu administrador que te otorgue el rol de IAM Administrador de Eventarc (roles/eventarc.admin) o el rol de IAM Administrador de bus de mensajes de Eventarc (roles/eventarc.messageBusAdmin) en tu proyecto de bus. Estos roles predefinidos contienen el permiso eventarc.messageBuses.create, que se requiere para crear un bus.
  • Para obtener el permiso que necesitas para usar un bus, pídele a tu administrador que te otorgue el rol de IAM Usuario de bus de mensajes de Eventarc (roles/eventarc.messageBusUser) en tu proyecto de bus. Este rol predefinido contiene el permiso eventarc.buses.use, que se requiere para usar un bus.
  • Para crear una canalización y una inscripción, se requieren permisos adicionales. Para obtener más información, consulta los roles requeridos para crear una inscripción.

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso. También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Crea un bus

Puedes crear un bus de las siguientes maneras:

  • En la consola de Google Cloud
  • Con Google Cloud CLI en la terminal o en 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. Haz clic en Crear bus.

  3. En la página Crear un bus, haz lo siguiente:

    1. Ingresa un nombre de bus. Este es el ID de tu autobús.
    2. Opcional: Ingresa un nombre visible del bus que se mostrará en la página Detalles del bus.
    3. En la lista Región, selecciona una región compatible para implementar tu bus.
    4. En la lista Gravedad del registro, selecciona la gravedad mínima para los eventos describidos en las entradas de registro. El valor predeterminado es None. Para obtener más información, consulta LogSeverity
    5. En Encriptación, acepta la Google-managed encryption key predeterminada o selecciona la clave de Cloud KMS. Para obtener más información, consulta Usa claves de encriptación administradas por el cliente (CMEK).
    6. Si seleccionas Clave de Cloud KMS, haz lo siguiente:

      1. En la lista Tipo de clave, selecciona un método para administrar tus claves.

        Puedes administrar tus claves de forma manual o usar Autokey, que te permite generar llaveros y claves a pedido. Si la opción Cloud KMS con Autokey está inhabilitada, aún no está integrada en el tipo de recurso actual.

      2. En Selecciona una clave de Cloud KMS, selecciona una clave.

        Ten en cuenta que debes seleccionar una región para poder ver tus claves administradas por el cliente.

      3. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Selecciona una clave administrada por el cliente, haz clic en Ingresar clave de forma manual y, luego, escribe el nombre de la clave en el formato especificado.

      4. Si se te solicita, otorga el rol cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Eventarc.

    7. Opcional: 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 de google-api-source o ingresa un nombre de fuente diferente.
      2. Haz clic en Crear.

        Esto permite la recopilación automática de eventos que provienen directamente de las fuentes de Google.

        Ten en cuenta que solo se publican los eventos de los recursos del mismo Google Cloud proyecto que el bus. Para obtener más información, consulta Cómo publicar eventos desde fuentes de Google.

    8. Opcional: Para agregar etiquetas, haz clic en Agregar etiqueta. Las etiquetas son pares clave-valor que te ayudan a organizar tus recursos deGoogle Cloud . Para obtener más información, consulta ¿Qué son las etiquetas?

  4. Haz clic en Crear.

gcloud

  1. Abre una terminal.

  2. Crea un bus con el comando gcloud beta eventarc message-buses create.

    gcloud beta eventarc message-buses create BUS_NAME \
        --location=REGION
    

    Reemplaza lo siguiente:

    • BUS_NAME: El ID o el identificador completamente calificado del bus
    • REGION: Una ubicación compatible para el autobús

      Como alternativa, puedes establecer la propiedad de ubicación de Google Cloud CLI:

      gcloud config set eventarc/location REGION
      

    Opcional: También puedes usar las siguientes marcas:

    • --async para mostrar el 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 la gravedad mínima de los eventos descritos en las entradas de registro. Debe ser una de las siguientes opciones: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. El valor predeterminado es NONE. Para obtener más información, consulta LogSeverity.

API de REST

Para crear un bus, usa el método projects.locations.messageBuses.create.

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

  • BUS_NAME: Es el nombre visible del bus, por ejemplo, my_bus.
  • LABEL_KEY y LABEL_VALUE: Opcional. Un mapa de pares clave-valor de etiquetas que te ayuda a organizar tus Google Cloud recursos. Para obtener más información, consulta ¿Qué son las etiquetas?
  • ANNOTATION_KEY y ANNOTATION_VALUE: Opcional. Un mapa de pares clave-valor de anotación de texto de formato libre. Puedes usarlos para adjuntar información arbitraria asociada con el recurso. Para obtener más información, consulta Anotaciones.
  • ENCRYPT_KEY: es opcional. Una clave de Cloud KMS que el bus 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 de tu proyecto. Google Cloud
  • LOCATION: la región en la que se creará el bus, por ejemplo, us-central1.
  • LOG_SEVERITY: es opcional. Es la gravedad mínima del evento que se describe en una entrada de registro. Es uno de los siguientes: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT o EMERGENCY. El valor predeterminado es NONE. Para obtener más información, consulta LogSeverity.

Cuerpo JSON de la solicitud:

{
  "display_name": "BUS_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "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/messageBuses/BUS_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Cómo borrar un bus

Puedes borrar un autobús de las siguientes maneras:

  • En la consola de Google Cloud
  • Con la CLI de gcloud en la terminal o en 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. Haz clic en el nombre del bus que quieres borrar.

    Se abrirá la página Detalles del autobús.

  3. Haz clic en Borrar.

  4. Cuando se te solicite que borres el bus, selecciona la casilla de verificación ¿Quieres continuar? para confirmar que las fuentes de mensajes configuradas para usar el bus ya no podrán hacerlo.

  5. Para confirmar la eliminación, ingresa Delete.

  6. Haz clic en Borrar.

gcloud

  1. Abre una terminal.

  2. Para borrar un bus, usa el comando gcloud beta eventarc message-buses delete.

    gcloud beta eventarc message-buses delete BUS_NAME \
        --location=REGION
    

    Reemplaza lo siguiente:

    • BUS_NAME: El ID o el identificador completamente calificado del bus
    • REGION: La ubicación compatible para el autobús

API de REST

Para borrar un bus, usa el método projects.locations.messageBuses.delete.

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

  • PROJECT_ID: Es el ID de tu proyecto. Google Cloud
  • LOCATION: la región en la que se crea el bus, por ejemplo, us-central1.
  • BUS_NAME: Es el nombre del bus 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/messageBuses/BUS_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

¿Qué sigue?