Cloud Storage-Abos erstellen

In diesem Dokument wird beschrieben, wie Sie ein Cloud Storage-Abo erstellen. Sie können die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek oder die Pub/Sub API verwenden, um ein Cloud Storage-Abo zu erstellen.

Hinweise

Bevor Sie dieses Dokument lesen, sollten Sie sich mit folgenden Themen vertraut machen:

Erforderliche Rollen und Berechtigungen

Im Folgenden finden Sie eine Liste von Richtlinien zu Rollen und Berechtigungen:

  • Zum Erstellen eines Abos müssen Sie die Zugriffssteuerung im Projekt konfigurieren

  • Sie benötigen auch Berechtigungen auf Ressourcenebene, wenn Ihre Abos und Themen sich in verschiedenen Projekten befinden, wie weiter unten in diesem Abschnitt erläutert wird.

  • Um ein Cloud Storage-Abo zu erstellen, Das Pub/Sub-Dienstkonto muss die Berechtigung zum Schreiben in den Cloud Storage-Bucket und zum Lesen der Bucket-Metadaten. Weitere Informationen Informationen zum Erteilen dieser Berechtigungen finden Sie in den dieses Dokuments.

Um die Berechtigungen zu erhalten, die Sie zum Erstellen von Cloud Storage-Abos benötigen, bitten Sie Ihren Administrator, Ihnen IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor) für das Projekt Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält Berechtigungen, die zum Erstellen von Cloud Storage-Abos erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind zum Erstellen von Cloud Storage-Abos erforderlich:

  • Abo erstellen: pubsub.subscriptions.create
  • So hängen Sie ein Abo an ein Thema an: pubsub.topics.attachSubscription
  • Daten aus einem Abo abrufen: pubsub.subscriptions.consume
  • Abo abschließen: pubsub.subscriptions.get
  • So listen Sie ein Abo auf: pubsub.subscriptions.list
  • So aktualisieren Sie ein Abo: pubsub.subscriptions.update
  • So löschen Sie ein Abo: pubsub.subscriptions.delete
  • Rufen Sie die IAM-Richtlinie für ein Abo ab: pubsub.subscriptions.getIamPolicy
  • Konfigurieren Sie die IAM-Richtlinie für ein Abo: pubsub.subscriptions.setIamPolicy

Möglicherweise erhalten Sie auch diese Berechtigungen mit benutzerdefinierten Rollen oder weitere vordefinierte Rollen.

Wenn Sie Cloud Storage erstellen müssen Abos in einem Projekt, die mit einem Thema in einem anderen verknüpft sind Projekt enthalten ist, bitten Sie Ihren Themenadministrator, Ihnen auch den Pub/Sub Editor zu gewähren. Die IAM-Rolle (roles/pubsub.editor) für das Thema.

Pub/Sub-Dienstkonto Cloud Storage-Rollen zuweisen

Einige Google Cloud-Dienste haben von Google Cloud verwaltete Dienstkonten, ermöglicht den Diensten den Zugriff auf Ihre Ressourcen. Diese Dienstkonten werden als Kundenservicemitarbeiter. Pub/Sub erstellt und verwaltet einen Dienst für jedes Projekt im Format service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

Zum Erstellen eines Cloud Storage-Abos Dienstkonto muss eine Schreibberechtigung für den Cloud Storage-Bucket und zum Lesen der Bucket-Metadaten. Auswählen eines der folgenden Verfahren:

  • Gewähren Sie Berechtigungen auf Bucket-Ebene. Im jeweiligen Cloud Storage- Bucket, gewähren Sie die Rolle „Storage Object Creator“ (roles/storage.objectCreator) und die Rolle „Leser alter Storage-Buckets“ (roles/storage.legacyBucketReader) mit dem Pub/Sub-Dienstkonto.

  • Wenn Sie Rollen auf Projektebene zuweisen müssen, können Sie stattdessen Rolle „Storage Admin“ (roles/storage.admin) für das Projekt, das Cloud Storage-Bucket Weisen Sie diese Rolle dem Pub/Sub-Dienstkonto.

Bucket-Berechtigungen

