高性能アーキテクチャを備えたSnowpipe Streamingの構成¶
このガイドでは、JavaおよびPython SDKs で使用できる高性能なSnowpipe Streamingクライアントの構成設定について説明します。構成には2つの異なる種類があります。
プロセス全体の環境変数:実行中のアプリケーション全体のログとメトリックを制御する変数。クライアントが初期化される前に設定する必要があります。
クライアント側のプロパティ:安全な接続と取り込みターゲットを定義するプロパティ(
url、user、private_keyなど)は、通常インラインマップまたはprofile.jsonファイルを通じて、特定のクライアントオブジェクト用に構成されます。
単一のアプリケーションで複数のクライアントオブジェクトを実行できます。各オブジェクトは独自のクライアント側プロパティを持ちますが、ログとメトリックのためにプロセス全体の同じ環境変数設定をすべて共有します。
高性能アーキテクチャでは、スキーマ、変換、およびターゲットテーブルへの取り込みを管理する特定の PIPE オブジェクトにクライアントを明示的にバインドする必要があります。
環境変数¶
これらの構成設定は、ロギングやメトリック収集などのプロセス全体の動作を制御し、クライアントオブジェクトが初期化される前に環境変数として構成する必要があります。次のテーブルは、同じプロセス内のすべてのSnowpipe Streamingクライアントオブジェクトに適用される環境変数を示しています。
変数 |
説明 |
デフォルト値 |
|---|---|---|
|
TRUE に設定し、組み込みのPrometheusメトリックサーバーを有効にします。 |
FALSE |
|
メトリックの公開に使用されるポート。 |
50000 |
|
メトリックサーバーがホストされている IP アドレス。 |
127.0.0.1 |
|
出力の最小ログレベル。 |
|
必須のプロパティ¶
高性能 SDK では、安全な接続と特定のインジェスチョンターゲット PIPE)の両方を確立するために、いくつかのプロパティが必須です。次のテーブルに、必要な接続およびユーザー認証のプロパティを示します。
プロパティ |
説明 |
|---|---|
|
アカウント識別子を含む、Snowflakeアカウントにアクセスするための URL。プロトコル(https://)とポート番号はオプションです。 |
|
Snowflakeアカウントのユーザーログイン名。 |
|
Snowflakeアカウント識別子。例えば、xy12345。 |
authorization_type が JWT に設定されている場合(デフォルト)、次のテーブルに示すようにキーコンテンツまたはキーファイルパスのいずれかを指定する必要があります。
プロパティ |
説明 |
|---|---|
|
ユーザーの認証に使用されるプライベートキーのコンテンツ。キーコンテンツのみを含めます。ヘッダー、フッター、改行なし。 |
|
プライベートキーへのファイルパス。例: rsa_key.p8これは、キーコンテンツを直接提供するための代替です。 |
オプションのプロパティ¶
次の表は、高性能 SDK オプションのプロパティを示します。
プロパティ |
説明 |
|---|---|
|
Snowflakeに接続した後にセッションに使用するアクセス制御ロール。 |
|
認証方法を構成するプロパティ。オプションは次のとおりです。 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"
}
インラインで提供されるクライアント側の構成¶
次の例は、コードでクライアント側のプロパティを直接定義する方法を示しています。
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'
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'
環境変数の構成¶
次の例は、アプリケーションを実行する前に、シェルでプロセス全体の環境変数を定義する方法を示しています。
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
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