Fehler bei Erweiterungen beheben

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Zum Debuggen einer Erweiterung können Sie Meldungen verwenden, die an zwei Stellen sichtbar sind: im Trace-Tool und in den Erweiterungsprotokollen. Wenn eine Erweiterung nicht funktioniert, müssen manchmal Informationen aus beiden Quellen abgefragt werden, um das Problem zu identifizieren.

  • Mit dem Trace-Tool von Apigee Edge können Sie den API-Proxy-Code während der Entwicklung iterativ testen und bearbeiten. Trace-Nachrichten enthalten Fehler aus Ihrem API-Proxy-Code, einschließlich des API-Proxy- und der Richtlinienkonfiguration.

    Fehler im Zusammenhang mit Erweiterungen, die im Trace-Tool angezeigt werden, enthalten in der Regel nur wenige Details, abgesehen davon, welche Erweiterungs-Callouts fehlgeschlagen sind, zusammen mit einem HTTP-Fehlercode. Wird hier nichts Nützliches angezeigt, können Sie am besten im Protokoll für die von Ihnen verwendete Erweiterung suchen.

  • Erweiterungen generieren Logeinträge zur Laufzeit. Erweiterungsprotokolle sind nur für Organisationsadministratoren verfügbar.

    Diese Protokolle enthalten Einträge, die von der externen Ressource zurückgegeben werden, mit der die Erweiterung interagiert. Wenn beispielsweise Anmeldedaten für externe Ressourcen in der Erweiterung falsch konfiguriert sind, wird der Fehler wahrscheinlich hier angezeigt.

    Die Protokolle enthalten auch Einträge des internen Erweiterungscodes. Beachten Sie beim Durchsehen der Protokolle, dass einige Einträge für den zu korrigierenden Fehler nicht relevant sind. Auf Erweiterungen bezogene Logeinträge beginnen normalerweise mit dem Wort details, wie im folgenden Logeintrag der Erweiterung 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.'
    

Fehlertypen und -ursachen

Die Verarbeitung von Erweiterungsanfragen fließt von einer ExtensionCallout-Richtlinie in einem API-Proxy über die Erweiterung zur externen Ressource und wieder zurück. An diesen Stellen kann also ein Fehler auftreten.

Die Fehler können einer der folgenden Kategorien zugeordnet werden.

Fehler in der Erweiterungskonfiguration

Das ist die Konfiguration, die ein Organisationsadministrator durchführt, wenn er einer Umgebung eine Erweiterung hinzufügt.

Wenn Sie beispielsweise die Cloud Logging-Erweiterung mit einer falschen Google Cloud-Projekt-ID konfigurieren, gibt Google Cloud Logging einen Fehler an die Erweiterung zurück. Details zu diesen Fehlern finden Sie normalerweise im Erweiterungsprotokoll.

Beweise im Trace-Tool

Im Proxy-Editor werden diese Fehler in der Regel als Fehler auf 4xx- oder 5xx-Ebene angezeigt. Im Proxy-Editor werden jedoch keine Details zur Ursache des Fehlers angezeigt, außer dass die Erweiterung einen Fehler zurückgegeben hat.

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

Belege in Erweiterungsprotokollen

Wenn Details zu dieser Art von Fehler vorliegen, werden sie in den Logeinträgen der Erweiterung angezeigt. Die folgende Fehlermeldung, die vom Cloud Pub/Sub-Dienst zurückgegeben wird, ergibt sich aus einer fehlerhaften Projekt-ID.

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

Fehler in der ExtensionCallout-Richtlinienkonfiguration

Diese Fehler treten auf, wenn die ExtensionCallout-Richtlinie entweder durch einen Syntaxfehler in der Richtlinienkonfiguration oder durch falsche Konfigurationsschlüssel bzw. -werte falsch konfiguriert ist. Diese Fehler treten je nach Konfiguration der Richtlinie in zwei Formen auf:

  • Falsche Werte wurden von der externen Ressource bewertet

    Dieser Fehler kann auftreten, wenn der Konfigurationsfehler für die Erweiterung gültig zu sein schien, für die externe Ressource jedoch ungültig war. Wenn die Erweiterung beispielsweise eine falsche Datenbank-ID an Cloud Spanner übergibt, gibt Cloud Spanner einen Fehler zurück, der im Erweiterungsprotokoll protokolliert ist:

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

    Dieser Fehler kann auch bei falscher JSON-Konfiguration im <Input>-Element der Richtlinie auftreten. Bei einigen Erweiterungen wird ein Teil des JSON-Formats von der Erweiterung verarbeitet und ein Teil an die Ressource übergeben. Die JSON-Konfiguration der Cloud Logging-Erweiterung enthält beispielsweise ein metadata-Objekt, dessen Inhalte an Cloud Logging übergeben werden. Falsche Schlüsselnamen, z. B. typ statt type, können Fehler von der externen Ressource zurückgeben, die als Einträge im Erweiterungsprotokoll erscheinen:

    details: 'Resource type cannot be empty'
    
  • Falsche Werte wurden von der Erweiterung ausgewertet

    Zu diesen Fehlern gehören Syntaxfehler in richtlinienkonformen Teilen der JSON-Datei des <Input>-Elements, falsche Schreibweise des Aktionsnamens im <Action>-Element und so weiter. Diese Fehler werden normalerweise im Trace-Tool, aber nicht in den Erweiterungsprotokollen angezeigt.

Beweise im Trace-Tool

Im Proxy-Editor werden diese Fehler in der Regel als Fehler auf 4xx- oder 5xx-Ebene angezeigt. Im Proxy-Editor werden jedoch keine Details zur Ursache des Fehlers angezeigt, außer dass die Erweiterung einen Fehler zurückgegeben hat. Der folgende Fehler wird im Trace-Tool angezeigt, wenn der Aktionsname in der Cloud Firestore-Erweiterung falsch geschrieben wird.

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

Belege in Erweiterungsprotokollen

Wenn die Richtlinienkonfiguration zu einem Verarbeitungsfehler in der externen Ressource führt, wird dieser Fehler normalerweise im Protokoll angezeigt.

Dies ist ein Fehler, bei dem die Anfrage an die externe Ressource aus Gründen, die nicht mit der Erweiterung zusammenhängen, nicht erfolgreich war.

Angenommen, Sie verwenden die Cloud Spanner-Erweiterung, um der Datenbank eine Zeile hinzuzufügen, aber der Primärschlüssel der Zeile wird bereits in einer vorhandenen Zeile verwendet. Cloud Spanner gibt einen Fehler an die Erweiterung zurück, wodurch der Fehler dem Erweiterungsprotokoll hinzugefügt wird.

Beweise im Trace-Tool

Im Proxy-Editor werden diese Fehler in der Regel als Fehler auf 4xx- oder 5xx-Ebene angezeigt. Im Proxy-Editor werden jedoch keine Details zur Ursache des Fehlers angezeigt, außer dass die Erweiterung einen Fehler zurückgegeben hat.

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

Belege in Erweiterungsprotokollen

Das Log enthält normalerweise Einträge mit Nachrichten von der externen Ressource selbst. In der folgenden Log-Nachricht von Cloud Spanner wird der vorhandene Primärschlüsselwert-Fehler beschrieben.

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