Führen Sie die folgenden Schritte aus, um dem Storage Object Creator zu gewähren. (roles/storage.objectCreator) und Leser alter Storage-Buckets (roles/storage.legacyBucketReader) Rollen auf Bucket-Ebene:

  1. Wechseln Sie in der Google Cloud Console zum Cloud Storage-Browser.

    Cloud Storage aufrufen

  2. Klicken Sie auf den Cloud Storage-Bucket, in den Sie Nachrichten schreiben möchten.

    Die Seite Bucket-Details wird geöffnet.

  3. Klicken Sie auf der Seite Bucket-Details auf den Tab Berechtigungen.

  4. Gehen Sie zu Berechtigungen > Klicken Sie auf dem Tab Nach Hauptkonten ansehen auf Zugriff gewähren.

    Die Seite Zugriff gewähren wird geöffnet.

  5. Geben Sie im Abschnitt Hauptkonten hinzufügen den Namen Ihrer Pub/Sub-Ressource ein. Dienstkonto.

    Das Dienstkonto hat das Format service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com. Für ein Projekt mit PROJECT_NUMBER=112233445566 hat das Dienstkonto das Format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  6. Klicken Sie auf Rollen zuweisen > Drop-down-Menü Rolle auswählen aus Geben Sie Creator ein und wählen Sie die Rolle Storage Object Creator aus.

  7. Klicken Sie auf Weitere Rolle hinzufügen.

  8. Geben Sie im Drop-down-Menü Rolle auswählen die Zeichenfolge Bucket Reader ein und wählen Sie die Rolle Storage Legacy Bucket Reader aus.

  9. Klicken Sie auf Speichern.

Projektberechtigungen

Führen Sie die folgenden Schritte aus, um die Rolle „Storage-Administrator“ (roles/storage.admin) auf Projektebene zuzuweisen:

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Gehen Sie zu Berechtigungen > Klicken Sie auf dem Tab Nach Hauptkonten ansehen auf Zugriff gewähren.

    Die Seite Zugriff gewähren wird geöffnet.

  3. Geben Sie im Bereich Hauptkonten hinzufügen den Namen Ihres Pub/Sub-Dienstkontos ein.

    Das Format des Dienstkontos ist service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com Für ein Projekt mit PROJECT_NUMBER=112233445566 hat das Dienstkonto das Format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Klicken Sie auf Rollen zuweisen > Drop-down-Menü Rolle auswählen aus Geben Sie Storage Admin ein und wählen Sie die Rolle Storage-Administrator aus.

  5. Klicken Sie auf Speichern.

Weitere Informationen zu Cloud Storage IAM finden Sie unter Identity and Access Management für Cloud Storage.

Attribute des Cloud Storage-Abos

Wenn Sie ein Cloud Storage-Abo konfigurieren, müssen Sie die allen Abotypen gemeinsam genutzten Eigenschaften und einige zusätzliche Abospezifische Attribute für Cloud Storage.

Allgemeine Abo-Properties

Weitere Informationen zu allgemeinen Abo-Properties das Sie für alle Abos festlegen können.

Bucket-Name

Ein Cloud Storage-Bucket muss bereits vorhanden sein, bevor Sie einen erstellen Cloud Storage-Abo.

Die Nachrichten werden in Batches gesendet und im Cloud Storage-Bucket gespeichert. Ein einzelner Batch oder eine einzelne Datei wird als Objekt im Bucket gespeichert.

Der Cloud Storage-Bucket muss Anforderer bezahlt deaktiviert.

Informationen zum Erstellen eines Cloud Storage-Bucket finden Sie unter Buckets erstellen

Präfix, Suffix und Datum/Uhrzeit für Dateinamen

Die von Cloud Storage generierten Cloud Storage-Ausgabedateien Abos werden als Objekte im Cloud Storage-Bucket gespeichert. Der Name des im Cloud Storage-Bucket gespeicherten Objekts hat das folgende Format: <file-prefix><UTC-date-time>_<uuid><file-suffix>.

