Déboguer une extension

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

Vous pouvez déboguer une extension à l'aide de messages visibles à deux endroits: l'outil Trace et les journaux de l'extension. Lorsqu'une extension ne fonctionne pas, il peut parfois être nécessaire d'obtenir des informations à la fois dans les deux emplacements pour identifier le problème.

  • L'outil Trace d'Apigee Edge vous permet de tester et de modifier de manière itérative le code du proxy d'API au fur et à mesure de son développement. Les messages de trace incluent les erreurs de votre code de proxy d'API, y compris la configuration du proxy d'API et des règles.

    Les erreurs liées aux extensions qui s'affichent dans l'outil de suivi ne contiennent généralement pas beaucoup de détails, sauf pour indiquer quel appel d'extension a échoué, ainsi qu'un code d'erreur HTTP. Si vous ne trouvez rien d'utile, le journal de l'extension que vous utilisez est le meilleur endroit où chercher.

  • Les extensions génèrent des entrées de journal au moment de l'exécution. (Les journaux des extensions ne sont disponibles que pour les administrateurs de l'organisation.)

    Ces journaux incluent les entrées renvoyées par la ressource externe avec laquelle l'extension est configurée pour interagir. Par exemple, si les identifiants de ressources externes sont mal configurés dans l'extension, l'erreur est susceptible d'apparaître ici.

    Les journaux incluent également des entrées provenant du code d'extension interne. Lorsque vous examinez les journaux, gardez à l'esprit que certaines entrées ne sont pas pertinentes pour l'erreur que vous corrigez. Les entrées de journal liées à une extension commencent généralement par le mot details, comme dans l'entrée de journal suivante de l'extension Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Types et causes d'erreurs

Le traitement des requêtes d'extension s'effectue à partir d'une règle ExtensionCallout dans un proxy d'API, via l'extension, vers la ressource externe, puis en sens inverse. Une erreur peut donc se produire à l'un de ces endroits.

Les erreurs que vous voyez peuvent appartenir aux catégories suivantes.

Erreurs de configuration de l'extension

Il s'agit de la configuration effectuée par un administrateur de l'organisation lorsqu'il ajoute une extension à un environnement.

Par exemple, si vous configurez l'extension Cloud Logging avec un ID de projet Google Cloud incorrect, Cloud Logging renvoie une erreur à l'extension. Les détails de ces erreurs se trouvent généralement dans le journal de l'extension.

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs s'affichent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxy n'affiche aucune information spécifique sur la cause de l'erreur, sauf pour indiquer que l'extension a renvoyé une erreur.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Preuves dans les journaux de l'extension

Si des informations détaillées sur ce type d'erreur sont disponibles, elles s'affichent dans les entrées de journal de l'extension. Le message d'erreur suivant, renvoyé par le service Cloud Pub/Sub, est dû à un ID de projet mal formé.

details: 'Project does not exist: example-test-12345'

Erreurs de configuration de la règle ExtensionCallout

Ces erreurs se produisent lorsque la règle ExtensionCallout est mal configurée, soit en raison d'une erreur de syntaxe de la configuration de la règle, soit en raison de clés ou de valeurs de configuration incorrectes. Ces erreurs prennent deux formes, en fonction de la configuration de la règle:

  • Valeurs incorrectes évaluées par la ressource externe

    Cela peut se produire lorsque l'erreur de configuration semblait valide pour l'extension, mais non pour la ressource externe. Par exemple, si l'extension transmet un ID de base de données incorrect à Cloud Spanner, Cloud Spanner renvoie une erreur enregistrée dans le journal de l'extension:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Cela peut également se produire en cas de configuration JSON incorrecte dans l'élément <Input> de la règle. Pour certaines extensions, une partie du fichier JSON est traitée par l'extension et une autre est transmise à la ressource. Par exemple, le fichier JSON de configuration de l'extension Cloud Logging inclut un objet metadata dont le contenu est transmis à Cloud Logging. Des noms de clés incorrects (par exemple, typ au lieu de type) peuvent renvoyer des erreurs de la ressource externe qui apparaissent sous forme d'entrées dans le journal de l'extension:

    details: 'Resource type cannot be empty'
    
  • Valeurs incorrectes évaluées par l'extension

    Ces erreurs incluent les erreurs de syntaxe dans les parties de l'élément JSON <Input> évaluées par la stratégie, l'orthographe incorrecte du nom de l'action dans l'élément <Action>, etc. Ces erreurs apparaissent généralement dans l'outil de suivi, mais pas dans les journaux de l'extension.

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs s'affichent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxy n'affiche aucune information spécifique sur la cause de l'erreur, sauf pour indiquer que l'extension a renvoyé une erreur. L'erreur suivante s'affiche dans l'outil de suivi lorsque vous mal orthographiez le nom de l'action dans l'extension Cloud Firestore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Preuves dans les journaux de l'extension

Lorsque la configuration de la règle entraîne une erreur de traitement dans la ressource externe, l'erreur s'affiche généralement dans le journal.

Il s'agit d'une erreur dans laquelle la requête envoyée à la ressource externe a échoué pour des raisons non liées à l'extension.

Par exemple, imaginons que vous utilisiez l'extension Cloud Spanner pour ajouter une ligne à la base de données, mais que la valeur de la clé primaire de la ligne soit déjà utilisée dans une ligne existante. Cloud Spanner renvoie une erreur à l'extension, qui l'ajoute au journal de l'extension.

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs s'affichent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxy n'affiche aucune information spécifique sur la cause de l'erreur, sauf pour indiquer que l'extension a renvoyé une erreur.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Preuves dans les journaux de l'extension

Le journal contient généralement des entrées avec des messages provenant de la ressource externe elle-même. Le message de journal suivant de Cloud Spanner décrit l'erreur de valeur de clé primaire existante.

details: 'Row [jonesy42] in table user already exists'