Schritt 2: Proxydienst (Google Cloud API Gateway) erstellen und konfigurieren

Diese Anleitung zeigt, wie Sie ein Google Cloud API Gateway einrichten, das Sie als Proxydienst verwenden können.

Snowflake sendet keine Daten (HTTP-POST-Anforderungen) direkt an den Remotedienst (z. B. GCP Cloud Function). Stattdessen sendet Snowflake die Daten an einen Proxydienst, der die Daten von Snowflake an den Remotedienst und vom Remotedienst zurück an Snowflake leitet. Auf GCP unterstützt Snowflake das Google Cloud API Gateway als Proxydienst.

Unter diesem Thema:

Google Cloud API Gateway zum Weiterleiten von Anforderungen an die Cloud Function

Wenn Sie die Google Cloud Console verwenden, dann müssen Sie die folgenden spezifischen Schritte ausführen:

  1. API-Definition mithilfe einer Konfigurationsdatei erstellen

  2. API-Gateway erstellen

    1. API erstellen

    2. API Config erstellen

    3. Gateway mit der API Config erstellen

Diese Schritte sind im Folgenden genauer dokumentiert.

API-Definition erstellen

Erstellen Sie in Ihrem lokalen Dateisystem eine YAML-formatierte Konfigurationsdatei, die die zu erstellenden API spezifiziert, und passen Sie diese an. Die Datei sollte die Erweiterung .yaml oder .yml haben. Im Folgenden finden Sie eine Vorlage für die Konfigurationsdatei:

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

Füllen Sie die folgenden Felder aus, oder aktualisieren Sie diese:

  1. Ersetzen Sie den Wert für <PATH> durch einen eindeutigen Namen. Dieser Wert wird in URLs übernommen, verwenden Sie also nur Zeichen, die in URLs gültig sind. Geben Sie zum Beispiel demo-func-resource ein.

    Beachten Sie, dass Sie für das Feld <PATH> im Gegensatz zu den anderen Feldern in dieser Konfigurationsdatei den Wert vor dem Doppelpunkt und nicht nach dem Doppelpunkt eingeben müssen. Beispielsweise ist Folgendes korrekt:

    paths:
      /demo-func-resource:
    

    Der Pfadname darf keinen Pfadparameter enthalten. (Google unterstützt beim Einstellen des Pfades auf eine URL Pfadparameter. Snowflake unterstützt jedoch keine Pfadparameter in der entsprechenden URL, die in der CREATE EXTERNAL FUNCTION-Anweisung angegeben wird).

  2. Kopieren Sie den path-Wert aus dem unmittelbar vorangegangenen Schritt (z B. demo-func-resource) in das Feld „Pfad Suffix“ des Arbeitsblatts.

  3. Suchen Sie das Feld address unter dem Feld x-google-backend, und ersetzen Sie <HTTP ENDPOINT TO ROUTE REQUEST TO> durch den Wert im Feld „Cloud Function Trigger URL“ des Arbeitsblatts. Das Ergebnis sollte in etwa wie folgt aussehen:

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

    Die URL darf nicht in Anführungszeichen gesetzt werden.

    Die URL kann der Pfad zu einem beliebigen HTTP-Endpunkt sein, also nicht nur zu einem von Google gehosteten Endpunkt.

    Wenn Sie bei der Erstellung des Remotedienstes die Option Require HTTPS ausgewählt haben, stellen Sie sicher, dass die URL, die Sie in das Feld address eingeben, mit https beginnt.

  4. Optional können Sie jeden der folgenden Werte aktualisieren:

    • Der Titel title im Abschnitt info.

    • Die Beschreibung description im Abschnitt info.

    • Die operationId im Unterabschnitt post des Abschnitts paths.

    • Die Zusammenfassung summary im Unterabschnitt post des Abschnitts paths.

  5. Überprüfen Sie Ihre Beispielkonfigurationsdatei. Diese sollte ungefähr wir folgt aussehen:

    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. Speichern Sie die Konfigurationsdatei.

  7. Tragen Sie den Pfad und den Namen der Datei in das Feld „Configuration File Name“ des Arbeitsblatts ein.

