Schritt 1: Remotedienst (Google Cloud Function) über die Konsole erstellen

Unter diesem Thema finden Sie eine Anleitung zum Erstellen einer Google Cloud Function zur Verwendung als Remotedienst für Ihre externe Funktion.

Unter diesem Thema:

Google Cloud Function erstellen

Erstellen Sie eine Google Cloud Function, indem Sie die Anleitung von Google zum Erstellen einer Cloud Function befolgen.

Wenn Sie die von Snowflake bereitgestellte Beispielfunktion in der Sprache Python erstellen, wählen Sie Python Quickstart aus. Wählen Sie andernfalls den entsprechenden QuickStart auf der Grundlage der von Ihnen verwendeten Sprache aus.

Wenn Sie den Anweisungen von Google folgen, stellen Sie sicher, dass Sie Folgendes tun:

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

  2. Kopieren Sie die Trigger-URL in das Feld „Cloud Function Trigger URL“ Ihres Arbeitsblatts.

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

  4. Stellen Sie sicher, dass Require HTTPS aktiviert ist.

  5. Klicken Sie auf Save.

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

  7. Ersetzen Sie den Standardcode entweder durch den Snowflake-Beispielcode oder durch Ihren eigenen benutzerdefinierten Code. Den Snowflake-Beispielcode finden Sie unter Beispiel für eine synchrone Google Cloud Function (unter diesem Thema).

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

Google Cloud Function testen

Nachdem Sie die Erstellung der Google Cloud Function 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 der Test erfolgreich war, 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, und gibt Daten auch in diesem Format zurück.

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)

Weitere Informationen zu Datenformaten finden Sie unter Eingangs- und Ausgangsdatenformate von Remotediensten.