Hier finden Sie nützliche Informationen über die schrittweise Fehlerbehebung in Verbindung mit Pub/Sub.
Thema kann nicht erstellt werden
Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben.
Um ein Pub/Sub-Thema zu erstellen, benötigen Sie die Rolle Pub/Sub Editor (roles/pubsub.editor
) für Identity and Access Management im Projekt. Wenn Sie diese Rolle nicht haben, wenden Sie sich an Ihren Administrator.
Weitere Informationen zur Fehlerbehebung zu den folgenden Themen finden Sie auf den folgenden Seiten:
Abo kann nicht erstellt werden
Prüfen Sie, ob Sie Folgendes getan haben:
Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Um ein Pub/Sub-Abo zu erstellen, benötigen Sie die IAM-Rolle Pub/Sub Editor (roles/pubsub.editor) für das Projekt. Wenn Sie diese Rolle nicht haben, wenden Sie sich an Ihren Administrator.
Geben Sie einen Namen für das Abo an.
Der Name eines vorhandenen Themas, mit dem das Abo verknüpft werden soll.
Wenn Sie ein Push-Abo erstellen, muss der Wert
https://
in Kleinbuchstaben (nichthttp://
oderHTTPS://
) als Protokoll für Ihre Empfänger-URL im FeldpushEndpoint
angegeben werden.
Weitere Informationen zur Fehlerbehebung bei Abos findest du auf den folgenden Seiten:
Fehlerbehebung bei Berechtigungsproblemen
Mit Pub/Sub-Berechtigungen wird festgelegt, welche Nutzer und Dienstkonten Aktionen auf Ihren Pub/Sub-Ressourcen ausführen können. Wenn Berechtigungen falsch konfiguriert sind, kann dies zu Fehlern führen, dass Berechtigungen verweigert werden, und den Nachrichtenfluss stören. Audit-Logs enthalten einen detaillierten Überblick über alle Berechtigungsänderungen, sodass Sie die Ursache dieser Probleme ermitteln können.
So beheben Sie Probleme mit Pub/Sub-Berechtigungen mithilfe von Audit-Logs:
Sie benötigen die erforderlichen Berechtigungen, um den Log-Explorer aufzurufen.
Weitere Informationen finden Sie unter Vorbereitung.
Rufen Sie in der Google Cloud -Konsole die Seite Log-Explorer auf.
Wählen Sie ein vorhandenes Google Cloud -Projekt, einen Ordner oder eine Organisation aus.
Hier finden Sie eine Liste der Filter, mit denen Sie relevante Protokolle finden können:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: Verwenden Sie diese Abfrage als Ausgangspunkt, wenn Sie Probleme beheben, die Änderungen an der Konfiguration von Themen oder Abos oder an der Zugriffssteuerung betreffen könnten. Sie können ihn mit anderen Filtern kombinieren, um die Suche weiter einzugrenzen.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: Verwenden Sie diese Abfrage, wenn Sie vermuten, dass ein Problem durch falsche oder fehlende Berechtigungen verursacht wird. So können Sie nachvollziehen, wer Änderungen an der IAM-Richtlinie vorgenommen hat und was diese Änderungen waren. Das kann bei der Behebung von Problemen hilfreich sein, z. B. wenn Nutzer keine Nachrichten in Themen veröffentlichen oder keine Abos abonnieren können, Anwendungen keinen Zugriff auf Pub/Sub-Ressourcen haben oder es unerwartete Änderungen bei der Zugriffssteuerung gibt.protoPayload.status.code=7
: Verwenden Sie diese Abfrage, wenn Fehler auftreten, die sich ausdrücklich auf Berechtigungen beziehen. So können Sie leichter feststellen, welche Aktionen fehlschlagen und wer sie ausführt. Sie können diese Abfrage mit den vorherigen kombinieren, um die Änderung der jeweiligen Ressource und IAM-Richtlinie zu ermitteln, die möglicherweise die Berechtigungsverweigerung verursacht.
Analysieren Sie die Protokolle, um Faktoren wie den Zeitstempel des Ereignisses, die Person, die die Änderung vorgenommen hat, und die Art der Änderungen zu ermitteln.
Anhand der Informationen aus den Prüfprotokollen können Sie Korrekturmaßnahmen ergreifen.
Abo wurde gelöscht
Pub/Sub-Abos können auf zwei Arten gelöscht werden:
Ein Nutzer oder ein Dienstkonto mit ausreichenden Berechtigungen löscht das Abo absichtlich.
Ein Abo wird nach einer bestimmten Zeit der Inaktivität automatisch gelöscht. Standardmäßig sind das 31 Tage. Weitere Informationen zur Ablaufrichtlinie für Abos finden Sie unter Ablaufzeitraum.
So beheben Sie Probleme mit einem gelöschten Abo:
Rufen Sie in der Google Cloud -Console die Seite „Pub/Sub-Abos“ auf und prüfen Sie, ob das Abo nicht mehr aufgeführt ist. Weitere Informationen zum Auflisten von Abos finden Sie unter Abos auflisten.
Prüfen Sie die Audit-Logs. Rufen Sie den Log-Explorer auf. Mit dem Filter
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
lassen sich gelöschte Abos finden. Prüfen Sie anhand der Protokolle, ob jemand das Abo gelöscht hat oder ob es aufgrund von Inaktivität gelöscht wurde.InternalExpireInactiveSubscription
bedeutet, dass ein Abo aufgrund von Inaktivität gelöscht wurde. Weitere Informationen zur Verwendung von Audit-Logs zur Fehlerbehebung finden Sie unter Pub/Sub-Probleme mit Audit-Logs beheben.
403 (Forbidden)
Fehler
Gehen Sie folgendermaßen vor, wenn dieser Fehler angezeigt wird:
- Achten Sie darauf, dass Sie die Pub/Sub API in derGoogle Cloud -Konsole aktiviert haben.
Achten Sie darauf, dass der Teilnehmer, der die Anfrage stellt, die erforderlichen Berechtigungen für die relevanten Pub/Sub API-Ressourcen hat. Dies ist besonders wichtig, wenn Sie die Pub/Sub API für die projektübergreifende Kommunikation verwenden.
Wenn Sie Dataflow verwenden, achten Sie darauf, dass sowohl
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
als auch das Compute Engine-Dienstkonto{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
die erforderlichen Berechtigungen für die entsprechende Pub/Sub API-Ressource haben. Weitere Informationen finden Sie unter Sicherheit und Berechtigungen in Dataflow.Wenn Sie App Engine verwenden, prüfen Sie auf der Seite „Berechtigungen“ Ihres Projekts, ob ein App Engine-Dienstkonto als Pub/Sub-Bearbeiter aufgeführt ist. Wenn dies nicht der Fall ist, fügen Sie Ihr App Engine-Dienstkonto als Pub/Sub-Bearbeiter hinzu. Normalerweise hat das App Engine-Dienstkonto das Format
<project-id>@appspot.gserviceaccount.com
.
Weitere häufige Fehlercodes
Eine Liste weiterer häufiger Fehlercodes im Zusammenhang mit der Pub/Sub API und ihre Beschreibungen finden Sie unter Fehlercodes.
Übermäßige Verwaltungsvorgänge verwenden
Sollten Sie feststellen, dass Sie zu viel von Ihrem Kontingent für Verwaltungsvorgänge verbrauchen, müssen Sie unter Umständen Ihren Code refaktorieren. Betrachten Sie diesen Pseudocode zur Veranschaulichung. In diesem Beispiel wird mit einem Verwaltungsvorgang (GET
) geprüft, ob ein Abo vorhanden ist, bevor versucht wird, seine Ressourcen zu verbrauchen. Sowohl GET
als auch CREATE
sind Administratorvorgänge:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Ein effizienteres Muster ist der Versuch, Nachrichten aus dem Abo zu verbrauchen (vorausgesetzt, Sie sind sich beim Namen des Abos einigermaßen sicher). Bei diesem optimistischen Ansatz erhalten oder erstellen Sie das Abo nur, wenn ein Fehler auftritt. Betrachten Sie dieses Beispiel:
try {
Consume from subscription my-sub
} catch NotFoundError {
CreateSubscription my-sub
Consume from subscription my-sub
}
Mit den folgenden Codebeispielen können Sie dieses Muster in der Sprache Ihrer Wahl implementieren:
Go
Folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Folgen Sie der Einrichtungsanleitung für Node.js in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
C++
Folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js (TypeScript)
Lesen Sie unter Pub/Sub-Schnellstart-Anleitung: Clientbibliotheken verwenden die Anleitung für die Einrichtung von Node.js, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.