Guía de inicio rápido: Recibe eventos mediante los registros de auditoría de Cloud (herramienta de línea de comandos de 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 la herramienta de línea de comandos de gcloud. Si deseas obtener instrucciones para usar la consola, consulta Usa la consola para recibir eventos con los registros de auditoría de Cloud.

En esta guía de inicio rápido, podrás hacer lo siguiente:

  1. Crear un bucket de Cloud Storage para que sea la fuente del evento

  2. Implementar un servicio de receptor de eventos en Cloud Run

  3. Crear un activador de eventos

  4. 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

  1. 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.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Habilita las API

  5. Actualiza los componentes de gcloud:
    gcloud components update
  6. Accede con tu cuenta:

    gcloud auth login
    

  7. 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
    

  8. 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:
    1. 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
      
    2. 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
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      
      • Reemplaza EMAIL_ADDRESS por tu dirección de correo electrónico.
    3. 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.
  9. Otorga la función eventarc.eventReceiver a la cuenta de servicio de Compute Engine:
    export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
        --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --role='roles/eventarc.eventReceiver'
    

  10. 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 $(gcloud config get-value project) \
        --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\
        --role='roles/iam.serviceAccountTokenCreator'
    

  11. Descarga e instala la herramienta de administración de código fuente de Git.

Crea 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-$(gcloud config get-value project)/

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:

  1. 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
    
  2. Compila el contenedor y súbelo a Cloud Build:

     gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. Implementa la imagen del contenedor en Cloud Run:

     gcloud run deploy helloworld-events \
         --image gcr.io/$(gcloud config get-value project)/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.

  1. 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.com
    

    Esto crea un activador llamado events-quickstart-trigger.

  2. 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 de helloworld-events.

Genera y visualiza un evento

  1. 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-$(gcloud config get-value project)/random.txt
    

    La carga genera un evento y el servicio de Cloud Run registra el mensaje del evento.

  2. Sigue estos pasos para ver la entrada de registro:

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    2. 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.

¿Qué sigue?