Configurare le notifiche Pub/Sub per Cloud Storage

Panoramica

In questa pagina viene descritto come configurare il bucket per inviare notifiche sulle modifiche agli oggetti a un argomento Pub/Sub. Per informazioni sull'iscrizione a un argomento Pub/Sub che riceve le notifiche, consulta la pagina Scegliere un tipo di sottoscrizione.

Prima di iniziare

Prima di utilizzare questa funzionalità, ti consigliamo di:

  1. Abilitare l'API Pub/Sub per il progetto che riceverà le notifiche.

    Abilitare l'API

  2. Devi disporre dell'autorizzazione storage.buckets.update e storage.buckets.get per il bucket che vuoi monitorare. Per istruzioni su come fare, consulta la sezione Utilizzo delle autorizzazioni IAM. Se sei il proprietario del progetto che contiene il bucket, molto probabilmente hai già l'autorizzazione necessaria.

  3. Disponi di autorizzazioni sufficienti sul progetto che riceverà le notifiche:

    • Se sei il proprietario del progetto che riceverà le notifiche, è molto probabile che tu disponga dell'autorizzazione necessaria.

    • Se prevedi di creare argomenti per ricevere notifiche, devi avere l'autorizzazione pubsub.topics.create.

    • Sia che tu voglia utilizzare argomenti nuovi o esistenti, devi disporre dell'autorizzazione pubsub.topics.setIamPolicy. Se crei un argomento, in genere ne hai pubsub.topics.setIamPolicy.

      Per istruzioni su come ottenere queste autorizzazioni Pub/Sub, consulta la pagina Controllo dell'accesso Pub/Sub.

  4. Hai un argomento Pub/Sub esistente a cui vuoi inviare notifiche.

  5. Recupera l'indirizzo email dell'agente di servizio associato al progetto che contiene il tuo bucket Cloud Storage.

  6. Utilizza l'indirizzo email ottenuto nel passaggio precedente per assegnare all'agente di servizio il ruolo IAM pubsub.publisher per l'argomento Pub/Sub desiderato.

Applicare una configurazione delle notifiche

I passaggi seguenti aggiungono una configurazione delle notifiche al tuo bucket che invia notifiche per tutti gli eventi supportati.

Console

Non puoi gestire le notifiche Pub/Sub con la console Google Cloud. Utilizza invece gcloud CLI o una delle librerie client disponibili.

Riga di comando

gcloud

Utilizza il comando gcloud storage buckets notifications create:

gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME

Dove:

  • BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

  • TOPIC_NAME è l'argomento Pub/Sub a cui inviare le notifiche. Se specifichi un argomento che non esiste nel progetto, il comando ne crea uno per te.

Per inviare notifiche per un sottoinsieme di eventi, includi il flag --event-types.

gsutil

Utilizza il comando gsutil notification create:

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

Dove:

  • TOPIC_NAME è l'argomento Pub/Sub a cui inviare le notifiche. Se specifichi un argomento che non esiste nel progetto, il comando ne crea uno per te.

  • BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

Per inviare notifiche per un sottoinsieme di eventi, includi il flag -e.

Librerie client

C++

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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::NotificationMetadata());
  if (!notification) throw std::move(notification).status();

  std::cout << "Successfully created notification " << notification->id()
            << " for bucket " << bucket_name << "\n";
  std::cout << "Full details for the notification:\n"
            << *notification << "\n";
}

C#

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class CreatePubSubNotificationSample
{
    public Notification CreatePubSubNotification(
        string bucketName = "your-unique-bucket-name",
        string topic = "my-topic")
    {
        StorageClient storage = StorageClient.Create();
        Notification notification = new Notification
        {
            Topic = topic,
            PayloadFormat = "JSON_API_V1"
        };

        Notification createdNotification = storage.CreateNotification(bucketName, notification);
        Console.WriteLine("Notification subscription created with ID: " + createdNotification.Id + " for bucket name " + bucketName);
        return createdNotification;
    }
}

Go

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/storage"
)

