Étape 2 : créer et configurer le service proxy (Google Cloud API Gateway)

Ces instructions montrent comment créer une Google Cloud API Gateway que vous pouvez utiliser comme service proxy.

Snowflake n’envoie pas de données (requêtes HTTP POST) directement au service distant (par exemple, la fonction cloud de GCP). Au lieu de cela, Snowflake envoie les données à un service proxy qui relaie les données de Snowflake au service distant, et du service distant à Snowflake. Sur GCP, Snowflake prend en charge la Google Cloud API Gateway comme service proxy.

Dans ce chapitre :

Créer une Google Cloud API Gateway pour acheminer les demandes vers la fonction cloud.

Si vous utilisez la console Google Cloud, les étapes spécifiques à exécuter sont les suivantes :

  1. Créer une définition API en créant un fichier de configuration.

  2. Créer une passerelle API.

    1. Créer une API.

    2. Créer une configuration API.

    3. Créer une passerelle avec la configuration API.

Ces étapes sont documentées plus en détail ci-dessous.

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. Un modèle de fichier de configuration est présenté ci-dessous :

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 le <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 pour <PATH>, contrairement aux autres champs de ce fichier de configuration, vous devez saisir la valeur 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 un paramètre 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 path de l’étape immédiatement précédente (par exemple demo-func-resource) dans le champ « Suffixe du chemin » de la feuille de calcul.

  3. Trouvez le champ address sous le champ x-google-backend, et remplacez le <HTTP ENDPOINT TO ROUTE REQUEST TO> par la valeur du champ « URL de déclencheur de la fonction Cloud » de la feuille de calcul. Le résultat devrait ressembler à ceci :

    x-google-backend:
      address: https:// ...
    

    L’URL ne doit pas être entourée de guillemets.

    L’URL peut être le chemin d’accès à n’importe quel point de terminaison HTTP, pas seulement un point de terminaison hébergé par Google.

    Si vous avez sélectionné Require HTTPS lorsque vous avez créé le service distant, assurez-vous que l’URL que vous entrez dans le champ address commence par https.

  4. En option, vous pouvez mettre à jour l’un des éléments suivants :

    • Le title dans la section info.

    • Le description dans la section info.

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

    • Le 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 la feuille de calcul.

Si vous souhaitez en savoir plus sur le fichier de configuration API, consultez la documentation GCP suivante :

Créer une passerelle API.

Créer une API

Cette étape crée une API GCP, qui est un conteneur pouvant contenir une ou plusieurs passerelles API 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 de les enregistrer dans la feuille de travail, 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 GCP, 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 la feuille de calcul.

  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 la feuille de calcul.

  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 la Gateway URL dans le champ « URL de base de la passerelle » dans la feuille de calcul.

Étape suivante

Passez à l’étape suivante :

Étape 3 : créer l’intégration API pour GCP dans Snowflake