CData API Server デプロイ機能を使ったパッケージ作成&利用手順

by 桑島義行 | 2020年03月13日

(2021/01/27更新) 本記事でご紹介しております「deploy.rst」を用いてデプロイパッケージを作成する機能ですが現在は提供しておりません。デプロイ先環境で利用するパッケージは、デプロイ元と同じものをご利用いただく方法をご推奨しております。詳細の手順はCData Japanサポートデスクまでお問い合わせください。

はじめに

CData技術ディレクター桑島です。本記事では、API開発用のCData API Server(以下、APIServer)でAPI公開マシン用のデプロイパッケージを作成して、API利用者用のAPIServerを別に構築する手順をご紹介します。これによりAPIServerの管理機能をAPI利用者には非公開にして、かつ、APIの利用状況に応じてAPI公開用マシンを複数台にスケールアウトするような構成を組むことができる様になります。

f:id:kuwazzy:20200313132733p:plain

前提

本記事では、以下の構成で確認しています。

  • Web Server : Apache Tomcat Version 8.5.24
  • OS : MacOSで確認 ※Linux・Windowsでも手順は一緒です
  • DB : MySQL 5.4 ※API定義・ユーザ・ログ情報を格納するDB、および、API公開するデータを格納するDBの2つが必要です

手順

API開発用APIServerの構築

Tomcatのconf配下のServer.xmlを開き、配下にを以下の通り追加します。これにより、API開発用APIServerで設定したライセンス情報・API定義・ユーザ・ログデータがMySQLなどのデータベースに永続化して保管することができる様になります。

Server.xml

<?xml version="1.0" encoding="UTF-8"?>

〜(省略)〜

       <Context path="/apiserver">
          <Resource name="jdbc/APP_DB" auth="Container" type="javax.sql.DataSource"
                maxActive="100" maxIdle="30" maxWait="10000"
                driverClassName="cdata.jdbc.mysql.MySQLDriver"
                url="jdbc:cdata:mysql:User=xxxxx;Password=xxxxx;Database=xxxxx;Server=xxxxx;Port=3306;"/>
          <Resource name="jdbc/APP_USERS" auth="Container" type="javax.sql.DataSource"
                maxActive="100" maxIdle="30" maxWait="10000"
                driverClassName="cdata.jdbc.mysql.MySQLDriver"
                url="jdbc:cdata:mysql:User=xxxxx;Password=xxxxx;Database=xxxxx;Server=xxxxx;Port=3306;"/>
          <Resource name="jdbc/APP_LOGS" auth="Container" type="javax.sql.DataSource"
                maxActive="100" maxIdle="30" maxWait="10000"
                driverClassName="cdata.jdbc.mysql.MySQLDriver"
                url="jdbc:cdata:mysql:User=xxxxx;Password=xxxxx;Database=xxxxx;Server=xxxxx;Port=3306;"/>
        </Context>
                       
      </Host>
    </Engine>
  </Service>
</Server>

MySQLへの接続情報は環境にあわせた文字列をセットしてください。MySQLへの接続で必要なCData MySQL JDBC DriverはAPIServerにバンドルされています。

次に、同じパス配下のtomcat-users.xmlを開きます。ユーザに「cdata_admin」ロールを付与することでAPIServer管理コンソールへのログインユーザを作成することが出来ます。なお、passwordは環境にあわせた値をセットしてください。

tomcat-users.xml

<?xml version="1.0" encoding="UTF-8"?>

〜(省略)〜

<user name="admin" password="xxxxx" roles="cdata_admin,rssbus_admin,admin-gui,manager-gui,
manager-status,manager-script,manager-jmx" />
</tomcat-users>

下記のサイトからCross-Platform (Java Edition)版のAPIServerをダウンロードします。

www.cdata.com

ダウンロードファイルに含まれるapiserver.warファイルをwebappsフォルダ配下に配置してTomcatを起動します。本手順では、bin配下のstartup.shを直接起動しました。

Tomcatが起動したら管理コンソールにアクセスできるマシンから開きます。デフォルトではパッケージ名がapiserverなので「http(s)://{マシン名}:{ポート番号}/apiserver」でアクセス出来ます。下記のログイン画面が表示されたらtomcat-users.xmlで設定したusernameとpasswordをセットしてサインインしてください。

f:id:kuwazzy:20200313140954p:plain

ログインが成功するとステータス画面が開きます。まだライセンスのアクティベーションを行なっていませんのでライセンスを認証する旨のメッセージが表示されています。

f:id:kuwazzy:20200313141623p:plain

