Thema erstellen

In Pub/Sub ist ein Thema eine benannte Ressource, die für einen Feed mit Nachrichten. Sie müssen ein Thema erstellen, bevor Sie es veröffentlichen oder abonnieren können hinzufügen. Pub/Sub unterstützt zwei Arten von Themen: ein Standardthema und ein Importthema.

In diesem Dokument wird beschrieben, wie Sie ein Pub/Sub-Standardthema erstellen. Wenn Weitere Informationen zu einem Importthema und zum Erstellen eines Themas finden Sie unter Erstellen Sie ein Importthema.

Zum Erstellen eines Themas können Sie die Google Cloud Console, die Google Cloud CLI, der Clientbibliothek oder die Pub/Sub API.

Hinweise

Erforderliche Rollen und Berechtigungen zum Verwalten von Themen

Um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von Themen benötigen, bitten Sie Ihren Administrator, Ihnen Pub/Sub-Bearbeiter(roles/pubsub.editor) IAM-Rolle für Ihr Thema oder Projekt. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält Berechtigungen zum Erstellen und Verwalten von Themen Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Zum Erstellen und Verwalten von Themen sind die folgenden Berechtigungen erforderlich:

  • Thema erstellen: pubsub.topics.create
  • So löschen Sie ein Thema: pubsub.topics.delete
  • So trennen Sie ein Abo von einem Thema: pubsub.topics.detachSubscription
  • Thema abrufen: pubsub.topics.get
  • Themen auflisten: pubsub.topics.list
  • In einem Thema veröffentlichen: pubsub.topics.publish
  • So aktualisieren Sie ein Thema: pubsub.topics.update
  • Rufen Sie die IAM-Richtlinie für ein Thema ab: pubsub.topics.getIamPolicy
  • Konfigurieren Sie die IAM-Richtlinie für ein Thema: pubsub.topics.setIamPolicy

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

Sie können die Zugriffssteuerung sowohl auf Projektebene als auch auf Ebene einzelner Nutzer Ressourcenebene. Sie können ein Abo in einem Projekt erstellen und an ein Thema in einem anderen Projekt anhängen. Achten Sie darauf, dass Sie die erforderlichen Berechtigungen für für jedes Projekt.

Eigenschaften eines Themas

Wenn Sie ein Thema erstellen oder aktualisieren, müssen Sie seine Attribute angeben.

  • Füge ein Standardabo hinzu. Ein Standardabo wird hinzugefügt zum Pub/Sub-Thema. Sie können ein weiteres Abo erstellen für das Thema, nachdem es erstellt wurde. Das Standardabo hat die folgenden Properties:

    • Abo-ID von -sub
    • Pull-Zustellungstyp
    • Aufbewahrungsdauer für Nachrichten von sieben Tagen
    • Ablauf nach 31 Tagen Inaktivität
    • Bestätigungsfrist von 10 Sekunden
    • Richtlinie für sofortige Wiederholung
  • Schema: Ein Schema ist ein Format, die Sie beachten müssen. Ein Schema ist ein Vertrag zwischen Publisher und Abonnent die Pub/Sub erzwingt. Themenschemas helfen bei der Standardisierung Nachrichtentypen und Berechtigungen, damit sie von verschiedenen Teams in Ihrem Unternehmen. Pub/Sub erstellt eine zentrale Berechtigung für Nachrichtentypen und Berechtigungen. So erstellen Sie ein Thema mit finden Sie unter Schemaübersicht.
  • Aktivieren Sie die Aufnahme. Wenn Sie dieses Attribut aktivieren, können Sie Streamingdaten aus externen Quellen in ein Thema aufzunehmen, die Features von Google Cloud nutzen können. So erstellen Sie ein Importthema Informationen zur Aufnahme finden Sie unter Importthema erstellen.

  • Aufbewahrungsdauer für Nachrichten. Gibt an, wie lange die Das Pub/Sub-Thema bewahrt Nachrichten nach der Veröffentlichung auf. Nach dem Nachrichtenaufbewahrungsdauer abgelaufen ist, verwirft Pub/Sub möglicherweise Nachricht unabhängig von ihrem Bestätigungsstatus anzeigen. Gebühren für das Speichern von Nachrichten werden für das Speichern aller im Thema veröffentlichten Nachrichten berechnet.

    • Standard = Nicht aktiviert
    • Mindestwert = 10 Minuten
    • Höchstwert = 31 Tage
  • Verwenden Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK). Gibt an, ob Das Thema ist mit einem CMEK verschlüsselt. Pub/Sub verschlüsselt Nachrichten mit Google-eigenen und von Google verwalteten Schlüsseln. Wenn Sie diese Option auswählen, Pub/Sub verwendet das Umschlagverschlüsselungsmuster mit CMEK. In verschlüsselt Cloud KMS die Nachrichten nicht. Stattdessen wird Cloud KMS Die von Pub/Sub erstellten Datenverschlüsselungsschlüssel (Data Encryption Keys, DEKs) werden verschlüsselt. zu jedem Thema. Pub/Sub verschlüsselt die Nachrichten mit der neuesten DEK, der für das Thema generiert wurde. Pub/Sub entschlüsselt kurz bevor sie den Abonnenten zugestellt werden. Weitere Informationen Informationen zum Erstellen eines Schlüssels finden Sie unter Nachrichtenverschlüsselung konfigurieren

