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

by 宮本航太 | May 18, 2021

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

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

対象の環境について

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

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

以下は SSH サーバーの プライベート IP アドレスです。

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

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

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

www.cdatablog.jp

接続手順

CData Sync の接続画面の同期先タブより、PostgreSQL コネクタをクリックします。

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

プロパティ名 備考
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 サーバーの設定を行います。

プロパティ名 備考
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に設定します

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



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

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

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

最後に 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