はじめに
こんにちは、すぎもんです![]()
本記事では、HULFT SquareからSnowflakeへPrivateLink 経由で接続してみようと思います。AWS PrivateLinkを使うことで、インターネットを経由せずに接続が可能です。
今回やること
HULFT SquareとSnowflakeをPrivateLinkで接続し、HULFT Squareで作成したスクリプトで、Snowflakeのデータベースのレコードを読み取り、CSVファイルに出力してみます。

それでは早速やってみましょう!
実施手順
以下の手順を実施します。
<Snowflake設定>
1.PrivateLinkの有効化
2.PrivateLink情報を取得
3.SnowflakeテストDB作成
4.キーペア認証の設定
<HULFT Square設定>
5.HULFT SquareのPrivateLink作成
<Snowflake設定>
6.VPCエンドポイントIDアクセス許可
<HULFT Square設定>
7.HULFT Squareのコネクション作成
8.テーブル読み取りスクリプト実行
1. PrivateLinkの有効化<Snowflake設定>
SnowflakeのPrivateLinkを有効化します。
① サポートにPrivateLink有効化を依頼
Snowflakeコンソール画面からサポートにPrivateLink有効化を依頼します。
左下の「アカウントメニュー」をクリックし、メニューから「サポート」をクリックします。
PrivateLink有効化を依頼します。依頼する際に以下の2つの情報が必要です。
- 対象の Snowflakeアカウント名
- 対象の AWSアカウントID (12桁)
2.PrivateLink 情報を取得<Snowflake設定>
HULFT Squareのコネクション設定に使用するSnowflakeのPrivateLink情報を取得します。
① PrivateLinkの情報取得
SnowflakeコンソールのSQLワークシートで以下のSQLを実行し、PrivateLink情報を取得します。
SELECT SYSTEM$GET_PRIVATELINK_CONFIG();
- privatelink-account-url
PrivateLinkのURL。以降の手順で使用するため値をメモしておく - privatelink-vpce-id
VPCE Service 名。以降の手順で使用するため値をメモしておく
3.SnowflakeテストDB作成<Snowflake設定>
Snowflakeに検証用のテストDBを作成します。
① データベース作成
SnowflakeコンソールのSQLワークシートで以下のSQLを実行し、データベースを作成します。
※データベース名を「CONNECTION_TEST_DB」で作成する場合の例
CREATE OR REPLACE DATABASE CONNECTION_TEST_DB;

「successfully created.」が出力されることを確認します。
② スキーマ作成
以下のSQLを実行し、スキーマを作成します。
※データベース名を「CONNECTION_TEST_DB」、スキーマ名を「TEST_SCHEMA」で作成する場合の例
CREATE OR REPLACE SCHEMA CONNECTION_TEST_DB.TEST_SCHEMA;

「successfully created.」が出力されることを確認します。
③ テーブル作成
以下のSQLを実行し、テーブルを作成します。
※テーブル名を「TEST_TABLE」、カラムをNUMBER型のIDとVARCHAR型のMESSAGEで作成する場合の例
CREATE OR REPLACE TABLE TEST_TABLE (
ID NUMBER(38,0),
MESSAGE VARCHAR(16777216)
);

「successfully created.」が出力されることを確認します。
④ ウェアハウス名の確認
ウェアハウス名を確認します。
SELECT CURRENT_WAREHOUSE();
4.キーペア認証の設定<Snowflake設定>
キーペア認証で使用するキーペアを作成し、Snowflakeユーザーに公開キーを割り当てます。
① 秘密鍵の生成
AWS CloudShell(opensslがインストールされている任意の環境)で以下のコマンドを実行し、任意のパスワードを入力します。
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
② 公開鍵の生成
以下のコマンドを実行し、任意のパスワードを入力します。
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
③ Snowflakeユーザーに公開キーの割り当て
SnowflakeコンソールのSQLワークシートで以下のSQLを実行します。
RSA_PUBLIC_KEYの値に②で生成した公開キーを指定します。
ALTER USER DEV_ADMIN SET RSA_PUBLIC_KEY='(公開キーを指定)';
「Statement executed successfully.」が出力されることを確認します。
5.HULFT SquareのPrivateLink作成<HULFT Square設定>
HULFT SquareのPrivateLinkを作成します。
① PrivateLinkを作成
以下の設定でPrivateLinkを作成します。
サービス名:任意の名前
ディレクション:アウトバウンド
接続先:2.PrivateLink 情報を取得<Snowflake設定>で確認したprivatelink-vpce-idの値
- サービス名(括弧内の値)
VPCエンドポイントのDNS名。以降の手順で使用するため値をメモしておく - ステータス
「有効」になっていること
また、PrivateLinkの作成が完了しましたら、「エイリアス」に、2.PrivateLink 情報を取得<Snowflake設定>で確認したprivatelink-account-urlを追加してください。
6.VPCエンドポイントIDアクセス許可<Snowflake設定>
HULFT SquareのVPCエンドポイントIDからの接続をSnowflake側で許可するように設定します。
① VPCエンドポイントID 用ネットワークルール作成
ネットワークルールを作成します。
VALUE_LISTに許可するVPCエンドポイントを指定します。
※ネットワークルール名「ALLOW_VPCEID_ACCESS」でネットワークルールを作成する場合の例
CREATE OR REPLACE NETWORK RULE ALLOW_VPCEID_ACCESS
MODE = INGRESS
TYPE = AWSVPCEID
VALUE_LIST = ('vpce-XXXXXXXXXXXXXXXXX');

