Créer des abonnements Cloud Storage

Ce document explique comment créer un abonnement Cloud Storage. Vous pouvez utiliser la console Google Cloud, la Google Cloud CLI, la bibliothèque cliente ou l'API Pub/Sub pour créer un abonnement Cloud Storage.

Avant de commencer

Avant de lire ce document, assurez-vous d'avoir pris connaissance des points suivants:

Rôles et autorisations requis

Vous trouverez ci-dessous une liste de consignes concernant les rôles et les autorisations:

  • Pour créer un abonnement, vous devez configurer le contrôle des accès au niveau du projet.

  • Vous devez également disposer d'autorisations au niveau des ressources si vos abonnements et vos sujets se trouvent dans des projets différents, comme indiqué plus loin dans cette section.

  • Pour créer un abonnement Cloud Storage, le compte de service Pub/Sub doit être autorisé à écrire dans le bucket Cloud Storage spécifique et à lire les métadonnées du bucket. Pour en savoir plus sur l'attribution de ces autorisations, consultez la section suivante de ce document.

Pour obtenir les autorisations nécessaires pour créer des abonnements Cloud Storage, demandez à votre administrateur de vous attribuer le rôle IAM Éditeur Pub/Sub (roles/pubsub.editor) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour créer des abonnements Cloud Storage. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer des abonnements Cloud Storage:

  • Créer un abonnement : pubsub.subscriptions.create
  • Associer un abonnement à un sujet : pubsub.topics.attachSubscription
  • Extrait d'un abonnement : pubsub.subscriptions.consume
  • Souscrire un abonnement : pubsub.subscriptions.get
  • Répertorier un abonnement : pubsub.subscriptions.list
  • Mettre à jour un abonnement : pubsub.subscriptions.update
  • Supprimer un abonnement : pubsub.subscriptions.delete
  • Obtenez la stratégie IAM d'un abonnement : pubsub.subscriptions.getIamPolicy
  • Configurez la stratégie IAM pour un abonnement : pubsub.subscriptions.setIamPolicy

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Si, dans un projet, vous devez créer des abonnements Cloud Storage associés à un sujet d'un autre projet, demandez à votre administrateur de sujets de vous accorder également le rôle IAM (roles/pubsub.editor) Éditeur Pub/Sub sur le sujet.

Attribuer des rôles Cloud Storage au compte de service Pub/Sub

Certains services Google Cloud disposent de comptes de service gérés par Google Cloud qui leur permettent d'accéder à vos ressources. Ces comptes de service sont appelés agents de service. Pub/Sub crée et gère un compte de service pour chaque projet au format service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com.

Pour créer un abonnement Cloud Storage, le compte de service Pub/Sub doit être autorisé à écrire dans le bucket Cloud Storage spécifique et à lire ses métadonnées. Choisissez l'une des procédures suivantes:

  • Accordez des autorisations au niveau du bucket. Sur le bucket Cloud Storage spécifique, attribuez au compte de service Pub/Sub les rôles Créateur d'objets Storage (roles/storage.objectCreator) et le rôle Lecteur des anciens buckets de l'espace de stockage (roles/storage.legacyBucketReader).

  • Si vous devez attribuer des rôles au niveau du projet, vous pouvez attribuer le rôle Administrateur de l'espace de stockage (roles/storage.admin) sur le projet contenant le bucket Cloud Storage. Attribuez ce rôle au compte de service Pub/Sub.

Autorisations relatives aux buckets

