Présentation de la section de dépannage

Cette page fournit des informations de dépannage générales pour API Gateway.

Impossible d'exécuter les commandes "gcloud api-gateway"

Pour exécuter les commandes gcloud api-gateway ..., vous devez avoir mis à jour la Google Cloud CLI et activé les services Google nécessaires. Pour en savoir plus, consultez la section Configurer votre environnement de développement.

La commande "gcloud api-gateway api-configs create" indique que le compte de service n'existe pas.

Si vous exécutez la commande gcloud api-gateway api-configs create ... et recevez une erreur au format suivant :

ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION:
Service Account "projects/-/serviceAccounts/service_account_email" does not exist

Exécutez à nouveau la commande, mais cette fois, incluez l'option --backend-auth-service-account pour spécifier explicitement l'adresse e-mail du compte de service à utiliser :

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION \
  --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

Assurez-vous d'avoir déjà attribué les autorisations nécessaires au compte de service, comme décrit dans la section Configurer votre environnement de développement.

La requête API renvoie une erreur HTTP 403

Si une requête adressée à une API déployée renvoie une erreur HTTP 403 au client API, cela signifie que l'URL demandée est valide, mais que l'accès est interdit pour une raison quelconque.

Une API déployée dispose des autorisations associées aux rôles accordées au compte de service que vous avez utilisé lors de la création de la configuration de l'API. En général, l'erreur HTTP 403 est due au fait que le compte de service ne dispose pas des autorisations nécessaires pour accéder au service de backend.

Si vous avez défini l'API et le service de backend dans le même projet Google Cloud, assurez-vous que le rôle Editor ou le rôle nécessaire pour accéder au service de backend sont attribués au compte de service. Par exemple, si le service de backend est mis en œuvre à l'aide de Cloud Functions, assurez-vous que le rôle Cloud Function Invoker est attribué au compte de service.

La requête API renvoie une erreur HTTP 401 ou 500

Si une requête adressée à une API déployée renvoie une erreur HTTP 401 ou 500 au client API, il se peut qu'il y ait un problème lors de l'utilisation du compte de service utilisé lors de la création de la configuration d'API pour appeler votre service de backend.

Une API déployée dispose des autorisations associées aux rôles accordées au compte de service que vous avez utilisé lors de la création de la configuration de l'API. Le compte de service est vérifié pour s'assurer qu'il existe à la fois et qu'il peut être utilisé par la passerelle API lors du déploiement de l'API.

Si le compte de service est supprimé ou désactivé après le déploiement de la passerelle, la séquence d'événements suivante peut se produire :

  1. Immédiatement après la suppression ou la désactivation du compte de service, des réponses HTTP 401 peuvent s'afficher dans les journaux de votre passerelle. Si le champ response_code_details est défini sur "via_upstream" dans l'élément jsonPayload de l'entrée de journal, cela signifie que la suppression ou la désactivation du compte de service est à l'origine de l'erreur.

  2. Une erreur HTTP 500 peut également s'afficher sans entrée de journal correspondante dans les journaux de la passerelle API. Si aucune requête n'est envoyée à votre passerelle immédiatement après la suppression ou la désactivation du compte de service, vous ne verrez peut-être pas les réponses HTTP 401, mais les erreurs HTTP 500 sans journaux correspondants de la passerelle API indiquent que le compte de service de la passerelle n'est peut-être plus actif.

Requêtes API à latence élevée

Comme Cloud Run et Cloud Functions, API Gateway est soumis à une latence de "démarrage à froid". Si votre passerelle n'a reçu aucun trafic pendant 15 à 20 minutes, les requêtes envoyées à votre passerelle dans les 10 à 15 premières secondes du démarrage à froid subiront une latence de 3 à 5 secondes.

Si le problème persiste après la période de préchauffage initiale, consultez les journaux de requêtes du ou des service de backend que vous avez configurés dans la configuration de l'API. Par exemple, si le service de backend est mis en œuvre à l'aide de Cloud Functions, vérifiez les entrées Cloud Logging du journal des requêtes Cloud Functions associé.

Impossible d'afficher les informations du journal

Si votre API répond correctement, mais que les journaux ne contiennent aucune donnée, cela signifie généralement que vous n'avez pas activé tous les services Google requis par API Gateway.

API Gateway nécessite l'activation des services Google suivants :

Nom Titre
apigateway.googleapis.com API de la passerelle API
servicemanagement.googleapis.com API Service Management
servicecontrol.googleapis.com API Service Control

Pour confirmer que les services requis sont activés, procédez comme suit :

gcloud services list

Si les services requis ne sont pas répertoriés, activez-les :

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Pour en savoir plus sur les services gcloud, consultez la section Services gcloud.