Como publicar mudanças em objetos

Nesta página, você aprenderá como configurar e usar o recurso Notificações do Pub/Sub para Cloud Storage. Com esse recurso, é possível acompanhar as mudanças nos seus objetos no Cloud Storage. Para saber mais sobre o recurso, consulte Notificações do Pub/Sub para Cloud Storage.

Pré-requisitos

Antes de usar esse recurso, conclua as etapas a seguir:

  1. Ative a API Pub/Sub para o projeto que você quer que receba as notificações.

    Ativar a API

  2. Ter permissões suficientes no intervalo que você pretende monitorar:

  3. Ter permissões suficientes no projeto que receberá as notificações:

    • Se você é proprietário do projeto que vai receber as notificações, é provável que já tenha a permissão necessária.

    • Se você planeja criar tópicos para receber as notificações, é necessário ter a permissão pubsub.topics.create.

    • Se você planeja usar tópicos atuais ou novos, é necessário ter a permissão pubsub.topics.setIamPolicy. Se você criar um tópico, provavelmente receberá a respectiva permissão pubsub.topics.setIamPolicy.

      Consulte Controle de acesso do Pub/Sub para mais instruções sobre como receber essas permissões.

  4. Crie ou escolha um tópico do Pub/Sub que receberá as notificações.

  5. Consiga o endereço de e-mail da conta de serviço associada ao projeto que contém seu intervalo do Cloud Storage.

  6. Use esse endereço de e-mail para atribuir à conta de serviço o papel do IAM pubsub.publisher para o tópico do Pub/Sub desejado.

Como aplicar uma configuração de notificação

Nas etapas a seguir, você verá como adicionar uma configuração de notificação ao intervalo que enviará notificações para os eventos possíveis.

gsutil

Use o comando gsutil notification create, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

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

Se você usar um [TOPIC_NAME] que não existe no projeto, a gsutil criará um automaticamente.

Para enviar notificações sobre um subconjunto de eventos, inclua a sinalização -e.

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do 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#

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C#.

Para criar uma configuração de notificação para um intervalo usando C#, consulte a documentação de referência de CreateTopic (em inglês).

Go

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Go.

Para criar uma configuração de notificação para um intervalo usando Go, consulte a documentação de referência de BucketHandle (em inglês).

Java

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Java.

No momento, não é possível gerenciar Notificações do Pub/Sub usando a biblioteca de cliente Java.

Node.js

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Node.js.

Para criar uma configuração de notificação para um intervalo usando NodeJS, consulte a documentação de referência de Bucket (em inglês).

PHP

Para mais informações, consulte a documentação de referência da API do Cloud Storage para PHP.

Para criar uma configuração de notificação para um intervalo usando PHP, consulte a documentação de referência de Google\Cloud\Storage\Notification (em inglês).

Python

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Python.

Para criar uma configuração de notificação para um intervalo usando Python, consulte a documentação de referência de Buckets (em inglês).

Ruby

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Ruby.

Para criar uma configuração de notificação para um intervalo usando Ruby, consulte a documentação de referência de Google::Cloud::Storage::Bucket (em inglês).

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as informações a seguir, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

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

    Para enviar notificações sobre um subconjunto de eventos, inclua o campo event_types no corpo da solicitação JSON.

  3. Use cURL (em inglês) para chamar a API JSON com uma solicitação POST notificationConfigs, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    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"

Como listar as configurações de notificação de um intervalo

Para listar as configurações de notificação associadas a um determinado intervalo:

gsutil

Use o comando gsutil notification list, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil notification list gs://[BUCKET_NAME]

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do 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#

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C#.

Para listar as configurações de notificação associadas a um intervalo usando C#, consulte a documentação de referência de StorageClient (em inglês).

Go

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Go.

Para listar as configurações de notificação associadas a um intervalo usando Go, consulte a documentação de referência de BucketHandle (em inglês).

Java

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Java.

No momento, não é possível gerenciar Notificações do Pub/Sub usando a biblioteca de cliente Java.

Node.js

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Node.js.

Para listar as configurações de notificação associadas a um intervalo usando NodeJS, consulte a documentação de referência de Bucket (em inglês).

PHP

Para mais informações, consulte a documentação de referência da API do Cloud Storage para PHP.

Para listar as configurações de notificação associadas a um intervalo usando PHP, consulte a documentação de referência de Google\Cloud\Storage\Bucket (em inglês).

Python

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Python.

Para listar as configurações de notificação associadas a um intervalo usando Python, consulte a documentação de referência de Buckets (em inglês).

Ruby

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Ruby.

Para listar as configurações de notificação associadas a um intervalo usando Ruby, consulte a documentação de referência de Google::Cloud::Storage::Bucket (em inglês).

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL (em inglês) para chamar a API JSON com uma solicitação GET notificationConfigs, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

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

Como remover uma configuração de notificação

Para remover uma configuração de notificação existente no seu intervalo:

gsutil

Use o comando gsutil notification delete, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

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

Depois de enviado o comando, o tempo estimado para que todas as notificações acionadas pela configuração sejam interrompidas é de até 30 segundos.

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do 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#

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C#.

Para excluir uma configuração de notificação de um intervalo usando C#, consulte a documentação de referência de StorageClient (em inglês).

Go

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Go.

Para excluir uma configuração de notificação de um intervalo usando Go, consulte a documentação de referência de BucketHandle (em inglês).

Java

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Java.

No momento, não é possível gerenciar Notificações do Pub/Sub usando a biblioteca de cliente Java.

Node.js

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Node.js.

Para excluir uma configuração de notificação de um intervalo usando NodeJS, consulte a documentação de referência de Notification (em inglês).

PHP

Para mais informações, consulte a documentação de referência da API do Cloud Storage para PHP.

Para excluir uma configuração de notificação de um intervalo usando PHP, consulte a documentação de referência de Google\Cloud\Storage\Notification (em inglês).

Python

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Python.

Para excluir uma configuração de notificação de um intervalo usando Python, consulte a documentação de referência de Notification (em inglês).

Ruby

Para mais informações, consulte a documentação de referência da API do Cloud Storage para Ruby.

Para excluir uma configuração de notificação de um intervalo usando Ruby, consulte a documentação de referência de Google::Cloud::Storage::Notification (em inglês).

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL (em inglês) para chamar a API JSON com uma solicitação DELETE notificationConfigs, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

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

Depois de enviado o comando, o tempo estimado para que todas as notificações acionadas pela configuração sejam interrompidas é de até 30 segundos.

A seguir