Déboguer une extension

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Vous pouvez déboguer une extension en utilisant des messages visibles à deux endroits: l'outil Trace et les journaux de l'extension. Lorsqu'une extension ne fonctionne pas, vous devrez peut-être obtenir des informations des deux sources 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 de proxy d'API au fur et à mesure que vous le développez. Les messages de suivi incluent des erreurs liées au code de proxy de votre API, y compris la configuration du proxy et des règles d'API.

    Les erreurs liées aux extensions qui apparaissent dans l'outil Trace ne contiennent généralement pas beaucoup de détails, si ce n'est pour indiquer quelle accroche d'extension a échoué, ainsi qu'un code d'erreur HTTP. Si vous ne voyez rien d'utile, nous vous conseillons de consulter également le journal de l'extension que vous utilisez.

  • 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 des entrées renvoyées par la ressource externe avec laquelle l'extension est configurée. Par exemple, si des identifiants de ressources externes sont mal configurés dans l'extension, l'erreur est susceptible de s'afficher ici.

    Les journaux incluent également des entrées provenant du code d'extension interne. Lorsque vous parcourez 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 à l'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 d'erreurs et causes

Le traitement des demandes d'extension s'effectue à partir d'une règle ExtensionAppel dans un proxy d'API, via l'extension, jusqu'à la ressource externe, puis à nouveau. Une erreur peut donc se produire à n'importe lequel de ces endroits.

Les erreurs que vous rencontrez 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, Google Cloud Logging renvoie une erreur à l'extension. Les détails de ces erreurs se trouvent généralement dans le journal des extensions.

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs apparaissent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxys n'affiche aucune information précise 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 d'extension

Si des informations détaillées sur ce type d'erreur sont disponibles, vous les trouverez dans les entrées de journal de l'extension. Le message d'erreur suivant, renvoyé par le service Cloud Pub/Sub, résulte d'un ID de projet dont le format est incorrect.

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

Erreurs dans la configuration de la stratégie ExtensionAppel

Ces erreurs se produisent lorsque la règle ExtensionCall est mal configurée, soit en raison d'une erreur de syntaxe de configuration de la stratégie, soit en raison d'une clé ou d'une valeur de configuration incorrecte. Ces erreurs prennent deux formes, selon la configuration de la stratégie:

  • Valeurs incorrectes évaluées par la ressource externe

    Cela peut se produire lorsque l'erreur de configuration semblait valide pour l'extension, mais non valide 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 consigné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 si la configuration JSON est 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 partie est transmise à la ressource. Par exemple, la configuration JSON de l'extension Cloud Logging inclut un objet metadata dont le contenu est transmis à Cloud Logging. Des noms de clé incorrects (tels que typ au lieu de type) peuvent renvoyer des erreurs de la ressource externe qui apparaissent sous forme d'entrées dans le journal des extensions:

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

    Ces erreurs incluent des erreurs de syntaxe dans les parties évaluées par les règles du fichier JSON de l'élément <Input>, une faute d'orthographe concernant le nom de l'action dans l'élément <Action>, etc. Ces erreurs apparaissent généralement dans l'outil Trace, mais pas dans les journaux des extensions.

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs apparaissent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxys n'affiche aucune information précise sur la cause de l'erreur, sauf pour indiquer que l'extension a renvoyé une erreur. L'erreur suivante apparaît dans l'outil Trace lorsque le nom de l'action est mal orthographié 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 d'extension

Lorsque la configuration de la stratégie génère une erreur de traitement dans la ressource externe, cette erreur apparaît généralement dans le journal.

Il s'agit d'une erreur indiquant que la requête adressée à la ressource externe n'a pas abouti pour des raisons non liées à l'extension.

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

Preuves dans l'outil Trace

Dans l'éditeur de proxy, ces erreurs apparaissent généralement sous la forme d'une erreur de niveau 4xx ou 5xx. Toutefois, l'éditeur de proxys n'affiche pas de détails 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 d'extension

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

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