高性能アーキテクチャを備えたSnowpipe Streamingの構成

このガイドでは、JavaおよびPython SDKs で使用できる高性能なSnowpipe Streamingクライアントの構成設定について説明します。構成には2つの異なる種類があります。

  • プロセス全体の環境変数:実行中のアプリケーション全体のログとメトリックを制御する変数。クライアントが初期化される前に設定する必要があります。

  • クライアント側のプロパティ:安全な接続と取り込みターゲットを定義するプロパティ(urluserprivate_key など)は、通常インラインマップまたは profile.json ファイルを通じて、特定のクライアントオブジェクト用に構成されます。

単一のアプリケーションで複数のクライアントオブジェクトを実行できます。各オブジェクトは独自のクライアント側プロパティを持ちますが、ログとメトリックのためにプロセス全体の同じ環境変数設定をすべて共有します。

高性能アーキテクチャでは、スキーマ、変換、およびターゲットテーブルへの取り込みを管理する特定の PIPE オブジェクトにクライアントを明示的にバインドする必要があります。

環境変数

これらの構成設定は、ロギングやメトリック収集などのプロセス全体の動作を制御し、クライアントオブジェクトが初期化される前に環境変数として構成する必要があります。次のテーブルは、同じプロセス内のすべてのSnowpipe Streamingクライアントオブジェクトに適用される環境変数を示しています。

変数

説明

デフォルト値

SS_ENABLE_METRICS

TRUE に設定し、組み込みのPrometheusメトリックサーバーを有効にします。

FALSE

SS_METRICS_PORT

メトリックの公開に使用されるポート。

50000

SS_METRICS_IP

メトリックサーバーがホストされている IP アドレス。

127.0.0.1

SS_LOG_LEVEL

出力の最小ログレベル。

info``(オプション:``infowarnerror

必須のプロパティ

高性能 SDK では、安全な接続と特定のインジェスチョンターゲット PIPE)の両方を確立するために、いくつかのプロパティが必須です。次のテーブルに、必要な接続およびユーザー認証のプロパティを示します。

プロパティ

説明

url

アカウント識別子を含む、Snowflakeアカウントにアクセスするための URL。プロトコル(https://)とポート番号はオプションです。

user

Snowflakeアカウントのユーザーログイン名。

account

Snowflakeアカウント識別子。例えば、xy12345。

authorization_typeJWT に設定されている場合(デフォルト)、次のテーブルに示すようにキーコンテンツまたはキーファイルパスのいずれかを指定する必要があります。

プロパティ

説明

private_key

ユーザーの認証に使用されるプライベートキーのコンテンツ。キーコンテンツのみを含めます。ヘッダー、フッター、改行なし。

private_key_file

プライベートキーへのファイルパス。例: rsa_key.p8これは、キーコンテンツを直接提供するための代替です。

オプションのプロパティ

次の表は、高性能 SDK オプションのプロパティを示します。

プロパティ

説明

role

Snowflakeに接続した後にセッションに使用するアクセス制御ロール。

authorization_type

認証方法を構成するプロパティ。オプションは次のとおりです。 JWT(キーペア認証、デフォルト)

シークレットの外部化

Snowflake では、 private_key や OAuth 認証情報などの秘密情報を外部化し、キー管理サービスに保存することを強く推奨します。例: AWSKMS

構成例

以下の例はクライアント側と環境変数の構成を示しています。

profile.jsonファイルを介したクライアント側の構成

次の例は、クライアント側のプロパティを定義する方法を示しています。

// profile.json
{
  "authorization_type": "JWT",
  "url": "https://<account_identifier>.snowflakecomputing.com",
  "user": "MY_SNOWFLAKE_USER",
  "account": "XY12345",
  "private_key_file": "/path/to/rsa_key.p8",
  "role": "MY_INGEST_ROLE"
}
Copy

インラインで提供されるクライアント側の構成

次の例は、コードでクライアント側のプロパティを直接定義する方法を示しています。

Pythonの例

config = {
    "authorization_type": "JWT",
    "url": "https://<account_identifier>.snowflakecomputing.com",
    "user": "MY_SNOWFLAKE_USER",
    "account": "XY12345",
    "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Copy

Javaの例

Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
Copy

環境変数の構成

次の例は、アプリケーションを実行する前に、シェルでプロセス全体の環境変数を定義する方法を示しています。

Linuxまたは macOS (BashまたはZsh)

# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn

# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5

# Now run your application
Copy

Windows(コマンドプロンプト)

# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn

# Change the metrics port
set SS_METRICS_PORT=55000

# Now run your application
Copy