CData Software Blog

クラウド連携のCData Software の技術ブログです。

AWS EC2 を Salesforce の仮想RDBインターフェースとして構成する:CData JDBC Remorting

f:id:sugimomoto:20210318144325p:plain

こんにちは。CData Software Japan リードエンジニアの杉本です。

CData Driver はJDBCODBCなどのデータベース接続インターフェースからSalesforceやDynamics 365といったWeb APIのアプリケーションに接続することができる、ライブラリソフトウェアです。

www.cdata.com

f:id:sugimomoto:20210318143629p:plain

ですが、実はMySQLSQL ServerといったRDBに擬態、データアクセスの仮想化を実現できる機能が備わっています。

それが、今回紹介するCData JDBC Remortingです。

今回の記事では、このJDBC Remorting機能をAWS EC2上のインスタンスで構成し、様々なツールから接続できるようにする方法を紹介したいと思います。

CData JDBC Remorting とは?

端的に言ってしまうと、CData JDBC Driverの機能をMySQLSQL ServerTDS)のインターフェースとして提供する機能です。

cdn.cdata.com

通常、JDBC Driverは、JDBCのライブラリが使用できるプラットフォームからしかつなぐことができません。

しかし、MySQLSQL Serverプロトコルに擬態することで、その接続インターフェースを持っているツールからの連携を柔軟に実現することができるようになります!

例えば、Excelのデータベース接続や、Google Data PortalMySQLインターフェース、PowerAppsのSQL Serverインターフェースで、CData JDBC Driverに接続し、連携先のSalesforceやDynamics 365といったAPIの機能を利用できるようになります。

f:id:sugimomoto:20210318143622p:plain

使い方

それでは早速使い方を解説していきましょう。

今回は、前述の通り AWS EC2 にホスティングして、このJDBC Remorting機能を利用します。

使用するデータソースはSalesforceを選びましたが、以下のURLに存在するJDBC Driversのラインナップであれば、どれでも利用できます。

www.cdata.com

f:id:sugimomoto:20210318143629p:plain

CData JDBC Driverのダウンロード

まず、CData JDBC Driverをダウンロードしてきます。

www.cdata.com

f:id:sugimomoto:20210318143639p:plain

ダウンロードしたZipファイルを解凍すると「setuo.jar」ファイルが生成されます。これをAWS EC2上で実行します。

f:id:sugimomoto:20210318143654p:plain

AWS EC2 Amazon Linux の立ち上げ

次にAWS EC2のインスタンスを立ち上げます。

今回は最小環境で構成しますが、必要な性能要件は利用するデータソースや頻度、求めるパフォーマンスによって異なります。

今回はベーシックな「Amazon Linux 2 AMI(HVM) SSD Volume Type」

f:id:sugimomoto:20200408225137p:plain

無料利用枠の対象である「t2.micro」で立ち上げました。

f:id:sugimomoto:20200408225433p:plain

環境構成で唯一注意したい点はセキュリティグループの設定で開けるポートです。今回はMySQLのインターフェースを3306ポートで接続することになるので、以下のようにカスタムTCPでポートを許可しておきましょう。

f:id:sugimomoto:20210318143703p:plain

環境構成後、SSHで接続しますが、今回はお手軽な EC2 Instance Connect で行いました。

f:id:sugimomoto:20200408225615p:plain

JDK Install

EC2 Instance Connectでインスタンスにアクセスを行ったら、まずJDKをインストールします。今回は手軽にインストールできる yum から「java-1.8.0-openjdk」をインストールしました。

sudo yum install -y java-1.8.0-openjdk

JDBC Driver の配置・セットアップ

続いてCData JDBC Driverの「setup.jar」ファイルを配置します。今回は一度Amazon S3にsetup.jarファイルをアップロードして配置しました。

sudo wget https://XXXXX/cdata.connect.tar.gz

配置後、以下のコマンドを実行し、ダイアログに従ってセットアップを進めます。