// createBucketNotification creates a notification configuration for a bucket.
func createBucketNotification(w io.Writer, projectID, bucketName, topic string) error {
	// projectID := "my-project-id"
	// bucketName := "bucket-name"
	// topic := "topic-name"

	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	notification := storage.Notification{
		TopicID:        topic,
		TopicProjectID: projectID,
		PayloadFormat:  storage.JSONPayload,
	}

	createdNotification, err := client.Bucket(bucketName).AddNotification(ctx, &notification)
	if err != nil {
		return fmt.Errorf("Bucket.AddNotification: %w", err)
	}
	fmt.Fprintf(w, "Successfully created notification with ID %s for bucket %s.\n", createdNotification.ID, bucketName)
	return nil
}

Java

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.storage.Notification;
import com.google.cloud.storage.NotificationInfo;
import com.google.cloud.storage.NotificationInfo.EventType;
import com.google.cloud.storage.NotificationInfo.PayloadFormat;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.util.Map;

public class CreateBucketPubSubNotification {

  public static void createBucketPubSubNotification(
      String bucketName,
      String topicName,
      Map<String, String> customAttributes,
      EventType[] eventTypes,
      String objectNamePrefix,
      PayloadFormat payloadFormat) {
    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The name of the topic you would like to create a notification for
    // String topicName = "projects/{your-project}/topics/{your-topic}";

    // Any custom attributes
    // Map<String, String> customAttributes = Map.of("label", "value");

    // The object name prefix for which this notification configuration applies
    // String objectNamePrefix = "blob-";

    // Desired content of the Payload
    // PayloadFormat payloadFormat = PayloadFormat.JSON_API_V1.JSON_API_V1;

    Storage storage = StorageOptions.newBuilder().build().getService();
    NotificationInfo notificationInfo =
        NotificationInfo.newBuilder(topicName)
            .setCustomAttributes(customAttributes)
            .setEventTypes(eventTypes)
            .setObjectNamePrefix(objectNamePrefix)
            .setPayloadFormat(payloadFormat)
            .build();
    Notification notification = storage.createNotification(bucketName, notificationInfo);
    String topic = notification.getTopic();
    System.out.println("Successfully created notification for topic " + topic);
  }
}

Node.js

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// The name of a topic
// const topic = 'my-topic';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function createNotification() {
  // Creates a notification
  await storage.bucket(bucketName).createNotification(topic);

  console.log('Notification subscription created.');
}

createNotification().catch(console.error);

PHP

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

Per creare una configurazione di notifica per un bucket utilizzando PHP, consulta la documentazione di riferimento della libreria client di Google Cloud.

Python

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import storage

