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 mit Richtlinien in Bezug auf Rollen und Berechtigungen:

  • Zum Erstellen eines Abos müssen Sie die Zugriffssteuerung auf Projektebene konfigurieren.

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

  • Zum Erstellen eines Cloud Storage-Abos muss das Pub/Sub-Dienstkonto die Berechtigung zum Schreiben in den jeweiligen Cloud Storage-Bucket und zum Lesen der Bucket-Metadaten haben. Weitere Informationen zum Erteilen dieser Berechtigungen finden Sie im nächsten Abschnitt dieses Dokuments.

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Editor (roles/pubsub.editor) für das Projekt zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen von Cloud Storage-Abos benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die 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
  • Fügen Sie einem Thema ein Abo hinzu: pubsub.topics.attachSubscription
  • Aus einem Abo abrufen: pubsub.subscriptions.consume
  • Abo abschließen: pubsub.subscriptions.get
  • Abo auflisten: pubsub.subscriptions.list
  • Abo aktualisieren: pubsub.subscriptions.update
  • Abo löschen: 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 können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

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

Pub/Sub-Dienstkonto Cloud Storage-Rollen zuweisen

Einige Google Cloud-Dienste haben von Google Cloud verwaltete Dienstkonten, mit denen die Dienste auf Ihre Ressourcen zugreifen können. Diese Dienstkonten werden als Dienst-Agents bezeichnet. Pub/Sub erstellt und verwaltet für jedes Projekt ein Dienstkonto im Format service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com.

Zum Erstellen eines Cloud Storage-Abos muss das Pub/Sub-Dienstkonto die Berechtigung zum Schreiben in den jeweiligen Cloud Storage-Bucket und zum Lesen der Bucket-Metadaten haben. Wählen Sie eines der folgenden Verfahren aus:

  • Gewähren Sie Berechtigungen auf Bucket-Ebene. Gewähren Sie dem Pub/Sub-Dienstkonto im jeweiligen Cloud Storage-Bucket die Rolle „Storage-Objekt-Ersteller“ (roles/storage.objectCreator) und die Rolle „Leser alter Storage-Buckets“ (roles/storage.legacyBucketReader).

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

Bucket-Berechtigungen

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

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Storage.

    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 mit den Bucket-Details auf den Tab Berechtigungen.

  4. Klicken Sie auf dem Tab Berechtigungen > 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 Ihres Pub/Sub-Dienstkontos ein.

    Das Format des Dienstkontos ist service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com. In einem Projekt mit PROJECT_NUMBER=112233445566 hat das Dienstkonto beispielsweise das Format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  6. Geben Sie im Drop-down-Menü Rollen zuweisen > Rolle auswählen den Wert Creator ein und wählen Sie die Rolle Storage-Objekt-Ersteller aus.

  7. Klicken Sie auf Weitere Rolle hinzufügen.

  8. Geben Sie im Drop-down-Menü Rolle auswählen den Wert Bucket Reader ein und wählen Sie die Rolle Leser von Legacy-Storage-Buckets aus.

  9. Klicken Sie auf Speichern.

Projektberechtigungen

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

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

    IAM aufrufen

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

    Die Seite Zugriff gewähren wird geöffnet.

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

    Das Format des Dienstkontos ist service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com. In einem Projekt mit PROJECT_NUMBER=112233445566 hat das Dienstkonto beispielsweise das Format service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Geben Sie im Drop-down-Menü Rollen zuweisen > Rolle auswählen den Wert 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 Cloud Storage Identity and Access Management.

Attribute des Cloud Storage-Abos

Wenn Sie ein Cloud Storage-Abo konfigurieren, müssen Sie die allgemeinen Attribute aller Abotypen sowie einige zusätzliche abospezifische Attribute für Cloud Storage angeben.

Allgemeine Aboeigenschaften

Weitere Informationen zu allgemeinen Abo-Properties, die du für alle Abos festlegen kannst

Bucket-Name

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

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.

Für den Cloud Storage-Bucket muss Anforderer bezahlt deaktiviert sein.

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

Präfix des Dateinamens, Suffix und Datum/Uhrzeit

Die im Rahmen des Cloud Storage-Abos generierten Cloud Storage-Ausgabedateien 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, der auf dem Zeitpunkt der Objekterstellung basiert.

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

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

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

    • Wenn der Wert des Dateinamenspräfixes beispielsweise prod_ und der Wert des Dateinamensuffixes _archive ist, ist der Name des Beispielobjekts prod_2023-09-25T04:10:00+00:00_uN1QuE_archive.

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

    • Die Anforderungen für die Benennung von Cloud Storage-Objekten gelten auch für das Präfix und Suffix des Dateinamens. Weitere Informationen finden Sie unter Informationen zu Cloud Storage-Objekten.

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

    • Erforderliche Datetime-Matcher, die Sie nur einmal verwenden können: Jahr (YYYY oder YY), Monat (MM), Tag (DD), Stunde (hh), Minute (mm), Sekunde (ss). Beispiel: YY-YYYY oder MMM ist ungültig.

    • Optionale Matcher, die Sie nur einmal verwenden können: Trennzeichen für Datum und Uhrzeit (T) und Zeitzonenversatz (Z oder +00:00).

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

    • Wenn der Wert des Datetime-Formats des Dateinamens beispielsweise YYYY-MM-DD/hh_mm_ssZ ist, 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 Datetime-Formats des Dateinamens beispielsweise YYYY-MM-DDThh_mm_ss- ist, ist ein Beispielobjektname prod_2023-09-25T04_10_00-uNiQuE_archive.

Batchverarbeitung von Dateien

