Usa notificaciones de Pub/Sub para Cloud Storage

Ir a los conceptos

En esta página, se describe cómo configurar y usar las notificaciones de Pub/Sub para Cloud Storage. Las notificaciones de Pub/Sub te permiten realizar un seguimiento de los cambios en tus objetos de Cloud Storage.

Requisitos

Antes de usar esta característica, debes realizar las siguientes acciones:

  1. Habilitar la API de Pub/Sub para el proyecto que recibirá notificaciones

    Habilitar la API

  2. Obtén los permisos necesarios en el bucket que desees supervisar:

  3. Obtén los permisos necesarios en el proyecto que recibirá notificaciones:

    • Si eres propietario del proyecto que recibirá notificaciones, lo más probable es que tengas el permiso necesario.

    • Si piensas crear temas para recibir notificaciones, debe tener el permiso pubsub.topics.create.

    • Ya sea que pienses usar temas nuevos o existentes, debes tener el permiso pubsub.topics.setIamPolicy. Si creas un tema, sueles tener pubsub.topics.setIamPolicy para él.

      Consulta la sección sobre el control de acceso a Pub/Sub para obtener instrucciones sobre cómo obtener estos permisos de Pub/Sub.

  4. .

    Obtén un tema de Pub/Sub existente al que desees enviar notificaciones.

  5. Obtén la dirección de correo electrónico del agente de servicio asociada con el proyecto que contiene tu bucket de Cloud Storage.

  6. Usa la dirección de correo electrónico que obtuviste en el paso anterior a fin de asignar al agente de servicio la función pubsub.publisher de IAM para el tema de Pub/Sub que desees.

Aplica una configuración de notificaciones

Con los siguientes pasos, puedes agregar una configuración de notificaciones a tu depósito que envíe notificaciones a todos los eventos compatibles.

gsutil

Usa el comando gsutil notification create y reemplaza PLACEHOLDERS por los valores adecuados:

gsutil notification create -t TOPIC_NAME -f json gs://BUCKET_NAME

Si usas un TOPIC_NAME que no existe en el proyecto, gsutil crea uno.

Para enviar notificaciones de un subconjunto de eventos, incluye la marca -e.

Muestras de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& topic_name) {
  StatusOr<gcs::NotificationMetadata> notification =
      client.CreateNotification(bucket_name, topic_name,
                                gcs::payload_format::JsonApiV1(),
                                gcs::NotificationMetadata());

  if (!notification) {
    throw std::runtime_error(notification.status().message());
  }

  std::cout << "Successfully created notification " << notification->id()
            << " for bucket " << bucket_name << "\n";
  std::cout << "Full details for the notification:\n"
            << *notification << "\n";
}

C#

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C#.

A fin de crear una configuración de notificaciones para un bucket con C#, consulta la documentación de referencia de CreateTopic.

Comienza a usarlo

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

A fin de crear una configuración de notificaciones para un bucket con Go, consulta la documentación de referencia de BucketHandle.

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Java.

En este momento, no puedes administrar Pub/Sub Notifications con la biblioteca cliente de Java.

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

A fin de crear una configuración de notificaciones para un bucket con NodeJS, consulta la documentación de referencia de Bucket.

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

Si deseas crear una configuración de notificaciones para un depósito con PHP, consulta la documentación de referencia de la biblioteca cliente de Google Cloud.

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

A fin de crear una configuración de notificaciones para un bucket con Python, consulta la documentación de referencia de Buckets.

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

Si quieres crear una configuración de notificación para un depósito con Ruby, consulta la documentación de referencia de la clase Google::Cloud::Storage::Bucket.

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura la zona de pruebas para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json que contenga la siguiente información y reemplaza PLACEHOLDERS por los valores adecuados:

    {
      "topic": "projects/PROJECT_ID/topics/TOPIC_NAME",
      "payload_format": "JSON_API_V1"
    }

    Para enviar notificaciones de un subconjunto de eventos, incluye el campo event_types en el cuerpo de tu solicitud JSON.

  3. Usa cURL para llamar a la API de JSON con una solicitud POST notificationConfigs y reemplaza PLACEHOLDERS por los valores adecuados:

    curl -X POST --data-binary @JSON_FILE_NAME.json \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"

Enumera las opciones de configuración de notificaciones de un bucket

