Schritt 1: Remotedienst (Google Cloud Function) erstellen

Diese Anleitung zeigt, wie Sie eine Google Cloud Function erstellen, die Sie als Remotedienst verwenden können.

Diese Dokumentation setzt voraus, dass Sie bereits mit der GCP-Administration vertraut sind. In dieser Anleitung werden die allgemeinen Schritte beschrieben, die Sie ausführen müssen, aber nicht die Benutzeroberfläche im Detail, da sich die Benutzeroberfläche ändern kann.

Google bietet auch eine Befehlszeilenschnittstelle, die Sie für viele dieser Schritte verwenden können. Details dazu finden Sie in der Dokumentation zu GCP.

Unter diesem Thema:

Google Cloud Function erstellen

Anweisungen zum Erstellen einer Google Cloud Function

  1. Erstellen Sie eine Google Cloud Function, indem Sie die Anleitung von Google zum Erstellen einer Cloud Function befolgen. Wenn Sie die von Snowflake bereitgestellt Beispielfunktion in der Sprache Python erstellen, wählen Sie Python Quickstart aus. Wählen Sie ansonsten den entsprechenden QuickStart auf der Grundlage der von Ihnen benötigten Sprache aus. Wenn Sie den Anweisungen von Google folgen, stellen Sie sicher, dass Sie Folgendes tun:

    • Geben Sie an, dass der Trigger der Funktion vom Typ HTTP ist.

    • Kopieren Sie den URL-Trigger in das Feld „Cloud Function Trigger URL“ im Arbeitsblatt oben.

    • Wählen Sie im Abschnitt Authentication die Option Require authentication aus.

      Die GCP-Anleitung gibt an, dass Allow unauthenticated invocations ausgewählt werden soll. Das ist für Beispielfunktionen wie der von Snowflake bereitgestellten Beispielfunktion akzeptabel, aber für die meisten Produktionssysteme sollte eine Authentifizierung angefordert werden.

    • Stellen Sie sicher, dass Require HTTPS aktiviert ist.

    • Klicken Sie auf Save.

    • Wählen Sie die entsprechende Runtime aus. Wenn Sie die von Snowflake mitgelieferte Python-Beispielfunktion erstellen, dann wählen Sie die Python 3.7-Laufzeit aus.

      Wichtig

      Wählen Sie den entsprechenden Runtime-Wert aus, bevor Sie den Code einfügen.

    • Ersetzen Sie den Standardcode entweder durch den Snowflake-Beispielcode oder durch Ihren eigenen benutzerdefinierten Code. Der Snowflake-Beispielcode befindet sich unter Beispiel für eine synchrone Google Cloud Function.

    • Achten Sie darauf, dass der Wert von Entry point mit dem Namen der Funktion (in diesem Fall echo) übereinstimmt.

  2. Nachdem Sie die Erstellung der Cloudfunktion abgeschlossen haben, verwenden Sie die Registerkarte Testing, um die Funktion aufzurufen und sicherzustellen, dass sie wie erwartet funktioniert.

    Verwenden Sie für die von Snowflake bereitgestellte Python-Beispielfunktion die folgenden Testdaten (ersetzen Sie alle Standarddaten auf der Registerkarte Testing durch die folgenden Daten):

    { "data":
      [
        [ 0, 43, "page" ],
        [ 1, 42, "life, the universe, and everything" ]
      ]
    }
    

    Die Ausführungsergebnisse sollten ungefähr wie folgt aussehen:

    {"data":
      [
        [0, [43, "page"] ],
        [1, [42, "life, the universe, and everything"] ]
      ]
    }
    

    (Die Ergebnisse werden möglicherweise in einem anderen Format als im oben gezeigten Beispiel angezeigt).

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

Beispiel für eine synchrone Google Cloud Function

Dieser Beispielcode fasst die Werte der Eingangsparameter in einer einzigen Liste (Array) zusammen und gibt diese Liste als einen einzigen Wert vom SQL-Typ VARIANT zurück. Der Code ist in Python 3.7 geschrieben.

Diese Funktion akzeptiert Daten in demselben Format (JSON), das von Snowflake gesendet und gelesen wird. (Weitere Informationen zu Datenformaten finden Sie unter Eingangs- und Ausgangsdatenformate von Remotediensten).

import json

HTTP_SUCCESS = 200
HTTP_FAILURE = 400

def echo(request):
    try:
        # The list of rows to return.
        return_value = []

        payload = request.get_json()
        rows = payload["data"]

        # For each input row
        for row in rows:
            # Include the row number.
            row_number = row[0]
            # Combine the value(s) in the row into a Python list that will be treated as an SQL VARIANT.
            row_value = row[1:]
            row_to_return = [row_number, row_value]
            return_value.append(row_to_return)

        json_compatible_string_to_return = json.dumps( { "data" : return_value } )
        return (json_compatible_string_to_return, HTTP_SUCCESS)

    except:
        return(request.data, HTTP_FAILURE)

Nächster Schritt

Fahren Sie fort mit dem nächsten Schritt:

Schritt 2: Proxydienst (Google Cloud API Gateway) erstellen und konfigurieren