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 协议,也不含端口。若要走允许的、无需代理认证的公共代理线路,可在 HTTP 代理列表 中挑选主机和端口,同时保留 Snowflake 账户设置。

Snowflake JDBC 还为中间账户记录了 proxyUser 和 proxyPassword。需要时,通过应用现有的凭据来源提供它们。

JDBC 的 nonProxyHosts 使用以竖线分隔的模式,并支持通配符。在映射值中,分隔符就是字面量 |;只有在构建 JDBC URL 时,URL 编码才会成为问题。不要用其他客户端以逗号分隔的 NO_PROXY 语法替代它。

请将此配置仅限于 Snowpark Scala。Snowpark Python 和 Snowflake Spark 连接器提供不同的连接接口和选项名。

Snowflake 要求服务证书不经替换地通过代理。HTTP CONNECT 线路与 TLS 检查是两种不同安排;重新签发 Snowflake 证书的代理不满足该要求。

相关文章