Publicar y recibir eventos creando un bus y un registro (consola)
En esta guía de inicio rápido se muestra cómo publicar y recibir mensajes de eventos creando un bus avanzado de Eventarc y registrándote en tu proyecto de Google Cloud.
Un bus te permite centralizar el flujo de mensajes a través de tu sistema y actúa como un router. Recibe mensajes de eventos de una fuente de mensajes o publicados por un proveedor y los evalúa según un registro.
Una inscripción identifica una suscripción a un autobús concreto y define los criterios de coincidencia de los mensajes, lo que hace que se dirijan a uno o varios destinos.
En esta guía de inicio rápido, harás lo siguiente:
Crea un repositorio estándar de Artifact Registry.
Despliega un servicio de receptor de eventos en Cloud Run.
Crea un bus avanzado de Eventarc.
Crea un registro avanzado de Eventarc.
Publica un mensaje de evento en el bus.
Consulta los datos de eventos en los registros de Cloud Run.
Puedes completar la mayoría de los pasos de esta guía de inicio rápido con la consola de Google Cloud . Para completar todos los pasos con la CLI de Google Cloud, consulta Publicar y recibir eventos creando un bus y una inscripción (CLI de gcloud).
Antes de empezar
Es posible que las restricciones de seguridad definidas por tu organización te impidan completar los siguientes pasos. Para obtener información sobre cómo solucionar problemas, consulta el artículo Desarrollar aplicaciones en un entorno limitado Google Cloud .
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - En algunos pasos de esta guía de inicio rápido, debes usar la CLI de gcloud:
- Configura gcloud CLI en uno de los siguientes entornos de desarrollo:
Cloud Shell
Para usar un terminal online con la CLI de gcloud ya configurada, activa Cloud Shell:
En la parte inferior de esta página, se inicia una sesión de Cloud Shell y se muestra un mensaje de la línea de comandos. La sesión puede tardar unos segundos en inicializarse.
Shell local
Para usar un entorno de desarrollo local, sigue estos pasos:
- Selecciona tu proyecto: Google Cloud
gcloud config set project PROJECT_ID
Sustituye
PROJECT_ID
por el nombre de tu proyecto. Google Cloud - Actualiza los componentes de
gcloud
:gcloud components update
- Inicia sesión con tu cuenta:
gcloud auth login
- Defina la variable de configuración que se usa en esta guía de inicio rápido:
REGION=us-central1
- Configura gcloud CLI en uno de los siguientes entornos de desarrollo:
-
Si has creado el proyecto, se te asignará el rol básico Propietario (
roles/owner
). De forma predeterminada, este rol de gestión de identidades y accesos (IAM) incluye los permisos necesarios para acceder por completo a la mayoría de los recursos Google Cloud, por lo que puedes saltarte este paso.Si no eres el creador del proyecto, debes conceder los permisos necesarios al principal correspondiente. Por ejemplo, una entidad principal puede ser una cuenta de Google (para usuarios finales) o una cuenta de servicio (para aplicaciones y cargas de trabajo de computación).
Ten en cuenta que, de forma predeterminada, los permisos de Cloud Build incluyen permisos para subir y descargar artefactos de Artifact Registry.
Permisos obligatorios
Para obtener los permisos que necesitas para completar esta guía de inicio rápido, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
-
Editor de Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrador de Cloud Run (
roles/run.admin
) -
Desarrollador de Eventarc (
roles/eventarc.developer
) -
Administrador de bus de mensajes de Eventarc (
roles/eventarc.messageBusAdmin
) -
Usuario con permiso para ver registros (
roles/logging.viewAccessor
) -
Administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin
) -
Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
) -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) -
Administrador de Uso de Servicio (
roles/serviceusage.serviceUsageAdmin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de Cloud Build (
- Asigna roles en el proyecto a la cuenta de servicio predeterminada de Compute Engine. Estos roles son necesarios para compilar y desplegar tu imagen de contenedor.
- En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Para modificar los roles de la cuenta de servicio si ya tiene roles en el recurso, busca una fila que contenga el principal.
o
Para asignar roles a la cuenta de servicio cuando no tenga ningún rol en el recurso, haga clic en
Grant Access (Conceder acceso) y, a continuación, introduzca el identificador de la cuenta de servicio predeterminada de Compute Engine con el siguiente formato:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Sustituye
PROJECT_NUMBER
por el número de tu proyecto. Google Cloud Puedes encontrar el número de tu proyecto en la página Bienvenido de la consola de Google Cloud .- Haz clic en Editar principal en la fila correspondiente.
- Haz clic en Añadir rol o en Añadir otro rol.
- En la lista Selecciona un rol, busca y selecciona los siguientes roles:
- Artifact Registry Writer: para subir artefactos de Artifact Registry
- Escritor de registros: para escribir registros en Cloud Logging
- Objeto de almacenamiento Usuario: para acceder a objetos de Cloud Storage
- Haz clic en Guardar.
- En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
- De forma predeterminada, solo los propietarios y editores del proyecto, así como los administradores e invocadores de Cloud Run, pueden llamar a los servicios de Cloud Run. Para configurar la autenticación, asigna el rol Invocador de Cloud Run en tu proyecto Google Cloud a una cuenta de servicio. Para
hacer pruebas, adjuntarás esta cuenta de servicio a una
pipeline avanzado de Eventarc para representar la identidad de la
pipeline.
- En la Google Cloud consola, ve a la página Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- Introduce un nombre de cuenta de servicio.
- Haz clic en Crear y continuar.
- En la lista Selecciona un rol, busca y selecciona el rol Invocador de Cloud Run.
- Haz clic en Listo.
Ten en cuenta que puedes configurar quién puede acceder a tu servicio de Cloud Run de cualquiera de las siguientes formas:
- Concede permiso a determinadas cuentas de servicio o grupos para permitir el acceso al servicio. Todas las solicitudes deben tener un encabezado de autorización HTTP que contenga un token de OpenID Connect firmado por Google para una de las cuentas de servicio autorizadas. Así se configura el acceso en esta guía de inicio rápido.
- Otorga permiso a
allUsers
para permitir el acceso sin autenticar.
Para obtener más información, consulta Control de acceso para Cloud Run.
- En la Google Cloud consola, ve a la página Cuentas de servicio.
En la Google Cloud consola, ve a la página Repositorios.
Haz clic en
Crear repositorio.Escribe un nombre (por ejemplo,
my-repo
).Los nombres de los repositorios deben ser únicos en cada ubicación de repositorio de un proyecto.
En Formato del repositorio, selecciona Docker.
En la lista Región, selecciona us-central1 (Iowa).
Acepta todos los demás valores predeterminados.
Haz clic en Crear.
En tu terminal, clona el repositorio de GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Cambia al directorio que contiene el código de ejemplo de Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
Crea una imagen de contenedor Docker y transfiérela a tu repositorio:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Sustituye
REPOSITORY
por el nombre de tu repositorio de Artifact Registry.Despliega la imagen de contenedor en Cloud Run:
En la Google Cloud consola, ve a la página Cloud Run.
Haz clic en > Servicio.
Desplegar contenedorSelecciona Desplegar una revisión desde una imagen de contenedor que ya existe.
En URL de imagen del contenedor, haz clic en Seleccionar para especificar la imagen del contenedor de Artifact Registry que has creado anteriormente.
Si quieres, puedes cambiar el Nombre del servicio, por ejemplo, a
my-service
.En la lista Región, selecciona us-central1 (Iowa).
En Autenticación, selecciona Pedir autenticación.
De esta forma, el servicio solo permitirá las invocaciones autenticadas.
En Ingress, selecciona All (Todo).
De esta forma, se permiten todas las solicitudes, incluidas las que proceden directamente de Internet, a la URL de
run.app
. Para obtener más información, consulta el artículo Restringir el acceso de red a Cloud Run.Acepta todos los demás valores predeterminados.
Haz clic en Crear y espera a que se complete el despliegue.
En la Google Cloud consola, ve a la página Eventarc > Bus.
Haz clic en
Crear bus.En la página Crear un bus, haz lo siguiente:
- Introduce un nombre de bus; por ejemplo,
my-bus
. - En la lista Región, selecciona us-central1 (Iowa).
- Introduce un nombre de bus; por ejemplo,
Acepta todos los demás valores predeterminados.
Haz clic en Crear.
Para crear una inscripción, en la consola de Google Cloud , ve a la página Eventarc > Pipelines.
Haz clic en
Crear canalización.En el panel Detalles de la canalización, haz lo siguiente:
- Introduce un nombre de flujo de procesamiento; por ejemplo,
my-pipeline
. - En la lista Región, selecciona us-central1 (Iowa). La canalización debe crearse en la misma región que el bus.
- Acepta todos los demás valores predeterminados.
- Haz clic en Continuar.
- Introduce un nombre de flujo de procesamiento; por ejemplo,
En el panel Registros, haz lo siguiente:
- Haz clic en Añadir una inscripción.
- Introduce un nombre de registro; por ejemplo,
my-enrollment
. - En la lista Eventarc Advanced Bus, selecciona el bus que has creado anteriormente.
En el campo Expresión CEL, escribe una expresión de evaluación con CEL. Por ejemplo:
message.type == "hello-world-type"
Haz clic en Listo.
Haz clic en Continuar.
En el panel Mediación de eventos, vuelva a hacer clic en Continuar.
En el panel Destino, haga lo siguiente:
En la lista Tipo de destino, selecciona Servicio de Cloud Run (vía HTTP) y, a continuación, el servicio de Cloud Run que hayas creado.
Selecciona la casilla Habilitar autenticación.
En la lista Encabezado de autorización, selecciona Token de OIDC.
En la lista Cuenta de servicio, selecciona la cuenta de servicio que has creado anteriormente y que invocará tu servicio de destino. Esta dirección de correo de la cuenta de servicio se usa para generar el token de OIDC.
Haz clic en Crear.
En la Google Cloud consola, ve a la página Cloud Run.
En la página Servicios, haz clic en el nombre del servicio.
Haz clic en la pestaña Registros.
Puedes filtrar las entradas del registro y devolver el resultado. Por ejemplo, puedes buscar
hello-world-data
.Busca una entrada de registro similar a la siguiente:
2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
Elimina los recursos avanzados de Eventarc:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Crear un repositorio estándar de Artifact Registry
Crea un repositorio estándar de Artifact Registry para almacenar tu imagen de contenedor.
Desplegar un servicio de receptor de eventos en Cloud Run
Despliega un servicio de Cloud Run que registre el contenido de un evento. Se admiten otros destinos de eventos, como un tema de Pub/Sub, Workflows o un endpoint HTTP. Para obtener más información, consulta Proveedores y destinos de eventos.
Crear un bus de Eventarc Advanced
Un bus recibe mensajes de eventos de una fuente de mensajes o publicados por un proveedor y actúa como un enrutador de mensajes.
Para obtener más información, consulta el artículo Crear un bus para enrutar mensajes.
Crear un registro de Eventarc Advanced
Una inscripción determina qué mensajes se enrutan a un destino y también especifica la canalización que se usa para configurar un destino para los mensajes de eventos.
Para obtener más información, consulta Crear un registro para recibir eventos.
Cuando se usa la Google Cloud consola, se pueden crear una inscripción y una canalización al mismo tiempo.
Publicar un mensaje de evento en el bus
Para publicar un mensaje directamente en tu bus, puedes usar el comando
gcloud eventarc message-buses publish
o enviar una solicitud a la API REST de publicación de Eventarc. Para obtener más información, consulta Publicar eventos directamente.
El mensaje debe estar en formato CloudEvents, que es una especificación para describir datos de eventos de forma común. El elemento data
es la carga útil de tu evento. En este campo se puede incluir cualquier JSON con el formato correcto. Para obtener más información sobre los atributos de contexto de CloudEvents, consulta el artículo Formato de evento.
Publica un evento en tu bus avanzado de Eventarc mediante la CLI de gcloud y una --event-data
y otras marcas de atributos de evento:
gcloud eventarc message-buses publish BUS_NAME \
--event-data='{"key": "hello-world-data"}' \
--event-id=hello-world-id-1234 \
--event-source=hello-world-source \
--event-type=hello-world-type \
--event-attributes="datacontenttype=application/json" \
--location=$REGION
También puedes publicar un evento en tu bus avanzado de Eventarc como mensaje JSON con gcloud CLI y la marca --json-message
:
gcloud eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"key": "hello-world-data"}}'
Después de publicar un evento, deberías recibir el mensaje "Evento publicado correctamente".
Ver los datos de eventos en los registros de Cloud Run
Después de publicar un evento en tu bus avanzado de Eventarc, puedes consultar los registros de tu servicio de Cloud Run para verificar que el evento se ha recibido correctamente.
Has creado y registrado correctamente un bus avanzado de Eventarc, has publicado un mensaje de evento en el bus y has verificado el resultado esperado en los registros del servicio receptor de eventos.
Limpieza
Cuando hayas completado las tareas descritas en esta guía de inicio rápido, puedes evitar que se te siga facturando eliminando los recursos que has creado:
También puedes eliminar tu Google Cloud proyecto para evitar que se te apliquen cargos. Al eliminar tu Google Cloud proyecto, se detendrá la facturación de todos los recursos utilizados en él.