Guía de inicio rápido: Recibe eventos de Cloud Storage

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, pero sin usar registros de auditoría de Cloud.

Puedes configurar la activación de notificaciones en respuesta a varios eventos dentro de un bucket de Cloud Storage, como la creación, la eliminación, el archivado y las actualizaciones de metadatos de objetos.

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

  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

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.

  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 Build, Cloud Logging, Cloud Run, Cloud Storage, Eventarc, and Pub/Sub .

    Habilita las API

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

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

  7. Habilita las API de Cloud Build, Cloud Logging, Cloud Run, Cloud Storage, Eventarc, and Pub/Sub .

    Habilita las API

  8. Actualiza los componentes de gcloud:
    gcloud components update
  9. Accede con tu cuenta:
    gcloud auth login
  10. 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
    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Puedes encontrar el ID del proyecto en la página Panel de Google Cloud Console.
  11. Otorga la función pubsub.publisher a la cuenta de servicio de Cloud Storage:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

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

    Reemplaza PROJECT_NUMBER con el proyecto de Google Cloud. Puedes buscar el número del proyecto en la página Panel de Google Cloud Console.

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

Cree un bucket de Cloud Storage

Crea un bucket de Cloud Storage para usar como fuente del evento:

gsutil mb -l us-central1 gs://PROJECT_ID-bucket/

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.

  1. Clona el repositorio y, luego, cambia al directorio que contiene el código de muestra de Cloud Run:

    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/PROJECT_ID/helloworld-events
    
  3. 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 envía 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:

     gcloud eventarc triggers create storage-events-trigger \
         --destination-run-service=helloworld-events \
         --destination-run-region=us-central1 \
         --event-filters="type=google.cloud.storage.object.v1.finalized" \
         --event-filters="bucket=PROJECT_ID-bucket" \
         --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Esto crea un activador llamado storage-events-trigger.

  2. Para confirmar que storage-events-trigger se creó de forma correcta, ejecuta el siguiente comando:

     gcloud eventarc triggers list --location=us-central1
    

    El resultado es similar a este:

     NAME                    TYPE                                      DESTINATION_RUN_SERVICE  DESTINATION_RUN_PATH  ACTIVE
     storage-events-trigger  google.cloud.storage.object.v1.finalized  helloworld-events                              Yes
    

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://PROJECT_ID-bucket/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. Filtra las entradas de registro y muestra el resultado en formato JSON:

      gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
      
    2. Busca una entrada de registro similar a lo siguiente:

      "textPayload": "2021/08/09 19:04:25 Detected change in Cloud Storage bucket: objects/random.txt"
      

¡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

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

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, almacenar archivos en el bucket de Cloud Storage y los recursos de Eventarc

Puede hacer lo siguiente:

  1. Borrar tu imagen.

  2. Borrar tu bucket de almacenamiento.

  3. Borrar el activador de Eventarc.

Como alternativa, puedes borrar el proyecto de Google Cloud para detener la facturación de todos los recursos que se usaron en él.

Para borrar tu clúster, realiza los siguientes pasos:

gcloud projects delete PROJECT_ID_OR_NUMBER

Reemplaza PROJECT_ID_OR_NUMBER por el ID o el número de tu proyecto de Google Cloud.

¿Qué sigue?