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:

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.

Snowflake bietet zwei Lambda-Beispielfunktionen, 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 von Snowflake bereitgestellten Lambda-Beispielfunktionen. 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:

  1. Notieren Sie sich Ihre AWS-Konto-ID auf dem obigen Arbeitsblatt im Feld „AWS Account ID“.

  2. Notieren Sie sich den Namen der Lambda-Funktion des Remotedienstes auf dem obigen Arbeitsblatt im Feld „Lambda Function Name“.

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

  1. Melden Sie sich bei der AWS Management Console an, falls Sie dies noch nicht getan haben.

  2. Notieren Sie sich Ihre AWS-Konto-ID auf dem Arbeitsblatt im Feld „Your AWS Account ID“.

    Wenn Sie Ihre AWS-Konto-ID suchen müssen, befolgen Sie die AWS-Anleitung.

  3. Wählen Sie Lambda aus.

  4. Wählen Sie Create function aus.

  5. Geben Sie einen Funktionsnamen ein.

    Notieren Sie sich den Namen auf dem obigen Arbeitsblatt im Feld „Lambda Function Name“.

  6. Wählen Sie die zu verwendende Programmiersprache aus. Wenn Sie eine der von Snowflake bereitgestellten Python-Beispielfunktionen verwenden, dann wählen Sie Python 3.7 aus.

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

  8. Klicken Sie auf die Schaltfläche Create Function.

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

  10. Klicken Sie auf die Schaltfläche Deploy, um die Funktion bereitzustellen.

Lambda-Funktion testen

Snowflake empfiehlt dringend, dass Sie Ihre Lambda-Funktion testen.

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\" ] ] }"
}

Das Ausführungsergebnis sollten ungefähr wie folgt aussehen:

{
  "statusCode": 200,
  "body": "{\"data\": [[0, [\"Echoing inputs:\", 43, \"page\"]], [1, [\"Echoing inputs:\", 42, \"life, the universe, and everything\"]]]}"
}

(Das Format kann abweichen.)

Wenn die vorherigen Aktionen erfolgreich waren, haben Sie jetzt eine AWS Lambda-Funktion, die Sie als Remotedienst für Ihre externe Funktion verwenden können.