def create_bucket_notifications(bucket_name, topic_name):
    """Creates a notification configuration for a bucket."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"
    # The name of a topic
    # topic_name = "your-topic-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    notification = bucket.notification(topic_name=topic_name)
    notification.create()

    print(f"Successfully created notification with ID {notification.notification_id} for bucket {bucket_name}")

Ruby

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

require "google/cloud/storage"

def create_bucket_notifications bucket_name:, topic_name:
  # The ID of your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  # The ID of the pubsub topic
  # topic_name = "your-unique-topic-name"

  storage = Google::Cloud::Storage.new
  bucket  = storage.bucket bucket_name
  notification = bucket.create_notification topic_name

  puts "Successfully created notification with ID #{notification.id} for bucket #{bucket_name}"
end

Terraform

Puoi utilizzare una risorsa Terraform per aggiungere una configurazione di notifica a un bucket.

// Create a Pub/Sub notification.
resource "google_storage_notification" "notification" {
  provider       = google-beta
  bucket         = google_storage_bucket.bucket.name
  payload_format = "JSON_API_V1"
  topic          = google_pubsub_topic.topic.id
  depends_on     = [google_pubsub_topic_iam_binding.binding]
}

// Enable notifications by giving the correct IAM permission to the unique service account.
data "google_storage_project_service_account" "gcs_account" {
  provider = google-beta
}

// Create a Pub/Sub topic.
resource "google_pubsub_topic_iam_binding" "binding" {
  provider = google-beta
  topic    = google_pubsub_topic.topic.id
  role     = "roles/pubsub.publisher"
  members  = ["serviceAccount:${data.google_storage_project_service_account.gcs_account.email_address}"]
}

resource "random_id" "bucket_prefix" {
  byte_length = 8
}

// Create a new storage bucket.
resource "google_storage_bucket" "bucket" {
  name                        = "${random_id.bucket_prefix.hex}-example-bucket-name"
  provider                    = google-beta
  location                    = "US"
  uniform_bucket_level_access = true
}

resource "google_pubsub_topic" "topic" {
  name     = "your_topic_name"
  provider = google-beta
}

API REST

API JSON

  1. Richiedi un token di accesso all'autorizzazione da Playground per OAuth 2.0. Configura l'area giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
  2. Crea un file JSON contenente le seguenti informazioni:

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

    Dove:

    • PROJECT_ID è l'ID del progetto associato all'argomento Pub/Sub a cui vuoi inviare le notifiche. Ad esempio, my-pet-project.

    • TOPIC_NAME è l'argomento Pub/Sub a cui inviare le notifiche. Ad esempio, my-topic.

    Per inviare notifiche per un sottoinsieme di eventi, includi il campo event_types nel corpo della richiesta JSON.

  3. Utilizza cURL per chiamare l'API JSON con una richiesta di POST notificationConfigs:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"

    Dove:

    • JSON_FILE_NAME è il percorso del file creato al passaggio 2.

    • OAUTH2_TOKEN è il token di accesso che hai generato nel passaggio 1.

    • BUCKET_NAME è il nome del bucket per il quale vuoi generare le notifiche. Ad esempio, my-bucket.

API XML

Non puoi gestire le notifiche Pub/Sub con l'API XML.

Ricevi una configurazione delle notifiche

Per ottenere una configurazione di notifica specifica associata al tuo bucket:

Console

Non puoi gestire le notifiche Pub/Sub con la console Google Cloud. Utilizza invece gcloud CLI o una delle librerie client disponibili.

Riga di comando

gcloud

Utilizza il comando gcloud storage buckets notifications describe:

gcloud storage buckets notifications describe projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID

Dove:

  • BUCKET_NAME è il nome del bucket di cui vuoi recuperare la configurazione di notifica, ad esempio my-bucket.

  • NOTIFICATION_ID è il numero ID della configurazione desiderata. Ad esempio, 5.

In caso di esito positivo, la risposta sarà simile all'esempio seguente:

etag: '132'
id: '132'
kind: storage#notification
payload_format: JSON_API_V1
selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132
topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket

gsutil

Non puoi ricevere una configurazione di notifica singola con gsutil. Utilizza invece gcloud CLI.

Librerie client

C++

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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::move(notification).status();

  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#

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class GetPubSubNotificationSample
{
    public Notification GetPubSubNotification(
        string bucketName = "your-unique-bucket-name",
        string notificationId = "notificationId")
    {
        StorageClient storage = StorageClient.Create();
        Notification notification = storage.GetNotification(bucketName, notificationId);

        Console.WriteLine("ID: " + notification.Id);
        Console.WriteLine("Topic: " + notification.Topic);
        Console.WriteLine("EventTypes: " + notification.EventTypes);
        Console.WriteLine("CustomAttributes: " + notification.CustomAttributes);
        Console.WriteLine("PayloadFormat: " + notification.PayloadFormat);
        Console.WriteLine("ObjectNamePrefix: " + notification.ObjectNamePrefix);
        Console.WriteLine("ETag: " + notification.ETag);
        Console.WriteLine("SelfLink: " + notification.SelfLink);
        Console.WriteLine("Kind: " + notification.Kind);

        return notification;
    }
}

Go

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/storage"
)

// printPubsubBucketNotification gets a notification configuration for a bucket.
func printPubsubBucketNotification(w io.Writer, bucketName, notificationID string) error {
	// bucketName := "bucket-name"
	// notificationID := "notification-id"

	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	notifications, err := client.Bucket(bucketName).Notifications(ctx)
	if err != nil {
		return fmt.Errorf("Bucket.Notifications: %w", err)
	}

	n := notifications[notificationID]
	fmt.Fprintf(w, "Notification: %+v", n)

	return nil
}

Java

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.storage.Notification;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class PrintPubSubNotification {

  public static void printPubSubNotification(String bucketName, String notificationId) {
    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The Pub/Sub topic you would like to find
    // String notificationId = "your-unique-notification-id"

    Storage storage = StorageOptions.newBuilder().build().getService();
    Notification notification = storage.getNotification(bucketName, notificationId);
    System.out.println(
        "Found notification " + notification.getTopic() + " for bucket " + bucketName);
  }
}

Node.js

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// The ID of the notification
// const notificationId = '1';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function getMetadata() {
  // Get the notification metadata
  const [metadata] = await storage
    .bucket(bucketName)
    .notification(notificationId)
    .getMetadata();

  console.log(`ID: ${metadata.id}`);
  console.log(`Topic: ${metadata.topic}`);
  console.log(`Event Types: ${metadata.event_types}`);
  console.log(`Custom Attributes: ${metadata.custom_attributes}`);
  console.log(`Payload Format: ${metadata.payload_format}`);
  console.log(`Object Name Prefix: ${metadata.object_name_prefix}`);
  console.log(`Etag: ${metadata.etag}`);
  console.log(`Self Link: ${metadata.selfLink}`);
  console.log(`Kind: ${metadata.kind}`);
}

getMetadata().catch(console.error);

PHP

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

Per ottenere una configurazione delle notifiche per un bucket che utilizza PHP, consulta la documentazione di riferimento della libreria client di Google Cloud.

Python

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import storage

def print_pubsub_bucket_notification(bucket_name, notification_id):
    """Gets a notification configuration for a bucket."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"
    # The ID of the notification
    # notification_id = "your-notification-id"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    notification = bucket.get_notification(notification_id)

    print(f"Notification ID: {notification.notification_id}")
    print(f"Topic Name: {notification.topic_name}")
    print(f"Event Types: {notification.event_types}")
    print(f"Custom Attributes: {notification.custom_attributes}")
    print(f"Payload Format: {notification.payload_format}")
    print(f"Blob Name Prefix: {notification.blob_name_prefix}")
    print(f"Etag: {notification.etag}")
    print(f"Self Link: {notification.self_link}")

