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 avere il ruolo di gestione dell'identità e dell'accesso Editor Pub/Sub (roles/pubsub.editor
) nel 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 eseguito quanto segue:
Verifica di disporre delle autorizzazioni necessarie. Per creare un abbonamento Pub/Sub, devi disporre del ruolo IAM Editor Pub/Sub (roles/pubsub.editor) nel progetto. Se non disponi di questo ruolo, contatta l'amministratore.
È stato specificato un nome per l'abbonamento.
È stato specificato il nome di un argomento esistente a cui vuoi allegare l'iscrizione.
Se crei un abbonamento push, specifica
https://
in lettere minuscole (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:
Risolvere i problemi relativi alle autorizzazioni
Le autorizzazioni Pub/Sub controllano quali utenti e account di servizio possono eseguire azioni sulle risorse Pub/Sub. Se 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 record dettagliato di tutte le modifiche alle autorizzazioni, consentendoti di identificare la fonte di questi problemi.
Per risolvere i problemi di autorizzazione Pub/Sub con gli audit log:
Ottieni le autorizzazioni necessarie per visualizzare Esplora log.
Per ulteriori informazioni, consulta Prima di iniziare.
Nella console Google Cloud, vai alla pagina Esplora log.
Seleziona un progetto, una cartella o un'organizzazione Google Cloud esistente.
Ecco 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 di eventuali 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 di quali sono state queste modifiche. Questo può essere utile per risolvere problemi come utenti che non riescono a pubblicare in argomenti o ad abbonarsi a iscrizioni, applicazioni a cui è stato negato l'accesso alle risorse Pub/Sub o modifiche impreviste nel controllo dell'accesso.protoPayload.status.code=7
: utilizza questa query quando riscontri errori esplicitamente correlati alle autorizzazioni. In questo modo puoi individuare con precisione quali azioni 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 potrebbero causare il rifiuto dell'autorizzazione.
Analizza i log per determinare fattori quali il timestamp dell'evento, il principale 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 account utente o di servizio con autorizzazioni sufficienti elimina intenzionalmente l'abbonamento.
Una sottoscrizione viene eliminata 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:
Nella console Google Cloud, vai alla pagina degli abbonamenti Pub/Sub e verifica che l'abbonamento non sia più elencato. Per ulteriori informazioni su come elencare gli abbonamenti, consulta Elenca un abbonamento.
Controlla i log di controllo. Vai a Esplora log. Utilizza il filtro
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
per trovare le iscrizioni eliminate. Esamina i log per determinare se qualcuno ha eliminato l'abbonamento o se è stato eliminato per 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, consulta Risolvere i problemi di Pub/Sub con i log di controllo.
403 (Forbidden)
errore
Se ricevi questo errore, procedi nel seguente modo:
- Assicurati di aver attivato l'API Pub/Sub nella console Google Cloud.
Assicurati che il principale che effettua la richiesta disponga delle autorizzazioni richieste per le risorse dell'API Pub/Sub pertinenti, soprattutto se utilizzi l'API Pub/Sub per la comunicazione tra progetti.
Se utilizzi Dataflow, assicurati che sia il servizio
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
che l'account di servizio Compute Engine{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
dispongano delle autorizzazioni richieste per la risorsa API Pub/Sub pertinente. Per ulteriori informazioni, consulta Autorizzazioni e sicurezza dei flussi di dati.Se utilizzi App Engine, controlla la pagina Autorizzazioni del progetto per verificare se un account di servizio App Engine è elencato come editor di Pub/Sub. In caso contrario, aggiungi il tuo account di servizio App Engine come editor Pub/Sub. In genere, il service account App Engine è del tipo
<project-id>@appspot.gserviceaccount.com
.
Altri codici di errore comuni
Per un elenco di altri codici di errore comuni relativi all'API Pub/Sub e le relative descrizioni, consulta Codici di errore.
Utilizzo di quantità eccessive di operazioni amministrative
Se noti che stai utilizzando troppo della tua
quota per le operazioni amministrative,
potrebbe essere necessario eseguire il refactoring del codice. Come esempio, considera questo pseudocodice. In questo esempio, viene utilizzata un'operazione amministrativa (GET
) per verificare la presenza di un abbonamento prima che tenti di consumarne le risorse. Sia GET
sia CREATE
sono operazioni di amministratore:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Un pattern più efficiente è provare a utilizzare i messaggi dell'abbonamento (supponendo che tu possa essere ragionevolmente certo del nome dell'abbonamento). In questo approccio ottimistico, l'abbonamento viene recuperato o creato 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:
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js (TypeScript)
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.