Die folgende Liste enthält Details zum Dateiformat und zu den Feldern, die Sie anpassen können:

  • <file-prefix> ist das benutzerdefinierte Dateinamenpräfix. Dieses Feld ist optional.

  • <UTC-date-time> ist ein anpassbarer, automatisch generierter String basierend auf der Zeit wird das Objekt erstellt.

  • <uuid> ist ein automatisch generierter zufälliger String für das Objekt.

  • <file-suffix> ist das benutzerdefinierte Suffix des Dateinamens. Dieses Feld ist optional. Die Das Suffix des Dateinamens darf nicht auf „/“ enden.

  • Sie können das Präfix und Suffix des Dateinamens ändern:

    • Wenn beispielsweise der Wert des Dateinamenpräfixes prod_ ist und der Wert das Suffix des Dateinamens _archive lautet, ist ein Beispielobjektname prod_2023-09-25T04:10:00+00:00_uN1QuE_archive

    • Wenn Sie kein Präfix und Suffix des Dateinamens angeben, wird der gespeicherte Objektname im Cloud Storage-Bucket hat folgendes Format: <UTC-date-time>_<uuid>

    • Die Anforderungen für die Benennung von Cloud Storage-Objekten gelten auch für den Dateinamen Präfix und Suffix. Weitere Informationen finden Sie unter Cloud Storage-Objekte.

  • Sie können ändern, wie Datum und Uhrzeit im Dateinamen angezeigt werden:

    • Erforderliche Datum/Uhrzeit-Abgleiche, die nur einmal verwendet werden können: Jahr (YYYY oder YY), Monat (MM), Tag (DD), Stunde (hh), Minute (mm), Sekunde (ss). YY-YYYY oder MMM sind beispielsweise ungültig.

    • Optionale Matchers, die Sie nur einmal verwenden können: Datum/Uhrzeit-Trennzeichen (T) und und Zeitzonenverschiebung (Z oder +00:00).

    • Optionale Elemente, die Sie mehrmals verwenden können: Bindestrich (-), Unterstrich (_), Doppelpunkt (:) und Schrägstrich (/).

    • Wenn der Wert des Datums-/Uhrzeitformats für Dateinamen beispielsweise YYYY-MM-DD/hh_mm_ssZ ist ein Beispielobjektname prod_2023-09-25/04_10_00Z_uNiQuE_archive.

    • Wenn das Datetime-Format des Dateinamens mit einem Zeichen endet, das kein Matcher ist, ersetzt dieses Zeichen das Trennzeichen zwischen <UTC-date-time> und <uuid>. Wenn der Wert des Datums-/Uhrzeitformats für Dateinamen beispielsweise YYYY-MM-DDThh_mm_ss- ist ein Beispielobjektname prod_2023-09-25T04_10_00-uNiQuE_archive.

Batchverarbeitung von Dateien

Mit Cloud Storage-Abos können Sie festlegen, wann eine neue Ausgabedatei erstellt werden soll, die als Objekt im Cloud Storage-Bucket gespeichert wird. Pub/Sub schreibt eine Ausgabedatei, wenn einer der bestimmte Batching-Bedingungen erfüllt. Im Folgenden sind die Cloud Storage-Batchbedingungen:

  • Maximale Dauer von Storage-Batch. Dies ist eine erforderliche Einstellung. Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, wenn der angegebene Wert für die maximale Dauer überschritten wird. Wenn Sie keine wenn Sie den Wert angeben, wird ein Standardwert von 5 Minuten angewendet. Folgende Werte sind für die maximale Dauer zulässig:

    • Mindestwert = 1 Minute
    • Standardwert = 5 Minuten
    • Höchstwert = 10 Minuten
  • Max. Storage-Batchbyte Diese Einstellung ist optional. Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, wenn der angegebene Wert für die maximale Anzahl von Byte überschritten wird. Im Folgenden finden Sie Werte für maximale Byte:

    • Mindestwert = 1 KB
    • Maximalwert = 10 GiB
  • Storage-Batch-Nachrichten Diese Einstellung ist optional. Die Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, die angegebene maximale Anzahl von Nachrichten überschritten wird. Folgende Werte sind für „max. Nachrichten“ zulässig:

    • Mindestwert = 1.000

Sie können die maximale Dauer z. B. auf 6 Minuten Max. Byte als 2 GB. Wenn in der 4. Minute die Ausgabedatei einen Dateigröße von 2 GB abgeschlossen ist, schließt Pub/Sub die vorherige Datei in eine neue Datei schreiben.

Ein Cloud Storage-Abo kann gleichzeitig in mehrere Dateien in einem Cloud Storage-Bucket schreiben. Wenn Sie Ihr Abo, bei dem jede sechste Minute eine neue Datei erstellt wird, Mehrere Cloud Storage-Dateien werden alle 6 Minuten erstellt.

In einigen Fällen beginnt Pub/Sub möglicherweise früher mit dem Schreiben in eine neue Datei, als in den Bedingungen für die Dateigruppierung konfiguriert. Eine Datei kann auch den Wert für die maximale Bytezahl überschreiten, wenn das Abo empfängt Nachrichten, die größer sind als der Wert für die maximale Anzahl von Byte.

Dateiformat

