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 Parametersevent
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:
Legen Sie eine validate-JWT (JSON Web Token)-Richtlinie für die API Management-Instanz fest, wie unter Schritt 6: Azure-Sicherheitsrichtlinie für Proxydienst im Portal erstellen dokumentiert.
Verwenden Sie IP-Adresseinschränkungen, um den Remotedienst darauf zu beschränken, nur Verbindungen von der API Management-Dienstinstanz zu akzeptieren.
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 dieAzure 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." }'
- 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." }'
- 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." }'
- 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)