Snowpark Scala verbindet über den Snowflake-JDBC-Treiber. Der Session-Builder akzeptiert JDBC-Konfigurationseigenschaften, daher können Proxy-Einstellungen mit der bestehenden Verbindungsmap mitreisen:

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

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

connectionOptions enthält das Konto, die Authentifizierung und weitere Einstellungen, die die Anwendung bereits nutzt. Es sind Einträge einer Scala-String-Map; der Proxy-Hostname enthält kein URL-Schema und keinen Port. Für eine zulässige öffentliche Proxy-Route ohne Proxy-Authentifizierung wählen Sie Host und Port aus der HTTP-Proxy-Liste, während die Snowflake-Kontoeinstellungen erhalten bleiben.

Snowflake JDBC dokumentiert außerdem proxyUser und proxyPassword für ein zwischengeschaltetes Konto. Übergeben Sie diese bei Bedarf über die vorhandene Anmeldeinformationsquelle der Anwendung.

JDBCs nonProxyHosts verwendet durch senkrechte Striche getrennte Muster mit Wildcard-Unterstützung. In einem Map-Wert ist das Trennzeichen ein wörtliches |; URL-Kodierung wird erst beim Erzeugen einer JDBC-URL relevant. Ersetzen Sie es nicht durch die kommagetrennte NO_PROXY-Syntax eines anderen Clients.

Halten Sie diese Konfiguration spezifisch für Snowpark Scala. Snowpark Python und der Snowflake-Spark-Connector bieten andere Verbindungsschnittstellen und Optionsnamen.

Snowflake verlangt, dass das Dienstzertifikat ohne Ersetzung durch den Proxy läuft. Eine HTTP-CONNECT-Route und TLS-Inspektion sind verschiedene Verfahren; ein Proxy, der das Snowflake-Zertifikat neu ausstellt, erfüllt diese Anforderung nicht.

Ähnliche Artikel