sudo java -jar setup.jar

今回は /opt/cdataのフォルダにセットアップを行いました。

以下のようなフォルダ構成になります。

cdata]$ ls
db  help  lib  license.txt  licensing.htm  Uninstaller  uninstall.ico

JDBC Remorting ファイルの構成

JDBC Remortingを構成するには、「lib/cdata.jdbc.salesforce.remoting.ini」ファイルをviなどで編集します。

最初はMySQLインターフェースを構成するサンプルがテンプレートとして記述されているので、これをベースに編集するのが良いでしょう。

必ず設定しなければいけない点は[database]にある接続文字列「salesforce = "User=myUser;Password=myPassword;Security Token=myToken;RTK=XXXXX;"」です。以下のページを参考に適切な接続プロパティを構成してください。

cdn.cdata.com

; Sample Configuration File
; CData JDBC Driver For Salesforce 2020J

[mysqld]
port = 3306
max-connections = 25
session-timeout = 20
client-timeout  = 7200
logfile = SalesforceRemotingLog.txt
verbosity = 2
logrotationscheme = 2

[mysql_vars]
character_set_client = utf8
character_set_connection = utf8
version_comment =  "CData JDBC Driver For Salesforce 2020J (MySQL Remoting)"

[databases]
salesforce = "User=myUser;Password=myPassword;Security Token=myToken;RTK=XXXXX;"
salesforce_readonly = "User=myUser;Password=myPassword;Security Token=myToken;ReadOnly=True;RTK=XXXX;"

[users]
root = Password!
test = Password!

[acl]
salesforce = root
salesforce_readonly = root, test

各プロパティの詳しい内容は以下のヘルプで確認できます。

cdn.cdata.com

また、トライアルでは接続文字列にRTK設定を追加する必要があります。RTKはCDataテクニカルサポートで提供しているので、こちらから連絡してみてください。

JDBC Remorting の機能

「cdata.jdbc.salesforce.remoting.ini 」の設定が完了したら、JDBC Remorting を起動しましょう。以下のようなコマンドで起動できます。

sudo java -jar cdata.jdbc.salesforce.jar -f cdata.jdbc.salesforce.remoting.ini 

以下のようなメッセージが表示されれば起動成功です。

Connection test successful.
CData JDBC remoting daemon running on port 3306.

起動したら早速接続テストを行ってみましょう。

今回はMySQLインターフェースに擬態しているので、MySQL WorkbenchからJDBC Driverに接続することができます。

HostnameにAWS EC2のURLを指定し、予め設定したUsername:Passwordで接続しましょう。

f:id:sugimomoto:20210318143715p:plain

あとは、通常通りRDBライクに使用できます。

例えばSalesforceの取引先を取得する「SELECT * FROM Salesforce.Account」というクエリを実行すれば、以下のようにSalesforceAPIからデータをSQLライクに取得することができます。

f:id:sugimomoto:20210318143722p:plain

他にも、以前Blogで紹介したローコードアプリ開発プラットフォームであるRetoolからも接続することができます。

www.cdatablog.jp

Retoolのリソース一覧から「MySQL」を選択し

f:id:sugimomoto:20210318143729p:plain

MySQL Workbenchに接続した時のように、AWS EC2の接続情報を入力します。

f:id:sugimomoto:20210318143738p:plain

あとはアプリ上でクエリを実行することで、MySQLインターフェースを使って、Salesforceのデータを取得できます!

f:id:sugimomoto:20210318143745p:plain

おわりに

このようにMySQLのインターフェースを備えていれば、様々なサービスからSalesforceやDynamics 365といったクラウドサービスのデータを扱えるようになります。

是非色々なツールからの連携を試してみてください。

ちなみに、このサービスにUIを付与して、クラウドホスティングしたサービスがCData Connectです。もしクラウドホスティング版を利用したい場合はこちらもお試しあれ。

www.cdata.com