Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi nell'utilizzo di Pub/Sub.
Impossibile creare un argomento
Verifica di disporre delle autorizzazioni necessarie.
Per creare un argomento Pub/Sub, devi disporre del ruolo Editor Pub/Sub (roles/pubsub.editor
) di Identity and Access Management sul progetto. Se non disponi di questo ruolo, contatta l'amministratore.
Per ulteriori informazioni sulla risoluzione dei problemi relativi agli argomenti, consulta le seguenti pagine:
Impossibile creare un abbonamento
Verifica di aver svolto le seguenti operazioni:
Verifica di disporre delle autorizzazioni necessarie. Per creare una sottoscrizione Pub/Sub, devi disporre del ruolo IAM Editor Pub/Sub (roles/pubsub.editor) per il progetto. Se non disponi di questo ruolo, contatta l'amministratore.
Specificato un nome per l'abbonamento.
Ha specificato il nome di un argomento esistente a cui vuoi collegare l'abbonamento.
Se crei un abbonamento push, specifica
https://
in minuscolo (nonhttp://
oHTTPS://
) come protocollo per l'URL di ricezione nel campopushEndpoint
.
Per ulteriori informazioni sulla risoluzione dei problemi relativi agli abbonamenti, consulta le seguenti pagine:
Risoluzione dei problemi relativi a pull, push, BigQuery o Cloud Storage
Risoluzione dei problemi relativi agli abbonamenti con le trasformazioni di un singolo messaggio
Risolvere i problemi relativi alle autorizzazioni
Le autorizzazioni Pub/Sub controllano quali utenti e service account possono eseguire azioni sulle tue risorse Pub/Sub. Quando le autorizzazioni sono configurate in modo errato, possono verificarsi errori di autorizzazione negata e interrompere il flusso dei messaggi. I log di controllo forniscono un registro dettagliato di tutte le modifiche alle autorizzazioni, consentendoti di identificare l'origine di questi problemi.
Per risolvere i problemi di autorizzazione Pub/Sub con i log di controllo:
Ottieni le autorizzazioni necessarie per visualizzare Esplora log.
Per ulteriori informazioni, consulta la sezione Prima di iniziare.
Nella console Google Cloud , vai alla pagina Esplora log.
Seleziona un progetto, una cartella o un'organizzazione Google Cloud esistente.
Di seguito è riportato un elenco di filtri che puoi utilizzare per trovare i log pertinenti:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: Utilizza questa query come punto di partenza per la risoluzione dei problemi che potrebbero comportare modifiche alle configurazioni di argomenti o abbonamenti o al controllo dell'accesso. Puoi combinarlo con altri filtri per perfezionare ulteriormente la ricerca.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: utilizza questa query quando sospetti che un problema sia causato da autorizzazioni errate o mancanti. Ti aiuta a tenere traccia di chi ha apportato modifiche al criterio IAM e quali sono state queste modifiche. Questo può essere utile per risolvere problemi come utenti che non riescono a pubblicare argomenti o abbonarsi a sottoscrizioni, applicazioni a cui è stato negato l'accesso alle risorse Pub/Sub o modifiche impreviste controllo dell'accessollo dell'accesso.protoPayload.status.code=7
: utilizza questa query quando si verificano errori esplicitamente correlati alle autorizzazioni. In questo modo puoi individuare le azioni che non vanno a buon fine e chi le sta tentando. Puoi combinare questa query con quelle precedenti per identificare la risorsa specifica e la modifica del criterio IAM che potrebbe causare il rifiuto dell'autorizzazione.
Analizza i log per determinare fattori quali il timestamp dell'evento, il principal che ha apportato la modifica e il tipo di modifiche apportate.
In base alle informazioni raccolte dai log di controllo, puoi intraprendere azioni correttive.
L'abbonamento è stato eliminato
Le sottoscrizioni Pub/Sub possono essere eliminate in due modi principali:
Un utente o un account di servizio con autorizzazioni sufficienti elimina intenzionalmente l'abbonamento.
Un abbonamento viene eliminato automaticamente dopo un periodo di inattività, che per impostazione predefinita è di 31 giorni. Per ulteriori informazioni sulle norme relative alla scadenza dell'abbonamento, consulta Periodo di scadenza.
Per risolvere i problemi relativi a un abbonamento eliminato, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Sottoscrizioni Pub/Sub e verifica che la sottoscrizione non sia più elencata. Per maggiori informazioni su come elencare gli abbonamenti, vedi Elencare un abbonamento.
Controlla i log di controllo. Vai a Esplora log. Utilizza il filtro
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
per trovare gli abbonamenti eliminati. Esamina i log per determinare se qualcuno ha eliminato l'abbonamento o se è stato eliminato a causa dell'inattività.InternalExpireInactiveSubscription
indica che un abbonamento è stato eliminato per inattività. Per ulteriori informazioni su come utilizzare i log di controllo per la risoluzione dei problemi, vedi Risolvere i problemi di Pub/Sub con i log di controllo.
403 (Forbidden)
errore
Un errore 403 in genere indica che non disponi delle autorizzazioni corrette per
eseguire un'azione. Ad esempio, potresti ricevere un errore 403 User not authorized
quando provi a pubblicare in un argomento o a eseguire il pull da un abbonamento.
Se ricevi questo errore, procedi nel seguente modo:
- Assicurati di aver abilitato l'API Pub/Sub nella consoleGoogle Cloud .
Assicurati che l'entità che effettua la richiesta disponga delle autorizzazioni richieste per le risorse API Pub/Sub pertinenti, soprattutto se utilizzi l'API Pub/Sub per la comunicazione tra progetti.
Se utilizzi Dataflow, assicurati che sia
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
sia il service account Compute Engine{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
dispongano delle autorizzazioni richieste per la risorsa API Pub/Sub pertinente. Per ulteriori informazioni, vedi Sicurezza e autorizzazioni di Dataflow.Se utilizzi App Engine, controlla la pagina Autorizzazioni del progetto per vedere se un account di servizio App Engine è elencato come editor Pub/Sub. In caso contrario, aggiungi il service account App Engine come editor Pub/Sub. Normalmente, il service account App Engine è del modulo
<project-id>@appspot.gserviceaccount.com
.Puoi utilizzare i log di controllo per risolvere i problemi di autorizzazione.
Altri codici di errore comuni
Per un elenco di altri codici di errore comuni relativi all'API Pub/Sub e alle relative descrizioni, consulta Codici di errore.
Utilizzo di quantità eccessive di operazioni amministrative
Se noti di utilizzare una parte troppo grande della tua
quota per le operazioni amministrative,
potresti dover eseguire il refactoring del codice. Ad esempio, considera
questo pseudocodice. In questo esempio, un'operazione amministrativa (GET
)
viene utilizzata per verificare la presenza di un abbonamento prima che
tenti di utilizzare le sue risorse. GET
e CREATE
sono operazioni amministrative:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Un pattern più efficiente consiste nel tentare di utilizzare i messaggi dell'abbonamento (supponendo che tu possa essere ragionevolmente certo del nome dell'abbonamento). In questo approccio ottimistico, l'abbonamento viene creato o recuperato solo se si verifica un errore. Considera questo esempio:
try {
Consume from subscription my-sub
} catch NotFoundError {
CreateSubscription my-sub
Consume from subscription my-sub
}
Puoi utilizzare i seguenti esempi di codice per implementare questo pattern nel linguaggio che preferisci:
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Node.ts
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Python.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.