Schritt 1: Remotedienst (AWS Lambda-Funktion) in der Management Console erstellen¶
Unter diesem Thema finden Sie eine Anleitung zum Erstellen einer AWS Lambda-Funktion zur Verwendung als Remotedienst für Ihre externe Funktion.
Unter diesem Thema wird Code für eine Lambda-Beispielfunktion bereitgestellt, die Sie unverändert verwenden können, um Ihre erste externe Funktion zu erstellen, oder die Sie als Ausgangspunkt für eine benutzerdefinierte Lambda-Funktion verwenden können.
Unter diesem Thema:
Vorheriger Schritt¶
Einführung¶
Es gibt mehrere Möglichkeiten, einen Remotedienst auf AWS zu erstellen. Unter diesem Thema wird eine Möglichkeit gezeigt, wie Sie eine Lambda-Funktion erstellen, die als Remotedienst verwendet wird.
In diesem Tutorial werden zwei Lambda-Beispielfunktionen beschrieben, die jeweils in Python geschrieben sind.
Weitere Einzelheiten finden Sie in Snowflake-Beispielfunktionen (unter diesem Thema).
Erläuterungen zur Ein- und Ausgabe von Lambda-Funktionen¶
Damit Snowflake Daten an Ihren Remotedienst senden und von diesem empfangen kann, muss Ihr Remotedienst Daten im JSON-Format akzeptieren und zurückgeben.
Plattformunabhängige Informationen zur Eingabe und Ausgabe des Remotedienstes finden Sie unter Eingangs- und Ausgangsdatenformate von Remotediensten.
Dieser Abschnitt enthält Details, die spezifisch für AWS Lambda-Funktionen sind.
Sprachunabhängige Ein- und Ausgabe über JSON¶
Die Informationen in diesem Abschnitt gelten für alle Lambda-Funktionen, die als Remotedienste für externe Snowflake-Funktionen verwendet werden. Plattformspezifische Informationen zur Eingabe und Ausgabe der externen Funktion finden Sie in den folgenden Unterabschnitten.
Bei AWS besteht die Konvention für einen HTTP-kompatiblen Dienst darin, den Text innerhalb eines JSON-Objekts zurückzugeben, das auch den HTTP-Statuscode enthält. Der JSON-Text für den typischen Rückgabewert einer AWS Lambda-Funktion sieht wie folgt aus:
{ "statusCode": <http_status_code>, "body": { "data": [ [ 0, <value> ], [ 1, <value> ] ... ] } }
Die Struktur des JSON-Eingangs ist ähnlich wie die vorhergehende, enthält aber zusätzliche Schlüssel-Wert-Paare, die Sie wahrscheinlich nicht benötigen, und schließt die statusCode
aus.
Python-spezifische Lambda-Funktionseingabe¶
Das folgende Material gilt für Snowflake-kompatible Lambda-Funktionen in der Sprache Python, einschließlich der Lambda-Beispielfunktionen im Tutorial. Diese Information wird zusätzlich zu den sprachunabhängigen Regeln für Ein- und Ausgabe.
Eine Snowflake-kompatible Lambda-Funktion in der Python-Sprache erhält zwei Parameter, event
und context
. Einfache externe Funktionen benötigen typischerweise nur den Parameter event
.
Der Parameter event
enthält viele Unterfelder, von denen eines body
ist. Der Körper ist eine JSON-kompatible Zeichenfolge, die ein Wörterbuch enthält.
Das Wörterbuch enthält einen Schlüssel namens data
. Der entsprechende Wert für data
ist ein Array. Dieses Array enthält die von Snowflake übergebenen Zeilen.
Jede Zeile wird durch ein Array dargestellt, das innerhalb des Arrays data
verschachtelt ist.
(Da AWS Lambda die von Snowflake gesendete HTTP-POST-Anforderung verarbeitet, den Text extrahiert und den Text innerhalb des Ereignisparameters übergibt, muss diese von Snowflake bereitgestellte Beispielfunktion nicht die gesamte HTTP-POST-Anforderung parsen.)
Der Beispiel für eine synchrone Lambda-Funktion enthält Code, der zeigt, wie der Parameter event
zu lesen ist.
Code für die Lambda-Funktion wählen¶
Snowflake-Beispielfunktionen¶
Snowflake stellt zwei Beispielfunktionen bereit:
Das kürzere Beispiel ist synchron. Wenn Sie neu im Umgang mit externen Funktionen oder Lambda-Funktionen sind, empfiehlt Snowflake, dass Sie damit Ihre erste externe Beispielfunktion erstellen.
Erfahrene Benutzer können es auch kopieren und ändern, um es als Ausgangspunkt für benutzerdefinierte Remotedienste zu verwenden.
Der Code ist in Beispiel synchrone Lambda-Funktion verfügbar.
Das andere Beispiel ist asynchron.
Dieses Beispiel ist in erster Linie als Beispiel für die Erstellung angepasster asynchroner Remotedienste gedacht.
Der Code ist unter Asynchrone Lambda-Beispielfunktion verfügbar.
Benutzerdefinierte Lambda-Funktion¶
Sie können Ihre eigene Lambda-Funktion von Grund auf neu schreiben, oder Sie können eine der Funktionen verwenden, die unter Snowflake-Beispielfunktionen (unter diesem Thema) als Ausgangspunkt beschrieben sind.
Wenn Sie einen vorhandenen Remotedienst verwenden möchten, können Sie den Großteil der Anweisungen in diesem Schritt des Lernprogramms überspringen. Gehen Sie stattdessen wie folgt vor:
Notieren Sie sich Ihre AWS-Konto-ID auf dem Arbeitsblatt unter
Your AWS Account ID
.Notieren Sie sich den Namen der Lambda-Funktion des Remotedienstes auf dem Arbeitsblatt unter
Lambda Function Name
.Rufen Sie Schritt 2: Proxydienst (Amazon API Gateway) in der AWS Management Console erstellen auf.
Lambda-Funktion erstellen¶
Führen Sie die folgenden Schritte aus, um eine AWS Lambda-Funktion zu erstellen:
Bemerkung
Obwohl diese Schritte zeigen, wie Sie die von Snowflake bereitgestellten Beispiel-Remotedienste erstellen, können Sie diese Schritte als Modell für die Erstellung Ihres eigenen angepassten Remotedienstes verwenden. Wenn Sie eine benutzerdefinierte Lambda-Funktion erstellen, passen Sie die folgenden Schritte entsprechend an (wählen Sie z. B. die passende Programmiersprache für den Code Ihres Remotedienstes).
Melden Sie sich bei der AWS Management Console an, falls Sie dies noch nicht getan haben.
Notieren Sie sich Ihre AWS-Konto-ID auf dem Arbeitsblatt unter
Your AWS Account ID
.Wenn Sie Ihre AWS-Konto-ID suchen müssen, befolgen Sie die AWS-Anleitung.
Wählen Sie Lambda aus.
Wählen Sie Create function aus.
Geben Sie einen Funktionsnamen ein.
Notieren Sie sich diesen Namen auf dem Arbeitsblatt unter
Lambda Function Name
.Wählen Sie die zu verwendende Programmiersprache aus. Wenn Sie eine der von Snowflake bereitgestellten Python-Beispielfunktionen verwenden, dann wählen Sie Python 3.8 aus.
Wählen Sie eine Ausführungsrolle für diese Funktion aus, oder erstellen Sie diese.
Wählen Sie die entsprechenden Optionen aus, normalerweise Create a new role with basic Lambda permissions zum Erstellen einer neuen Rolle mit grundlegenden Lambda-Berechtigungen.
(Diese Rolle ist von der Rolle Ihres Cloudkontos und von Ihren Snowflake-Rollen getrennt.)
Klicken Sie auf die Schaltfläche Create Function.
Geben Sie auf der Registerkarte lambda_function den Code für die Funktion ein.
Wenn Sie nicht bereits eine eigene Funktion geschrieben haben, können Sie das folgende von Snowflake bereitgestellte Beispiel verwenden:
Tipp
Wenn Sie nichts in das Bearbeitungsfenster einfügen können, versuchen Sie einen Doppelklick auf dem Dateinamen der Funktion, um die Bearbeitung zu aktivieren.
Klicken Sie auf die Schaltfläche Deploy, um die Funktion bereitzustellen.
Lambda-Funktion testen¶
Klicken Sie auf den Pfeil nach unten neben der Schaltfläche Test, und wählen Sie Configure test event aus. In das Feld Event name geben Sie test ein.
Verwenden Sie für die von Snowflake bereitgestellte Python-Beispielfunktion die folgenden Testdaten (ersetzen Sie alle Standarddaten durch die folgenden Daten):
{ "body": "{ \"data\": [ [ 0, 43, \"page\" ], [ 1, 42, \"life, the universe, and everything\" ] ] }" }
Klicken Sie auf Create und dann auf Test.
Das Ausführungsergebnis sollte ungefähr wie folgt aussehen:
{ "statusCode": 200, "body": "{\"data\": [[0, [\"Echoing inputs:\", 43, \"page\"]], [1, [\"Echoing inputs:\", 42, \"life, the universe, and everything\"]]]}" }
Sie verfügen nun über eine AWS Lambda-Funktion, die Sie als Remotedienst für Ihre externe Funktion verwenden können.
Nächster Schritt¶
Schritt 2: Proxydienst (Amazon API Gateway) in der AWS Management Console erstellen