Présentation de la section de dépannage
Cette page fournit des informations générales de dépannage pour API Gateway.
Impossible d'exécuter "gcloud api-gateway". commandes
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 Configurer votre environnement de développement.
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és au compte de service que vous utilisée lorsque vous avez créé la configuration de l'API. En règle générale, 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 backend.
Si vous avez défini l'API et le service de backend dans le même projet Google Cloud, assurez-vous que le compte de service est associé au rôle Editor
ou au rôle nécessaire pour accéder au service de backend. Par exemple, si le service backend est implémenté à l'aide de fonctions Cloud Run, 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, vous risquez de rencontrer un problème lors de l'utilisation du compte de service utilisé lors de la création de l'API pour appeler votre service de backend.
Une API déployée dispose des autorisations associées aux rôles accordés au compte de service utilisée pour créer la configuration de l'API. Le compte de service est vérifié pour assurez-vous qu'il existe et qu'il peut être utilisé par la passerelle API lorsque l'API est déployé.
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 :
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 la passerelle. Si le champ
response_code_details
est défini sur"via_upstream"
dans le champjsonPayload
de l'entrée de journal, cela indique que la suppression ou la désactivation du compte de service est à l'origine de l'erreur.Il est également possible qu'une erreur HTTP 500 s'affiche sans entrée de journal correspondante dans le les journaux de la passerelle API. Si aucune requête n'est envoyée immédiatement à votre passerelle après la suppression ou la désactivation du compte de service, il est possible que le message 401, mais les erreurs HTTP 500 sans les journaux de passerelle API correspondants 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 les fonctions Cloud Run, API Gateway est soumis à la latence de démarrage à froid. Si votre passerelle n'a pas reçu de trafic pendant 15 à 20 minutes, les requêtes adressées à votre passerelle dans les 10 à 15 premières secondes du démarrage à froid connaîtra une latence de 3 à 5 secondes.
Si le problème persiste après la phase initiale de préparation consultez les journaux de requêtes des service de backend que vous avez configurés dans votre configuration d'API. Par exemple, si le service backend est implémenté à l'aide de fonctions Cloud Run, vérifiez les entrées Cloud Logging du journal des requêtes Cloud Function associé.
Impossible d'afficher les informations de 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.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Pour en savoir plus sur les services gcloud
, consultez la section Services gcloud
.