Étape 2 : Créer le service proxy (Google Cloud API Gateway) dans la console¶
Snowflake n’envoie pas de données (requêtes HTTP POST) directement à un service distant. Au lieu de cela, Snowflake envoie les données à un service proxy qui relaie les données de Snowflake au service distant (c’est-à-dire GCP Cloud Function) et vice-versa.
Cette rubrique fournit des instructions pour la création et la configuration d’une Google Cloud API Gateway à utiliser comme service proxy pour votre fonction externe.
Dans ce chapitre :
Étape précédente¶
Étape 1 : créer le service distant (fonction Google Cloud) dans la console
Créer une définition API¶
Sur votre système de fichiers local, créez et personnalisez un fichier de configuration au format YAML qui spécifie l’API que vous êtes en train de créer. Le fichier doit avoir l’extension .yaml
ou .yml
.
Modèle de fichier de configuration :
swagger: '2.0'
info:
title: API Gateway config for Snowflake external function.
description: This configuration file connects the API Gateway resource to the remote service (Cloud Function).
version: 1.0.0
schemes:
- https
produces:
- application/json
paths:
/<PATH>:
post:
summary: Echo the input.
operationId: echo
x-google-backend:
address: <HTTP ENDPOINT TO ROUTE REQUEST TO>
protocol: h2
responses:
'200':
description: <DESCRIPTION>
schema:
type: string
Remplissez ou mettez à jour les champs suivants :
Remplacez
<PATH>
par un nom unique. Il sera incorporé dans les URLs, donc n’utilisez que des caractères valides dans les URLs. Par exemple, entrezdemo-func-resource
.Notez que, contrairement aux autres champs de ce fichier de configuration, vous devez saisir la valeur
<PATH>
avant les deux-points, plutôt qu’après les deux-points. Par exemple, ce qui suit est correct :paths: /demo-func-resource:
Le nom du chemin ne doit pas contenir de paramètres de chemin . Google prend en charge les paramètres de chemin lorsque vous définissez le chemin d’accès à une URL . Cependant, Snowflake ne prend pas en charge les paramètres de chemin dans l’URL correspondante spécifiée dans l’instruction CREATE EXTERNAL FUNCTION.
Copiez le chemin (par exemple,
demo-func-resource
) de l’étape précédente dans le champPath Suffix
de votre feuille de calcul de suivi.Trouvez le champ
address
sous le champx-google-backend
et remplacez<HTTP ENDPOINT TO ROUTE REQUEST TO>
par la valeur du champCloud Function Trigger URL
de votre feuille de calcul de suivi. Le résultat devrait ressembler à ceci :x-google-backend: address: https:// ...
L’URL ne doit pas être placée entre guillemets.
L’URL ne doit pas nécessairement être un point de terminaison hébergé par Google ; elle peut être le chemin d’accès à n’importe quel point de terminaison HTTP.
Si vous avez sélectionné Require HTTPS dans Étape 1 : créer le service distant (fonction Google Cloud) dans la console, assurez-vous que l’URL que vous entrez dans le champ
address
commence parhttps
.En option, vous pouvez mettre à jour l’une des valeurs suivantes :
title
dans la sectioninfo
.description
dans la sectioninfo
.operationId
dans la sous-sectionpost
de la sectionpaths
.summary
dans la sous-sectionpost
de la sectionpaths
.
Examinez votre exemple de fichier de configuration Cela devrait ressembler à ce qui suit :
swagger: '2.0' info: title: "API Gateway config for Snowflake external function" description: "This configuration file connects the API Gateway resource to the remote service (Cloud Function)." version: 1.0.0 schemes: - https produces: - application/json paths: /demo-func-resource: post: summary: "echo the input" operationId: echo x-google-backend: address: https://my_dev.cloudfunctions.net/demo-cloud-function-01 protocol: h2 responses: '200': description: echo result schema: type: string
Note
Cette configuration laissera votre passerelle ouverte au public jusqu’à ce que vous la sécurisiez dans Étape 5 : Créez une politique de sécurité GCP pour le proxy de service dans la Console de ce tutoriel.
En option, pour vous assurer que personne ne peut utiliser votre passerelle pendant ce temps, ajoutez une définition de sécurité au fichier de configuration qui utilise un nom de compte de service temporaire et non valide (
google_service_account
) comme décrit dans cette étape facultative. L’ajout de cette définition de sécurité à cette étape signifie que vous ne pouvez pas tester votre fonction externe tant que vous n’avez pas fini de configurer la sécurité dans Étape 5 : Créez une politique de sécurité GCP pour le proxy de service dans la Console. Plus précisément, l’instruction de tester votre fonction externe dans Étape 4 : Créer la fonction externe pour GCP dans Snowflake ne fonctionnera pas encore.Ajoutez la section
securityDefinitions
suivante immédiatement au-dessus de la sectionschemes
du fichier de configuration et au même niveau d’indentation.securityDefinitions: <security-def-name>: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "google_service_account" x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/google_service_account"
Remplacez
<nom-def-securite>
par un nom de définition de sécurité unique (par exemple,snowflakeAccess01
).Enregistrez ce nom dans le champ
Security Definition Name
de votre feuille de calcul de suivi.
Mettez à jour la section
post:
du fichier de configuration pour faire référence à la définition de sécurité que vous avez créée ci-dessus. Sous le champoperationId
, ajoutez :security: - <security-def-name>: []
Assurez-vous que l’indentation est au même niveau que le champ
operationId
.Remplacez
<security-def-name>
par la valeur du champSecurity Definition Name
de votre feuille de calcul de suivi.Veillez à inclure un trait d’union et un blanc avant le nom de la définition de sécurité, comme indiqué ci-dessus.
Veillez à inclure les accolades vides (
[]
) après les deux-points.
Par exemple :
paths: /demo-func-resource: post: summary: "echo the input" operationId: echo security: - snowflakeAccess01: [] x-google-backend: address: https://my_dev.cloudfunctions.net/demo-cloud-function-01 protocol: h2
Enregistrez le fichier de configuration.
Enregistrez le chemin et le nom du fichier dans le champ
Configuration File Name
de votre feuille de calcul de suivi.
Pour en savoir plus sur le fichier de configuration API, consultez la documentation GCP suivante :
Créer une passerelle API Gateway¶
Pour créer une passerelle API Gateway :
Créer une API GCP.
Créer une configuration API.
Créer une passerelle avec la configuration API.
Créer une API GCP¶
Cette étape crée une API GCP, qui est un conteneur pouvant contenir une ou plusieurs passerelles API Gateway et un ou plusieurs fichiers de configuration :
Si vous ne l’avez pas encore fait, accédez à l’écran Google Cloud API Gateway en cliquant sur le menu GCP et en sélectionnant API Gateway.
Cliquez sur CREATE GATEWAY.
Entrez le Display Name et l”API ID (par exemple,
demo-api-display-name-for-external-function1
etdemo-api-id-for-external-function1
).Il n’est pas nécessaire d’enregistrer ces valeurs dans votre feuille de calcul de suivi, car vous ne devrez pas les saisir ultérieurement pour créer votre fonction externe. Cependant, vous pourriez vouloir enregistrer l’ID API afin de pouvoir le supprimer lorsque vous n’en aurez plus besoin.
Créer une configuration API¶
Téléchargez votre fichier de configuration vers la console, ce qui crée une Configuration API.
Faites défiler jusqu’à la section API Config de l’écran.
Recherchez le champ qui contient Upload an API Spec.
Cliquez sur BROWSE et sélectionnez votre fichier de configuration. Le nom de votre fichier de configuration a été enregistré dans le champ
Configuration File Name
de votre feuille de calcul de suivi.Entrez un nom d’affichage dans le champ qui contient Display Name.
Sélectionnez un compte de service.
Si vous avez créé l’exemple de fonction, alors dans le champ qui contient Select a Service Account, sélectionnez App Engine default service account.
Si vous créez une fonction destinée à être utilisée en production (plutôt que comme exemple), vous pouvez choisir un compte de service différent.
Le compte de service sélectionné doit disposer des privilèges appropriés, y compris les privilèges permettant d’appeler la fonction Cloud.
Créer une passerelle avec la configuration API¶
Faites défiler jusqu’à la section Gateway details de l’écran.
Entrez le Display Name de la nouvelle passerelle API.
Cliquez dans le champ Location et sélectionnez la région appropriée (par exemple,
us-central1
).Cliquez sur CREATE GATEWAY.
Cela vous amène à l’écran APIs et vous montre une liste de vos APIs.
Si votre nouvelle API n’est pas visible immédiatement, attendez quelques minutes, puis cliquez sur le bouton Refresh.
Copiez la valeur du Managed Service de l’API dans le champ
Managed Service Identifier
de votre feuille de calcul de suivi.À ce stade, vous devriez toujours voir une liste de vos APIs. Cliquez sur le nom de l’API.
Vous devriez voir 4 onglets : OVERVIEW, DETAILS, CONFIGS et GATEWAYS.
Cliquez sur l’onglet GATEWAYS.
Copiez l” Gateway URL dans le champ
Gateway Base URL
de votre feuille de calcul de suivi.