1. Introducción
Cloud Run te permite ejecutar contenedores sin estado en un entorno completamente administrado. Está compilado a partir de Knative de código abierto, lo que te permite ejecutar tus contenedores completamente administrados con Cloud Run o en el clúster de Google Kubernetes Engine con Cloud Run for Anthos.
Eventarc facilita la conexión de varios servicios (Cloud Run, Cloud Functions, Workfklows) con eventos de una variedad de fuentes. Te permite crear arquitecturas controladas por eventos en las que los microservicios están vinculados y distribuidos de manera flexible. También se encarga de la transferencia de eventos, la entrega, la seguridad, la autorización y el manejo de errores por ti, lo que mejora la agilidad del desarrollador y la resiliencia de las aplicaciones.
En este codelab, aprenderás sobre Eventarc. De manera más específica, escucharás eventos de Pub/Sub, Cloud Storage y registros de auditoría de Cloud con Eventarc y los pasarás a un servicio de Cloud Run.
Qué aprenderás
- Visión de Eventarc
- Descubre eventos en Eventarc
- Crea un receptor de Cloud Run
- Crea un activador para Pub/Sub
- Crea un activador para Cloud Storage
- Crea un activador para los Registros de auditoría de Cloud
- Explora la IU de Eventarc
2. Visión de Eventarc
El objetivo de Eventarc es entregar eventos de varias fuentes de eventos de Google, Google Cloud y de terceros a destinos de eventos de Google Cloud.
Fuentes de Google Cloud | Fuentes de eventos que son productos propiedad de Google Cloud |
Fuentes de Google | Fuentes de eventos que son productos de Google, como Gmail, Hangouts, Administración de Android y muchos más |
Fuentes personalizadas | Fuentes de eventos que no son productos de Google y que crean los usuarios finales |
Fuentes de terceros | Fuentes de eventos que no son propiedad de Google ni producidas por los clientes. Esto incluye fuentes de eventos populares, como Check Point CloudGuard, Datadog, ForgeRock, Lacework, etc., que son propiedad y están mantenidos por proveedores y socios externos. |
Los eventos se normalizan en el formato CloudEvents v1.0 para la interoperabilidad entre servicios. CloudEvents es una especificación abierta neutral para proveedores que describe los datos de eventos en formatos comunes, lo que permite la interoperabilidad entre servicios, plataformas y sistemas.
3. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una string de caracteres que no se utiliza en las API de Google y se puede actualizar en cualquier momento.
- El ID del proyecto debe ser único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). Cloud Console genera automáticamente una string única, que, por lo general, no importa cuál sea. En la mayoría de los codelabs, debes hacer referencia al ID del proyecto (suele ser
PROJECT_ID
). Por lo tanto, si no te gusta, genera otro aleatorio o prueba con uno propio y comprueba si está disponible. Después de crear el proyecto, este ID se “congela” y no se puede cambiar. - Además, hay un tercer valor, el Número de proyecto, que usan algunas API. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en Cloud Console para usar las API o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Si quieres cerrar los recursos para no se te facture más allá de este instructivo, sigue las instrucciones de “limpieza” que se encuentran al final del codelab. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.
Antes de comenzar
En Cloud Shell, asegúrate de que tu ID del proyecto esté configurado:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Implementa un servicio de Cloud Run
Implementar un servicio de Cloud Run para recibir eventos Implementarás el contenedor Hello de Cloud Run, que registra el contenido de CloudEvents.
Primero, habilita los servicios necesarios para Cloud Run:
gcloud services enable run.googleapis.com
Implementa el contenedor hello en Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio. Puedes abrir la URL del servicio en cualquier ventana del navegador para comprobar que el servicio esté implementado.
5. Descubrimiento de eventos
Antes de crear activadores en Eventarc, puedes descubrir cuáles son las fuentes de eventos, los tipos de eventos que pueden emitir y cómo configurar los activadores para consumirlos.
Para ver la lista de diferentes tipos de eventos, sigue estos pasos:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Para obtener más información sobre cada tipo de evento, sigue estos pasos:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Para ver la lista de servicios que emiten un tipo de evento determinado, sigue estos pasos:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Para ver la lista de nombres de métodos (subeventos) que cada servicio puede emitir, sigue estos pasos:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Crea un activador de Pub/Sub
Una forma de recibir eventos es a través de Cloud Pub/Sub. Cualquier aplicación puede publicar mensajes en Pub/Sub, y estos mensajes se pueden entregar a Cloud Run a través de Eventarc.
Configuración
Antes de crear un activador, habilita los servicios necesarios para Eventarc:
gcloud services enable eventarc.googleapis.com
También necesitas una cuenta de servicio para que la usen los activadores. Crear una cuenta de servicio:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Crear
Crea un activador para filtrar los eventos publicados en el tema de Pub/Sub en nuestro servicio implementado de Cloud Run:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Prueba
El activador de Pub/Sub crea un tema encubierto. Vamos a averiguarlo y asignarlo a una variable:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Usa gcloud
para publicar un mensaje en el tema:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
El servicio de Cloud Run registra el cuerpo del mensaje entrante. Puedes ver esto en la sección Registros de la instancia de Cloud Run:
Crear con un tema de Pub/Sub existente
De forma predeterminada, cuando creas un activador de Pub/Sub, Eventarc crea un tema en profundidad para que lo uses como tema de transporte entre tu aplicación y un servicio de Cloud Run. Esto es útil para crear con facilidad y rapidez un activador respaldado por Pub/Sub, pero, a veces, es posible que desees usar un tema existente. Eventarc te permite especificar un tema de Pub/Sub existente en el mismo proyecto con la marca de gcloud --transport-topic
.
Para ver cómo funciona, crea un tema de Pub/Sub para usarlo como tema de transporte:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Crea un activador:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Para probar el activador, envía un mensaje al tema:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Crea un activador de Cloud Storage
En este paso, crearás un activador para escuchar eventos de Cloud Storage.
Configuración
Primero, crea un bucket del cual recibir eventos:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Otorga el rol eventarc.eventReceiver
para que la cuenta de servicio pueda usarse en un activador de Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
También debes agregar el rol pubsub.publisher
a la cuenta de servicio de Cloud Storage para los activadores de Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
Crear
Crea un activador para enrutar los eventos de creación de archivos nuevos del bucket a tu servicio:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Prueba
Enumera todos los activadores para confirmar que se creó de forma correcta:
gcloud eventarc triggers list
Sube un archivo al bucket de Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Si revisas los registros del servicio de Cloud Run en la consola de Cloud, deberías ver el evento recibido:
8. Crea un activador de registros de auditoría de Cloud
Aunque el activador de Cloud Storage es la mejor manera de detectar eventos de Cloud Storage, en este paso, crearás un activador de Registro de auditoría de Cloud para que haga lo mismo.
Configuración
Para recibir eventos de un servicio, debes habilitar los Registros de auditoría de Cloud. En la consola de Cloud, selecciona IAM & Admin
y Audit Logs
en el menú superior izquierdo. En la lista de servicios, marca Google Cloud Storage
:
En el lado derecho, asegúrate de que Admin
, Read
y Write
estén seleccionados y haz clic en Save
:
Crear
Crea un activador para enrutar los eventos de creación de archivos nuevos del bucket a tu servicio:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Prueba
Los activadores de registros de auditoría tardan un poco en inicializarse. Para verificar que el activador se cree, enumera todos los activadores:
gcloud eventarc triggers list
Deberías ver que el campo ACTIVE
es Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Sube el mismo archivo al bucket de Cloud Storage como lo hiciste anteriormente:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Si revisas los registros del servicio de Cloud Run en la consola de Cloud, deberías ver el evento recibido:
9. Explora la IU de Eventarc
En este paso, explorarás la IU de Eventarc en la consola de Google Cloud. En la IU de Eventarc, puedes obtener una descripción general de todos los activadores, editarlos y borrarlos, y crear activadores nuevos desde la consola de Google Cloud.
Ve a la sección de Eventarc de Google Cloud:
Verás la lista de activadores que creaste anteriormente:
Si haces clic en un activador, puedes ver sus detalles, editarlo o borrarlo:
También puedes crear un activador nuevo si seleccionas Create trigger
y completas los detalles del activador:
10. ¡Felicitaciones!
Felicitaciones por completar el codelab.
Temas abordados
- Visión de Eventarc
- Descubre eventos en Eventarc
- Crea un receptor de Cloud Run
- Crea un activador para Pub/Sub
- Crea un activador para Cloud Storage
- Crea un activador para los Registros de auditoría de Cloud
- Explora la IU de Eventarc