Recibe eventos mediante Registros de auditoría de Cloud (gcloud)
En esta guía de inicio rápido, se muestra cómo recibir eventos de Cloud Storage en un servicio de Cloud Run no autenticado mediante Eventarc.
Puedes completar esta guía de inicio rápido con Google Cloud CLI. Para obtener instrucciones sobre cómo usar la consola, consulta Crea un activador mediante la consola de Google Cloud.
En esta guía de inicio rápido, podrás hacer lo siguiente:
Crear un bucket de Cloud Storage para que sea la fuente del evento
Implementar un servicio de receptor de eventos en Cloud Run
Crear un activador de eventos
Generar un evento mediante la carga de un archivo al bucket de Cloud Storage y visualizarlo en los registros de Cloud Run.
Antes de comenzar
Algunos de los pasos de este documento podrían no funcionar correctamente si tu organización aplica restricciones a tu entorno de Google Cloud. En ese caso, es posible que no puedas completar tareas como crear direcciones IP públicas o claves de cuenta de servicio. Si realizas una solicitud que muestra un error sobre las restricciones, consulta cómo desarrollar aplicaciones en un entorno restringido de Google Cloud.
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.
- Actualiza los componentes de
gcloud
:gcloud components update
- Accede con tu cuenta:
gcloud auth login
- Establece las variables de configuración que se usan en esta guía de inicio rápido:
gcloud config set project PROJECT_ID gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
- Habilita los tipos de registros de lectura de administrador, lectura de datos y escritura de datos de los registros de auditoría de Cloud en Cloud Storage:
Ten en cuenta que a nivel de proyecto, necesitas la función
roles/owner
de administración de identidades y accesos para configurar los registros de auditoría de acceso a datos de tus recursos de Google Cloud.- Lee la política de IAM de tu proyecto y almacénala en un archivo:
gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
- Edita la política en
/tmp/policy.yaml
. Para ello, agrega o cambia solo la configuración de los registros de auditoría de acceso a datos.auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_WRITE - logType: DATA_READ service: storage.googleapis.com
- Escribe tu nueva política de IAM:
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
Si el comando anterior informa de un conflicto con otro cambio, repite estos pasos y comienza por leer la lectura de la política de IAM del proyecto.
- Lee la política de IAM de tu proyecto y almacénala en un archivo:
- Otorga la función
eventarc.eventReceiver
a la cuenta de servicio de Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role='roles/eventarc.eventReceiver'
- Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes de esa fecha, otorga la función
iam.serviceAccountTokenCreator
a la cuenta de servicio de Pub/Sub:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"\ --role='roles/iam.serviceAccountTokenCreator'
- Descarga e instala la herramienta de administración de código fuente de Git.
Cree un bucket de Cloud Storage
En esta guía de inicio rápido, se usa Cloud Storage como la fuente del evento. Para crear un bucket de almacenamiento, ejecuta el siguiente comando:
gsutil mb -l us-central1 gs://events-quickstart-PROJECT_ID/
Después de crear la fuente del evento, puedes implementar el servicio del receptor de eventos en Cloud Run.
Implementa el servicio del receptor de eventos en Cloud Run
Implementa un servicio de Cloud Run que reciba y registre eventos. Para implementar el servicio del receptor de eventos de muestra, haz lo siguiente:
Clone el repositorio:
Comienza a usarlo
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
Compila el contenedor y súbelo a Cloud Build:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld-events
Implementa la imagen del contenedor en Cloud Run:
gcloud run deploy helloworld-events \ --image gcr.io/PROJECT_ID/helloworld-events \ --allow-unauthenticated
Cuando la implementación se realiza correctamente, la línea de comandos muestra la URL del servicio.
Ahora que implementaste el servicio del receptor de eventos llamado
helloworld-events
en Cloud Run, puedes configurar el activador.
Crea un activador de Eventarc
El activador de Eventarc enviará eventos desde el bucket de Cloud Storage al servicio helloworld-events
de Cloud Run.
Crea un activador que filtre los eventos de Cloud Storage y que use la cuenta de servicio predeterminada de Compute Engine del proyecto de Google Cloud:
gcloud eventarc triggers create events-quickstart-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --service-account=
PROJECT_NUMBER
-compute@developer.gserviceaccount.comEsto crea un activador llamado
events-quickstart-trigger
.Para confirmar que
events-quickstart-trigger
se creó de forma correcta, ejecuta el siguiente comando:gcloud eventarc triggers list --location=us-central1
Se muestra
events-quickstart-trigger
con un objetivo dehelloworld-events
.
Genera y visualiza un evento
Para generar un evento, haz lo siguiente:
Sube un archivo de texto a Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://events-quickstart-PROJECT_ID/random.txt
La carga genera un evento y el servicio de Cloud Run registra el mensaje del evento.
Para ver las entradas de registro relacionadas con eventos creadas por tu servicio, sigue estos pasos:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events AND NOT resource.type=build"
Busca una entrada de registro similar a lo siguiente:
Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
En el ejemplo anterior,
BUCKET_NAME
es el nombre del bucket de Cloud Storage.
¡Felicitaciones! Implementaste un servicio de receptor de eventos en Cloud Run de forma correcta, creaste un activador de Eventarc, generaste un evento desde Cloud Storage y lo viste en los registros de Cloud Run.
Limpia
Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre por almacenar la imagen del contenedor en Container Registry, por los recursos de Eventarch, y por almacenar archivos en el bucket de Cloud Storage.
Puedes borrar tu imagen y borrar tu bucket de almacenamiento. Para borrar el activador de Eventarc, ejecuta el siguiente comando:
gcloud eventarc triggers delete events-quickstart-trigger
Como alternativa, puedes borrar el proyecto de Cloud para evitar que se generen cargos. Si borras el proyecto de Cloud, se dejan de facturar todos los recursos que usaste en ese proyecto.
gcloud projects delete PROJECT_ID_OR_NUMBER
- Reemplaza PROJECT_ID_OR_NUMBER por el ID o el número del proyecto.