Publica y recibe eventos creando un bus y una inscripción (consola)
En esta guía de inicio rápido, se muestra cómo publicar y recibir mensajes de eventos creando un bus de Eventarc Advanced y una inscripción 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 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 a uno o más destinos.
En esta guía de inicio rápido, podrás hacer lo siguiente:
Crea un repositorio estándar de Artifact Registry.
Implementar un servicio de receptor de eventos en Cloud Run
Crea un bus de Eventarc Advanced.
Crea una inscripción en Eventarc Advanced.
Publica un mensaje de evento en el bus.
Visualizar los datos del evento 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 Google Cloud CLI, consulta Publica y recibe eventos creando un bus y una inscripción (gcloud CLI).
Antes de comenzar
Es posible que las restricciones de seguridad que define tu organización no te permitan completar los siguientes pasos. Para obtener información sobre la solución de problemas, consulta Desarrolla aplicaciones en un entorno Google Cloud restringido.
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
- Algunos pasos de esta guía de inicio rápido requieren que uses gcloud CLI:
- Configura gcloud CLI en uno de los siguientes entornos de desarrollo:
Cloud Shell
Para usar una terminal en línea 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 una ventana de 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 Google Cloud proyecto:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
por el nombre de tu Google Cloud proyecto. - Actualiza los componentes de
gcloud
:gcloud components update
- Accede con tu cuenta:
gcloud auth login
- Establece 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 eres el creador del proyecto, se te otorga el rol de propietario básico (
roles/owner
). De forma predeterminada, este rol de Identity and Access Management (IAM) incluye los permisos necesarios para obtener acceso completo a la mayoría de los recursos de Google Cloud y puedes omitir este paso.Si no eres el creador del proyecto, se deben otorgar los permisos necesarios en el proyecto a la principal correspondiente. Por ejemplo, una principal puede ser una Cuenta de Google (para usuarios finales) o una cuenta de servicio (para aplicaciones y cargas de trabajo de procesamiento).
Ten en cuenta que, de forma predeterminada, los permisos de Cloud Build incluyen permisos para subir y descargar artefactos de Artifact Registry.
Permisos necesarios
Para obtener los permisos que necesitas para completar esta guía de inicio rápido, pídele a tu administrador que te otorgue los siguientes roles de IAM 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 buses de mensajes de Eventarc (
roles/eventarc.messageBusAdmin
) -
Descriptor de acceso de vista de registros (
roles/logging.viewAccessor
) -
Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin
) -
Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin
) -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) -
Administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
-
Editor de Cloud Build (
- Otorga roles en el proyecto a la cuenta de servicio predeterminada de Compute Engine. Estos roles son necesarios para compilar e implementar tu imagen de contenedor.
- En la consola de Google Cloud , ve a la página IAM.
Para modificar los roles de la cuenta de servicio si ya tiene roles en el recurso, busca una fila que contenga la principal.
o
Para otorgar roles a la cuenta de servicio cuando no tiene roles en el recurso, haz clic en
Otorgar acceso y, luego, ingresa el identificador de la cuenta de servicio predeterminada de Compute Engine con el siguiente formulario:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
por el número de tu proyecto Google Cloud. Puedes encontrar el número del proyecto en la página de bienvenida de la consola de Google Cloud .- Haz clic en Editar principal en la fila correspondiente.
- Haz clic en Agregar rol o Agregar otro rol.
- En la lista Seleccionar un rol, filtra y selecciona los siguientes roles:
- Artifact Registry Writer: Para subir artefactos de Artifact Registry
- Logs Writer: Para escribir registros en Cloud Logging
- Storage Object User: Para acceder a objetos de Cloud Storage
- Haz clic en Guardar.
- En la consola de Google Cloud , ve a la página IAM.
- De forma predeterminada, solo los propietarios y editores del proyecto, y los administradores y los invocadores de Cloud Run pueden llamar a los servicios de Cloud Run. Para configurar la autenticación, otorga el rol de invocador de Cloud Run en tu proyecto Google Cloud a una cuenta de servicio. Para realizar pruebas, conectarás esta cuenta de servicio a un canalización avanzada de Eventarc para representar la identidad de la canalización.
- En la consola de Google Cloud , ve a la página Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- Ingresa un nombre de cuenta de servicio.
- Haz clic en Crear y continuar.
- En la lista Seleccionar un rol, filtra 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 maneras:
- Otorga permiso para seleccionar 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. Esta es la forma en que 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 consola de Google Cloud , ve a la página Cuentas de servicio.
En la consola de Google Cloud , ve a la página Repositorios.
Haz clic en
Crear repositorio.Ingresa un Nombre, por ejemplo,
my-repo
.Para la ubicación de cada repositorio en un proyecto, los nombres de los repositorios deben ser únicos.
En el 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 la terminal, clona el repositorio de GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Ve al directorio que contiene el código de muestra de Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
Compila una imagen de contenedor de Docker y envíala a tu repositorio:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Reemplaza
REPOSITORY
por el nombre de tu repositorio de Artifact Registry.Implementa la imagen del contenedor en Cloud Run:
En la consola de Google Cloud , ve a la página Cloud Run.
Haz clic en > Servicio.
Implementar contenedorSelecciona Implementar una revisión desde una imagen de contenedor existente.
En URL de la imagen del contenedor, haz clic en Seleccionar para especificar la imagen de contenedor de Artifact Registry que creaste anteriormente.
De manera opcional, puedes cambiar el Nombre del servicio, por ejemplo, a
my-service
.En la lista Región, selecciona us-central1 (Iowa).
En Autenticación, selecciona Autenticación obligatoria.
Esto configura el servicio para que solo permita invocaciones autenticadas.
En Ingress, selecciona All.
Esto permite todas las solicitudes, incluidas las solicitudes directas desde Internet a la URL
run.app
. Para obtener más información, consulta Restringe la entrada de red para Cloud Run.Acepta todos los demás valores predeterminados.
Haga clic en Crear y espere a que finalice la implementación.
En la consola de Google Cloud , ve a la página Eventarc > Bus.
Haz clic en
Crear bus.En la página Crear un bus, haz lo siguiente:
- Ingresa un Nombre de bus, por ejemplo,
my-bus
. - En la lista Región, selecciona us-central1 (Iowa).
- Ingresa 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 > Canalizaciones.
Haz clic en
Crear canalización.En el panel Detalles de la canalización, haz lo siguiente:
- Ingresa un Nombre de canalización, 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.
- Ingresa un Nombre de canalización, por ejemplo,
En el panel Enrollments, haz lo siguiente:
- Haz clic en Agregar una inscripción.
- Ingresa un Nombre de inscripción, por ejemplo,
my-enrollment
. - En la lista Bus de Eventarc Advanced, selecciona el bus que creaste antes.
En el campo CEL expression, 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, vuelve a hacer clic en Continuar.
En el panel Destino, haz lo siguiente:
En la lista Tipo de destino, selecciona Servicio de Cloud Run (a través de HTTP) y, luego, selecciona el servicio de Cloud Run que creaste anteriormente.
Selecciona la casilla de verificación Habilitar la 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 creaste anteriormente y que invocará tu servicio de destino. Esta dirección de correo electrónico de la cuenta de servicio se usa para generar el token de OIDC.
Haz clic en Crear.
En la consola de Google Cloud , ve a la página Cloud Run.
En la página Servicios, haz clic en el nombre de tu servicio.
Haz clic en la pestaña Registros.
Puedes filtrar las entradas de registro y mostrar el resultado. Por ejemplo, puedes buscar
hello-world-data
.Busca una entrada de registro similar a la que se muestra a continuación:
2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
Borra los recursos de Eventarc Advanced:
- 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.
Crea un repositorio estándar de Artifact Registry
Crea un repositorio estándar de Artifact Registry para almacenar tu imagen de contenedor.
Implementa un servicio del receptor de eventos en Cloud Run
Implementa 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 extremo HTTP. Para obtener más información, consulta Proveedores y destinos de eventos.
Crea 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 Crea un bus para enrutar mensajes.
Crea una inscripción en 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 Cómo crear un registro para recibir eventos.
Cuando usas la consola de Google Cloud , puedes crear una inscripción y una canalización al mismo tiempo.
Publica 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 de REST de Eventarc Publishing. Para obtener más información, consulta Cómo publicar eventos directamente.
El mensaje debe estar en formato CloudEvents, que es una especificación para describir los datos de eventos de una manera común. El elemento data
es la carga útil de tu evento. En este campo, se puede incluir cualquier JSON bien formado. Para obtener más información sobre los atributos de contexto de CloudEvents, consulta Formato de evento.
Publica un evento en tu bus de Eventarc Advanced con gcloud CLI y una marca de --event-data
y otros atributos del 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
O bien, publica un evento en tu bus de Eventarc Advanced como un mensaje JSON con gcloud CLI y una 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 un mensaje que diga "Se publicó el evento correctamente".
Visualiza los datos del evento en los registros de Cloud Run
Después de publicar un evento en tu bus de Eventarc Advanced, puedes verificar los registros de tu servicio de Cloud Run para comprobar que el evento se haya recibido según lo esperado.
Creaste un bus y una inscripción de Eventarc Advanced de forma correcta, publicaste un mensaje de evento en el bus y verificaste el resultado esperado en los registros del servicio de receptor de eventos.
Limpia
Cuando finalices las tareas que se describen en esta guía de inicio rápido, puedes borrar los recursos que creaste para evitar que continúe la facturación:
Como alternativa, puedes borrar tu proyecto Google Cloud para evitar que se generen cargos. Si borras tu proyecto de Google Cloud , se detendrá la facturación de todos los recursos que se usaron en él.