Procédez comme suit pour attribuer les rôles de créateur d'objets Storage (roles/storage.objectCreator) et de lecteur des anciens buckets de l'espace de stockage (roles/storage.legacyBucketReader) au niveau du bucket:

  1. Dans la console Google Cloud, accédez à la page Cloud Storage.

    Accéder à Cloud Storage

  2. Cliquez sur le bucket Cloud Storage dans lequel vous souhaitez écrire des messages.

    La page Informations sur le bucket s'ouvre.

  3. Sur la page Informations sur le bucket, cliquez sur l'onglet Autorisations.

  4. Dans l'onglet Autorisations > Afficher par comptes principaux, cliquez sur Accorder l'accès.

    La page Accorder l'accès s'ouvre.

  5. Dans la section Ajouter des comptes principaux, saisissez le nom de votre compte de service Pub/Sub.

    Le format du compte de service est service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com. Par exemple, pour un projet dont le champ est PROJECT_NUMBER=112233445566, le compte de service est au format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  6. Dans la liste déroulante Attribuer des rôles > Sélectionner un rôle, saisissez Creator, puis sélectionnez le rôle Créateur des objets Storage.

  7. Cliquez sur Ajouter un autre rôle.

  8. Dans la liste déroulante Sélectionner un rôle, saisissez Bucket Reader, puis sélectionnez le rôle Lecteur des anciens buckets de l'espace de stockage.

  9. Cliquez sur Enregistrer.

Autorisations liées au projet

Procédez comme suit pour accorder le rôle Administrateur de l'espace de stockage (roles/storage.admin) au niveau du projet:

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Dans l'onglet Autorisations > Afficher par comptes principaux, cliquez sur Accorder l'accès.

    La page Accorder l'accès s'ouvre.

  3. Dans la section Ajouter des comptes principaux, saisissez le nom de votre compte de service Pub/Sub.

    Le format du compte de service est service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com. Par exemple, pour un projet dont le champ est PROJECT_NUMBER=112233445566, le compte de service est au format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Dans la liste déroulante Attribuer des rôles > Sélectionner un rôle, saisissez Storage Admin, puis sélectionnez le rôle Administrateur Storage.

  5. Cliquez sur Enregistrer.

Pour plus d'informations sur Cloud Storage IAM, consultez la page Cloud Storage Identity and Access Management.

Propriétés de l'abonnement Cloud Storage

Lorsque vous configurez un abonnement Cloud Storage, vous devez spécifier les propriétés communes à tous les types d'abonnements et certaines propriétés supplémentaires spécifiques à l'abonnement Cloud Storage.

Propriétés d'abonnement courantes

Découvrez les propriétés d'abonnement courantes que vous pouvez définir pour tous les abonnements.

Nom du bucket

Un bucket Cloud Storage doit déjà exister pour que vous puissiez créer un abonnement Cloud Storage.

Les messages sont envoyés par lots et stockés dans le bucket Cloud Storage. Un seul lot ou fichier est stocké en tant qu'objet dans le bucket.

L'option Paiements du demandeur doit être désactivée sur le bucket Cloud Storage.

Pour créer un bucket Cloud Storage, consultez la page Créer des buckets.

Préfixe, suffixe et date/heure du nom de fichier

Les fichiers Cloud Storage de sortie générés par l'abonnement Cloud Storage sont stockés en tant qu'objets dans le bucket Cloud Storage. Le nom de l'objet stocké dans le bucket Cloud Storage est au format suivant: <file-prefix><UTC-date-time>_<uuid><file-suffix>.

