É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 :

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 :

  1. 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, entrez demo-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.

  2. Copiez le chemin (par exemple, demo-func-resource) de l’étape précédente dans le champ « Suffixe du chemin » de votre feuille de calcul de suivi.

  3. Trouvez le champ address sous le champ x-google-backend, et remplacez <HTTP ENDPOINT TO ROUTE REQUEST TO> par la valeur du champ « URL de déclenchement de la fonction Cloud » dans 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 par https.

  4. En option, vous pouvez mettre à jour l’une des valeurs suivantes :

    • title dans la section info.

    • description dans la section info.

    • operationId dans la sous-section post de la section paths.

    • summary dans la sous-section post de la section paths.

  5. 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
    
  6. Enregistrez le fichier de configuration.

  7. Enregistrez le chemin et le nom du fichier dans le champ « Nom du fichier de configuration » 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 :

  1. Créer une API GCP.

  2. Créer une configuration API.

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

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

  2. Cliquez sur CREATE GATEWAY.

  3. Entrez le Display Name et l”API ID (par exemple, demo-api-display-name-for-external-function1 et demo-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.

  1. Faites défiler jusqu’à la section API Config de l’écran.

  2. 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 « Nom du fichier de configuration » de votre feuille de calcul de suivi.

  3. Entrez un nom d’affichage dans le champ qui contient Display Name.

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

  1. Faites défiler jusqu’à la section Gateway details de l’écran.

  2. Entrez le Display Name de la nouvelle passerelle API.

  3. Cliquez dans le champ Location et sélectionnez la région appropriée (par exemple, us-central1).

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

  5. Copiez la valeur du Managed Service de l’API dans le champ « Identificateur du service géré » de votre feuille de calcul de suivi.

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

  7. Cliquez sur l’onglet GATEWAYS.

  8. Copiez Gateway URL dans le champ « URL de base de Gateway » dans votre feuille de calcul de suivi.