Para enumerar las configuraciones de notificaciones asociadas con un bucket en particular, realiza las siguientes acciones:

gsutil

Usa el comando gsutil notification list y reemplaza PLACEHOLDERS por los valores adecuados:

gsutil notification list gs://BUCKET_NAME

Muestras de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& notification_id) {
  StatusOr<gcs::NotificationMetadata> notification =
      client.GetNotification(bucket_name, notification_id);
  if (!notification) {
    throw std::runtime_error(notification.status().message());
  }

  std::cout << "Notification " << notification->id() << " for bucket "
            << bucket_name << "\n";
  if (notification->object_name_prefix().empty()) {
    std::cout << "This notification is sent for all objects in the bucket\n";
  } else {
    std::cout << "This notification is sent only for objects starting with"
              << " the prefix " << notification->object_name_prefix() << "\n";
  }
  std::cout << "Full details for the notification:\n"
            << *notification << "\n";
}

C#

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C#.

Para enumerar las opciones de configuración de notificaciones asociadas con un bucket mediante C#, consulta la documentación de referencia de StorageClient.

Comienza a usarlo

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

Para enumerar las opciones de configuración de notificaciones asociadas con un bucket mediante Go, consulta la documentación de referencia de BucketHandle.

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Java.

En este momento, no puedes administrar Pub/Sub Notifications con la biblioteca cliente de Java.

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

Para enumerar las opciones de configuración de notificaciones asociadas con un bucket mediante NodeJS, consulta la documentación de referencia de Bucket.

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

Para enumerar las configuraciones de notificaciones asociadas con un depósito mediante PHP, consulta la documentación de referencia de la biblioteca cliente de Google Cloud.

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

Para enumerar las opciones de configuración de notificaciones asociadas con un bucket mediante Python, consulta la documentación de referencia de Buckets.

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

Para enumerar las configuraciones de notificaciones asociadas con un depósito mediante Ruby, consulta la documentación de referencia de la clase Google::Cloud::Storage::Bucket.

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.
  2. Usa cURL para llamar a la API de JSON con una solicitud GET notificationConfigs y reemplaza PLACEHOLDERS por los valores adecuados:

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"

Quita una configuración de notificaciones

Para quitar de tu bucket una configuración de notificaciones existente, realiza las siguientes acciones:

gsutil

Usa el comando gsutil notification delete y reemplaza PLACEHOLDERS por los valores adecuados:

gsutil notification delete projects/_/buckets/BUCKET_NAME/notificationConfigs/CONFIGURATION_NAME

Una vez enviadas, pueden pasar hasta 30 segundos para que se detengan todas las notificaciones que la configuración de notificaciones activó.

Muestras de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& notification_id) {
  google::cloud::Status status =
      client.DeleteNotification(bucket_name, notification_id);
  if (!status.ok()) throw std::runtime_error(status.message());

  std::cout << "Successfully deleted notification " << notification_id
            << " on bucket " << bucket_name << "\n";
}

C#

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C#.

Para borrar una configuración de notificaciones de un bucket con C#, consulta la documentación de referencia de StorageClient.

Comienza a usarlo

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

A fin de borrar una configuración de notificaciones para un bucket con Go, consulta la documentación de referencia de BucketHandle.

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Java.

En este momento, no puedes administrar Pub/Sub Notifications con la biblioteca cliente de Java.

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

A fin de borrar una configuración de notificaciones para un bucket con NodeJS, consulta la documentación de referencia de Notification.

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

Para borrar una configuración de notificaciones de un depósito con PHP, consulta la documentación de referencia de la biblioteca cliente de Google Cloud.

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

A fin de borrar una configuración de notificaciones para un bucket con Python, consulta la documentación de referencia de Notification.

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

Para borrar una configuración de notificación de un depósito con Ruby, consulta la documentación de referencia de la clase Google::Cloud::Storage::Notification.

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.
  2. Usa cURL para llamar a la API de JSON con una solicitud DELETE notificationConfigs y reemplaza PLACEHOLDERS por los valores adecuados:

    curl -X DELETE \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs/CONFIGURATION_NAME"

Después del envío, pueden pasar hasta 30 segundos para que se detengan todas las notificaciones que la configuración de notificaciones activó.

¿Qué sigue?