Étape 1 : créer le service distant (fonction Google Cloud) dans la console

Cette rubrique fournit des instructions détaillées sur la création d’une fonction Google Cloud à utiliser comme service distant pour votre fonction externe.

Dans ce chapitre :

Étape précédente

Planification d’une fonction externe pour GCP

Créer la fonction Google Cloud

Créez la fonction en suivant les instructions de Google pour créer une fonction Cloud .

Si vous créez la fonction en utilisant l’exemple de fonction en langage Python fourni par Snowflake, choisissez Python Quickstart ; sinon, choisissez le QuickStart approprié en fonction du langage que vous utilisez.

Lorsque vous suivez les instructions de Google, assurez-vous de faire ce qui suit :

  1. Spécifiez que le déclencheur de la fonction est HTTP.

  2. Copiez l” URL du déclencheur dans le champ Cloud Function Trigger URL de votre feuille de calcul de suivi.

  3. Dans la section Authentication, sélectionnez Require authentication.

    Les instructions de GCP disent de sélectionner Allow unauthenticated invocations. Cela est acceptable pour les fonctions d’exemple, y compris la fonction d’exemple fournie par Snowflake, mais la plupart des systèmes de production devraient exiger une authentification.

  4. Si Require HTTPS n’est pas déjà activé, alors activez-le.

  5. Cliquez sur Save.

  6. Sélectionnez le Runtime approprié. Si vous créez l’exemple de fonction Python fourni par Snowflake, choisissez un moteur d’exécution Python 3.7.

    Important

    Sélectionnez la valeur Runtime avant de coller le code.

  7. Remplacez le code par défaut par l’exemple de code Snowflake ou par votre propre code personnalisé. L’exemple de code Snowflake est fourni dans Exemple de fonction synchrone Google Cloud (dans cette rubrique).

  8. Assurez-vous que le Entry point correspond au nom de la fonction (dans ce cas, echo).

Tester la fonction Google Cloud

Après avoir terminé la création de la fonction Google Cloud, utilisez l’onglet Testing pour appeler la fonction et vous assurer qu’elle fonctionne comme prévu.

Pour l’exemple de fonction Python fournie par Snowflake, utilisez les données de test suivantes (remplacez toutes les données par défaut dans l’onglet Testing par les données ci-dessous) :

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

Les résultats d’exécution doivent être similaires à ceci :

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

Les résultats peuvent s’afficher dans un format différent de l’exemple présenté ci-dessus.

Si le test a fonctionné, vous disposez maintenant d’une fonction Google Cloud que vous pouvez utiliser comme service distant pour votre fonction externe.

Exemple de fonction synchrone Google Cloud

Cet exemple de code combine les valeurs de paramètre d’entrée dans une liste unique (tableau) et renvoie cette liste comme une valeur unique de type SQL VARIANT. Le code est écrit en Python 3.7.

Cette fonction accepte et renvoie les données au même format (JSON) que celui envoyé et lu par Snowflake.

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

Pour plus d’informations sur les formats de données, voir Formats des données d’entrée et de sortie des services à distance .

Étape suivante

Étape 2 : Créer le service proxy (Google Cloud API Gateway) dans la console