Mit einem Importthema für Amazon Managed Streaming for Apache Kafka (Amazon MSK) können Sie Daten kontinuierlich aus Amazon MSK als externe Quelle in Pub/Sub aufnehmen. Anschließend können Sie die Daten in eines der Ziele streamen, die von Pub/Sub unterstützt werden.
In diesem Dokument erfahren Sie, wie Sie Amazon MSK-Importthemen erstellen und verwalten. Informationen zum Erstellen eines Standardthemas finden Sie unter Standardthema erstellen.
Weitere Informationen zu Importthemen finden Sie unter Importthemen.
Hinweise
Konfigurieren Sie die erforderlichen Rollen und Berechtigungen zum Verwalten von Amazon MSK-Importthemen, einschließlich der folgenden:
Richten Sie die Workload Identity-Föderation ein, damitTrusted Cloud auf den externen Streamingdienst zugreifen kann.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Editor (roles/pubsub.editor
) für Ihr Thema oder Projekt zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen und Verwalten von Amazon MSK-Importthemen benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen und Verwalten von Amazon MSK-Importthemen erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Amazon MSK-Importthemen zu erstellen und zu verwalten:
-
Importthema erstellen:
pubsub.topics.create
-
Importthema löschen:
pubsub.topics.delete
-
Importthema abrufen:
pubsub.topics.get
-
Importthema auflisten:
pubsub.topics.list
-
In einem Importthema veröffentlichen:
pubsub.topics.publish and pubsub.serviceAgent
-
Importthema aktualisieren:
pubsub.topics.update
-
IAM-Richtlinie für ein Importthema abrufen:
pubsub.topics.getIamPolicy
-
Konfigurieren Sie die IAM-Richtlinie für ein Importthema:
pubsub.topics.setIamPolicy
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Sie können die Zugriffssteuerung auf Projekt- und auf der Ebene einzelner Ressourcen konfigurieren.
Federated Identity für den Zugriff auf Amazon MSK einrichten
Mit der Workload Identity-Föderation können Trusted Cloud Dienste auf Arbeitslasten zugreifen, die außerhalb von Trusted Cloudausgeführt werden. Bei der Identitätsföderation müssen Sie keine Anmeldedaten für Trusted Cloud verwalten oder übergeben, um auf Ihre Ressourcen in anderen Clouds zuzugreifen. Stattdessen können Sie die Identitäten der Arbeitslasten selbst verwenden, um sich bei Trusted Cloud zu authentifizieren und auf Ressourcen zuzugreifen.
Dienstkonto in Trusted Clouderstellen
Dieser Schritt ist optional. Wenn Sie bereits ein Dienstkonto haben, können Sie es in diesem Verfahren verwenden, anstatt ein neues Dienstkonto zu erstellen. Wenn Sie ein vorhandenes Dienstkonto verwenden, fahren Sie mit dem nächsten Schritt fort: Eindeutige ID des Dienstkontos notieren.
Für Amazon MSK-Importthemen verwendet Pub/Sub das Dienstkonto als Identität für den Zugriff auf Ressourcen von AWS.
Weitere Informationen zum Erstellen eines Dienstkontos, einschließlich Voraussetzungen, erforderlicher Rollen und Berechtigungen sowie Namensrichtlinien, finden Sie unter Dienstkonten erstellen. Nachdem Sie ein Dienstkonto erstellt haben, müssen Sie möglicherweise 60 Sekunden oder länger warten, bis Sie das Dienstkonto verwenden können. Dieses Verhalten tritt auf, weil Lesevorgänge Eventual Consistency haben. Es kann einige Zeit dauern, bis das neue Dienstkonto sichtbar ist.
Eindeutige ID des Dienstkontos notieren
Sie benötigen eine eindeutige Dienstkonto-ID, um eine Rolle in der AWS-Konsole einzurichten.
Rufen Sie in der Trusted Cloud Console die Detailseite Dienstkonto auf.
Klicken Sie auf das Dienstkonto, das Sie gerade erstellt haben oder das Sie verwenden möchten.
Notieren Sie sich auf der Seite Dienstkontodetails die eindeutige ID-Nummer.
Sie benötigen die ID im Workflow, um eine Rolle in der AWS-Konsole einzurichten.
Rolle „Ersteller von Dienstkonto-Tokens“ dem Pub/Sub-Dienstkonto hinzufügen
Mit der Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator
) können Hauptkonten kurzlebige Anmeldedaten für ein Dienstkonto erstellen. Diese Tokens oder Anmeldedaten werden verwendet, um die Identität des Dienstkontos zu übernehmen.
Weitere Informationen zu Identitätswechsel für Dienstkonten.
Sie können auch die Rolle „Pub/Sub-Publisher“ (roles/pubsub.publisher
) hinzufügen. Weitere Informationen zur Rolle und dazu, warum Sie sie hinzufügen, finden Sie unter Pub/Sub-Publisher-Rolle dem Pub/Sub-Dienstkonto hinzufügen.
Rufen Sie in der Trusted Cloud Console die Seite IAM auf.
Klicken Sie auf das Kästchen Von S3NSbereitgestellte Rollenzuweisungen einschließen.
Suchen Sie nach dem Dienstkonto im Format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.Klicken Sie für dieses Dienstkonto auf die Schaltfläche Hauptkonto bearbeiten.
Klicken Sie bei Bedarf auf Weitere Rolle hinzufügen.
Suchen Sie nach der Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator
) und klicken Sie darauf.Klicken Sie auf Speichern.
Richtlinie in AWS erstellen
Sie benötigen eine Richtlinie in AWS, damit sich Pub/Sub bei AWS authentifizieren kann und Daten aus Amazon MSK aufnehmen kann.
- Weitere Methoden und Informationen zum Erstellen einer Richtlinie in AWS finden Sie unter IAM-Richtlinien erstellen.
So erstellen Sie eine Richtlinie in AWS:
Melden Sie sich in der AWS Management Console an und öffnen Sie die IAM-Konsole.
Klicken Sie in der Console im Navigationsbereich für IAM auf Zugriffsverwaltung > Richtlinien.
Klicken Sie auf Richtlinie erstellen.
Klicken Sie unter Click a service (Auf einen Dienst klicken) auf MSK.
Klicken Sie für Action allowed (Aktion zulässig) auf Read > GetBootstrapBrokers.
Diese Aktion erteilt die Berechtigung, die Bootstrap-Broker abzurufen, die Pub/Sub für die Verbindung zum MSK-Cluster verwendet.
Klicken Sie auf Weitere Berechtigungen hinzufügen.
Klicken Sie unter Select a service (Dienst auswählen) auf Apache Kafka APIs for MSK (Apache Kafka-APIs für MSK).
Wählen Sie für Zulässige Aktion Folgendes aus:
Liste > DescribeTopic
Durch diese Aktion wird die Berechtigung erteilt, Details zum Amazon MSK Kafka-Thema für das Pub/Sub-Aufnahmethema abzurufen.
Lesen > ReadData
Mit dieser Aktion wird die Berechtigung zum Lesen von Daten aus dem Amazon MSK-Kafka-Thema erteilt.
Schreiben > Verbinden
Mit dieser Aktion wird die Berechtigung zum Herstellen einer Verbindung zum Amazon MSK Kafka-Cluster und zur Authentifizierung bei diesem Cluster gewährt.
Geben Sie für Ressourcen den Cluster-ARN an, wenn Sie die Richtlinie auf bestimmte Cluster beschränken möchten. Das wird empfohlen.
Klicken Sie auf Weitere Berechtigungen hinzufügen.
Klicken Sie unter Dienst auswählen auf STS.
Klicken Sie für Action allowed (Aktion zulässig) auf Write (Schreiben) > AssumeRoleWithWebIdentity.
Mit dieser Aktion wird die Berechtigung erteilt, eine Reihe temporärer Sicherheitsanmeldedaten für Pub/Sub abzurufen, um sich mithilfe der Identitätsföderation bei Amazon MSK zu authentifizieren.
Klicken Sie auf Weiter.
Geben Sie einen Richtliniennamen und eine Beschreibung ein.
Klicken Sie auf Richtlinie erstellen.
Rolle in AWS mit einer benutzerdefinierten Trust-Richtlinie erstellen
Sie müssen eine Rolle in AWS erstellen, damit Pub/Sub sich bei AWS authentifizieren kann, um Daten aus Amazon MSK aufzunehmen.
Melden Sie sich in der AWS Management Console an und öffnen Sie die IAM-Konsole.
Klicken Sie im Navigationsbereich der Console für IAM auf Rollen.
Klicken Sie auf Rolle erstellen.
Klicken Sie unter Vertrauenswürdige Entität auswählen auf Benutzerdefinierte Vertrauensrichtlinie.
Geben Sie im Abschnitt Benutzerdefinierte Vertrauensrichtlinie Folgendes ein oder fügen Sie es ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "<SERVICE_ACCOUNT_UNIQUE_ID>" } } } ] }
Ersetzen Sie
<SERVICE_ACCOUNT_UNIQUE_ID>
durch die eindeutige ID des Dienstkontos, die Sie unter Eindeutige ID des Dienstkontos notieren notiert haben.Klicken Sie auf Weiter.
Suchen Sie unter Berechtigungen hinzufügen nach der benutzerdefinierten Richtlinie, die Sie gerade erstellt haben, und klicken Sie darauf.
Klicken Sie auf Weiter.
Geben Sie einen Rollennamen und eine Beschreibung ein.
Klicken Sie auf Rolle erstellen.
Pub/Sub-Publisher-Rolle dem Pub/Sub-Principal hinzufügen
Damit die Veröffentlichung möglich ist, müssen Sie dem Pub/Sub-Dienstkonto eine Publisher-Rolle zuweisen, damit Pub/Sub im Amazon MSK-Importthema veröffentlichen kann.
Pub/Sub-Dienst-Agent-Rolle dem Pub/Sub-Dienstkonto hinzufügen
Damit Pub/Sub das Veröffentlichungskontingent des Projekts Ihres Importthemas verwenden kann, benötigt der Pub/Sub-Dienst-Agent die Berechtigung serviceusage.services.use
für das Projekt Ihres Importthemas.
Um diese Berechtigung zu erteilen, empfehlen wir, dem Pub/Sub-Dienstkonto die Rolle „Pub/Sub-Dienst-Agent“ hinzuzufügen.
Wenn das Pub/Sub-Dienstkonto nicht über die Rolle „Pub/Sub-Dienst-Agent“ verfügt, kann sie so zugewiesen werden:
Rufen Sie in der Trusted Cloud Console die Seite IAM auf.
Klicken Sie auf das Kästchen Von S3NSbereitgestellte Rollenzuweisungen einschließen.
Suchen Sie nach dem Dienstkonto im Format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.Klicken Sie für dieses Dienstkonto auf die Schaltfläche Hauptkonto bearbeiten.
Klicken Sie bei Bedarf auf Weitere Rolle hinzufügen.
Suchen Sie nach der Rolle „Pub/Sub-Dienst-Agent“ (
roles/pubsub.serviceAgent
) und klicken Sie darauf.Klicken Sie auf Speichern.
Veröffentlichung von allen Themen aus aktivieren
Verwenden Sie diese Methode, wenn Sie noch keine Amazon MSK-Importthemen erstellt haben.
Rufen Sie in der Trusted Cloud Console die Seite IAM auf.
Klicken Sie auf das Kästchen Von S3NSbereitgestellte Rollenzuweisungen einschließen.
Suchen Sie nach dem Dienstkonto im Format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.Klicken Sie für dieses Dienstkonto auf die Schaltfläche Hauptkonto bearbeiten.
Klicken Sie bei Bedarf auf Weitere Rolle hinzufügen.
Suchen Sie nach der Rolle „Pub/Sub-Publisher“ (
roles/pubsub.publisher
) und klicken Sie darauf.Klicken Sie auf Speichern.
Veröffentlichung aus einem einzelnen Thema aktivieren
Verwenden Sie diese Methode nur, wenn das Amazon MSK-Importthema bereits vorhanden ist.
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted 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.
Führen Sie den Befehl
gcloud pubsub topics add-iam-policy-binding
aus:gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
Ersetzen Sie Folgendes:
TOPIC_ID
: die Themen-ID des Amazon MSK-Importthemas.PROJECT_NUMBER
: die Projektnummer Informationen zum Aufrufen der Projektnummer finden Sie unter Projekte identifizieren.
Rufen Sie in der Trusted Cloud Console die Seite IAM auf.
Klicken Sie für das Hauptkonto, das die Aufrufe zum Erstellen oder Aktualisieren von Themen ausgibt, auf die Schaltfläche Hauptkonto bearbeiten.
Klicken Sie bei Bedarf auf Weitere Rolle hinzufügen.
Suchen Sie nach der Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser
) und klicken Sie darauf.Klicken Sie auf Speichern.
Wenn Sie das Thema und das Abo separat erstellen, kann es zu Datenverlusten kommen, auch wenn Sie die Schritte schnell nacheinander ausführen. Es gibt ein kurzes Zeitfenster, in dem das Thema ohne Abo verfügbar ist. Wenn während dieser Zeit Daten an das Thema gesendet werden, gehen sie verloren. Wenn Sie zuerst das Thema und dann das Abo erstellen und das Thema anschließend in ein Importthema umwandeln, stellen Sie sicher, dass während des Importvorgangs keine Nachrichten verloren gehen.
Wenn Sie das Kafka-Thema eines vorhandenen Importthemas mit demselben Namen neu erstellen müssen, können Sie das Kafka-Thema nicht einfach löschen und neu erstellen. Diese Aktion kann die Offsetverwaltung von Pub/Sub ungültig machen, was zu Datenverlust führen kann. So können Sie das Problem beheben:
- Löschen Sie das Pub/Sub-Importthema.
- Löschen Sie das Kafka-Thema.
- Erstellen Sie das Kafka-Thema.
- Pub/Sub-Importthema erstellen
Daten aus einem Amazon MSK-Kafka-Thema werden immer ab dem frühesten Offset gelesen.
Föderierte Identität für den Zugriff auf Amazon MSK einrichten
Dem Pub/Sub-Dienstkonto die Rolle „Pub/Sub-Publisher“ hinzufügen
Rufen Sie in der Trusted Cloud Console die Seite Themen auf.
Klicken Sie auf Thema erstellen.
Geben Sie im Feld Themen-ID eine ID für das Amazon MSK-Importthema ein. Weitere Informationen zur Benennung von Themen finden Sie in den Benennungsrichtlinien.
Wählen Sie Standardabo hinzufügen aus.
Wählen Sie Aufnahme aktivieren aus.
Wählen Sie als Erfassungsquelle Amazon MSK aus.
Geben Sie die folgenden Informationen ein:
- Cluster-ARN: Der ARN des Amazon MSK-Clusters, aus dem Sie Daten in Pub/Sub aufnehmen. Das ARN-Format ist wie folgt:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
. - Thema: Der Name des Amazon MSK Kafka-Themas, das Sie in Pub/Sub aufnehmen.
- ARN der AWS-Rolle: Der ARN der AWS-Rolle. Das ARN-Format der Rolle ist
arn:aws:iam::${Account}:role/${RoleName}
. - Dienstkonto: Das Dienstkonto, das Sie in Dienstkonto in Trusted Clouderstellen erstellt haben.
- Cluster-ARN: Der ARN des Amazon MSK-Clusters, aus dem Sie Daten in Pub/Sub aufnehmen. Das ARN-Format ist wie folgt:
Klicken Sie auf Thema erstellen.
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted 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.
Führen Sie den Befehl
gcloud pubsub topics create
aus:gcloud pubsub topics create TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Ersetzen Sie Folgendes:
TOPIC_ID
: der Name oder die ID Ihres Pub/Sub-Themas.MSK_CLUSTER_ARN
: Der ARN für den Amazon MSK-Cluster, aus dem Sie Daten in Pub/Sub aufnehmen. Das ARN-Format ist wie folgt:arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
.MSK_TOPIC
: Der Name des Amazon MSK-Kafka-Themas, das Sie in Pub/Sub aufnehmen.MSK_ROLE_ARN
: der ARN der AWS-Rolle. Der ARN der Rolle hat folgendes Format:arn:aws:iam::${Account}:role/${RoleName}
.PUBSUB_SERVICE_ACCOUNT
: Das Dienstkonto, das Sie in Dienstkonto in Google Cloud erstellen erstellt haben.
Rufen Sie in der Trusted Cloud Console die Seite Themen auf.
Klicken Sie auf das Amazon MSK-Importthema.
Klicken Sie auf der Seite mit den Themendetails auf Bearbeiten.
Aktualisieren Sie die Felder, die Sie ändern möchten.
Klicken Sie auf Aktualisieren.
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted 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.
Führen Sie den Befehl
gcloud pubsub topics update
mit allen im folgenden Beispiel genannten Flags aus:gcloud pubsub topics update TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Ersetzen Sie Folgendes:
- TOPIC_ID: der Name oder die ID Ihres Pub/Sub-Themas.
- MSK_CLUSTER_ARN: Der ARN für den Amazon MSK-Cluster, aus dem Sie Daten in Pub/Sub aufnehmen. Das ARN-Format ist wie folgt:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
. - MSK_TOPIC: der Name des Amazon MSK Kafka-Themas, das Sie in Pub/Sub aufnehmen.
- MSK_ROLE_ARN: der ARN der AWS-Rolle. Das ARN-Format der Rolle ist:
arn:aws:iam::${Account}:role/${RoleName}
. - PUBSUB_SERVICE_ACCOUNT: Das Dienstkonto, das Sie in Dienstkonto in Google Cloud erstellen erstellt haben.
Wählen Sie den Abotyp für Ihr Thema aus.
Informationen zum Veröffentlichen einer Nachricht in einem Thema
Erstellen oder ändern Sie ein Thema mit der gcloud CLI, den REST APIs oder den Clientbibliotheken.
Rolle „Dienstkontonutzer“ dem Dienstkonto hinzufügen
Die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser
) enthält die Berechtigung iam.serviceAccounts.actAs
, mit der ein Hauptkonto ein Dienstkonto an die Aufnahmeeinstellungen des Amazon MSK-Importthemas anhängen und dieses Dienstkonto für die föderierte Identität verwenden kann.
Amazon MSK-Importthemen verwenden
Sie können ein neues Importthema erstellen oder ein vorhandenes Thema bearbeiten.
Hinweise
Amazon MSK-Importthemen erstellen
Weitere Informationen zu den Attributen eines Themas
Achten Sie darauf, dass Sie die folgenden Schritte ausgeführt haben:
So erstellen Sie ein Amazon MSK-Importthema:
Console
gcloud
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Node.ts
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
Weitere Informationen zu ARNs finden Sie unter Amazon-Ressourcennamen (ARNs) und IAM-Kennungen.
Falls Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung bei einem Amazon MSK-Importthema.
Amazon MSK-Importthemen bearbeiten
So bearbeiten Sie die Einstellungen der Erfassungsdatenquelle eines Amazon MSK-Importthemas:
Console
gcloud
Kontingente und Limits
Der Publisher-Durchsatz für Importthemen ist an das Veröffentlichungskontingent des Themas gebunden. Weitere Informationen finden Sie unter Pub/Sub-Kontingente und ‑Limits.