「Network rule XXXXXXXX is created.」が出力されることを確認します。
② ネットワークポリシー作成
作成したネットワークルールを許可するネットワークポリシーを作成します。
※ネットワークポリシー名「VPCEID_DEV_ADMIN_ACCESS」でネットワークポリシーを作成する場合の例
CREATE NETWORK POLICY VPCEID_DEV_ADMIN_ACCESS
ALLOWED_NETWORK_RULE_LIST = (
'ALLOW_VPCEID_ACCESS'
);
「Network policy XXXXXXXX is created.」が出力されることを確認します。
③ ユーザにネットワークポリシーを割り当て
作成したネットワークポリシーにユーザを割り当てます。
※ネットワークポリシー名「VPCEID_DEV_ADMIN_ACCESS」にユーザ名「DEV_ADMIN」を割り当てる場合の例
ALTER USER DEV_ADMIN SET NETWORK_POLICY = VPCEID_DEV_ADMIN_ACCESS;
「Network policy XXXXXXXX is created.」が出力されることを確認します。
7.HULFT Squareのコネクション作成<HULFT Square設定>
HULFT Squareのコネクションを作成します。
① コネクションの作成
「snowflake」で検索し、コネクターに「Snowflake」、種類に「Snowflake接続設定」を指定します。

以下の値を設定します。
- アカウント識別子:xxxxxxx.ap-northeast-1.privatelink(2.PrivateLink 情報を取得<Snowflake設定>のprivatelink-account-urlの先頭からprivatelinkまでの値)
- ウェアハウス名:(3.SnowflakeテストDB作成<Snowflake設定>の④で確認した値)
- データベース名:(3.SnowflakeテストDB作成<Snowflake設定>の①で作成した値)
- スキーマ名:(3.SnowflakeテストDB作成<Snowflake設定>の②で作成した値)
- URLを直接入力する:チェックを入れない
- ユーザ名: (Snowflakeに接続するユーザ名)
- 認証方式:キーペア認証
- 秘密鍵:(4.キーペア認証の設定<Snowflake設定>の①で作成した秘密鍵をHULFT Squareのストレージに格納したパス)
- 秘密鍵パスフレーズ:(4.キーペア認証の設定<Snowflake設定>の①で入力したパスワード)
8.テーブル読み取りスクリプト実行<HULFT Square設定>
HULFT Squareのテーブル読み取りスクリプトが正しく動作することを確認します。
① スクリプト作成
Snowflakeのテーブルを読み取り、CSVファイルに出力するスクリプトを作成します。

・get_table_dataのプロパティ
[ツールパレット]⇒[データベース]⇒[Snowflake]⇒[テーブル読み取り]コネクタを使用します。

・mapping設定
[ツールパレット]⇒[変換]⇒[基本]⇒[マッピング]コネクタを使用します。

・csv_writeのプロパティ
[ツールパレット]⇒[ファイル]⇒[CSV]⇒[CSVファイル書き込み]コネクタを使用します。

「スクリプトの実行に成功しました。」のポップアップが出力されることを確認します。
③ 結果確認
SnowflakeコンソールのSQLワークシートで以下のSQLを実行し、テーブルに登録されているデータの内容を確認します。
select * from test_table
HULFT Squareのスクリプト実行により作成されたCSVファイルの中身を確認します。

両方の内容が一致することを確認します。
おわりに
いかがだったでしょうか。
HULFT SquareからSnowflakeにPrivateLinkで接続して、Snowflakeのデータベースのレコードを読み取ることができました。本記事では、HULFT SquareからSnowflakeへPrivateLinkを使って接続する方法を紹介しました。
PrivateLinkを使うことで、インターネットを経由せずに閉域での通信が可能となり、セキュリティを確保できます。今回の手順を参考に、PrivateLinkで安全にSnowflakeに接続してみてください。
ここまで読んでいただきありがとうございました。それでは、また!















