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 auprès de gcloud CLI pour vérifier que vous vous êtes authentifié avec un compte autorisé à accéder au projet affiché dans le message d'erreur:
    gcloud auth login
    

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

  2. Vérifiez que l'ID de projet affiché dans le message d'erreur correspond au projet Google Cloud sur lequel vous souhaitez déployer la configuration Cloud Endpoints:
    gcloud projects list
    
  3. Vérifiez que l'ID de projet correct défini pour le projet actuel dans gcloud CLI:
    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 du service.
  • Si vous utilisez le domaine cloud.goog, vérifiez que la valeur du champ name est au format suivant et que l'ID du 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

Étapes suivantes