Ruby

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

require "google/cloud/storage"

def print_pubsub_bucket_notification bucket_name:, notification_id:
  # The ID of your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  # The ID of your notification configured for the bucket
  # notification_id = "your-notification-id"

  storage = Google::Cloud::Storage.new
  bucket  = storage.bucket bucket_name
  notification = bucket.notification notification_id

  puts "Notification ID: #{notification.id}"
  puts "Topic Name: #{notification.topic}"
  puts "Event Types: #{notification.event_types}"
  puts "Kind of Notification: #{notification.kind}"
  puts "Custom Attributes: #{notification.custom_attrs}"
  puts "Payload Format: #{notification.payload}"
  puts "Blob Name Prefix: #{notification.prefix}"
  puts "Self Link: #{notification.api_url}"
end

API REST

API JSON

  1. Richiedi un token di accesso all'autorizzazione da Playground per OAuth 2.0. Configura l'area giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
  2. Utilizza cURL per chiamare l'API JSON con una richiesta di GET notificationConfigs:

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

    Dove:

    • OAUTH2_TOKEN è il token di accesso che hai generato nel passaggio 1.

    • BUCKET_NAME è il nome del bucket di cui vuoi recuperare la configurazione delle notifiche. Ad esempio, my-bucket.

    • NOTIFICATION_ID è il numero ID della configurazione di notifica che vuoi recuperare. Ad esempio, 5.

API XML

Non puoi gestire le notifiche Pub/Sub con l'API XML.

Elenca le configurazioni delle notifiche per un bucket

Per elencare tutte le configurazioni di notifica associate a un determinato bucket:

Console

Non puoi gestire le notifiche Pub/Sub con la console Google Cloud. Utilizza invece gcloud CLI o una delle librerie client disponibili.

Riga di comando

gcloud

Utilizza il comando gcloud storage buckets notifications list:

gcloud storage buckets notifications list gs://BUCKET_NAME

Dove BUCKET_NAME è il nome del bucket di cui vuoi configurare le configurazioni di notifica. Ad esempio, my-bucket.

gsutil

Utilizza il comando gsutil notification list:

