Snowpark Scala は Snowflake JDBC ドライバーで接続します。セッションビルダーは JDBC 設定プロパティを受け取るため、プロキシ設定は既存の接続マップと一緒に渡せます。

val proxyOptions = Map(
  "useProxy" -> "true",
  "proxyHost" -> "proxy.example",
  "proxyPort" -> "8080"
)

val session = com.snowflake.snowpark.Session.builder
  .configs(connectionOptions ++ proxyOptions)
  .create

connectionOptions には、アプリケーションがすでに使っているアカウント、認証、その他の設定が入ります。これらは Scala の文字列マップのエントリであり、プロキシのホスト名には URL スキームもポートも含めません。プロキシ認証なしで許可された公開プロキシ経由の経路には、Snowflake のアカウント設定を保ったまま HTTP プロキシ一覧 からホストとポートを選びます。

Snowflake JDBC は中継アカウント用に proxyUser と proxyPassword も文書化しています。必要な場合は、アプリケーションの既存の認証情報ソースから渡してください。

JDBC の nonProxyHosts はワイルドカードをサポートする縦棒区切りのパターンを使います。マップ値では区切り文字は文字どおりの | です。URL エンコードが問題になるのは JDBC URL を組み立てる場合です。別クライアントのカンマ区切り NO_PROXY 構文で置き換えないでください。

この設定は Snowpark Scala 専用にしてください。Snowpark Python と Snowflake Spark コネクターは異なる接続インターフェースとオプション名を提供します。

Snowflake はサービスの証明書が置き換えられずにプロキシを通ることを求めます。HTTP CONNECT 経路と TLS 検査は別の仕組みです。Snowflake の証明書を再発行するプロキシはこの要件を満たしません。

関連記事