Résoudre des problèmes concernant les erreurs de réponse

Cette page explique comment résoudre les erreurs que vous recevez en réponse à une requête adressée à votre API.

Upstream backend unavailable

Si vous recevez un code d'erreur 14 avec le message upstream backend unavailable, cela signifie que le proxy ESP ne peut pas atteindre le backend du service. Vérifiez les éléments suivants :

  • Assurez-vous que le service de backend est en cours d'exécution. La manière de procéder dépend du backend.

  • La paire adresse IP/port du service de backend est correctement spécifiée :
    • Pour GKE, vérifiez la valeur de l'option ESP --backend (l'option abrégée est -a) dans votre fichier manifeste de déploiement (généralement appelé deployment.yaml).
    • Pour Compute Engine, vérifiez la valeur de l'option ESP --backend (l'option abrégée est -a) dans la commande docker run.

API is not enabled for the project

Si vous avez envoyé une clé API dans la requête, un message d'erreur de type "API my-api.endpoints.example-project-12345.cloud.goog is not enabled for the project" (l'API my-api.endpoints.example-project-12345.cloud.goog n'est pas activée pour le projet) indique que la clé API a été créée dans un autre projet Google Cloud que celui hébergeant l'API. Pour résoudre ce problème, vous pouvez soit créer la clé API dans le projet Google Cloud auquel l'API est associée, soit activer l'API dans le projet Google Cloud dans lequel la clé API a été créée.

Service control request failed with HTTP response code 403

Si vous recevez le code d'erreur 14 et le message Service control request failed with HTTP response code 403, cela signifie que l'API Service Control (servicecontrol.googleapis.com) n'est pas activée pour le projet.

  1. Consultez la section Vérifier les services requis pour vous assurer que tous les services requis par Cloud Endpoints et ESP sont activés pour le projet.

  2. Consultez la section Vérifier les autorisations requises pour vous assurer que toutes les autorisations requises pour le compte de service associé à l'instance exécutant ESP sont ajoutées.

Method doesn't allow unregistered callers

ESP répond avec l'erreur Method doesn't allow unregistered callers lorsque vous avez spécifié allow_unregistered_calls: false dans votre fichier de configuration d'API gRPC, mais que la requête adressée à l'API ne comporte pas de clé API attribuée à un paramètre de requête nommé key.

Si vous devez générer une clé API pour effectuer des appels vers l'API, consultez la section Créer une clé API.

Method does not exist

La réponse Method does not exist signifie que la méthode HTTP (GET, POST ou autre) du chemin d'URL spécifié est introuvable. Pour résoudre ce problème, comparez la configuration de service que vous avez déployée pour vous assurer qu'il y a bien correspondance entre le nom de la méthode et le chemin d'URL que vous envoyez dans la requête :

  1. Dans Cloud Console, accédez à la page Services Endpoints du projet.

    Accéder à la page "Services Endpoints"

  2. Si vous avez plusieurs API, sélectionnez celle à laquelle vous avez envoyé la requête.

  3. Cliquez sur l'onglet Historique des déploiements.

  4. Sélectionnez le dernier déploiement pour voir la configuration du service.

Transport is closing

Si vous recevez le code d'erreur 13 et le message transport is closing, cela signifie qu'ESP est inaccessible.

Vérifiez les journaux d'erreur ESP. La manière de procéder dépend du backend. Pour en savoir plus, consultez les sections suivantes :

Réponses inattendues

Si la réponse HTTP semble être binaire, cela peut indiquer que la requête appelle l'API via le port HTTP2 alors que vous comptiez utiliser le port HTTP1.

Vérifiez vos options de configuration de port pour ESP. Comme les options courtes -p (pour HTTP1) et -P (pour HTTP2) sont similaires, nous vous recommandons d'utiliser leur forme longue : --http_port pour HTTP1 et --http2_port pour HTTP2.

Une mauvaise configuration du backend ESP peut également entraîner des réponses inattendues. Assurez-vous que l'option backend (-a ou --backend) est définie sur une URL gRPC telle que --backend=grpc://127.0.0.1:8081.

Pour en savoir plus sur les options ESP, consultez la page Options de démarrage ESP.

Vérifier les journaux Cloud Logging

Pour utiliser les journaux Cloud Logging afin de résoudre les erreurs de réponse, suivez les étapes suivantes :

  1. Dans Cloud Console, accédez à la page Journaux.

    Accéder à la page "Visionneuse de journaux"

  2. En haut de la page, sélectionnez le projet Google Cloud.

  3. À l'aide du menu déroulant situé à gauche, sélectionnez API produite > [NOM_DE_VOTRE_SERVICE].

  4. Ajustez la période jusqu'à voir une ligne indiquant votre erreur de réponse.

  5. Développez la charge utile JSON et recherchez error_cause.

    • Si error_cause est défini sur application, cela indique un problème dans votre code.

    • Si error cause indique un autre problème et que vous ne parvenez pas à le résoudre, exportez le journal et joignez-le aux échanges que vous allez établir à ce sujet avec Google.

Pour en savoir plus, lisez les informations ci-après.