Pub/Sub Notifications for Cloud Storage の使用法

コンセプトに移動

このページでは、Pub/Sub Notifications for Cloud Storage を設定して使用する方法について説明します。Pub/Sub 通知を使用すると、Cloud Storage オブジェクトに対する変更をトラックできます。

前提条件

この機能を使用する前に、以下が必要です。

  1. 通知を受け取るプロジェクトの Pub/Sub API を有効にします。

    API の有効化

  2. モニタリングするバケットに対して十分な権限を持っていること。

    • バケットを含むプロジェクトを所有している場合は、必要な権限を持っていると考えられます。

    • IAM を使用する場合は、storage.buckets.update 権限が必要です。これを行う方法については、IAM 権限の使用をご覧ください。

    • ACL を使用する場合は、OWNER 権限が必要です。設定方法については、ACL の設定をご覧ください。

  3. 通知を受け取るプロジェクトに対して十分な権限を持っていること。

    • 所有するプロジェクトの通知を受け取る場合は、必要な権限を保持していると考えられます。

    • 通知を受け取るトピックを作成する場合は、pubsub.topics.create 権限が必要です。

    • 新規トピックと既存トピックのいずれを使用するかにかかわりなく、pubsub.topics.setIamPolicy 権限が必要です。通常、トピックの作成者には、そのトピックに対する pubsub.topics.setIamPolicy があります。

      こうした Pub/Sub 権限を取得する方法については、Pub/Sub アクセス制御をご覧ください。

  4. 通知の送信先とする既存の Pub/Sub トピックが存在する必要があります。

  5. Cloud Storage バケットを含むプロジェクトに関連付けられているサービス アカウントのメールアドレスを取得します。

  6. 前の手順で取得したメールアドレスを使用して、目的の Cloud Pub/Sub トピックの サービス アカウントに IAM ロール pubsub.publisher をサービス アカウントに付与します。

通知構成の適用

次の手順では、すべてのサポート対象イベントの通知を送信するバケットに通知構成を追加します。

gsutil

gsutil notification create コマンドを使用します。PLACEHOLDERS は適切な値に置き換えます。

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

プロジェクトに存在しない TOPIC_NAME を使用すると、それが自動的に作成されます。

イベントのサブセットに対して通知を送信するには、-e フラグを含めます。

コードサンプル

C++

詳細については、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#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

C# を使用してバケットに対する通知構成を作成するには、CreateTopic のリファレンス ドキュメントをご覧ください。

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Go を使用してバケットに対する通知構成を作成するには、BucketHandle のリファレンス ドキュメントをご覧ください。

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

現在、Java クライアント ライブラリでは Pub/Sub 通知を管理できません。

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

NodeJS を使用してバケットに対する通知構成を作成するには、バケットのリファレンス ドキュメントをご覧ください。

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

PHP を使用してバケットに対する通知構成を作成するには、Google Cloud クライアント ライブラリのリファレンス ドキュメントをご覧ください。

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

Python を使用してバケットに対する通知構成を作成するには、バケットのリファレンス ドキュメントをご覧ください。

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

Ruby を使用してバケットに対する通知構成を作成するには、Google::Cloud::Storage::Bucket クラスのリファレンス ドキュメントをご覧ください。

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. 次の情報を含む .json ファイルを作成します。PLACEHOLDERS は適切な値に置き換えます。

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

    イベントのサブセットに対して通知を送信するには、JSON リクエストの本文に event_types フィールドを含めます。

  3. cURL を使用して、POST notificationConfigs リクエストで JSON API を呼び出します。PLACEHOLDERS は適切な値に置き換えます。

    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"

バケットの通知構成の一覧表示

特定のバケットに関連付けられた通知構成を一覧表示するには:

gsutil

gsutil notification list コマンドを使用します。PLACEHOLDERS は適切な値に置き換えます。

gsutil notification list gs://BUCKET_NAME

コードサンプル

C++

詳細については、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#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

C# を使用してバケットに関連付けられた通知構成を一覧表示するには、StorageClient のリファレンス ドキュメントをご覧ください。

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Go を使用してバケットに関連付けられた通知構成を一覧表示するには、BucketHandle のリファレンス ドキュメントをご覧ください。

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

現在、Java クライアント ライブラリでは Pub/Sub 通知を管理できません。

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

NodeJS を使用してバケットに関連付けられた通知構成を一覧表示するには、バケットのリファレンス ドキュメントをご覧ください。

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

PHP を使用してバケットに関連付けられた通知構成を一覧表示するには、Google Cloud クライアント ライブラリのリファレンス ドキュメントをご覧ください。

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

Python を使用してバケットに関連付けられた通知構成を一覧表示するには、バケットのリファレンス ドキュメントをご覧ください。

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

Ruby を使用してバケットに関連付けられた通知構成を一覧表示するには、Google::Cloud::Storage::Bucket クラスのリファレンス ドキュメントをご覧ください。

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. cURL を使用して、GET notificationConfigs リクエストで JSON API を呼び出します。PLACEHOLDERS は適切な値に置き換えます。

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

通知構成の削除

バケットから既存の通知構成を削除するには:

gsutil

gsutil notification delete コマンドを使用します。PLACEHOLDERS は適切な値に置き換えます。

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

送信後、通知構成によってトリガーされたすべての通知が停止するまでに最大で 30 秒かかります。

コードサンプル

C++

詳細については、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#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

C# を使用してバケットに対する通知構成を削除するには、StorageClient のリファレンス ドキュメントをご覧ください。

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Go を使用してバケットに対する通知構成を削除するには、BucketHandle のリファレンス ドキュメントをご覧ください。

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

現在、Java クライアント ライブラリでは Pub/Sub 通知を管理できません。

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

NodeJS を使用してバケットに対する通知構成を削除するには、通知のリファレンス ドキュメントをご覧ください。

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

PHP を使用してバケットに対する通知構成を削除するには、Google Cloud クライアント ライブラリのリファレンス ドキュメントをご覧ください。

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

Python を使用してバケットに対する通知構成を削除するには、通知のリファレンス ドキュメントをご覧ください。

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

Ruby を使用してバケットに対する通知構成を削除するには、Google::Cloud::Storage::Notification クラスのリファレンス ドキュメントをご覧ください。

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. cURL を使用して、DELETE notificationConfigs リクエストで JSON API を呼び出します。PLACEHOLDERS は適切な値に置き換えます。

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

送信後、通知構成によってトリガーされたすべての通知が停止するまでに最大で 30 秒かかります。

次のステップ