Dépannage du déploiement de la configuration Cloud Endpoints

Cette page explique comment résoudre les erreurs que vous pouvez rencontrer lors du déploiement de la configuration Cloud Endpoints. Les messages d'erreur que vous voyez contiennent des informations spécifiques à votre projet. Par exemple, il est possible que vous obteniez un message d'erreur contenant l'ID de votre projet. Sur cette page, vous verrez des valeurs d'espace réservé telles que YOUR_PROJECT_ID (ID de votre projet).

Après chaque étape, exécutez à nouveau la commande gcloud endpoints services deploy pour voir si l'erreur est résolue.

Impossible de convertir en configuration de service

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

Dans votre fichier .proto, identifiez les champs non concordants entre les messages de tampon de protocole et les mappages de transcodage.

Dans un fichier .proto, l'exemple ci-dessous risque de produire cette erreur. L'option de mappage sur Unary spécifie un champ nommé undefined qui ne figure pas dans la définition du message Request.

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

message Request {
  string defined = 1;
}

Non autorisé à obtenir les paramètres du projet

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

  1. Authentifiez-vous à nouveau avec la gcloud CLI pour confirmer que vous vous êtes authentifié avec un compte autorisé à accéder au projet affiché dans l'erreur message:
    gcloud auth login

    Un nouvel onglet de navigateur vous invite à choisir un compte.

  2. Confirmez que l'ID de projet affiché dans le message d'erreur correspond au projet Google Cloud dans lequel vous souhaitez déployer la configuration Endpoints :
    gcloud projects list
  3. Vérifiez que le bon ID de projet est défini dans le champ projet en cours:
    gcloud config set project YOUR_PROJECT_ID

L'appelant ne dispose pas de l'autorisation requise

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

Lorsque vous déployez la configuration Endpoints pour la première fois, Service Management crée un service géré pour votre API. Pour créer un service géré, vous devez disposer au minimum du rôle Éditeur au niveau du projet. Une fois que Service Management a créé le service géré, l'autorisation minimale requise pour redéployer une configuration Endpoints est le rôle Éditeur pour la configuration de service (roles/servicemanagement.configEditor) sur le service. Pour plus d'informations, consultez la page Accorder l'accès à l'API.

La propriété du nom de domaine ne peut pas être validée

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

  • Si vous avez un domaine personnalisé (par exemple, example.com) configuré dans le champ name de votre fichier api_config.yaml, vous devez valider le nom du domaine avant de pouvoir déployer la configuration de service.
  • Si vous utilisez le domaine cloud.goog, confirmez que la valeur du champ name est au format suivant et que l'ID de projet est correct :
    API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog

Résoudre d'autres erreurs

Si vous avez reçu une erreur non répertoriée ici ou si ces informations n'ont pas résolu votre problème, exécutez à nouveau la commande gcloud avec l'option permettant d'afficher les informations de débogage :

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

Étape suivante