gsutil notification list gs://BUCKET_NAME

Dove BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

Librerie client

C++

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<std::vector<gcs::NotificationMetadata>> items =
      client.ListNotifications(bucket_name);
  if (!items) throw std::move(items).status();

  std::cout << "Notifications for bucket=" << bucket_name << "\n";
  for (gcs::NotificationMetadata const& notification : *items) {
    std::cout << notification << "\n";
  }
}

C#

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;

public class ListPubSubNotificationSample
{
    public IReadOnlyList<Notification> ListPubSubNotification(string bucketName = "your-unique-bucket-name")
    {
        StorageClient storage = StorageClient.Create();
        IReadOnlyList<Notification> notifications = storage.ListNotifications(bucketName);

        foreach (Notification notification in notifications)
        {
            Console.WriteLine(notification.Id);
        }
        return notifications;
    }
}

Go

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/storage"
)

// listBucketNotifications lists notification configurations for a bucket.
func listBucketNotifications(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"

	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	notifications, err := client.Bucket(bucketName).Notifications(ctx)
	if err != nil {
		return fmt.Errorf("Bucket.Notifications: %w", err)
	}

	for nID, n := range notifications {
		fmt.Fprintf(w, "Notification topic %s with ID %s\n", n.TopicID, nID)
	}

	return nil
}

Java

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.storage.Notification;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.util.List;

public class ListPubSubNotifications {

  public static void listPubSubNotifications(String bucketName) {
    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().build().getService();
    List<Notification> notificationList = storage.listNotifications(bucketName);
    for (Notification notification : notificationList) {
      System.out.println(
          "Found notification " + notification.getTopic() + " for bucket " + bucketName);
    }
  }
}

Node.js

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function listNotifications() {
  // Lists notifications in the bucket
  const [notifications] = await storage.bucket(bucketName).getNotifications();

  console.log('Notifications:');
  notifications.forEach(notification => {
    console.log(notification.id);
  });
}

listNotifications().catch(console.error);

PHP

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

Per elencare le configurazioni di notifica associate a un bucket che utilizza PHP, consulta la documentazione di riferimento della libreria client di Google Cloud.

Python

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import storage