Mit Cloud Storage-Abos können Sie entscheiden, wann Sie eine neue Ausgabedatei erstellen möchten, die als Objekt im Cloud Storage-Bucket gespeichert wird. Pub/Sub schreibt eine Ausgabedatei, wenn eine der angegebenen Batchbedingungen erfüllt ist. Im Folgenden sind die Bedingungen für die Batchverarbeitung von Cloud Storage aufgeführt:

  • 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 den Wert nicht 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
  • Maximale Anzahl von Storage-Batchbyte. Diese Einstellung ist optional. Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, wenn der angegebene Wert von max. Byte überschritten wird. Folgende Werte sind für die maximale Bytezahl zulässig:

    • Mindestwert = 1 KB
    • Maximalwert = 10 GiB

Beispielsweise können Sie die maximale Dauer mit 6 Minuten und die maximale Anzahl von Byte mit 2 GB konfigurieren. Wenn die Ausgabedatei in der 4. Minute eine Dateigröße von 2 GB erreicht, finalisiert Pub/Sub die vorherige Datei und beginnt, in eine neue Datei zu schreiben.

Ein Cloud Storage-Abo kann in mehrere Dateien in einem Cloud Storage-Bucket gleichzeitig schreiben. Wenn Sie Ihr Abo so konfiguriert haben, dass jede 6. Minute eine neue Datei erstellt wird, werden möglicherweise alle 6 Minuten mehrere Cloud Storage-Dateien erstellt.

In einigen Situationen beginnt Pub/Sub möglicherweise schon vor dem in den Batchbedingungen der Datei konfigurierten Zeitraum mit dem Schreiben in eine neue Datei. Eine Datei kann auch den Wert für die maximale Anzahl von Byte überschreiten, wenn das Abo Nachrichten empfängt, die größer als der Wert für die maximale Anzahl von Byte sind.

Dateiformat

Wenn Sie ein Cloud Storage-Abo erstellen, können Sie das Format der Ausgabedateien, die in einem Cloud Storage-Bucket gespeichert werden sollen, als Text oder Avro angeben.

  • Text: Die Nachrichten werden als Nur-Text gespeichert. Ein Zeilenumbruchzeichen trennt eine Nachricht von der vorherigen Nachricht in der Datei. Es werden nur Nachrichtennutzlasten gespeichert, keine Attribute oder anderen Metadaten.

  • Avro: Die Nachrichten werden im Apache Avro-Binärformat gespeichert. 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 Nachrichtennutzlast in das Avro-Ausgabeobjekt 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" }
        ]
      }
      
    • Schema des Themas verwenden: Mit dieser Option kann Pub/Sub beim Schreiben von Avro-Dateien das Schema des Pub/Sub-Themas verwenden, an das das Abo angehängt ist.

      Beachten Sie bei 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.

    Zu „Abos“

  2. Klicken Sie auf Abo erstellen.

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

    Informationen zum Benennen eines Abos finden Sie unter Richtlinien für die Benennung von Themen oder Abos.

  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 die Option 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 dem Bildschirm folgen, um einen neuen Bucket zu erstellen.

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

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

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

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

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

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

    Weitere Informationen zu den beiden Optionen, einschließlich der Nachrichtenmetadatenoption für das Avro-Format, finden Sie unter Dateiformat.

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

    Weitere Informationen zum Festlegen des Dateipräfix und Dateisuffixes finden Sie unter Dateipräfix und Suffix.

  10. Geben Sie unter Datei-Batching eine maximale Zeit an, die verstreichen soll, bevor eine neue Datei erstellt wird.

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

    Weitere Informationen zu beiden Optionen für die Batchverarbeitung von Dateien finden Sie unter Batching von Dateien.

  11. Es wird dringend empfohlen, unzustellbare Nachrichten zu aktivieren, um Nachrichtenfehler zu beheben.

    Weitere Informationen finden Sie unter Thema für unzustellbare Nachrichten.

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

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  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-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

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

    Ersetzen Sie Folgendes:

    • SUBSCRIPTION_ID: Der Name oder die ID Ihres neuen Cloud Storage-Abos.
    • TOPIC_ID: Der Name oder die ID des Themas.
    • BUCKET_NAME: Gibt den Namen eines vorhandenen Buckets an. Beispiel: prod_bucket. Der Bucket-Name darf die Projekt-ID nicht enthalten. Informationen zum Erstellen eines Buckets finden Sie unter Buckets erstellen.
    • CLOUD_STORAGE_FILE_PREFIX: Gibt das Präfix für den Cloud Storage-Dateinamen an. Beispiel: log_events_.
    • CLOUD_STORAGE_FILE_SUFFIX: Gibt das Suffix für den Cloud Storage-Dateinamen an. Beispiel: .txt.
    • CLOUD_STORAGE_MAX_BYTES: Die maximale Anzahl von Byte, die in eine Cloud Storage-Datei geschrieben werden können, bevor eine neue Datei erstellt wird. Der Wert muss zwischen 1 KB und 10 GB liegen. Beispiel: 20MB.
    • 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_OUTPUT_FORMAT: Das Ausgabeformat für Daten, die in Cloud Storage geschrieben werden. Mögliche Werte:
      • text: Nachrichten werden als Rohtext geschrieben, getrennt durch einen Zeilenumbruch.
      • avro: Nachrichten werden als Avro-Binär geschrieben. --cloud-storage-write-metadata wirkt sich nur auf Abos mit dem Ausgabeformat avro aus.

C++

Folgen Sie der Einrichtungsanleitung für C++ in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.

Richten Sie 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

Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.

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

Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.

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

Abos im Blick behalten

Cloud Monitoring bietet eine Reihe von Messwerten zum Überwachen von Abos.

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

Nächste Schritte