É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¶
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 :
Spécifiez que le déclencheur de la fonction est HTTP.
Copiez l” URL du déclencheur dans le champ
Cloud Function Trigger URL
de votre feuille de calcul de suivi.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.
Si Require HTTPS n’est pas déjà activé, alors activez-le.
Cliquez sur Save.
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.
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).
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" ] ] }
Les résultats d’exécution doivent être similaires à ceci :
{"data": [ [0, [43, "page"] ], [1, [42, "life, the universe, and everything"] ] ] }
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)
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