La liste suivante indique le format du fichier et les champs que vous pouvez personnaliser:

  • <file-prefix> est le préfixe de nom de fichier personnalisé. Ce champ est facultatif.

  • <UTC-date-time> est une chaîne personnalisable générée automatiquement en fonction de l'heure de création de l'objet.

  • <uuid> est une chaîne aléatoire générée automatiquement pour l'objet.

  • <file-suffix> est le suffixe de nom de fichier personnalisé. Ce champ est facultatif. Le suffixe du nom de fichier ne peut pas se terminer par "/".

  • Vous pouvez modifier le préfixe et le suffixe du nom de fichier:

    • Par exemple, si la valeur du préfixe du nom de fichier est prod_ et que la valeur du suffixe du nom de fichier est _archive, voici un exemple de nom d'objet : prod_2023-09-25T04:10:00+00:00_uN1QuE_archive.

    • Si vous ne spécifiez pas le préfixe ni le suffixe du nom de fichier, le nom de l'objet stocké dans le bucket Cloud Storage est au format suivant : <UTC-date-time>_<uuid>.

    • Les exigences de dénomination des objets Cloud Storage s'appliquent également au préfixe et au suffixe du nom de fichier. Pour en savoir plus, consultez la page À propos des objets Cloud Storage.

  • Vous pouvez modifier l'affichage de la date et de l'heure dans le nom du fichier:

    • Outils de mise en correspondance de la date et de l'heure obligatoires, que vous ne pouvez utiliser qu'une seule fois: année (YYYY ou YY), mois (MM), jour (DD), heure (hh), minute (mm), seconde (ss). Par exemple, YY-YYYY ou MMM n'est pas valide.

    • Outils de mise en correspondance facultatifs que vous ne pouvez utiliser qu'une seule fois: séparateur de date/heure (T) et décalage de fuseau horaire (Z ou +00:00).

    • Éléments facultatifs que vous pouvez utiliser plusieurs fois: trait d'union (-), trait de soulignement (_), deux-points (:) et barre oblique (/).

    • Par exemple, si la valeur du format de date et d'heure du nom de fichier est YYYY-MM-DD/hh_mm_ssZ, prod_2023-09-25/04_10_00Z_uNiQuE_archive est un exemple de nom d'objet.

    • Si le format de date et d'heure du nom de fichier se termine par un caractère qui n'est pas un outil de mise en correspondance, ce caractère remplace le séparateur entre <UTC-date-time> et <uuid>. Par exemple, si la valeur du format de date et d'heure du nom de fichier est YYYY-MM-DDThh_mm_ss-, prod_2023-09-25T04_10_00-uNiQuE_archive est un exemple de nom d'objet.

Traitement des fichiers par lot

Les abonnements Cloud Storage vous permettent de décider quand vous souhaitez créer un fichier de sortie stocké en tant qu'objet dans le bucket Cloud Storage. Pub/Sub écrit un fichier de sortie lorsque l'une des conditions de traitement par lot spécifiées est remplie. Les conditions de traitement par lot Cloud Storage sont les suivantes:

  • Durée maximale des lots de stockage. Ce paramètre est obligatoire. L'abonnement Cloud Storage écrit un nouveau fichier de sortie si la valeur de durée maximale spécifiée est dépassée. Si vous ne spécifiez pas cette valeur, une valeur par défaut de 5 minutes est appliquée. Voici les valeurs applicables pour la durée maximale:

    • Valeur minimale = 1 minute
    • Valeur par défaut = 5 minutes
    • Valeur maximale = 10 minutes
  • Nombre maximal d'octets par lot pour le stockage. Ce paramètre est facultatif. L'abonnement Cloud Storage écrit un nouveau fichier de sortie si la valeur spécifiée du nombre maximal d'octets est dépassée. Voici les valeurs applicables pour le nombre maximal d'octets:

    • Valeur minimale = 1 Ko
    • Valeur maximale = 10 Gio

Par exemple, vous pouvez configurer la durée maximale sur 6 minutes et le nombre maximal d'octets sur 2 Go. Si, à la quatrième minute, le fichier de sortie atteint une taille de fichier de 2 Go, Pub/Sub finalise le fichier précédent et commence à écrire dans un nouveau fichier.

Un abonnement Cloud Storage peut écrire simultanément dans plusieurs fichiers d'un bucket Cloud Storage. Si vous avez configuré votre abonnement de sorte qu'un fichier soit créé toutes les six minutes, plusieurs fichiers Cloud Storage peuvent être créés toutes les six minutes.

Dans certains cas, Pub/Sub peut commencer à écrire dans un nouveau fichier avant l'heure configurée par les conditions de traitement des fichiers par lot. Un fichier peut également dépasser la valeur "Max bytes" (Nombre maximal d'octets) si l'abonnement reçoit des messages dont la taille dépasse cette valeur.

Format de fichier

