Problembehandlung bei externen Funktionen für Azure

Unter diesem Thema werden Informationen zur Problembehandlung von externen Funktionen auf Azure bereitgestellt.

Unter diesem Thema:

Plattformunabhängige Laufzeitprobleme

Rückgabewerte für Datentyp stimmen nicht mit erwarteten Rückgabewerten überein

Achten Sie beim Übergeben von Argumenten an oder von einer externen Funktion darauf, dass die passenden Datentypen verwendet werden. Wenn der gesendete Wert nicht zum Datentyp des Empfängers passt, wird der Wert möglicherweise abgeschnitten oder auf andere Weise beschädigt.

Weitere Details dazu finden Sie unter Sicherstellen, dass Argumente der externen Funktion den Argumenten des Remotedienstes entsprechen.

Fehler: Zeilennummern nicht in korrekter Reihenfolge

Mögliche Ursachen

Die von Ihnen innerhalb jedes Batches zurückgegebenen Zeilennummern müssen monoton aufsteigende Ganzzahlen sein, die bei 0 beginnen. Die Eingabezeilennummern müssen ebenfalls dieser Regel folgen, und jede Ausgabezeile muss mit der entsprechenden Eingabezeile übereinstimmen. So muss beispielsweise die Ausgabe von Ausgabezeile 0 der Eingabe von Eingabezeile 0 entsprechen.

Mögliche Lösungen

Stellen Sie sicher, dass die von Ihnen zurückgegebenen Zeilennummern mit den erhaltenen Zeilennummern übereinstimmen und dass jeder Ausgabewert die Zeilennummer der entsprechenden Eingabe verwendet. Wenn dies nicht funktioniert, dann sind die eingegebenen Zeilennummern möglicherweise nicht korrekt oder Sie haben die Zeilen nicht in der richtigen Reihenfolge zurückgegeben.

Stellen Sie außerdem sicher, dass die Ausgabezeilennummern bei 0 beginnen, um 1 erhöht werden und in der richtigen Reihenfolge sind.

Weitere Informationen zu Dateneingabe- und Datenausgabeformaten finden Sie unter Eingabe- und Ausgabedatenformate von Remotediensten.

Fehler: „Error parsing JSON: Invalid response“

Mögliche Ursachen

Die wahrscheinlichste Ursache ist, dass die vom Remotedienst zurückgegebenen JSON-Daten (z. B. AWS Lambda-Funktion) nicht korrekt erstellt wurden.

Mögliche Lösungen

Stellen Sie sicher, dass die externe Funktion ein Array von Arrays zurückgibt, wobei für jede empfangene Eingabezeile ein inneres Array zurückgegeben wird. Überprüfen Sie die Beschreibung des Ausgabeformats unter Von Snowflake empfangenes Datenformat.

Fehler: Format des zurückgegebenen Wertes ist nicht JSON

Mögliche Ursachen

Ihr Rückgabewert enthält innerhalb des Wertes doppelte Anführungszeichen.

Mögliche Lösungen

Obwohl JSON-Zeichenfolgen durch doppelte Anführungszeichen getrennt sind, darf die Zeichenfolge selbst in den meisten Fällen nicht mit einem Anführungszeichen beginnen und enden. Wenn die eingebetteten doppelten Anführungszeichen falsch sind, entfernen Sie diese.

Fehler: Funktion hat die falsche Anzahl von Zeilen erhalten

Mögliche Ursachen

Der Remotedienst hat versucht, mehr oder weniger Zeilen zurückzugeben, als er erhalten hat. Auch wenn die Funktion nominell skalar ist, kann sie im Feld body des Parameters event mehrere Zeilen empfangen, und sie muss genau so viele Zeilen zurückgeben, wie sie empfangen hat.

Mögliche Lösungen

Stellen Sie sicher, dass der Remotedienst für jede erhaltene Zeile genau eine Zeile zurückgibt.

Azure-spezifische Probleme

Einstellungen können bei der Erstellung der Azure-Funktion nicht geändert werden

Mögliche Ursachen

Beim Erstellen Ihrer Azure-Funktion können Sie möglicherweise die Einstellungen für die Funktion unter dem Menü Authentication/Authorization nicht ändern.

Dieses Problem kann auftreten, wenn alle folgenden Punkte wahr sind:

  • Ihre Azure-Funktion wird unter Linux ausgeführt und nicht unter Microsoft Windows.

  • Sie planen die Verwendung der Azure AD-Authentifizierung/Autorisierung für Ihre Azure-Funktion.

  • Sie verwenden den „Consumption“-Tarif von Azure (und nicht den „Premium“-Tarif).

Azure AD-Authentifizierung ist im Linux-„Consumption“-Tarif für Azure-Funktionen nicht verfügbar. Sie müssen einen „App Service“-Tarif oder „Premium“-Tarif verwenden, um sich mit Azure AD zu authentifizieren.

Mögliche Lösungen
  • Erstellen Sie die Azure-Funktion neu, und geben Sie an, dass sie unter Microsoft Windows und nicht unter Linux ausgeführt werden soll.

  • Überspringen Sie die Azure AD-Authentifizierung/Autorisierung für die Azure-Funktion. Führen Sie stattdessen die folgenden Aufgaben aus:

    Wenn Sie diese Lösung wählen, müssen Sie die Azure AD-Anwendung manuell erstellen. Weitere Informationen dazu finden Sie in der Microsoft-Dokumentation unter

    Wenn Sie die Azure AD-Anwendung manuell erstellen, notieren Sie sich auf dem Arbeitsblatt den Azure Function AD app registration name und die Azure Function App AD Application ID.

  • Wechseln Sie vom „Consumption“-Tarif zum „Premium“-Tarif, oder verwenden Sie einen „App Service“-Tarif. Weitere Informationen dazu finden Sie in der Microsoft-Dokumentation unter

