Como solucionar problemas em erros de resposta

Nesta página, descrevemos como solucionar erros recebidos na resposta da solicitação para uma API.

Upstream backend unavailable

Receber o código 14 e a resposta upstream backend unavailable indica que o Extensible Service Proxy (ESP) não consegue atingir o back-end do serviço. Verifique se:

  • Se o serviço do back-end está em execução. A maneira de fazer isso depende do back-end.

  • Para especificar a porta de endereço IP correta do serviço de back-end:
    • No GKE, verifique o valor da sinalização --backend do ESP no arquivo de manifesto da implantação, também conhecido como deployment.yaml. A menor opção é -a.
    • No Compute Engine, verifique o valor da sinalização --backend do ESP no comando docker run. A menor opção é -a.

A API não está ativada para o projeto

Quando você envia uma chave de API na solicitação, uma mensagem de erro do tipo "API my-api.endpoints.example-project-12345.cloud.goog is not enabled for the project" indica que essa chave foi criada em um projeto do Google Cloud Platform (GCP) diferente da API. Para corrigir esse problema, crie uma chave de API no mesmo projeto do GCP a que a API está associada ou ative a API no projeto do GCP em que a chave foi criada.

Service control request failed with HTTP response code 403

Receber o código de erro 14 e a resposta Service control request failed with HTTP response code 403 indica que a API Service Control (servicecontrol.googleapis.com) não está ativada no projeto. Consulte Como verificar os serviços obrigatórios para garantir que todos os serviços exigidos pelo Endpoints e o ESP estejam ativados no projeto.

Method doesn't allow unregistered callers

O ESP responde com o erro Method doesn't allow unregistered callers quando você especifica allow_unregistered_calls: false no arquivo de configuração da API gRPC, mas a solicitação para a API não tem uma chave de API atribuída a um parâmetro de consulta chamado key.

Se você precisar gerar uma chave de API para fazer chamadas para sua API, consulte Como criar uma chave de API.

Method does not exist

A resposta Method does not exist significa que o método HTTP (GET, POST ou outro) no caminho de URL especificado não foi encontrado. Para solucionar isso, compare a configuração do serviço que você implantou para garantir a correspondência entre o nome do método e o caminho do URL enviados na solicitação:

  1. No Console do GCP, acesse a página Serviços do Endpoints do projeto.

    Ir para a página Serviços do Endpoints

  2. Caso tenha mais de uma API, selecione aquela para a qual a solicitação foi enviada.

  3. Clique na guia Histórico de implantação.

  4. Selecione a implantação mais recente para ver a configuração do serviço.

Transport is closing

Receber o código 13 e a resposta transport is closing indica que o ESP está inacessível.

Verifique os registros de erros do ESP. A maneira de fazer isso depende do back-end. Para saber mais, consulte os seguintes artigos:

Respostas inesperadas

Se a resposta HTTP parecer binária, isso pode indicar que a solicitação está acessando a API por meio da porta HTTP2 quando você pretendia usar a porta HTTP1.

Verifique as opções de configuração de porta para o ESP. Como as sinalizações abreviadas -p para HTTP1 e -P para HTTP2 são parecidas, recomendamos o uso de sinalizações longas: --http_port para HTTP1 e --http2_port para HTTP2.

Uma configuração errada do back-end do ESP também pode causar respostas inesperadas. Certifique-se de que a sinalização de back-end -a ou --backend esteja configurada para um URL da gRPC, como --backend=grpc://127.0.0.1:8081.

Para mais detalhes sobre as sinalizações do ESP, consulte Opções de inicialização do ESP.

Como verificar os registros do Stackdriver

Para usar os registros do Stackdriver para ajudar na solução de problemas em erros de respostas:

  1. No Console do GCP, acesse a página Stackdriver > Geração de registros:

    Acessar a página Visualizador de registros

  2. Na parte superior da página, selecione o projeto do GCP.

  3. No menu suspenso à esquerda, selecione API produzida > [YOUR_SERVICE_NAME].

  4. Ajuste o intervalo de tempo até ver uma linha que mostre seu erro de resposta.

  5. Expanda o payload do JSON e procure por error_cause.

    • Se error_cause estiver definido como application, indicará um problema no código.

    • Se error cause estiver definido de qualquer outra maneira e você não conseguir corrigir o problema, exporte o registro e inclua-o em qualquer comunicação com o Google.

Para saber mais, consulte os seguintes artigos:

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud Endpoints com gRPC
Precisa de ajuda? Acesse nossa página de suporte.