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 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.

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.
Copy
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: 403 ‚{„Message“:“User: <ARN> is not authorized to perform: execute-api:Invoke“}‘

Der vollständige Text der Meldung lautet:

Request failed for external function <function_name>.
Error: 403 '{"Message":"User: <ARN> is not authorized to perform: execute-api:Invoke on resource: <MethodRequestARN>"}'
Copy
Mögliche Ursache
  • Die API Gateway-Ressourcenrichtlinie hat:

    • Den falschen IAM-Rollen-ARN.

    • Die falsch angenommene Rolle.

    • Den falschen Methodenanforderungs-ARN.

  • Der IAM-Rolle ist nicht die richtige Richtlinie zugeordnet.

Mögliche Lösung
  • Stellen Sie sicher, dass Sie die Ressourcenrichtlinienvorlage in Amazon API Gateway-Endpunkt sichern befolgt haben. Stellen Sie insbesondere sicher, dass für Ihre Ressourcenrichtlinie Folgendes gilt:

    • Der Wert <12-digit number> wurde durch den Wert im Feld Your AWS account ID des Arbeitsblatts ersetzt.

    • Der Wert <external_function_role> wurde durch den Wert im Feld New IAM Role Name des Arbeitsblatts ersetzt.

    • Der method_request_ARN-Name im Feld Resource wurde durch den Wert im Feld Method Request ARN des Arbeitsblatts ersetzt. Achten Sie darauf, dass am Ende kein Schrägstrich steht.

  • Wenn Sie sicherstellen müssen, dass der IAM-Rolle die korrekte Berechtigungsrichtlinie zugeordnet ist, können Sie die Liste der Berechtigungsrichtlinien der Rolle erhalten, indem Sie die folgenden Schritte ausführen:

    1. Gehen Sie in AWS zu Identitäts- und Zugriffsmanagement (IAM), und wählen Sie die Rolle aus.

    2. Zeigen Sie die Summary für die Rolle an.

    3. Klicken Sie auf die Registerkarte Permissions.

    4. Überprüfen Sie, ob die gewünschte Richtlinie in der Liste Permissions policies enthalten ist.

  • Stellen Sie sicher, dass der aufgerufene Endpunkt die Ressource und nicht der Stagingbereich ist, der auf dem API Gateway eingerichtet ist.

Error: 403 ‚{„Message“:“User: anonymous is not authorized to perform: execute-api:Invoke“}‘

Der vollständige Text der Meldung lautet:

Request failed for external function <function_name>.
Error: 403 '{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: <MethodRequestARN>"}'
Copy
Mögliche Ursache

Eine mögliche Ursache ist, dass Sie bei der Konfiguration der Autorisierung für das API Gateway nicht angegeben haben, dass der Method Request eine AWS_IAM-Autorisierung für die Ressource benötigt.

Mögliche Lösung

Wenn Sie die Anweisungen zum Sichern des Amazon API Gateway nicht befolgt haben, dann befolgen Sie diese jetzt, um die AWS_IAM-Autorisierung anzugeben.

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
Copy
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.