Zeitüberschreitung der externen Funktion

Mögliche Ursachen

Es gibt viele mögliche Ursachen für Timeouts. Bei Azure ist eine der möglichen Ursachen, dass die Azure Functions-App nicht mit passender Skalierung geschrieben wurde.

Mögliche Lösungen

Stellen Sie sicher, dass Sie die Azure-Richtlinien für das Schreiben skalierbarer Funktionen befolgt haben.

Weitere Informationen zur Problembehandlung bei Skalierbarkeits- und Leistungsproblemen finden Sie unter Problembehandlung bei Skalierbarkeits- und Leistungsproblemen.

Error: Failed to obtain Azure Active Directory access token.

Mögliche Lösungen

Führen Sie die folgenden Schritte aus:

  • Vergewissern Sie sich, dass der Snowflake-Dienstprinzipal Zugriff auf Ihren Azure AD-Mandanten hat.

  • Überprüfen Sie, ob die Mandanten-ID und die Azure AD-Anwendungs-ID korrekt sind.

    Beachten Sie, dass Leerzeichen, einschließlich führende und nachstehende Leerzeichen, in ID-Feldern signifikant sind. Prüfen Sie auf falsche führende oder nachstehende Leerzeichen.

Error: 401 ‚{ „statusCode“: 401, „message“: „Access denied due to missing subscription key…“ }‘

Vollständiger Text der Fehlermeldung:

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message":
"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }'
Copy
Mögliche Ursachen

Die Abonnement-Anforderung des API Management-Dienstes könnte aktiviert sein.

Mögliche Lösungen

Möglicherweise müssen Sie die Abonnement-Anforderung für den API Management-Dienst deaktivieren.

Error: 401 ‚{ „statusCode“: 401, „message“: „Access denied due to missing subscription key.“ }

Mögliche Ursachen

Der Proxydienst benötigt einen API-Schlüssel, typischerweise zur Authentifizierung oder Abrechnung. In der API_KEY-Klausel des CREATE API INTEGRATION-Befehls wurde jedoch kein API-Schlüssel angegeben.

Mögliche Lösungen

Verwenden Sie den Befehl ALTER API INTEGRATION, um die API-Integration mit einem gültigen API-Schlüssel zu aktualisieren.

Error: 401 ‚{ „statusCode“: 401, „message“: „Access denied due to invalid subscription key.“ }‘

Mögliche Ursachen

Der Proxydienst benötigt einen API-Schlüssel, typischerweise zur Authentifizierung oder Abrechnung. Der in der API_KEY-Klausel des CREATE API INTEGRATION-Befehls angegebene API-Schlüssel war jedoch nicht gültig.

Mögliche Lösungen

Verwenden Sie den Befehl ALTER API INTEGRATION, um die API-Integration mit einem gültigen API-Schlüssel zu aktualisieren.

Error: 401 ‚{ „statusCode“: 401, „message“: „Invalid JWT.“ }‘

Vollständiger Text der Fehlermeldung:

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Copy
Mögliche Ursachen
  • Möglicherweise sind Sie ist die Festlegung der Sicherheitsrichtlinie für den Azure API Management-Dienst noch nicht komplett abgeschlossen. Das könnte beispielsweise Folgendes betreffen:

    • Das JWT (JSON Web Token) wurde erstellt, aber nicht bearbeitet.

    • Es wurden erforderliche Ansprüche/Werte ausgelassen. Sie könnten beispielsweise den Anspruch für Snowflake angegeben haben, aber nicht den

    • Remotedienst (Azure-Funktion), oder umgekehrt.

  • Möglicherweise haben Sie eine ungültige Open ID-URL verwendet.

Mögliche Lösungen
  • Schließen Sie die Festlegung der Sicherheitsrichtlinie für den Azure API Management-Dienst ab. Überprüfen Sie z. B. das JWT, und stellen Sie sicher, dass Sie die erforderlichen Ansprüche/Werte eingefügt haben, einschließlich des Anspruchs für Snowflake und des Anspruchs für den Remotedienst (Azure-Funktion).

  • Vergewissern Sie sich, dass Sie eine gültige Open ID-URL verwendet haben.

Error (Remote Service): 401 ‚{ „statusCode“: 401, „message“: „Invalid JWT.“ }‘

Vollständiger Text der Fehlermeldung:

Request failed for external function <function_name> with remote service error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Copy
Mögliche Ursachen

Wenn Sie die ARM-Vorlage verwendet haben, haben Sie möglicherweise das JWT (JSON Web Token) nicht aktualisiert, das von der Vorlage für Sie erstellt wurde.

Mögliche Lösungen

Aktualisieren Sie das JWT wie unter Schritt 6: Azure-Sicherheitsrichtlinie für Proxydienst im Portal aktualisieren dokumentiert.

Error: 500 …

Mögliche Ursachen

Sie haben möglicherweise die falsche Option für Ihre Azure AD-App gewählt.

  • Falsche Option: Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)

  • Korrekte Option: Accounts in this organizational directory only (Default Directory only - Single tenant)