Beim Erstellen eines Cloud Storage-Abos können Sie das Format der Ausgabedateien, die in einem Cloud Storage-Bucket als Text oder Avro.

  • Text: Die Nachrichten werden als Nur-Text gespeichert. Ein Zeilenumbruch trennt eine Nachricht von der vorherigen Nachricht in der Datei. Nur Nachricht Nutzlasten gespeichert werden, nicht Attribute oder andere Metadaten.

  • Avro: Die Nachrichten werden unter Apache Avro-Binärformat. Wenn Sie Avro auswählen, können Sie die folgenden zusätzlichen Eigenschaften aktivieren:

    • Write metadata (Metadaten schreiben): Mit dieser Option können Sie die Metadaten der Nachricht zusammen mit der Nachricht speichern. Metadaten wie subscription_name, message_id, publish_time und attributes werden in Felder der obersten Ebene im Avro-Ausgabeobjekt geschrieben, während alle anderen Nachrichtenattribute mit Ausnahme von Daten (z. B. ein order_key, falls vorhanden) als Einträge in die attributes-Zuordnung hinzugefügt werden.

      Wenn Metadaten schreiben deaktiviert ist, wird nur die Nachrichtenn-Nutzlast in das Ausgabe-Avro-Objekt geschrieben. Hier ist das Avro-Schema für die Ausgabemeldungen mit deaktiviertem Schreibmetadaten:

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

      Hier ist das Avro-Schema für die Ausgabemeldungen mit aktiviertem Schreibmetadaten:

      {
        "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" }
        ]
      }
      
    • Use topic schema (Schema des Themas verwenden): Mit dieser Option kann Pub/Sub die Schema des Pub/Sub-Themas, zu dem Das Abo wird beim Schreiben von Avro-Dateien angehängt.

      Beachten Sie bei der Verwendung dieser Option die folgenden zusätzlichen Anforderungen:

      • Das Schema des Themas muss im Apache Avro-Format vorliegen.

      • Wenn sowohl Themaschema verwenden als auch Metadaten schreiben aktiviert sind, muss das Schema des Themas im Stammverzeichnis ein Record-Objekt haben. Pub/Sub erweitert die Felderliste des Eintrags um die Metadatenfelder. Der Datensatz darf daher keine Felder mit demselben Namen wie die Metadatenfelder (subscription_name, message_id, publish_time oder attributes) enthalten.

