概要
Spotfire Serverからインフォメーションリンク(JDBC)によりSnowflakeに接続し、データを取得する方法について説明します。
本記事では、パスワードベースの認証ではなくキーペア認証を利用します。
検証環境
- Spotfire Server 14.0.5 LTS(OS: Windows Server 2022)
- Snowflake(AWS上で提供されているアカウント)
- Snowflake JDBCドライバ(snowflake-jdbc-3.19.1.jar)
事前)Snowflakeキーペア認証の構成
キーペア認証とキーペアローテーションに従い、Snowflakeへの接続に利用するユーザーに対し、キーペア認証のための設定を行います。
秘密キーの配置
秘密キーをSpotfire Server実行環境の任意のディレクトリに配置します。
本記事ではC:\Users\tibco\rsa_key.p8
に配置します。
Snowflake JDBCドライバの配置
Snowflake JDBCドライバ(例:snowflake-jdbc-3.19.1.jar
)を以下のように<Spotfire Serverインストールフォルダ>\tomcat\custom-ext-informationservices
に配置します。
C:\spotfire\spotfireserver\14.0.5\tomcat\custom-ext-informationservices\snowflake-jdbc-3.19.1.jar
Snowflake用Data Source Template作成
Spotfire Server実行環境でConfiguration Toolを起動し、Snowflake用Data Source Templateを作成します。
以下XMLの<秘密キーの格納パス>
と<秘密キーのパスワード>
を実際の値に置換してください。
<jdbc-type-settings> <type-name>Snowflake</type-name> <driver>net.snowflake.client.jdbc.SnowflakeDriver</driver> <connection-url-pattern>jdbc:snowflake://<ACCOUNT>.snowflakecomputing.com?warehouse=<WAREHOUSE>&role=<ROLE></connection-url-pattern> <supports-catalogs>true</supports-catalogs> <supports-schemas>true</supports-schemas> <supports-procedures>false</supports-procedures> <fetch-size>10000</fetch-size> <batch-size>100</batch-size> <use-ansii-style-outer-join>true</use-ansii-style-outer-join> <connection-properties> <connection-property> <key>application</key> <value>TIBCO_Spotfire</value> </connection-property> <connection-property> <key>private_key_file</key> <value><秘密キーの格納パス></value> </connection-property> <connection-property> <key>private_key_file_pwd</key> <value><秘密キーのパスワード></value> </connection-property> </connection-properties> </jdbc-type-settings>
<秘密キーの格納パス>
はC:\Users\spotfire\rsa_key.p8
(Windows Server OS環境に秘密キーを配置した場合)のように記述することができます。
作成後、Save configurationをクリックし、設定をリポジトリDBに保存します。
Spotfire Serverサービスの再起動
保存後、Spotfire Serverサービスを再起動します。
インフォメーションリンク データソース作成
Spotfire AnalystからSpotfire Serverに接続し、Snowflakeデータソースを作成します。
設定項目は以下のとおりです。
項目 | 内容 |
---|---|
タイプ | 作成したSnowflake用Data Source Template |
接続 URL | jdbc:snowflake://<アカウント>.snowflakecomputing.com?warehouse=<使用するウェアハウス>&role=<使用するロール> |
ユーザー名 | キーペア認証が設定されているユーザーのログイン名 |
接続 URL内のwarehouse
およびrole
プロパティは、ユーザーにSnowflake側でDEFAULT_WAREHOUSE
、DEFAULT_ROLE
が設定されていれば省略可能です。
キーペア認証のため本来であれば、パスワードの入力は不要ですが、上記の画面ではデータソース保存時(接続時)にパスワード欄に1文字以上のダミー文字列(dummy
など)を入力する必要がありますので、ご注意ください。
注意点① URLエンコード
接続 URLに含まれる文字種によってはURLエンコードが必要となる場合がありますのでご注意ください。接続 URLが正常にパースできず以下のようなエラーが発生する可能性があります。
データ ソース 'snowflake' に接続できません。無効な構成、またはこのデータ ソースが実行されていないことが原因です。
報告されたデータベース:
Connection string is invalid. Unable to parse.
注意点② インフォメーションリンク用JavaプロセスへのJVMパラメータ追加
PBES2をサポートするために必要な暗号ライブラリが使用できないために、以下のようなエラーが発生する場合があります。
データ ソース 'snowflake' に接続できません。無効な構成、またはこのデータ ソースが実行されていないことが原因です。
報告されたデータベース:
Private key provided is invalid or not supported: PBES2 SecretKeyFactory not available
その場合は、以下の手順に従い、BouncyCastleを有効化するためのJVMパラメーターをインフォメーションリンクのJavaプロセスに追加します。
1. 管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行します。
cd <Spotfire Serverインストールフォルダ>\tomcat\spotfire-bin
config.bat export-config
config.bat config-external-information-services-process -A-Dnet.snowflake.jdbc.enableBouncyCastle=true
config.bat import-config -c "Added a Information Services JVM parameter for Snowflake" -d true
2. Spotfire Serverサービスを再起動します。
インフォメーションリンク作成
Snowflakeデータソースからインフォメーションリンクを作成し、正常にデータが取得できることを確認します。