Publica cambios de objetos

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. Para obtener más información sobre esta función, consulta Notificaciones de Cloud Pub/Sub para Cloud Storage.

Requisitos previos

Antes de usar esta función, debes realizar las siguientes acciones:

  1. Habilita 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 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 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. A fin de enviar notificaciones para un subconjunto de eventos, incluye la marca -e con el comando de gsutil o la clave event_types en el cuerpo de tu solicitud JSON.

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.

Ejemplos 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";
  if (notification->object_name_prefix().empty()) {
    std::cout << "This notification will be sent for all objects in the"
              << " bucket\n";
  } else {
    std::cout << "This notification will be set 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#.

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

A fin de crear una configuración de notificaciones para un depósito 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 las notificaciones de Pub/Sub 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 depósito 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.

A fin de 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.

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

A fin de crear una configuración de notificaciones para un depósito con 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"
    }

  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]

Ejemplos 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 las notificaciones de Pub/Sub 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 la zona de pruebas 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ó.

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

A fin de borrar una configuración de notificaciones para un depósito 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 las notificaciones de Pub/Sub 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 depósito 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.

A fin de 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.

A fin de borrar una configuración de notificaciones para un depósito 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 notificaciones de un depósito con 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 la zona de pruebas 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