Cloud Storage-Abo erstellen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Abos auf. Seite.

    Zu „Abos“

  2. Klicken Sie auf Abo erstellen.

  3. Geben Sie im Feld Abo-ID einen Namen ein.

    Weitere Informationen zur Benennung von Abos finden Sie unter Richtlinien für die Benennung von Themen oder Abo

  4. Wählen Sie im Drop-down-Menü ein Thema aus oder erstellen Sie ein Thema.

    Das Abo erhält Nachrichten aus dem Thema.

    Informationen zum Erstellen eines Themas finden Sie unter Themen erstellen und verwalten.

  5. Wählen Sie als Zustellungstyp In Cloud Storage schreiben aus.

  6. Klicken Sie für den Cloud Storage-Bucket auf Durchsuchen.

    • Sie können einen vorhandenen Bucket aus einem beliebigen Projekt auswählen.

    • Sie können auch auf das Symbol „Erstellen“ klicken und der Anleitung auf um einen neuen Bucket zu erstellen.

      Nachdem Sie den Bucket erstellt haben, wählen Sie den Bucket für den Cloud Storage-Abo.

      Weitere Informationen zum Erstellen eines Buckets finden Sie unter Buckets erstellen.

    Wenn Sie den Bucket angeben, prüft Pub/Sub entsprechende Berechtigungen für den Bucket für Pub/Sub Dienstkonto. Bei Berechtigungsproblemen wird eine Meldung etwa so: 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. Falls Berechtigungsprobleme auftreten, klicken Sie auf Berechtigung festlegen und folgen Sie der Anleitung auf dem Bildschirm.

    Alternativ können Sie der Anleitung unter Cloud Storage-Rollen dem Pub/Sub-Dienstkonto zuweisen folgen.

  8. Wählen Sie unter Dateiformat die Option Text oder Avro aus.

    Wenn Sie Avro auswählen, können Sie optional angeben, ob die Nachrichtenmetadaten in der Ausgabe gespeichert werden sollen.

    Weitere Informationen zu den beiden Optionen, Metadatenoption für das Avro-Format, siehe Datei Format.

  9. Optional: Sie können das Präfix Dateinamenspräfix, Suffix und datetime für alle Dateien, die in den Cloud Storage-Bucket. Eine Datei wird als Objekt im Bucket gespeichert.

    Weitere Informationen zum Festlegen des Dateipräfixes, ‑suffixes und ‑datums finden Sie unter Dateipräfix, ‑suffix und ‑datum.

  10. Geben Sie für die Dateigruppierung eine maximale Zeit an, die verstreichen darf, bevor eine neue Datei erstellt wird.

    Optional können Sie auch die maximale Dateigröße Nachrichten für die Dateien.

    Weitere Informationen zu beiden Optionen für die Dateigruppierung finden Sie unter Dateigruppierung.

  11. Wir empfehlen dringend, unzustellbare Nachrichten zu aktivieren um Nachrichtenfehler zu beheben.

    Weitere Informationen finden Sie unter Unzustellbare Nachrichten -Thema

  12. Sie können die anderen Einstellungen als Standardeinstellungen beibehalten und auf Erstellen:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Führen Sie den Befehl gcloud pubsub subscriptions create aus, um ein Cloud Storage-Abo zu erstellen.
    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-file-datetime-format=CLOUD_STORAGE_FILE_DATETIME_FORMAT \
        --cloud-storage-max-duration=CLOUD_STORAGE_MAX_DURATION \
        --cloud-storage-max-bytes=CLOUD_STORAGE_MAX_BYTES \
        --cloud-storage-max-messages=CLOUD_STORAGE_MAX_MESSAGES \
        --cloud-storage-output-format=CLOUD_STORAGE_OUTPUT_FORMAT \
        --cloud-storage-write-metadata
        --cloud-storage-use-topic-schema

    Im Befehl wird nur SUBSCRIPTION_ID, der Parameter Flag --topic und --cloud-storage-bucket -Flag sind erforderlich. Die verbleibenden Flags sind optional und können weggelassen werden.

    Ersetzen Sie Folgendes:

    • SUBSCRIPTION_ID: Name oder ID Ihres neuen Cloud Storage-Abo.
    • TOPIC_ID: Der Name oder die ID des Themas.
    • BUCKET_NAME: Gibt den Namen eines vorhanden ist. Beispiel: prod_bucket. Bucket Name darf die Projekt-ID nicht enthalten. Informationen zum Erstellen eines Buckets finden Sie unter Buckets erstellen.
    • CLOUD_STORAGE_FILE_PREFIX: Gibt die für den Cloud Storage-Dateinamen. Beispiel: log_events_.
    • CLOUD_STORAGE_FILE_SUFFIX: Gibt die Suffix für den Cloud Storage-Dateinamen. Beispiel: .txt.
    • CLOUD_STORAGE_FILE_DATETIME_FORMAT: Gibt das Datum/Uhrzeit-Format für den Cloud Storage-Dateinamen an. Beispiel: YYYY-MM-DD/hh_mm_ssZ.
    • CLOUD_STORAGE_MAX_DURATION: Die maximale Dauer, die verstreichen kann, bevor eine neue Cloud Storage-Datei erstellt wird. Der Wert muss zwischen 1 m und 10 m liegen. Beispiel: 5m.
    • CLOUD_STORAGE_MAX_BYTES: die maximalen Byte der vor einer neuen Datei in eine Cloud Storage-Datei geschrieben werden kann. erstellt wird. Der Wert muss zwischen 1 KB und 10 GB liegen. Beispiel: 20MB.
    • CLOUD_STORAGE_MAX_MESSAGES: Das Maximum Anzahl der Nachrichten, die in eine Cloud Storage-Datei geschrieben werden können bevor eine neue Datei erstellt wird. Der Wert muss größer oder gleich sein auf 1.000. Beispiel: 100000.
    • CLOUD_STORAGE_OUTPUT_FORMAT: Die Ausgabe Format für Daten, die in Cloud Storage geschrieben werden. Mögliche Werte: folgt:
      • text: Nachrichten werden als unbearbeiteter, getrennter Rohtext geschrieben. durch einen Zeilenumbruch.
      • avro: Nachrichten werden als Avro-Binär geschrieben. --cloud-storage-write-metadata und „--cloud-storage-use-topic-schema“ betrifft nur Abos mit dem Ausgabeformat avro.

C++

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für C++ in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub C++ API Referenzdokumentation.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub Go API Referenzdokumentation.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Schnellstart mit Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub Java API Referenzdokumentation.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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());
    }
  }
}

Cloud Storage-Abo überwachen

Cloud Monitoring bietet eine Reihe von Messwerten, Abos überwachen.

Eine Liste aller verfügbaren Messwerte im Zusammenhang mit Pub/Sub und deren Beschreibungen Monitoring-Dokumentation für Pub/Sub

Sie können Abos auch in Pub/Sub überwachen.

Nächste Schritte