Wenn Sie mehr über die API-Konfigurationsdatei erfahren möchten, lesen Sie die folgende GCP-Dokumentation:

API-Gateway erstellen

API erstellen

In diesem Schritt wird eine GCP-API erstellt, die ein Container ist, der mehrere API-Gateways und mehrere Konfigurationsdateien enthalten kann.

  1. Wenn Sie dies noch nicht getan haben, wechseln Sie auf den Google Cloud-API-Gateway-Bildschirm, indem Sie auf das GCP-Menü klicken und API Gateway auswählen.

  2. Klicken Sie auf CREATE GATEWAY.

  3. Geben Sie den Display Name und die API ID ein (z. B. demo-api-display-name-for-external-function1 und demo-api-id-for-external-function1).

    Diese brauchen Sie nicht in das Arbeitsblatt einzutragen, da Sie diese später zur Erstellung Ihrer externen Funktion nicht mehr benötigen. Sie sollten sich jedoch die API-ID notieren, damit Sie sie löschen können, wenn Sie damit fertig sind.

API Config erstellen

Laden Sie Ihre Konfigurationsdatei auf GCP hoch, wodurch eine API Config bereitgestellt wird.

  1. Scrollen Sie auf dem Bildschirm zum Abschnitt API Config.

  2. Suchen Sie nach dem Feld, das Upload an API Spec enthält.

    Klicken Sie auf BROWSE, und wählen Sie Ihre Konfigurationsdatei aus. Der Name Ihrer Konfigurationsdatei ist im Feld „Configuration File Name“ des Arbeitsblatts eingetragen.

  3. Geben Sie in das Feld Display Name einen Anzeigenamen ein.

  4. Wählen Sie ein Dienstkonto aus.

    Wenn Sie die Beispielfunktion erstellt haben, dann wählen Sie in dem Feld Select a Service Account die Option App Engine default service account aus.

    Wenn Sie eine Funktion erstellen, die in der Produktion verwendet werden soll (und nicht als Beispiel), können Sie ein anderes Dienstkonto auswählen.

    Das ausgewählte Dienstkonto muss über entsprechende Berechtigungen verfügen, einschließlich der Berechtigung zum Aufrufen der Cloudfunktion.

Gateway mit der API Config erstellen

  1. Scrollen Sie auf dem Bildschirm zum Abschnitt Gateway details.

  2. Geben Sie den Wert von Display Name des neuen API-Gateways ein.

  3. Klicken Sie in das Feld Location, und wählen Sie die entsprechende Region (z. B. us-central1) aus.

  4. Klicken Sie auf CREATE GATEWAY.

    Dadurch gelangen Sie zum Bildschirm APIs, auf der eine Liste Ihrer APIs angezeigt wird.

    Wenn Ihre neue API nicht sofort sichtbar ist, warten Sie einige Minuten, und klicken Sie dann auf die Schaltfläche Refresh.

  5. Kopieren Sie den Managed Service-Wert der API in das Feld „Managed Service Identifier“ des Arbeitsblatts.

  6. An diesem Punkt sollte noch eine Liste Ihrer APIs angezeigt werden. Klicken Sie auf den Namen der API.

    Es müssen vier Registerkarten angezeigt werden: OVERVIEW, DETAILS, CONFIGS und GATEWAYS.

  7. Klicken Sie auf die Registerkarte GATEWAYS.

  8. Notieren Sie sich die Gateway URL auf dem Arbeitsblatt im Feld „Gateway Base URL“.

Nächster Schritt

Fahren Sie fort mit dem nächsten Schritt:

Schritt 3: API-Integration für GCP in Snowflake erstellen