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

    Habilita la API

  2. Obtén los permisos necesarios en el depósito 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, generalmente tienes pubsub.topics.setIamPolicy para él.

      Consulta el Control de acceso a Pub/Sub para saber 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 de la cuenta de servicio asociada con el proyecto que contiene tu depósito de Cloud Storage.

  6. Usa la dirección de correo electrónico que obtuviste en el paso anterior a fin de asignar a la cuenta 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 [VALUES_IN_BRACKETS] por los valores adecuados:

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

Si usas un [TOPIC_NAME] que no existe en tu 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 bucket_name, std::string 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#.

Si deseas crear una configuración de notificaciones para un depósito mediante C#, consulta la documentación de referencia de CreateTopic.

Go

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

Si deseas crear una configuración de notificaciones para un depósito 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.

Si deseas crear una configuración de notificaciones para un depósito 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.

Si deseas crear una configuración de notificaciones para un depósito mediante PHP, consulta la documentación de referencia de Google\Cloud\Storage\Notification.

Python

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

Si deseas crear una configuración de notificaciones para un depósito 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.

Si deseas crear una configuración de notificaciones para un depósito mediante Ruby, consulta la documentación de referencia de Google::Cloud::Storage::Bucket.

API de JSON

  1. Obtén un token de autorización de acceso 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 [VALUES_IN_BRACKETS] 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 [VALUES_IN_BRACKETS] 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 configuraciones de notificaciones para un depósito

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

gsutil

Usa el comando gsutil notification list y reemplaza [VALUES_IN_BRACKETS] 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 bucket_name, std::string 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 depósito mediante C#, consulta la documentación de referencia de StorageClient.

Go

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 depósito 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 depósito 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 opciones de configuración de notificaciones asociadas con un depósito mediante PHP, consulta la documentación de referencia de Google\Cloud\Storage\Bucket.

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 depósito 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 opciones de configuración de notificaciones asociadas con un depósito mediante Ruby, consulta la documentación de referencia de Google::Cloud::Storage::Bucket.

API de JSON

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Usa cURL para llamar a la API de JSON con una solicitud GET notificationConfigs y reemplaza [VALUES_IN_BRACKETS] 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 depósito una configuración de notificaciones existente, realiza las siguientes acciones:

gsutil

Usa el comando gsutil notification delete y reemplaza [VALUES_IN_BRACKETS] 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 bucket_name, std::string 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 depósito mediante C#, consulta la documentación de referencia de StorageClient.

Go

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

Si deseas crear una configuración de notificaciones para un depósito 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.

Si deseas borrar una configuración de notificaciones para un depósito mediante Python, 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.

Si deseas borrar una configuración de notificaciones para un depósito mediante PHP, consulta la documentación de referencia de Google\Cloud\Storage\Notification.

Python

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

Si deseas borrar una configuración de notificaciones para un depósito mediante 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 notificaciones de un depósito mediante Ruby, consulta la documentación de referencia de Google::Cloud::Storage::Notification.

API de JSON

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

    curl -X DELETE \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[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ó.

Próximos pasos