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 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-Buckets 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 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
  • Pull-Modus aus einem Abo: 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

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Wenn Sie Cloud Storage erstellen müssen Abos in einem Projekt, die mit einem Thema in einem anderen verknüpft sind Projekt verwenden, 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-Buckets 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 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.

  6. Wählen Sie im Menü 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 den Wert Bucket Reader ein. und wählen Sie die Rolle Leser alter Storage-Buckets aus.

  9. Klicken Sie auf Speichern.

Projektberechtigungen

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

  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 Abschnitt Hauptkonten hinzufügen den Namen Ihrer Pub/Sub-Ressource ein. Dienstkonto.

    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. Wählen Sie im Menü 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 Siehe Cloud Storage Identity and Access Management.

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 von Cloud Storage.

Allgemeine Aboeigenschaften

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 gespeichert. im Bucket.

Der Cloud Storage-Bucket muss Anforderer bezahlt deaktiviert.

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

Präfix des Dateinamens, Suffix und Datum/Uhrzeit

Die von Cloud Storage generierten Cloud Storage-Ausgabedateien Abos werden als Objekte im Cloud Storage-Bucket gespeichert. Name des im Cloud Storage-Bucket gespeicherten Objekts hat Folgendes: 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 Informationen zu Cloud Storage-Objekten

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

    • Erforderliche Datum/Uhrzeit-Matcher, die Sie nur einmal verwenden können: Jahr (YYYY oder YY), Monat (MM), Tag (DD), Stunde (hh), Minute (mm), Sekunde (ss). Beispielsweise ist YY-YYYY oder MMM 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 mehrmals verwendet werden können: Bindestrich (-), Unterstrich (_), Doppelpunkt (:) und Schrägstrich (/).

    • Wenn der Wert des Datums-/Uhrzeitformats für den 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 den 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 entscheiden, wann Sie Eine neue Ausgabedatei, die als Objekt in Cloud Storage gespeichert wird Bucket. Pub/Sub schreibt eine Ausgabedatei, wenn einer der bestimmte Batching-Bedingungen erfüllt. Im Folgenden sind die Cloud Storage-Batching-Bedingungen:

  • Maximale Dauer von Storage-Batch. Dies ist eine erforderliche Einstellung. Die Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, wenn der angegebene Wert für die maximale Dauer wurde überschritten. 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. Die Das Cloud Storage-Abo schreibt eine neue Ausgabedatei, der angegebene Wert der maximalen Byte wurde überschritten. Im Folgenden finden Sie Werte für maximale Byte:

    • Mindestwert = 1 KB
    • Maximalwert = 10 GiB

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 schreibt möglicherweise in mehrere Dateien Cloud Storage-Bucket gleichzeitig ausführen. Wenn Sie Ihr die jede sechste Minute eine neue Datei erstellt, Alle 6 Minuten werden mehrere Cloud Storage-Dateien erstellt.

Es kann vorkommen, dass Pub/Sub vor dem in den Bedingungen für die Datei-Batchverarbeitung konfigurierten Zeitpunkt liegt. 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 Zeilenumbruchzeichen 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 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 die Schema des Pub/Sub-Themas, zu dem Das Abo wird beim Schreiben von Avro-Dateien angehängt.

      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. 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 ein 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 die Option Write to Cloud Storage

  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 zuweisen mit dem Pub/Sub-Dienstkonto verknüpft ist.

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

    Wenn Sie Avro auswählen, können Sie optional auch festlegen, möchten Sie die Metadaten der Nachricht in der Ausgabe speichern.

    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 von Dateipräfix, Suffix und datetime, siehe Präfix, Suffix und Datum und Uhrzeit.

  10. Geben Sie unter Batchverarbeitung von Dateien eine maximale Zeit für die Verweildauer an. bevor Sie eine neue Datei erstellen.

    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. 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. 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. So erstellen Sie ein Cloud Storage-Abo haben, führen Sie den Befehl gcloud pubsub subscriptions create aus.
    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-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 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_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_DURATION: Das Maximum die verstreichen können, bevor eine neue Cloud Storage-Datei erstellt. Der Wert muss zwischen 1 m und 10 m liegen. Beispiel: 5m.
    • 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 wirkt sich nur auf 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 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());
    }
  }
}

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