Lorsque vous créez un abonnement Cloud Storage, vous pouvez spécifier le format des fichiers de sortie devant être stockés dans un bucket Cloud Storage : Text ou Avro.

  • Texte: les messages sont stockés en texte brut. Un caractère de retour à la ligne permet de séparer un message du message précédent dans le fichier. Seules les charges utiles des messages sont stockées, pas les attributs ou d'autres métadonnées.

  • Avro: les messages sont stockés au format binaire Apache Avro.

    Lorsque vous sélectionnez Avro, vous pouvez également activer l'option d'écriture des métadonnées. Cette option vous permet de stocker les métadonnées du message avec celui-ci.

    Les métadonnées telles que subscription_name, message_id, publish_time et les champs d'attributs sont écrites dans les champs de premier niveau de l'objet Avro de sortie, tandis que toutes les autres propriétés de message autres que les données (par exemple, une clé order_key, le cas échéant) sont ajoutées en tant qu'entrées dans le mappage des attributs.

    Si l'option writemetadata (écrire des métadonnées) est désactivée, seule la charge utile du message est écrite dans l'objet Avro de sortie.

    Voici le schéma Avro pour les messages de sortie pour lesquels l'écriture des métadonnées n'est pas activée:

    {
      "type": "record",
      "namespace": "com.google.pubsub",
      "name": "PubsubMessage",
      "fields": [
        { "name": "data", "type": "bytes" }
      ]
    }
    

    Voici le schéma Avro pour les messages de sortie pour lesquels l'option writemetadata (écriture des métadonnées) est activée:

    {
      "type": "record",
      "namespace": "com.google.pubsub",
      "name": "PubsubMessageWithMetadata",
      "fields": [
        { "name": "subscription_name", "type": "string" },
        { "name": "message_id", "type": "string"  },
        { "name": "publish_time", "type": {
            "type": "long",
            "logicalType": "timestamp-micros"
          }
        },
        { "name": "attributes", "type": { "type": "map", "values": "string" } },
        { "name": "data", "type": "bytes" }
      ]
    }
    

Créer un abonnement Cloud Storage