Thema erstellen

Erstellen Sie ein Thema, bevor Sie es veröffentlichen oder abonnieren können.

Console

So erstellen Sie ein Thema:

  1. Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie im Feld Themen-ID eine ID für das Thema ein. Weitere Informationen zur Benennung von Themen finden Sie in den Benennungsrichtlinien.

  4. Behalten Sie die Option Standardabo hinzufügen bei.

  5. Wählen Sie nicht die anderen Optionen aus.

  6. Klicken Sie auf Thema 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. Führen Sie den Befehl gcloud pubsub topics create-Befehl:

    gcloud pubsub topics create TOPIC_ID

REST

Verwenden Sie zum Erstellen eines Themas den projects.topics.create :

Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer ACCESS_TOKEN
    

Wobei:

  • PROJECT_ID ist die Projekt-ID.
  • TOPIC_ID ist Ihre Themen-ID.
  • Lösung:

    {
     "name": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
    

    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 eine lokale Entwicklungsumgebung einrichten.

    namespace pubsub = ::google::cloud::pubsub;
    namespace pubsub_admin = ::google::cloud::pubsub_admin;
    [](pubsub_admin::TopicAdminClient client, std::string project_id,
       std::string topic_id) {
      auto topic = client.CreateTopic(
          pubsub::Topic(std::move(project_id), std::move(topic_id)).FullName());
      // Note that kAlreadyExists is a possible error when the library retries.
      if (topic.status().code() == google::cloud::StatusCode::kAlreadyExists) {
        std::cout << "The topic already exists\n";
        return;
      }
      if (!topic) throw std::move(topic).status();
    
      std::cout << "The topic was successfully created: " << topic->DebugString()
                << "\n";
    }

    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 eine lokale Entwicklungsumgebung einrichten.

    
    using Google.Cloud.PubSub.V1;
    using Grpc.Core;
    using System;
    
    public class CreateTopicSample
    {
        public Topic CreateTopic(string projectId, string topicId)
        {
            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
            var topicName = TopicName.FromProjectTopic(projectId, topicId);
            Topic topic = null;
    
            try
            {
                topic = publisher.CreateTopic(topicName);
                Console.WriteLine($"Topic {topic.Name} created.");
            }
            catch (RpcException e) when (e.Status.StatusCode == StatusCode.AlreadyExists)
            {
                Console.WriteLine($"Topic {topicName} already exists.");
            }
            return topic;
        }
    }

    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 eine lokale Entwicklungsumgebung einrichten.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/pubsub"
    )
    
    func create(w io.Writer, projectID, topicID string) error {
    	// projectID := "my-project-id"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := pubsub.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("pubsub.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	t, err := client.CreateTopic(ctx, topicID)
    	if err != nil {
    		return fmt.Errorf("CreateTopic: %w", err)
    	}
    	fmt.Fprintf(w, "Topic created: %v\n", t)
    	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 eine lokale Entwicklungsumgebung einrichten.

    
    import com.google.cloud.pubsub.v1.TopicAdminClient;
    import com.google.pubsub.v1.Topic;
    import com.google.pubsub.v1.TopicName;
    import java.io.IOException;
    
    public class CreateTopicExample {
      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";
    
        createTopicExample(projectId, topicId);
      }
    
      public static void createTopicExample(String projectId, String topicId) throws IOException {
        try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
          TopicName topicName = TopicName.of(projectId, topicId);
          Topic topic = topicAdminClient.createTopic(topicName);
          System.out.println("Created topic: " + topic.getName());
        }
      }
    }

    Node.js

    /**
     * TODO(developer): Uncomment this variable before running the sample.
     */
    // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
    
    // Imports the Google Cloud client library
    const {PubSub} = require('@google-cloud/pubsub');
    
    // Creates a client; cache this for further use
    const pubSubClient = new PubSub();
    
    async function createTopic(topicNameOrId) {
      // Creates a new topic
      await pubSubClient.createTopic(topicNameOrId);
      console.log(`Topic ${topicNameOrId} created.`);
    }

    Node.js

    /**
     * TODO(developer): Uncomment this variable before running the sample.
     */
    // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
    
    // Imports the Google Cloud client library
    import {PubSub} from '@google-cloud/pubsub';
    
    // Creates a client; cache this for further use
    const pubSubClient = new PubSub();
    
    async function createTopic(topicNameOrId: string) {
      // Creates a new topic
      await pubSubClient.createTopic(topicNameOrId);
      console.log(`Topic ${topicNameOrId} created.`);
    }

    PHP

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

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

    use Google\Cloud\PubSub\PubSubClient;
    
    /**
     * Creates a Pub/Sub topic.
     *
     * @param string $projectId  The Google project ID.
     * @param string $topicName  The Pub/Sub topic name.
     */
    function create_topic($projectId, $topicName)
    {
        $pubsub = new PubSubClient([
            'projectId' => $projectId,
        ]);
        $topic = $pubsub->createTopic($topicName);
    
        printf('Topic created: %s' . PHP_EOL, $topic->name());
    }

    Python

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

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

    from google.cloud import pubsub_v1
    
    # TODO(developer)
    # project_id = "your-project-id"
    # topic_id = "your-topic-id"
    
    publisher = pubsub_v1.PublisherClient()
    topic_path = publisher.topic_path(project_id, topic_id)
    
    topic = publisher.create_topic(request={"name": topic_path})
    
    print(f"Created topic: {topic.name}")

    Ruby

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

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

    # topic_id = "your-topic-id"
    
    pubsub = Google::Cloud::Pubsub.new
    
    topic = pubsub.create_topic topic_id
    
    puts "Topic #{topic.name} created."

    Einschränkungen für Organisationsrichtlinien

    Organisationsrichtlinien können die Erstellung von Themen einschränken, z. B.: kann eine Richtlinie den Nachrichtenspeicher in Compute Engine einschränken. Region Prüfen und aktualisieren Sie die Themen und aktualisieren Sie sie, um Fehler beim Erstellen von Themen zu vermeiden. Organisationsrichtlinien nach Bedarf, bevor Sie ein Thema erstellen.

    Wenn Ihr Projekt neu erstellt wurde, warten Sie ein paar Minuten, Die zu initialisierende Organisationsrichtlinie, bevor ein Thema erstellt wird.

    Zu den Organisationsrichtlinien

    Weitere Informationen finden Sie unter Richtlinien für die Speicherung von Nachrichten konfigurieren.

    Nächste Schritte