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.
Zum Erstellen eines Pub/Sub-Themas benötigen Sie Identity and Access Management-Rolle Pub/Sub Editor (roles/pubsub.editor
) für das Projekt. Wenn Sie diese Rolle nicht haben, wenden Sie sich an Ihren Administrator.
Weitere Informationen zur Fehlerbehebung bei 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. Zum Erstellen eines Pub/Sub-Abos benötigen Sie die IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor) für das Projekt. Wenn Sie diese Rolle nicht haben, wenden Sie sich an Ihren Administrator.
Sie haben einen Namen für das Abo angegeben.
Geben Sie den Namen eines vorhandenen Themas an, dem Sie das Abo hinzufügen möchten.
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 finden Sie auf den folgenden Seiten:
Fehlerbehebung bei Pull-, Push-, BigQuery- oder Cloud Storage-Vorgängen
Berechtigungsprobleme beheben
Mit Pub/Sub-Berechtigungen wird gesteuert, welche Nutzer und Dienstkonten Aktionen für Ihre Pub/Sub-Ressourcen ausführen können. Wenn Berechtigungen falsch konfiguriert sind, kann dies zu Fehlern des Typs „Berechtigung verweigert“ führen und den Nachrichtenfluss unterbrechen. Audit-Logs enthalten eine detaillierte Aufzeichnung aller Berechtigungsänderungen, sodass Sie die Quelle dieser Probleme ermitteln können.
So beheben Sie Probleme mit Pub/Sub-Berechtigungen für Audit-Logs:
Lassen Sie sich die erforderlichen Berechtigungen zum Aufrufen des Log-Explorers erteilen.
Weitere Informationen finden Sie unter Vorbereitung.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Wählen Sie ein vorhandenes Google Cloud Projekt, einen Ordner oder eine Organisation aus.
Im Folgenden finden Sie eine Liste der Filter, die Sie verwenden können, um relevante Logs zu finden:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: Verwenden Sie diese Abfrage als Ausgangspunkt, wenn Sie Probleme beheben, die mit Änderungen an Themen- oder Abokonfigurationen oder an der Zugriffssteuerung zusammenhängen. Sie können ihn mit anderen Filtern kombinieren, um Ihre Suche weiter einzugrenzen.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: Verwenden Sie diese Anfrage, 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 welche Änderungen das waren. Das kann hilfreich sein, um Probleme zu beheben, z. B. wenn Nutzer keine Themen veröffentlichen oder keine Abos abonnieren können, Anwendungen der Zugriff auf Pub/Sub-Ressourcen verweigert wird oder es unerwartete Änderungen bei der Zugriffssteuerung gibt.protoPayload.status.code=7
: Verwenden Sie diese Anfrage, wenn Fehler auftreten, die sich explizit auf Berechtigungen beziehen. So können Sie genau ermitteln, welche Aktionen fehlschlagen und wer sie versucht. Sie können diese Abfrage mit den vorherigen kombinieren, um die spezifische Ressource und IAM-Richtlinienänderung zu ermitteln, die möglicherweise die Berechtigungsverweigerung verursacht.
Analysieren Sie die Logs, um Faktoren wie den Zeitstempel des Ereignisses, den Prinzipal, der die Änderung vorgenommen hat, und die Art der vorgenommenen Änderungen zu ermitteln.
Anhand der Informationen aus den Audit-Logs können Sie Korrekturmaßnahmen ergreifen.
Abo wurde gelöscht
Pub/Sub-Abos können auf zwei Arten gelöscht werden:
Ein Nutzer oder Dienstkonto mit ausreichenden Berechtigungen löscht das Abo absichtlich.
Ein Abo wird nach einer gewissen Zeit der Inaktivität automatisch gelöscht. Standardmäßig sind das 31 Tage. Weitere Informationen zur Richtlinie zum Ablauf von 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 Abo auflisten.
Prüfen Sie die Audit-Logs. Rufen Sie den Log-Explorer auf. Mit dem Filter
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
können Sie gelöschte Abos finden. Prüfen Sie anhand der Logs, ob das Abo von jemandem gelöscht wurde oder ob es aufgrund von Inaktivität gelöscht wurde.InternalExpireInactiveSubscription
gibt an, 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
Ein 403-Fehler bedeutet in der Regel, dass Sie nicht die richtigen Berechtigungen zum Ausführen einer Aktion haben. Beispielsweise kann beim Veröffentlichen in einem Thema oder beim Abrufen aus einem Abo der Fehler 403 User not authorized
auftreten.
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
.Mit Audit-Logs können Sie Berechtigungsprobleme beheben.
Weitere häufige Fehlercodes
Eine Liste anderer häufiger Fehlercodes im Zusammenhang mit der Pub/Sub API und deren 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 verarbeiten (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
}
Sie können die folgenden Codebeispiele verwenden, um dieses Muster in der Sprache Ihrer Wahl zu implementieren:
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.
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.