def list_bucket_notifications(bucket_name):
    """Lists notification configurations for a bucket."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    notifications = bucket.list_notifications()

    for notification in notifications:
        print(f"Notification ID: {notification.notification_id}")

Ruby

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

require "google/cloud/storage"

def list_bucket_notifications bucket_name:
  # The ID of your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  storage = Google::Cloud::Storage.new
  bucket  = storage.bucket bucket_name

  bucket.notifications.each do |notification|
    puts "Notification ID: #{notification.id}"
  end
end

API REST

API JSON

  1. Richiedi un token di accesso all'autorizzazione da Playground per OAuth 2.0. Configura l'area giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
  2. Utilizza cURL per chiamare l'API JSON con una richiesta di GET notificationConfigs:

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

    Dove:

    • OAUTH2_TOKEN è il token di accesso che hai generato nel passaggio 1.

    • BUCKET_NAME è il nome del bucket di cui vuoi elencare le configurazioni di notifica. Ad esempio, my-bucket.

API XML

Non puoi gestire le notifiche Pub/Sub con l'API XML.

Rimuovere una configurazione delle notifiche

Per rimuovere una configurazione di notifica esistente dal bucket:

Console

Non puoi gestire le notifiche Pub/Sub con la console Google Cloud. Utilizza invece gcloud CLI o una delle librerie client disponibili.

Riga di comando

gcloud

Utilizza il comando gcloud storage buckets notifications delete:

gcloud storage buckets notifications delete projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID

Dove:

  • BUCKET_NAME è il nome del bucket di cui vuoi eliminare la configurazione delle notifiche. Ad esempio, my-bucket.

  • NOTIFICATION_ID è il numero ID della configurazione che vuoi eliminare. Ad esempio, 5.

In caso di esito positivo, la risposta sarà simile all'esempio seguente:

Completed 1

Una volta inviate, l'interruzione di tutte le notifiche attivate dalla configurazione delle notifiche potrebbe richiedere fino a 30 secondi.

gsutil

Utilizza il comando gsutil notification delete:

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

Dove:

  • BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

  • NOTIFICATION_ID è il numero ID della configurazione che vuoi eliminare. Ad esempio, 5.

Una volta inviate, l'interruzione di tutte le notifiche attivate dalla configurazione delle notifiche potrebbe richiedere fino a 30 secondi.

Librerie client

C++

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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#

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


using System;
using Google.Cloud.Storage.V1;

public class DeletePubSubNotificationSample
{
    public void DeletePubSubNotification(
        string bucketName = "your-unique-bucket-name",
        string notificationId = "notificationId")
    {
        StorageClient storage = StorageClient.Create();
        storage.DeleteNotification(bucketName, notificationId);

        Console.WriteLine("Successfully deleted notification with ID " + notificationId + " for bucket " + bucketName);
    }
}

Go

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/storage"
)

// deleteBucketNotification deletes a notification configuration for a bucket.
func deleteBucketNotification(w io.Writer, bucketName, notificationID string) error {
	// bucketName := "bucket-name"
	// notificationID := "notification-id"

	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	bucket := client.Bucket(bucketName)

	if err := bucket.DeleteNotification(ctx, notificationID); err != nil {
		return fmt.Errorf("Bucket.DeleteNotification: %w", err)
	}
	fmt.Fprintf(w, "Successfully deleted notification with ID %s for bucket %s.\n", notificationID, bucketName)
	return nil
}

Java

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class DeleteBucketPubSubNotification {

  public static void deleteBucketPubSubNotification(String bucketName, String notificationId) {
    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The NotificationId for the notification you would like to delete
    // String notificationId = "your-unique-notification-id"

    Storage storage = StorageOptions.newBuilder().build().getService();
    boolean success = storage.deleteNotification(bucketName, notificationId);
    if (success) {
      System.out.println("Successfully deleted notification");
    } else {
      System.out.println("Failed to find notification");
    }
  }
}

Node.js

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// The ID of the notification
// const notificationId = '1';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function deleteNotification() {
  // Deletes the notification from the bucket
  await storage.bucket(bucketName).notification(notificationId).delete();

  console.log(`Notification ${notificationId} deleted.`);
}

deleteNotification().catch(console.error);

PHP

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

Per eliminare la configurazione delle notifiche di un bucket tramite PHP, consulta la documentazione di riferimento della libreria client di Google Cloud.

Python

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import storage

def delete_bucket_notification(bucket_name, notification_id):
    """Deletes a notification configuration for a bucket."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"
    # The ID of the notification
    # notification_id = "your-notification-id"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    notification = bucket.notification(notification_id=notification_id)
    notification.delete()

    print(f"Successfully deleted notification with ID {notification_id} for bucket {bucket_name}")

Ruby

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

require "google/cloud/storage"

def delete_bucket_notification bucket_name:, notification_id:
  # The ID of your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  # The ID of your notification configured for the bucket
  # notification_id = "your-notification-id"

  storage = Google::Cloud::Storage.new
  bucket  = storage.bucket bucket_name
  notification = bucket.notification notification_id
  notification.delete

  puts "Successfully deleted notification with ID #{notification_id} for bucket #{bucket_name}"
end

Terraform

Per rimuovere la configurazione delle notifiche che hai creato, esegui terraform destroy dalla cartella contenente il file Terraform.

API REST

API JSON

  1. Richiedi un token di accesso all'autorizzazione da Playground per OAuth 2.0. Configura l'area giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
  2. Utilizza cURL per chiamare l'API JSON con una richiesta di DELETE notificationConfigs:

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

    Dove:

    • OAUTH2_TOKEN è il token di accesso che hai generato nel passaggio 1.

    • BUCKET_NAME è il nome del bucket di cui vuoi eliminare la configurazione delle notifiche. Ad esempio, my-bucket.

    • NOTIFICATION_ID è il numero ID della configurazione di notifica che vuoi eliminare. Ad esempio, 5.

Una volta inviate, l'interruzione di tutte le notifiche attivate dalla configurazione delle notifiche potrebbe richiedere fino a 30 secondi.

API XML

Non puoi gestire le notifiche Pub/Sub con l'API XML.

Passaggi successivi