Problembehandlung bei externen Funktionen für AWS¶
Unter diesem Thema werden Informationen zur Problembehandlung von externen Funktionen auf AWS 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.
AWS-spezifische Probleme¶
API Gateway gibt Fehler 502 zurück, wenn der Endpunkt die Lambda-Proxyintegration verwendet¶
- Mögliche Ursache:
Die Lambda-Funktion könnte folgendes Problem haben:
Timeout
Ausnahme ausgelöst
Auf andere Weise fehlgeschlagen
- Mögliche Lösung:
Wenn Ihnen die Lambda- oder API Gateway-Protokolle zur Verfügung stehen, überprüfen Sie diese.
Wenn Ihnen der Quellcode der Lambda-Funktion zur Verfügung steht, dann analysieren und debuggen Sie den Code der Lambda-Funktion. In einigen Fällen können Sie möglicherweise eine Kopie dieses Codes in einem einfacheren Kontext (außerhalb von AWS) ausführen, um das Debuggen zu erleichtern.
Stellen Sie sicher, dass die an die Lambda-Funktion gesendeten Daten das von der Lambda-Funktion erwartete Format haben. Sie können versuchen, ein kleineres, einfacheres Dataset zu senden, um festzustellen, ob dies erfolgreich ist.
Stellen Sie sicher, dass Sie nicht zu viele Daten gleichzeitig senden.
In einigen Fällen kann das Problem durch Erhöhen des Timeouts behoben werden, insbesondere wenn die Lambda-Funktion viele CPU-Ressourcen benötigt oder wenn die Lambda-Funktion selbst andere Remotedienste aufruft und daher mehr Zeit benötigt.
Unable to read the requests body in the HTTP POST method inside the Amazon AWS Lambda Function¶
- Mögliche Ursache:
Möglicherweise haben Sie die Lambda-Proxyintegration nicht aktiviert.
- Mögliche Lösung:
Aktivieren Sie die Lambda-Proxyintegration.
Weitere Informationen dazu finden Sie unter API Gateway-Endpunkt erstellen.
Error assuming AWS_ROLE¶
Der vollständige Text der Meldung lautet:
SQL execution error: Error assuming AWS_ROLE. Please verify the role and externalId are configured correctly in your AWS policy.
- Mögliche Ursache:
In der AWS Trust Relationship Policy für Ihre Rolle ist ein falscher AWS-ARN angegeben. Mögliche Ursachen hierfür sind:
Sie haben den Wert nicht angegeben.
Sie haben einen Wert angegeben, aber Sie haben anstelle des Benutzer-ARN den ARN der AWS-Rolle (falsch) verwendet, was Sie mit dem DESCRIBE INTEGRATION-Befehl in Snowflake prüfen können. Achten Sie darauf, dass Sie den Wert aus dem Feld
API_AWS_IAM_USER_ARN
des Arbeitsblatts verwenden und nicht den Wert aus dem Feld „API_AWS_ROLE_ARN“.
In Ihrer AWS Trust Relationship Policy ist ein falscher Wert für std:ExternalId angegeben. Mögliche Ursachen hierfür sind:
Sie haben den Wert nicht angegeben.
Sie haben das API-Integrationsobjekt neu erstellt. Durch das erneute Erstellen des API-Objekts wird die externe ID geändert.
Error parsing JSON response … Error: top-level JSON object must contain „data“ JSON array element¶
Der vollständige Text der Meldung lautet:
Error parsing JSON response for external function ... Error: top-level JSON object must contain "data" JSON array element
- Mögliche Ursache:
Möglicherweise haben Sie die Lambda-Proxyintegration für den POST-Befehl nicht in Ihrer API Gateway-Ressource angegeben.
- Mögliche Lösung:
Geben Sie die Lambda-Proxyintegration für Ihre API Gateway-Ressource an.
Weitere Informationen zur Lambda-Proxyintegration finden Sie in den Schritten unter API Gateway-Endpunkt erstellen.
Request failed for external function EXT_FUNC with remote service error: 403 ‚{„message“:“Forbidden“}‘;¶
- Mögliche Ursache:
Der Proxydienst benötigt einen API-Schlüssel, typischerweise zur Authentifizierung oder Abrechnung. Der API-Schlüssel fehlt oder ist falsch.
- Mögliche Lösung:
Verwenden Sie den Befehl ALTER API INTEGRATION, um den korrekten API-Schlüssel anzugeben.
Erstellung des CloudFormation-Stacks schlägt fehl¶
Dieser Fehler kann auftreten, wenn Sie zum Erstellen einer externen Funktion eine AWS-CloudFormation-Vorlage verwenden.
- Mögliche Ursache:
Sie verfügen nicht über die erforderlichen Berechtigungen zum Erstellen der in der CloudFormation-Vorlage angegebenen Ressourcen.
- Mögliche Lösung:
Öffnen Sie die Registerkarte Events des Stacks, um die Fehlerdetails zu prüfen.
Schauen Sie auch auf die Seite zur Problembehandlung von externen AWS-Funktionen, auf der Sie weitere Tipps zur Problembehandlung finden.