Resolução de problemas de implementação da configuração do Cloud Endpoints

Esta página descreve como resolver problemas de erros que pode encontrar quando implementa a configuração do Cloud Endpoints. As mensagens de erro que vê contêm informações específicas do seu projeto. Por exemplo, pode ver uma mensagem de erro com o ID do seu projeto. Nesta página, verá valores de marcadores de posição, como YOUR_PROJECT_ID.

Após cada passo, execute novamente o comando gcloud endpoints services deploy para ver se o erro foi resolvido.

Não é possível converter para a configuração do serviço

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT:
Cannot convert to service config. http: undefined field <unknown> on message <RequestType>

Verifique o ficheiro .proto quanto a campos com correspondência incorreta entre as suas mensagens de protocol buffer e mapeamentos de transcodificação.

Por exemplo, o seguinte num ficheiro .proto produz este erro. A opção de mapeamento em Unary especifica um campo denominado undefined que não está na definição da mensagem Request.

rpc Unary(Request) Response {
  option (google.api.http) { get : "/{undefined}" };
}

message Request {
  string defined = 1;
}

Não tem autorização para obter as definições do projeto

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Not allowed to get project settings for project YOUR_PROJECT_ID

  1. Autentique novamente com a CLI gcloud para confirmar que fez a autenticação com uma conta que tem autorização para aceder ao projeto apresentado na mensagem de erro:
    gcloud auth login

    É aberto um novo separador do navegador e é-lhe pedido que escolha uma conta.

  2. Confirme se o ID do projeto apresentado na mensagem de erro corresponde ao projeto no qual pretende implementar a configuração dos Endpoints: Google Cloud
    gcloud projects list
  3. Confirme se a CLI gcloud tem o ID do projeto correto definido como o projeto atual:
    gcloud config set project YOUR_PROJECT_ID

O autor da chamada não tem autorização

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Caller does not have permission 'servicemanagement.services.create' on project YOUR_PROJECT_ID

Quando implementa a configuração do Endpoints pela primeira vez, o Service Management cria um serviço gerido para a sua API. Para criar um serviço gerido, tem de ter, no mínimo, a função de Editor ao nível do projeto. Depois de o Service Management criar o serviço gerido, as autorizações mínimas necessárias para reimplementar uma configuração do Endpoints são a função de editor de configuração de serviços (roles/servicemanagement.configEditor) no serviço. Para mais informações, consulte o artigo Conceder acesso à API.

Não é possível validar a propriedade do nome de domínio

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Ownership for domain name YOUR_DOMAIN_NAME on project YOUR_PROJECT_ID cannot be verified

  • Se tiver um domínio personalizado (por exemplo, example.com) configurado no campo name do ficheiro api_config.yaml, tem de validar o nome do domínio antes de poder implementar a configuração do serviço.
  • Se estiver a usar o domínio cloud.goog, confirme que o valor do campo name está no seguinte formato e que o ID do projeto está correto:
    API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog

Resolução de outros erros

Se recebeu um erro que não está listado aqui ou se as informações não resolveram o seu problema, execute novamente o comando gcloud com a flag para apresentar informações de depuração:

gcloud --verbosity=debug endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml

O que se segue?