(2021/01/27更新) 本記事でご紹介しております「deploy.rst」を用いてデプロイパッケージを作成する機能ですが現在は提供しておりません。デプロイ先環境で利用するパッケージは、デプロイ元と同じものをご利用いただく方法をご推奨しております。詳細の手順はCData Japanサポートデスクまでお問い合わせください。
はじめに
CData技術ディレクター桑島です。本記事では、API開発用のCData API Server(以下、APIServer)でAPI公開マシン用のデプロイパッケージを作成して、API利用者用のAPIServerを別に構築する手順をご紹介します。これによりAPIServerの管理機能をAPI利用者には非公開にして、かつ、APIの利用状況に応じてAPI公開用マシンを複数台にスケールアウトするような構成を組むことができる様になります。
前提
本記事では、以下の構成で確認しています。
- 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"
〜(省略)〜
path="/apiserver">
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;"/>
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;"/>
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;"/>
MySQLへの接続情報は環境にあわせた文字列をセットしてください。MySQLへの接続で必要なCData MySQL JDBC DriverはAPIServerにバンドルされています。
次に、同じパス配下のtomcat-users.xmlを開きます。ユーザに「cdata_admin」ロールを付与することでAPIServer管理コンソールへのログインユーザを作成することが出来ます。なお、passwordは環境にあわせた値をセットしてください。
tomcat-users.xml
xml version="1.0" encoding="UTF-8"
〜(省略)〜
name="admin" password="xxxxx" roles="cdata_admin,rssbus_admin,admin-gui,manager-gui,
manager-status,manager-script,manager-jmx" />
下記のサイトから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をセットしてサインインしてください。
ログインが成功するとステータス画面が開きます。まだライセンスのアクティベーションを行なっていませんのでライセンスを認証する旨のメッセージが表示されています。
一旦、APIServerの管理コンソールを離れて、TomcatのServer.xmlで設定したMySQLのデータベース(本例では、apiserver)をMySQLWorkBenchなどで参照してみます。すると、「app_logs / app_request / app_scripts / app_settings / app_user_connections / app_users」というテーブルが作成されています(※作成されない場合は、Server.xmlなどの設定に問題があります)。
これらのテーブルには、APIServerの管理コンソールで定義したAPI定義情報やAPIへのアクセスユーザー、アクセスログ、そしてライセンス情報が格納されます。以下ポンチ絵の赤枠の通信となります。
API定義、および、アクセスユーザの定義
それでは、一度、APIServerの管理コンソールに戻り、APIServerのライセンスを認証します。情報 タブを開き、「新しいライセンスをインストール」をクリックします。
ライセンス情報を登録するウィンドウが表示されるので必要事項を登録して保存して、以下画面の様にプロダクトキーがセットされたことを確認してください。このプロダクトキーはMySQLのAPP_DB内に保存されます。
次にAPI公開データが格納されているMySQLへの接続情報を作成します。下のポンチ絵の赤枠の接続です。
設定 > 接続 タブを開き、「+接続の追加」ボタンをクリックします。
接続可能なDBの一覧が表示されるので今回はMySQLを選択します。
MySQLへの接続情報をセットして接続のテストを実施し接続に成功したことを確認したら変更を保存します。
次に設定 > リソース タブを開き、「リソースの追加」ボタンをクリックします。
リソースの追加ウィザードが開くので、MySQL内のAPIとして公開したいテーブルを選択します。本例では、MySQLのサンプルDBであるsakilaデータエース内のactor, city, customerを選択しました。
ウィザードが完了すると選択したテーブルがリソース一覧に表示されます。
続いてAPIにアクセス可能なユーザを追加していきます。設定 > ユーザータブを開き「+追加」ボタンをクリックします。
ユーザーを追加ウィザードが開きますので、ユーザ名と権限を付与します。本手順ではcdatauserというユーザに参照(GET)のみの権限を付与しました。変更を保存します。
ユーザの一覧に追加したユーザの認証トークンが表示されます。この値は、APIアクセス時に使用するので控えておいてください。
APIにアクセスするマシンを制限したい場合は、設定 > サーバ 内の信頼されたIPアドレスに追加してください。
以上でAPIのエンドポイントの作成、および、アクセスするための準備が完了しました。
管理コンソールのマシンからのAPIリクエストの確認
それでは、まずは、管理コンソールを開いているマシンからAPIリクエストを発行してみたいと思います。APIタブを開きます。リソースに上記手順で追加したMySQLのテーブルが追加されていることを確認します。その中のひとつのエンドポイントを選択します。本手順ではactorを選択しました。右側にactorのAPIリファレンスが表示されます。api.rsc/actor/ のリンクをクリックします。
actorテーブルのデータがJSONデータとなってレスポンスが返って来ることを確認します。管理コンソールにログインした状態だと認証は求められませんが、URL直リンクで開いた場合や別なツールからリクエストを発行する場合には、上記で取得したAPIアクセスのユーザ名と認証トークンをセットしてください。
デプロイパッケージの作成
API開発用のAPIServerからAPI公開用マシン用のデプロイパッケージを作成します。
こちらの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
関連コンテンツ