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
do papel de gerenciamento de identidade e acesso do Editor do Pub/Sub (roles/pubsub.editor
)
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, 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 de 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 push, especifique
https://
em letras minúsculas (nãohttp://
ouHTTPS://
) como o protocolo para o URL de recebimento no campopushEndpoint
.
Para mais informações sobre a solução de problemas de assinaturas, consulte as seguintes páginas:
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:
Conseguir as permissões necessárias para acessar o Explorador de registros.
Para mais informações, consulte Antes de começar.
No console do Google Cloud, acesse a página do Explorador de registros.
Selecione um Google Cloud projeto, uma pasta ou uma organização.
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 no controle de acesso. Você pode combinar esse filtro com outros para refinar ainda mais sua pesquisa.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: use essa consulta quando você suspeitar que um problema foi causado por permissões incorretas ou ausentes. Ele ajuda a acompanhar quem fez alterações 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 que tiveram o acesso negado aos recursos do Pub/Sub ou mudanças inesperadas no controle de acesso.protoPayload.status.code=7
: use essa consulta quando encontrar erros explicitamente relacionados a permissões. Isso ajuda a identificar quais ações estão falhando e quem está tentando fazer isso. É possível combinar essa consulta com as anteriores para identificar a mudança específica de recursos e políticas do IAM que pode estar causando a recusa de permissão.
Analise os registros para determinar fatores como o carimbo de data/hora do evento, o responsável pela mudança e o tipo de mudança feita.
Com base nas informações coletadas nos registros de auditoria, é possível realizar ações corretivas.
A assinatura foi excluída
As assinaturas do Pub/Sub podem ser excluídas de duas maneiras principais:
Uma conta de usuário ou 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 de assinaturas, consulte Período de expiração.
Para resolver problemas com uma assinatura excluída, siga estas etapas:
No console do Google Cloud, acesse a página de 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 a Análise 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 devido à inatividade.InternalExpireInactiveSubscription
indica que uma assinatura foi excluída devido à inatividade. Para mais informações sobre como usar os registros de auditoria para resolver problemas, consulte Resolver problemas do Pub/Sub com registros de auditoria.
403 (Forbidden)
erro
Se você receber esse erro, faça o seguinte:
- Verifique se você ativou a API Pub/Sub no Console do Google Cloud.
Confira se quem fez a solicitação tem as permissões necessárias para os recursos relevantes da API Pub/Sub, especialmente se você estiver usando a API Pub/Sub 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 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 está no formato
<project-id>@appspot.gserviceaccount.com
.
Outros códigos de erro comuns
Para conferir uma lista de outros códigos de erro comuns relacionados à API Pub/Sub e as descrições deles, 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). Nessa abordagem otimista, 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 abaixo para implementar esse padrão na linguagem que você preferir:
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 este exemplo, 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.