一旦、APIServerの管理コンソールを離れて、TomcatのServer.xmlで設定したMySQLのデータベース(本例では、apiserver)をMySQLWorkBenchなどで参照してみます。すると、「app_logs / app_request / app_scripts / app_settings / app_user_connections / app_users」というテーブルが作成されています(※作成されない場合は、Server.xmlなどの設定に問題があります)。

f:id:kuwazzy:20200313141805p:plain

これらのテーブルには、APIServerの管理コンソールで定義したAPI定義情報やAPIへのアクセスユーザー、アクセスログ、そしてライセンス情報が格納されます。以下ポンチ絵の赤枠の通信となります。

f:id:kuwazzy:20200313142147p:plain

API定義、および、アクセスユーザの定義

それでは、一度、APIServerの管理コンソールに戻り、APIServerのライセンスを認証します。情報 タブを開き、「新しいライセンスをインストール」をクリックします。

f:id:kuwazzy:20200313145658p:plain

ライセンス情報を登録するウィンドウが表示されるので必要事項を登録して保存して、以下画面の様にプロダクトキーがセットされたことを確認してください。このプロダクトキーはMySQLのAPP_DB内に保存されます。

f:id:kuwazzy:20200313145906p:plain

次にAPI公開データが格納されているMySQLへの接続情報を作成します。下のポンチ絵の赤枠の接続です。

f:id:kuwazzy:20200313150439p:plain

設定 > 接続 タブを開き、「+接続の追加」ボタンをクリックします。

f:id:kuwazzy:20200313150014p:plain

接続可能なDBの一覧が表示されるので今回はMySQLを選択します。

f:id:kuwazzy:20200313151044p:plain

MySQLへの接続情報をセットして接続のテストを実施し接続に成功したことを確認したら変更を保存します。

f:id:kuwazzy:20200313150735p:plain

次に設定 > リソース タブを開き、「リソースの追加」ボタンをクリックします。

f:id:kuwazzy:20200313151138p:plain

リソースの追加ウィザードが開くので、MySQL内のAPIとして公開したいテーブルを選択します。本例では、MySQLのサンプルDBであるsakilaデータエース内のactor, city, customerを選択しました。

f:id:kuwazzy:20200313152318p:plain

ウィザードが完了すると選択したテーブルがリソース一覧に表示されます。

f:id:kuwazzy:20200313152711p:plain

続いてAPIにアクセス可能なユーザを追加していきます。設定 > ユーザータブを開き「+追加」ボタンをクリックします。

f:id:kuwazzy:20200313152809p:plain

ユーザーを追加ウィザードが開きますので、ユーザ名と権限を付与します。本手順ではcdatauserというユーザに参照(GET)のみの権限を付与しました。変更を保存します。

f:id:kuwazzy:20200313152925p:plain

ユーザの一覧に追加したユーザの認証トークンが表示されます。この値は、APIアクセス時に使用するので控えておいてください。

f:id:kuwazzy:20200313153001p:plain

APIにアクセスするマシンを制限したい場合は、設定 > サーバ 内の信頼されたIPアドレスに追加してください。

f:id:kuwazzy:20200313153229p:plain

以上でAPIのエンドポイントの作成、および、アクセスするための準備が完了しました。

管理コンソールのマシンからのAPIリクエストの確認

それでは、まずは、管理コンソールを開いているマシンからAPIリクエストを発行してみたいと思います。APIタブを開きます。リソースに上記手順で追加したMySQLのテーブルが追加されていることを確認します。その中のひとつのエンドポイントを選択します。本手順ではactorを選択しました。右側にactorのAPIリファレンスが表示されます。api.rsc/actor/ のリンクをクリックします。

f:id:kuwazzy:20200313162931p:plain

actorテーブルのデータがJSONデータとなってレスポンスが返って来ることを確認します。管理コンソールにログインした状態だと認証は求められませんが、URL直リンクで開いた場合や別なツールからリクエストを発行する場合には、上記で取得したAPIアクセスのユーザ名と認証トークンをセットしてください。

f:id:kuwazzy:20200313163109p:plain

デプロイパッケージの作成

API開発用のAPIServerからAPI公開用マシン用のデプロイパッケージを作成します。

f:id:kuwazzy:20200313163803p:plain

こちらのURLよりdeploy.rst ファイルをダウンロードしてAPI開発用APIServer展開済みパッケージ(本例ではapiserver)直下に追加してください。

/usr/local/apache-tomcat-8.5.24/webapps/apiserver $ ll
total 88
drwxr-x---   4 user1  staff    128  3 13 14:05 META-INF
drwxr-x---   4 user1  staff    128  3 13 14:05 WEB-INF
drwxr-x---   9 user1  staff    288  3 13 14:05 admin
-rw-r
                                    

関連コンテンツ

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

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。