ステップ2: プロキシサービス(Google Cloud API Gateway)を作成して構成する

これらの手順は、プロキシサービスとして使用できるGoogle Cloud API Gatewayへのアクセス方法を示しています。

Snowflakeは、データ(HTTP POST リクエスト)をリモートサービス(例: GCP Cloud Function)に直接送信しません。代わりに、Snowflakeは、Snowflakeからリモートサービスにデータを中継し、リモートサービスからSnowflakeにデータを中継するプロキシサービスにデータを送信します。Snowflakeは、 GCP でプロキシサービスとしてのGoogle Cloud API Gatewayをサポートしています。

このトピックの内容:

リクエストをCloud FunctionにルーティングするためのGoogle Cloud API Gatewayを作成する

Google Cloud Consoleを使用する場合、実行する具体的なステップは次のとおりです。

  1. 構成ファイルを作成することにより、 API 定義を作成します。

  2. API Gatewayを作成します。

    1. API を作成します。

    2. API Configを作成します。

    3. API ConfigでGatewayを作成します。

これらのステップについては、以下で詳しく説明します。

API 定義を作成する

ローカルファイルシステムで、作成する API を指定する YAML 形式の構成ファイルを作成してカスタマイズします。ファイルの拡張子は、 .yaml または .yml である必要があります。構成ファイルのテンプレートは次のとおりです。

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

次のフィールドに入力または更新します。

  1. < PATH > を一意の名前に置き換えます。これは URLs に組み込まれるため、 URLs で有効な文字のみを使用してください。たとえば、 demo-func-resource と入力します。

    <PATH> の場合は、この構成ファイルの他のフィールドとは異なり、コロンの後ではなく、コロンの前に値を入力する必要があることに注意してください。たとえば、次は適切です。

    paths:
      /demo-func-resource:
    

    パス名には、 パスパラメーター を含めることはできません。(Googleは、 パスを URL に設定する ときに、パスパラメーターをサポートします。ただし、Snowflakeは、 CREATE EXTERNAL FUNCTION ステートメントで指定された対応する URL のパスパラメーターをサポートしていません。)

  2. 直前のステップ(例: demo-func-resource)の path をワークシートの「Path Suffix」フィールドにコピーします。

  3. x-google-backend フィールドの下にある address フィールドを見つけ、 <HTTP ENDPOINT TO ROUTE REQUEST TO> をワークシートの「Cloud Function Trigger URL」フィールドの値に置き換えます。結果は次のようになります。

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

    URL の前後には引用符を付けないでください。

    URL は、Googleがホストするエンドポイントだけでなく、任意の HTTP エンドポイントへのパスにすることができます。

    リモートサービスを作成 したときに Require HTTPS を選択した場合は、 address`フィールドに入力する URL が :code:`https で始まることを確認してください。

  4. オプションで、次のいずれも更新することができます。

    • info セクションにある title

    • info セクションにある description

    • paths セクションの post サブセクションにある operationId

    • paths セクションの post サブセクションにある summary

  5. サンプル構成ファイルを確認します。次のようになります。

    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. この構成ファイルを保存します。

  7. ワークシートの「Configuration File Name」フィールドに、ファイルのパスと名前を記録します。

API 構成ファイルの詳細については、次の GCP ドキュメントをご参照ください。

API Gatewayを作成する

API を作成する

このステップでは、 GCP API を作成します。これは、1つ以上の API Gatewayと1つ以上の構成ファイルを含むことができるコンテナーです。

  1. まだそうしていない場合は、 GCP メニューをクリックして API Gateway を選択し、Google Cloud API Gateway画面に移動します。

  2. CREATE GATEWAY をクリックします。

  3. Display NameAPI ID を入力します(例: demo-api-display-name-for-external-function1demo-api-id-for-external-function1)。

    外部関数の作成では後でこれらを入力する必要がないため、ワークシートに記録する必要はありません。ただし、 API ID を記録して、使い終わったら削除できるようにすることもできます。

API Configを作成する

構成ファイルを GCP にアップロードすると、 API Config が作成されます。

  1. 画面の API Config セクションまでスクロールします。

  2. Upload an API Spec を含むフィールドを検索します。

    BROWSE をクリックして、構成ファイルを選択します。構成ファイルの名前は、ワークシートの「Configuration File Name」フィールドに記録されています。

  3. Display Name を含むフィールドに表示名を入力します。

  4. サービスアカウントを選択します。

    サンプル関数を作成した場合は、 Select a Service Account を含むフィールドで App Engine default service account を選択します。

    (サンプルとしてではなく)実稼働環境で使用する関数を作成している場合は、別のサービスアカウントを選択することもできます。

    選択したサービスアカウントには、クラウド関数を呼び出す権限など、適切な権限が必要です。

API ConfigでGatewayを作成する

  1. 画面の Gateway details セクションまでスクロールします。

  2. 新しい API Gatewayの Display Name を入力します。

  3. Location フィールドをクリックして、適切なリージョン(例: us-central1)を選択します。

  4. CREATE GATEWAY をクリックします。

    これにより、 APIs 画面が表示され、 APIs のリストが表示されます。

    新しい API がすぐに表示されない場合は、数分待ってから Refresh ボタンをクリックします。

  5. API の Managed Service の値をワークシートの「Managed Service Identifier」フィールドにコピーします。

  6. この時点で、 APIs のリストが表示されます。API の名前をクリックします。

    OVERVIEWDETAILSCONFIGS、および GATEWAYS のタブ4つが表示されます。

  7. GATEWAYS タブをクリックします。

  8. Gateway URL をワークシートの「Gateway Base URL」フィールドにコピーします。

次のステップ

次のステップに進みます。

ステップ3: Snowflakeで GCP 用の API 統合を作成する