Pub/Sub-Benachrichtigungen für Cloud Storage verwenden

Zu den Konzepten

Auf dieser Seite wird beschrieben, wie Sie Pub/Sub-Benachrichtigungen für Cloud Storage einrichten und verwenden. Mit Pub/Sub-Benachrichtigungen können Sie Änderungen an Ihren Cloud Storage-Objekten verfolgen.

Vorbereitung

Bevor Sie diese Funktion verwenden, gehen Sie so vor:

  1. Aktivieren Sie die Pub/Sub API für das Projekt, das die Benachrichtigungen erhalten wird.

    API aktivieren

  2. Achten Sie auf ausreichende Berechtigungen für den Bucket, den Sie überwachen möchten:

  3. Achten Sie auf ausreichende Berechtigungen für das Projekt, das die Benachrichtigungen erhalten wird:

    • Wenn Sie der Inhaber des Projekts sind, das die Benachrichtigungen erhalten wird, haben Sie wahrscheinlich die erforderliche Berechtigung.

    • Wenn Sie Themen zum Empfangen von Benachrichtigungen erstellen möchten, benötigen Sie die Berechtigung pubsub.topics.create.

    • Wenn Sie neue oder vorhandene Themen verwenden möchten, benötigen Sie die Berechtigung pubsub.topics.setIamPolicy. Als Ersteller eines Themas haben Sie normalerweise die Berechtigung pubsub.topics.setIamPolicy.

      Unter Pub/Sub-Zugriffssteuerung wird beschrieben, wie Sie diese Pub/Sub-Berechtigungen erhalten.

  4. Achten Sie darauf, dass ein bestehendes Cloud Pub/Sub-Thema vorhanden ist, an das Sie Benachrichtigungen senden möchten.

  5. Rufen Sie die E-Mail-Adresse des Dienstkontos ab, das mit dem Projekt verknüpft ist, in dem sich Ihr Cloud Storage-Bucket befindet.

  6. Verwenden Sie die E-Mail-Adresse, die Sie im vorherigen Schritt erhalten haben, um dem Dienstkonto die IAM-Rolle pubsub.publisher für das gewünschte Pub/Sub-Thema zuzuweisen.

Benachrichtigungskonfiguration anwenden

Mit den folgenden Schritten fügen Sie dem Bucket eine Benachrichtigungskonfiguration hinzu. Hierdurch werden für alle unterstützten Ereignisse Benachrichtigungen gesendet.

gsutil

Verwenden Sie den Befehl gsutil notification create. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

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

Wenn Sie einen [TOPIC_NAME]-Wert angeben, der in Ihrem Projekt nicht existiert, erstellt gsutil einen für Sie.

Wenn Sie Benachrichtigungen für einen Teil der Ereignisse senden möchten, fügen Sie das Flag -e ein.

Codebeispiele

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

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#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von C# finden Sie in der Referenzdokumentation zu CreateTopic.

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Go finden Sie in der Referenzdokumentation zu BucketHandle.

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Sie können Pub/Sub-Benachrichtigungen derzeit nicht mit der Java-Clientbibliothek verwalten.

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Node.js finden Sie in der Referenzdokumentation zu Buckets.

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von PHP finden Sie in der Referenzdokumentation zur Google Cloud-Clientbibliothek.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Python finden Sie in der Referenzdokumentation zu Buckets.

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

Informationen zum Erstellen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Ruby finden Sie in der Referenzdokumentation zur Google::Cloud::Storage::Bucket-Klasse.

JSON API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden.
  2. Erstellen Sie eine JSON-Datei mit den folgenden Informationen und ersetzen Sie [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

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

    Wenn Sie Benachrichtigungen für einen Teil der Ereignisse senden möchten, fügen Sie das Feld event_types in den Text Ihrer JSON-Anfrage ein.

  3. Verwenden Sie cURL, um die JSON API mit einer POST notificationConfigs-Anfrage aufzurufen. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

    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"

Benachrichtigungskonfigurationen für einen Bucket auflisten

So listen Sie die mit einem bestimmten Bucket verknüpften Benachrichtigungskonfigurationen auf:

gsutil

Verwenden Sie den Befehl gsutil notification list. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

gsutil notification list gs://[BUCKET_NAME]

Codebeispiele

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

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#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von C# finden Sie in der Referenzdokumentation zu StorageClient.

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von Go finden Sie in der Referenzdokumentation zu BucketHandle.

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Sie können Pub/Sub-Benachrichtigungen derzeit nicht mit der Java-Clientbibliothek verwalten.

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von Node.js finden Sie in der Referenzdokumentation zu Buckets.

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von PHP finden Sie in der Referenzdokumentation zur Google Cloud-Clientbibliothek.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von Python finden Sie in der Referenzdokumentation zu Buckets.

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

Informationen zum Auflisten der einem Bucket zugeordneten Benachrichtigungskonfigurationen mithilfe von Ruby finden Sie in der Referenzdokumentation zur Google::Cloud::Storage::Bucket-Klasse.

JSON API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden.
  2. Verwenden Sie cURL, um die JSON API mit einer GET notificationConfigs-Anfrage aufzurufen. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

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

Benachrichtigungskonfiguration entfernen

So entfernen Sie eine vorhandene Benachrichtigungskonfiguration aus einem Bucket:

gsutil

Verwenden Sie den Befehl gsutil notification delete. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

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

Nach dem Senden kann es bis zu 30 Sekunden dauern, bis alle durch die Benachrichtigungskonfiguration ausgelösten Benachrichtigungen gestoppt werden.

Codebeispiele

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

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#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von C# finden Sie in der Referenzdokumentation zu StorageClient.

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Go finden Sie in der Referenzdokumentation zu BucketHandle.

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Sie können Pub/Sub-Benachrichtigungen derzeit nicht mit der Java-Clientbibliothek verwalten.

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Node.js finden Sie in der Referenzdokumentation zu Benachrichtigungen.

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von PHP finden Sie in der Referenzdokumentation zur Google Cloud-Clientbibliothek.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Python finden Sie in der Referenzdokumentation zu Benachrichtigungen.

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

Informationen zum Löschen einer Benachrichtigungskonfiguration für einen Bucket mithilfe von Ruby finden Sie in der Referenzdokumentation zur Google::Cloud::Storage::Notification-Klasse.

JSON API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden.
  2. Verwenden Sie cURL, um die JSON API mit einer DELETE notificationConfigs-Anfrage aufzurufen. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

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

Nach dem Senden kann es bis zu 30 Sekunden dauern, bis alle durch die Benachrichtigungskonfiguration ausgelösten Benachrichtigungen gestoppt werden.

Weitere Informationen