Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver problemas ao usar o Pub/Sub.
Não é possível criar um tópico
Verifique se você tem as permissões necessárias.
Para criar um tópico do Pub/Sub, você precisa da função Editor do Pub/Sub (roles/pubsub.editor
) do Identity and Access Management no projeto. Se você não tiver essa função, entre em contato com o administrador.
Para mais informações sobre solução de problemas relacionados a tópicos, consulte as seguintes páginas:
Não é possível criar uma assinatura
Verifique se você fez o seguinte:
Verifique se você tem as permissões necessárias. Para criar uma assinatura do Pub/Sub, você precisa do papel do IAM Editor do Pub/Sub (roles/pubsub.editor) no projeto. Se você não tiver essa função, entre em contato com o administrador.
Especificou um nome para a assinatura.
Especificou o nome de um tópico atual a que você quer anexar a assinatura.
Se você estiver criando uma assinatura por push, especifique
https://
no campopushEndpoint
como o protocolo para o URL de recebimento em letras minúsculas, nãohttp://
ouHTTPS://
.
Para mais informações sobre a solução de problemas de assinaturas, consulte as seguintes páginas:
Solução de problemas de pull, push, BigQuery ou Cloud Storage
Solução de problemas com assinaturas usando transformações de mensagem única
Resolver problemas de permissão
As permissões do Pub/Sub controlam quais usuários e contas de serviço podem realizar ações nos seus recursos do Pub/Sub. Quando as permissões são configuradas incorretamente, isso pode levar a erros de permissão negada e interromper o fluxo de mensagens. Os registros de auditoria fornecem um registro detalhado de todas as mudanças de permissão, permitindo que você identifique a origem desses problemas.
Para resolver problemas de permissão do Pub/Sub com registros de auditoria:
Consiga as permissões necessárias para acessar o Explorador de registros.
Para mais informações, consulte Antes de começar.
No console Google Cloud , acesse a página Explorador de registros.
Selecione um projeto, uma pasta ou uma organização Google Cloud .
Confira uma lista de filtros que você pode usar para encontrar registros relevantes:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: use essa consulta como ponto de partida ao resolver problemas que possam envolver mudanças nas configurações de tópicos ou assinaturas, ou controle de acesso. Você pode combinar esse filtro com outros para refinar ainda mais sua pesquisa.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: use esta consulta quando suspeitar que um problema é causado por permissões incorretas ou ausentes. Ele ajuda a rastrear quem fez as mudanças na política do IAM e quais foram essas mudanças. Isso pode ser útil para resolver problemas como usuários que não conseguem publicar em tópicos ou assinar assinaturas, aplicativos com acesso negado a recursos do Pub/Sub ou mudanças inesperadas no controle de acesso.protoPayload.status.code=7
: use esta consulta quando encontrar erros explicitamente relacionados a permissões. Isso ajuda a identificar quais ações estão falhando e quem está tentando executá-las. Você pode combinar essa consulta com as anteriores para identificar o recurso específico e a mudança na política do IAM que pode estar causando a negação de permissão.
Analise os registros para determinar fatores como o carimbo de data/hora do evento, o principal que fez a mudança e o tipo de mudanças realizadas.
Com base nas informações coletadas dos registros de auditoria, você pode tomar medidas corretivas.
A assinatura foi excluída
As assinaturas do Pub/Sub podem ser excluídas de duas maneiras principais:
Um usuário ou uma conta de serviço com permissões suficientes exclui intencionalmente a assinatura.
Uma assinatura é excluída automaticamente após um período de inatividade, que é de 31 dias por padrão. Para mais informações sobre a política de expiração da assinatura, consulte Período de expiração.
Para resolver problemas com uma assinatura excluída, siga estas etapas:
No console Google Cloud , acesse a página "Assinaturas do Pub/Sub" e verifique se a assinatura não está mais listada. Para mais informações sobre como listar assinaturas, consulte Listar uma assinatura.
Verifique os registros de auditoria. Acesse o Explorador de registros. Use o filtro
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
para encontrar as inscrições excluídas. Examine os registros para determinar se alguém excluiu a assinatura ou se ela foi excluída por inatividade.InternalExpireInactiveSubscription
indica que uma assinatura foi excluída por inatividade. Para mais informações sobre como usar registros de auditoria para resolver problemas, consulte Resolver problemas do Pub/Sub com registros de auditoria.
403 (Forbidden)
erro
Um erro 403 geralmente significa que você não tem as permissões corretas para
realizar uma ação. Por exemplo, você pode receber um erro 403 User not authorized
ao tentar publicar em um tópico ou extrair de uma assinatura.
Se você receber esse erro, faça o seguinte:
- Verifique se você ativou a API Pub/Sub no consoleGoogle Cloud .
Confira se quem fez a solicitação tem as permissões necessárias nos recursos relevantes da API Pub/Sub, especialmente se ela estiver sendo usada para a comunicação entre projetos.
Se você usa o Dataflow, verifique se o
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
e a conta de serviço do Compute Engine{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
têm as permissões necessárias no recurso da API Pub/Sub relevante. Para mais informações, consulte Segurança e permissões do Dataflow.Se você estiver usando o App Engine, verifique a página "Permissões" do seu projeto para ver se uma conta de serviço do App Engine está listada como um editor do Pub/Sub. Se não houver, adicione sua conta de serviço do App Engine como um editor do Pub/Sub. Normalmente, a conta de serviço do App Engine tem o formato
<project-id>@appspot.gserviceaccount.com
.
Outros códigos de erro comuns
Para ver uma lista de outros códigos de erro comuns relacionados à API Pub/Sub e suas descrições, consulte Códigos de erro.
Operações administrativas excessivas
Se você perceber que está gastando muito da cota de operações administrativas, talvez seja necessário refatorar o código. Para ilustrar, considere este pseudocódigo. Neste exemplo, uma operação administrativa (GET
)
está sendo usada para verificar a presença de uma assinatura antes de
tentar consumir os recursos dela. As operações GET
e CREATE
são do administrador:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Um padrão mais eficiente é tentar consumir mensagens da assinatura (supondo que você esteja razoavelmente seguro do nome da assinatura). Nesse caso, você só recebe ou cria a assinatura em caso de erro. Por exemplo,
try {
Consume from subscription my-sub
} catch NotFoundError {
CreateSubscription my-sub
Consume from subscription my-sub
}
Use os exemplos de código a seguir para implementar esse padrão na linguagem de sua escolha:
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C++.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js (TypeScript)
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.