Fivetran のデータベースへの接続オプションとして SSHトンネルを指定してみた #Fivetran
はじめに
Fivetran では、ソースまたはターゲットのデータベースポートに直接アクセスできない場合に、SSH トンネル経由で接続するオプションを提供しています。
本記事では、踏み台サーバー経由で接続可能なデータベース(Amazon RDS for PostgreSQL)を用意し、こちらを Fivetran の ソースとして設定してみました。
まや、Destination 側に SSH トンネル経由で接続する際の手順については、以下の記事で紹介しています。
検証環境
- SSH サーバー
- OS:Amazon Linux 2023
- インスタンスタイプ:t2.micro
- ローカルポートフォワーディングによる SSH トンネルを設定する際に使用する中間のサーバー
- ローカルから SSH 接続可能
- 後述する手順で Fivetran 側からの SSH アクセスを許可
- Source
- Amazon RDS for PostgreSQL:16.1-R2
- インスタンスクラス:db.t3.micro
- プライベートネットサブネットに構築し、踏み台サーバーからのアクセスを許可
- Fivetran 用のユーザー、Snowflake に連携するサンプルテーブルは作成済み
- Destination:Snowflake
- 以下の記事と同様の手順でユーザー、ロール、ロード先のデータベース・スキーマを作成しました
設定手順
SSH トンネルによるアクセス時の SSH サーバーのセットアップ手順は Fivetran 側のドキュメントに記載があるので、こちらの手順に沿って進めます。
SSH ユーザーの作成
SSH サーバーにローカルから接続し、以下のコマンドを実行しておきます。
#グループを作成 sudo groupadd fivetran #ユーザーを作成 sudo useradd -m -g fivetran fivetran #ユーザーに切り替え sudo su - fivetran #.ssh ディレクトリを作成 mkdir ~/.ssh #権限設定 chmod 700 ~/.ssh #作成したディレクトリに移動 cd ~/.ssh #ファイルを作成 touch authorized_keys #ファイルの権限を設定 chmod 600 authorized_keys
ポートアクセスの許可
Fivetran 側のデータベース設定ページにて、Fivetran の IP アドレスのリストが表示されるので、セキュリティグループでインバウンド通信を許可しておきます。
Fivetran IP Addresses | Fivetran
Fivetran 側:コネクタの追加
Fivetran でコネクタを追加します。 データベースに接続するための各種情報を入力します。
ポイントとして、接続方法に「Connect via an SSH tunnel」を指定します。
すると、下図のセットアップ画面が追加表示されます。
ここで、SSH サーバーのホスト名/IP アドレス、ポート番号(22)、上記手順で作成したSSH サーバーのユーザー名(fivetran)を指定します。「Public Key」欄に公開鍵が生成されるので、この内容を先ほど手順で作成した「authorized_keys」に追加します。
vi authorized_keys
以降で、データの同期方法を指定します。ここでは Fivetran Teleport Sync を指定しました。
その後「Save & Test」より接続テストを行います。
接続テスト時、ここでは、下図の通り Fivetran がサーバーのホストキーの指紋(fingerprint)を取得したことが通知されましたので、確認し [Confirm] をクリックします。
サーバーのホストキーは/etc/ssh
ディレクトリに格納されています。
問題なければ下図の表示となります。
初期同期後、Snowflake 側で確認すると、テーブルが作成されていることを確認できます。
さいごに
データベースがプライベートサブネットに構築されており、直接アクセスできない場面が多いかと思いますので、その際はこちらのオプションが選択肢になり得ます。
こちらの内容が何かの参考になれば幸いです。