by CData Software Japan | May 18, 2021

CData Syncから踏み台のSSHサーバー経由でRDS for PostgreSQL に連携する方法

f:id:sennanvolar44:20210518124458p:plain こんにちは、テクニカルサポートエンジニアの宮本(@miyamon44)です。

今回は VPC 内の SSH サーバーからのみアクセス可能な AWS RDS for PostgreSQL に 、外部ネットワークにある ETL/ELT ツールの CData Sync から接続してSaaS データをレプリケートしてみる方法をご紹介します。

対象の環境について

AWS VPC 外からの直接のアクセスはできないようにしている AWS RDS for PostgreSQL に対して、別ネットワークにある CData Sync から EC2 の SSH サーバー経由でRDS にアクセスを行い、SaaS データのレプリケートを実行していく構成としています。

f:id:sennanvolar44:20210518122322p:plain

RDS for PostgreSQL のセキュリティグループのインバウントルールには、5432 ポートかつ、プライベート環境の 172.31.10.132 からのみアクセスできる設定になっています。
f:id:sennanvolar44:20210517164402p:plain

以下は SSH サーバーの プライベート IP アドレスです。
f:id:sennanvolar44:20210517164550p:plain

この構成の場合、通常であれば別途 Putty などで SSH ポートフォワーディングを設定して対応することになるかと思いますが、CData Sync では SSH サーバーと RDS for PostgreSQL の接続情報を指定することで接続することができるようになります。

では、さっそく手順をみていきましょう。

※CDataSync のインストールがまだされていない場合は、こちらの記事を参考にインストールしてみてください。

www.cdatablog.jp

接続手順

CData Sync の接続画面の同期先タブより、PostgreSQL コネクタをクリックします。
f:id:sennanvolar44:20210517170056p:plain

まずは AWS RDS for PostgreSQL の接続情報を設定します。設定が完了しましたら、Advanced タブをクリックします。
f:id:sennanvolar44:20210517170512p:plain

プロパティ名 備考
Server 例)database-1.CDataSample.ap-northeast-1.rds.amazonaws.com Amazon RDS PostgreSQLのエンドポイント
Port 5432
Database 例)Postgres 接続対象DB名
User 例)Postgres PostgreSQLのユーザー
Password 例)YOUR_PASSWORD PostgreSQLのユーザーパスワード


Advanced タブでは SSH サーバーの設定を行います。
f:id:sennanvolar44:20210517171500p:plain

プロパティ名 備考
SSH Client Cert 例)C:\Work\AWS\key.pem 予めダウンロードしたPEMキーファイルを指定
SSH Client Cert Type PEMKEY_FILE
SSH Port 22 SSHサーバー接続用ポートを指定
SSH Server 例)ec2-X-XXX-XXX-X.ap-northeast-1.compute.amazonaws.com SSHサーバーのSSHアドレスを指定
SSH User ec2-user SSHアクセスユーザーを指定
Use SSH True SSH接続を利用するのでTrueに設定します

入力が終わりましたら、もう一度設定タブに戻り、右下の接続テストボタンから接続テストを行います。接続が完了したら保存します。
f:id:sennanvolar44:20210517172529p:plain


それではここからジョブを作成していきます。
ヘッダーのジョブボタンをクリックしてジョブ作成画面に遷移し、ジョブを追加から対象のデータソース、同期先(先ほど作成したPostgreSQL)を選択します。
f:id:sennanvolar44:20210517175927p:plain

テーブルを追加から、今回は Salesforce の Opportunity テーブルを使用しますので、チェックを入れて右下のボタンをクリックします。
f:id:sennanvolar44:20210517180508p:plain

ではレプリケートを行ってみます。
作成したクエリにチェックを入れ、実行ボタンをクリックします。ジョブが完了すると最終更新日時とステータスがこのように表示されます。
f:id:sennanvolar44:20210517180709p:plain

最後に SSH サーバーから AWS RDS for PostgreSQL を参照してみます。

[ec2-user@ip-172-31-10-132 ~]$ psql -d cdata -U postgres -h postgresql-miya.csmyxxxr4ysy.ap-northeast-1.rds.amazonaws.com
Password for user postgres:
psql (9.2.24, server 12.5)
WARNING: psql version 9.2, server version 12.0.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

cdata=>
cdata=> \dt
            List of relations
 Schema |    Name     | Type  |  Owner
--------+-------------+-------+----------
 public | Account     | table | postgres
 public | Opportunity | table | postgres
(2 rows)

cdata=> select count(1) from "Opportunity";
 count
-------
    66
(1 row)

cdata=>

おわりに

いかがでしたでしょうか。CData Sync では AWS VPC 内の AWS RDS for PostgreSQL へこのようにシンプルに接続することができます。
今回ご紹介した CData Sync は 30日間のトライアル利用が可能です。こちらのリンクから是非ダウンロードしてお試しください。

https://www.cdata.com/jp/sync/

また本記事の内容は CData PostgreSQL Driver でも対応しております。
詳しくはこちらの記事もご参照ください。

www.cdatablog.jp