Console

  1. Dans la console Google Cloud, accédez à la page Abonnements.

    Accéder aux abonnements

  2. Cliquez sur Créer un abonnement.

  3. Dans le champ ID d'abonnement, saisissez un nom.

    Pour plus d'informations sur l'attribution d'un nom à un abonnement, consultez la section Consignes pour nommer un sujet ou un abonnement.

  4. Choisissez ou créez un sujet dans le menu déroulant.

    L'abonnement reçoit les messages du sujet.

    Pour en savoir plus sur la création d'un sujet, consultez Créer et gérer des sujets.

  5. Sélectionnez Type de distribution sur Écrire dans Cloud Storage.

  6. Pour le bucket Cloud Storage, cliquez sur Parcourir.

    • Vous pouvez sélectionner un bucket existant à partir de n'importe quel projet approprié.

    • Vous pouvez également cliquer sur l'icône de création et suivre les instructions à l'écran pour créer un bucket.

      Après avoir créé le bucket, sélectionnez-le pour l'abonnement Cloud Storage.

      Pour en savoir plus sur la création d'un bucket, consultez Créer des buckets.

    Lorsque vous spécifiez le bucket, Pub/Sub vérifie les autorisations appropriées sur le bucket pour le compte de service Pub/Sub. En cas de problèmes d'autorisation, un message semblable à celui-ci s'affiche: Unable to verify if the Pub/Sub service agent has write permissions on this bucket. You may be lacking permissions to view or set permissions.

  7. Si vous rencontrez des problèmes d'autorisation, cliquez sur Définir l'autorisation et suivez les instructions à l'écran.

    Vous pouvez également suivre les instructions de la section Attribuer des rôles Cloud Storage au compte de service Pub/Sub.

  8. Pour le champ Format de fichier, sélectionnez Texte ou Avro.

    Si vous sélectionnez Avro, vous pouvez également spécifier si vous souhaitez stocker les métadonnées du message dans la sortie.

    Pour en savoir plus sur les deux options, y compris l'option de métadonnées de message pour le format Avro, consultez la section Format de fichier.

  9. Facultatif: Vous pouvez spécifier le préfixe et le suffixe du nom de fichier pour tous les fichiers qui doivent être écrits dans le bucket Cloud Storage. Un fichier est stocké en tant qu'objet dans le bucket.

    Pour en savoir plus sur la définition du préfixe et du suffixe de fichier, consultez la section Préfixe et suffixe de fichier.

  10. Pour le traitement par lot de fichiers, spécifiez un délai maximal avant de créer un fichier.

    Vous pouvez également définir la taille maximale des fichiers.

    Pour en savoir plus sur ces deux options, consultez la section Traitement des fichiers par lot.

  11. Nous vous recommandons vivement d'activer la fonctionnalité de lettres mortes pour gérer les échecs de message.

    Pour en savoir plus, consultez la section Sujet des lettres mortes.

  12. Vous pouvez conserver les autres paramètres par défaut et cliquer sur Créer.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Pour créer un abonnement Cloud Storage, exécutez la commande gcloud pubsub subscriptions create.
    gcloud pubsub subscriptions create SUBSCRIPTION_ID \
        --topic=TOPIC_ID \
        --cloud-storage-bucket=BUCKET_NAME \
        --cloud-storage-file-prefix=CLOUD_STORAGE_FILE_PREFIX \
        --cloud-storage-file-suffix=CLOUD_STORAGE_FILE_SUFFIX \
        --cloud-storage-max-bytes=CLOUD_STORAGE_MAX_BYTES \
        --cloud-storage-max-duration=CLOUD_STORAGE_MAX_DURATION \
        --cloud-storage-output-format=CLOUD_STORAGE_OUTPUT_FORMAT \
        --cloud-storage-write-metadata

    Dans la commande, seuls SUBSCRIPTION_ID, les options --topic et --cloud-storage-bucket sont obligatoires. Les autres options sont facultatives et peuvent être omises.

    Remplacez les éléments suivants :

    • SUBSCRIPTION_ID: nom ou ID de votre nouvel abonnement Cloud Storage.
    • TOPIC_ID: nom ou ID de votre thème
    • BUCKET_NAME: spécifie le nom d'un bucket existant. Exemple :prod_bucket Le nom du bucket ne doit pas inclure l'ID du projet. Pour créer un bucket, consultez Créer des buckets.
    • CLOUD_STORAGE_FILE_PREFIX: spécifie le préfixe du nom de fichier Cloud Storage. Par exemple, log_events_.
    • CLOUD_STORAGE_FILE_SUFFIX: spécifie le suffixe du nom de fichier Cloud Storage. Par exemple, .txt.
    • CLOUD_STORAGE_MAX_BYTES: nombre maximal d'octets pouvant être écrits dans un fichier Cloud Storage avant la création d'un fichier. La valeur doit être comprise entre 1 Ko et 10 Go. Par exemple, 20MB.
    • CLOUD_STORAGE_MAX_DURATION: durée maximale pouvant s'écouler avant la création d'un fichier Cloud Storage. La valeur doit être comprise entre 1 m et 10 m. Par exemple, 5m.
    • CLOUD_STORAGE_OUTPUT_FORMAT: format de sortie des données écrites dans Cloud Storage. Les valeurs sont les suivantes:
      • text: les messages sont écrits sous forme de texte brut, séparés par un retour à la ligne.
      • avro: les messages sont écrits au format binaire Avro. --cloud-storage-write-metadata n'a d'effet que pour les abonnements au format de sortie avro.

C++

Avant d'essayer cet exemple, suivez les instructions de configuration de C++ décrites dans le guide de démarrage rapide de Pub/Sub à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub C++.

Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

