Snowpipe REST エンドポイントのデータロードの概要

このトピックでは、パブリック REST エンドポイントを呼び出してデータをロードし、ロード履歴レポートを取得する際の使用方法の概要を説明します。

このトピックの内容:

認証

インジェスションサービスはクライアントセッションを維持しないため、パブリックSnowpipe REST エンドポイントへの呼び出しでは、通常のユーザー名/パスワード認証ではなく、キーベースの認証が使用されます。

最小権限の一般原則に従うために、パイプを使用してファイルをインジェストする際に使用する、別個のユーザーとロールを作成することをお勧めします。ユーザーは、このロールを既定のロールとして作成する必要があります。また、ロールには、データをロードするためにターゲットテーブルにファイルを挿入するための必要な最小限の権限セットが必要です。

プロセスフロー

クライアントアプリケーションは、データファイル名のリストと参照されるパイプ名を使用して、パブリック REST エンドポイントを呼び出します(便宜上、JavaおよびPython SDKs を提供)。リストに一致する新しいデータファイルがステージで検出された場合、それらはロードのためにキューに入れられます。Snowflakeが提供するコンピューティングリソースは、パイプで定義されたパラメーターに基づいて、キューからSnowflakeテーブルにデータをロードします。

次の図は、Snowpipe REST API プロセスフローを示しています。

Snowpipeプロセスフロー
  1. データファイルは、内部(Snowflake)または外部(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)ステージにコピーされます。

  2. クライアントは、インジェストするファイルのリストと定義済みのパイプを使用して insertFiles エンドポイントを呼び出します。

    エンドポイントはこれらのファイルをインジェストキューに移動します。

  3. Snowflakeが提供する仮想ウェアハウスは、指定されたパイプで定義されたパラメーターに基づいて、キューに入れられたファイルからターゲットテーブルにデータをロードします。

ワークフロー

このセクションでは、設定とロードのワークフローの概要を説明します。

Snowpipeの構成

  1. データファイルをステージングする名前付きステージオブジェクトを作成します。Snowpipeは、内部(Snowflake)ステージと外部ステージ(S3バケット)の両方をサポートしています。

  2. CREATE PIPE を使用してパイプオブジェクトを作成します。

  3. 継続的なデータロードを実行するユーザーのセキュリティを構成します。Snowpipeのデータロードを1人のユーザーに制限する場合は、そのユーザーのキーペア認証を1回構成するだけで済みます。その後は、各データのロードに使用されるデータベースオブジェクトに対するアクセス制御権限のみを付与する必要があります。

  4. Snowpipeパブリック REST エンドポイントを呼び出すためのクライアント SDK (JavaまたはPython)をインストールします。

Snowpipe REST API を使用したデータのロード

オプション1: クライアントを使用して REST API を呼び出す

クライアントを使用して REST API を呼び出します。JavaおよびPython SDK サンプルコードが提供されています。詳細については、 オプション1: Snowpipe REST API を使用したデータのロード をご参照ください。

  1. ステージング時にロードするには、ファイルのリストを使用して REST エンドポイントを呼び出します。

  2. ロード履歴を取得します。

オプション2: AWS Lambdaを使用して REST APIを呼び出す

AWS Lambda関数を使用して REST API を呼び出すことにより、Snowpipeを自動化します。Lambda関数は REST API を呼び出して、Amazon S3にのみ保存されているファイルからデータをロードできます。詳細については、 オプション2: AWS LambdaによるSnowpipeの自動化 をご参照ください。

  1. Snowpipe REST API を呼び出して外部(つまり、S3)ステージからデータをロードする AWS Lambda関数を作成します。

  2. ロード履歴を取得します。