コネクション作成からレプリケーションジョブの実行までをAPIでやってみた:CData Sync

こんにちは、プロダクトチームの宮本です!

CData Sync ではジョブの実行をはじめ、コネクション作成やユーザー作成など、管理コンソールが無い状態でもAPI 経由でさまざまなCData Sync の処理を実行することができるようになっています。
では、さっそくAPI でのコネクション作成~ジョブ実行までの手順をご紹介したいと思います。

CData Sync API の使い方

CData Sync API のリファレンス

まずは CData Sync API のリファレンスを見ていきたいと思います。サイドメニューにAPIというボタンが既に用意されていますのでクリックします。


API リファレンスが実行環境のドメイン名やIPアドレスに合わせた形で表示されます。


では、jobs エンドポイントをクリックしてみましょう。右側に GET ~ DELETE メソッドのリストが表示されますので、どれでも良いので開いてみます。


開いてみると、リクエスト方法であったりパラメータについての説明が表示されます。デフォルトでは JavaScript でのサンプルが表示されていますが、右上の赤枠部分で Curl での実行時の例に切り替えることも可能です。


他のエンドポイントも同じように内容を確認することができます。

API アクセス時に使用する認証トークンを生成

認証トークンを生成するためにサイドメニューの設定→ユーザータブでユーザーリストを表示させ、API 接続時に使いたいユーザーをクリックします。
ユーザーの詳細情報が表示されますので、オプションの API 接続にチェックを入れ、認証トークンを生成・コピーします。

コピーまでできたら保存ボタンをクリックします。

もしアクセス元の IP 制限や別オリジンからのアクセスで CORS の設定が必要な場合には管理 API タブにて調整が可能ですのでお試しください。

コネクション作成

今回は Salesforce のコネクション情報を作成してみます。今回は Basic 認証を使ってみます。
では手っ取り早く API が実行できるツールの Postman を使ってコネクション情報を作成してみましょう。
いくつか入力するものがありますが、まずは接続先 URL やヘッダー情報です。

指定項目 指定内容
メソッド POST
URL http://xxxxxx:8181/api.rsc/connections/
ヘッダー:Key x-cdata-authtoken
ヘッダー:Value Syncで生成したAPIトークン

次にリクエストボディで実際に登録するコネクション情報を入力します。

指定項目 指定内容

@odata.type

CDataAPI.Connections

Name

任意のコネクション名 ※例:Salesforce-Blog

ProviderName

CData Salesforce ※Salesforce の部分は設定されるコネクション情報によって変わります。例:kintone

ProviderClass

cdata.jdbc.salesforce.SalesforceDriver ※JDBC Driver のヘルプの接続の確立に表示されているドライバークラスを設定
CData JDBC Driver for Salesforce - 接続の確立

ConnectionString

jdbc:salesforce:AuthScheme=Basic;User=myUser;Password=myPassword;Security Token=myToken;

入力できましたら、リクエストしてみましょう。成功すると HTTP ステータス200 でレスポンスに各登録した内容が返ってきます。


CData Sync のコネクション一覧ページを表示してみると登録されていることが確認できました。


もしブラウザによるOAuth 認証が必要な接続先の場合(例えば BigQuery への接続など)、API 経由ではコネクションを作成させることはできませんので、この場合はブラウザを使わない認証方式(サービスアカウントなど)でお試しください。

ジョブ作成

先ほどのコネクション作成と同じように作成していきます。まずは接続先 URLを http://localhost:8181/api.rsc/jobs/ に変更します。
HTTP ヘッダーは先ほどと同じで、あとはリクエストボディでジョブ情報を入力します。

指定項目 指定内容
@odata.type CDataAPI.Connections
JobName 任意のジョブ名 ※例:Sf2SQL-Blog
Source データソースで使用したいコネクション名
Destination 同期先で使用したいコネクション名


成功するとこのようにジョブのオプション情報を含む内容でレスポンスが返ってきます。


Sync のジョブリストを参照するとこちらも正しく作成されていました。

ちなみに、もしオプション内容も API で設定したい場合はAPIリファレンスのパラメータ一覧をご参照下さい。
CData Sync - ジョブ管理API | 22.0.8483

タスク作成

ここまでくるとタスクの作成方法についても既にイメージできているかもですが、先ほどと同じように URL を「http://localhost:8181/api.rsc/tasks/」に変更したら、リクエストボディの設定をしていきます。

指定項目 指定内容
@odata.type CDataAPI.Connections
JobName タスクを追加したいジョブ名
Index タスクの追加順序
Query クエリ
Table 同期先に作成されるテーブルの名前

実行すると、レプリケーションする際に使用する REPLICATE 構文に変換された形で登録されました。


Sync を見てみるとタスクがちゃんと登録されていますね。

ジョブ実行

ではお待ちかねの API でジョブを実行してみたいと思います。
実行方法はこれまでの作成系と同じで、リクエストボディにどのジョブかを指定するだけとなっています。

指定項目 指定内容
@odata.type CDataAPI.Connections
JobName 実行したいジョブ名
WaitForResults(任意) ジョブが完了するまでレスポンスを待つかどうか
Timeout(任意) ジョブ実行中のSyncのタイムアウト制御 ※秒数で指定


実行すると、正常にレプリケーションが完了した内容が返ってきました。

Sync の方もこのように正常終了した内容で LAST RUN 列が更新されました。


SQL Server の方にもちゃんとAccount というテーブルが作成され、レコードも格納されていました!

おわりに

いかがでしたでしょうか。ご紹介したように API 経由でも CData Sync を扱えるようになっているため、スケジュール起動ではなく外部からのリクエストでジョブが実行できるようになっていることから、例えばジョブのレプリケーション結果で次のジョブを実行するような制御もできますし、レプリケーション結果次第でSync の変換機能を呼び出すということもできるようになっています。
CData Sync は30日間の無償トライアルがご利用可能ですので、ぜひぜひお気軽に CData Sync をお試しください!
CData Sync | ノーコードデータレプリケーション / ETL ツール

トライアル・お問い合わせ

関連コンテンツ