namespace pubsub = ::google::cloud::pubsub;
namespace pubsub_admin = ::google::cloud::pubsub_admin;
[](pubsub_admin::SubscriptionAdminClient client,
   std::string const& project_id, std::string const& topic_id,
   std::string const& subscription_id, std::string const& bucket) {
  google::pubsub::v1::Subscription request;
  request.set_name(
      pubsub::Subscription(project_id, subscription_id).FullName());
  request.set_topic(pubsub::Topic(project_id, topic_id).FullName());
  request.mutable_cloud_storage_config()->set_bucket(bucket);
  auto sub = client.CreateSubscription(request);
  if (!sub) {
    if (sub.status().code() == google::cloud::StatusCode::kAlreadyExists) {
      std::cout << "The subscription already exists\n";
      return;
    }
    throw std::move(sub).status();
  }

  std::cout << "The subscription was successfully created: "
            << sub->DebugString() << "\n";
}

Go

Avant d'essayer cet exemple, suivez les instructions de configuration de Go décrites dans le guide de démarrage rapide de Pub/Sub à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub Go.

Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

import (
	"context"
	"fmt"
	"io"
	"time"

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

// createCloudStorageSubscription creates a Pub/Sub subscription that exports messages to Cloud Storage.
func createCloudStorageSubscription(w io.Writer, projectID, subID string, topic *pubsub.Topic, bucket string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
	// note bucket should not have the gs:// prefix
	// bucket := "my-bucket"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %w", err)
	}
	defer client.Close()

	sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
		Topic: topic,
		CloudStorageConfig: pubsub.CloudStorageConfig{
			Bucket:         bucket,
			FilenamePrefix: "log_events_",
			FilenameSuffix: ".avro",
			OutputFormat:   &pubsub.CloudStorageOutputFormatAvroConfig{WriteMetadata: true},
			MaxDuration:    1 * time.Minute,
			MaxBytes:       1e8,
		},
	})
	if err != nil {
		return fmt.Errorf("client.CreateSubscription: %w", err)
	}
	fmt.Fprintf(w, "Created Cloud Storage subscription: %v\n", sub)

	return nil
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration de Java décrites dans le guide de démarrage rapide de Pub/Sub à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub Java.

Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
import com.google.protobuf.Duration;
import com.google.pubsub.v1.CloudStorageConfig;
import com.google.pubsub.v1.ProjectSubscriptionName;
import com.google.pubsub.v1.ProjectTopicName;
import com.google.pubsub.v1.Subscription;
import java.io.IOException;

public class CreateCloudStorageSubscriptionExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String topicId = "your-topic-id";
    String subscriptionId = "your-subscription-id";
    String bucket = "your-bucket";
    String filenamePrefix = "log_events_";
    String filenameSuffix = ".text";
    Duration maxDuration = Duration.newBuilder().setSeconds(300).build();

    createCloudStorageSubscription(
        projectId, topicId, subscriptionId, bucket, filenamePrefix, filenameSuffix, maxDuration);
  }

  public static void createCloudStorageSubscription(
      String projectId,
      String topicId,
      String subscriptionId,
      String bucket,
      String filenamePrefix,
      String filenameSuffix,
      Duration maxDuration)
      throws IOException {
    try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {

      ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
      ProjectSubscriptionName subscriptionName =
          ProjectSubscriptionName.of(projectId, subscriptionId);

      CloudStorageConfig cloudStorageConfig =
          CloudStorageConfig.newBuilder()
              .setBucket(bucket)
              .setFilenamePrefix(filenamePrefix)
              .setFilenameSuffix(filenameSuffix)
              .setMaxDuration(maxDuration)
              .build();

      Subscription subscription =
          subscriptionAdminClient.createSubscription(
              Subscription.newBuilder()
                  .setName(subscriptionName.toString())
                  .setTopic(topicName.toString())
                  .setCloudStorageConfig(cloudStorageConfig)
                  .build());

      System.out.println("Created a CloudStorage subscription: " + subscription.getAllFields());
    }
  }
}

Surveiller les abonnements

Cloud Monitoring fournit un certain nombre de métriques permettant de surveiller les abonnements.

Vous pouvez également surveiller les abonnements depuis Pub/Sub.

Étapes suivantes