CData Software Blog

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

IIJ GIO で CData API Server を構築し REST API を自動生成

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

今回はIIJが提供するクラウドサービスである IIJ GIO で CData API Serverを構成する方法を紹介します。

IIJ GIOインフラストラクチャーP2 とは?

IIJが提供するパブリッククラウドプライベートクラウドを融合したIaaSです。

https://www.iij.ad.jp/biz/p2/

f:id:sugimomoto:20200624112652p:plain

一般的なIaaSとして利用可能なパブリックリソースと、VMware環境をそのままクラウドへ移行可能なプライベートリソースが選べることが特徴です。

f:id:sugimomoto:20200624112700p:plain

今回は前者のパブリックリソースにAPI Serverを構成してみたいと思います。

CData API Server の構成方法

CData API Server は現在 .NET ベースの「Windows版」とJavaベースの「Cross-Platform版」、およびCross-Platformを予めAMIイメージとして提供している「Amazon AMI版」の3種類が提供されています。

www.cdata.com

f:id:sugimomoto:20200417222416p:plain

今回はその中の「Cross-Platform版」を使って、IIJ GIOのIaaSへ展開する方法を紹介したいと思います。

なお、細かな構成方法は以下のヘルプにも掲載されています。

cdn.cdata.com

Cross-Platform版を構成するにあたって

Cross-Platform版は現在大きく分けて2種類の構成方法があります。

一つはCData API Server に予め組み込まれている組み込みJetty サーバーを使うパターン

もう一つはユーザーが任意のJava Servlet コンテナ(TomcatJBossWebLogic、WebSphere、またはJetty)を使うパターンです。

CData API Server をダウンロードすると、以下の2種類のファイルが混同されており、「setup.jar」を実行すればそのままマシンにCData API Server がインストールされますし、

Tomcatなどに「apiserver.war」を配置すれば、そのままその Java Servlet コンテナ上でCData API Server が利用できるように展開されます。

今回は手軽にセットアップが可能な組み込みJetty サーバーを使うパターンでの構成方法で紹介します。

手順

必要なもの

必要になるものは、IIJ GIOのアカウントとAPI Serverの本体です。

  • IIJ GIOアカウント
  • CData API Server Cross-Platform版

IIJ GIO で 仮想サーバを構成する

今回、IIJ GIOでは「VB2-3」プランで「CentOS 8 :64bit」をブートマシンとして構成しました。

f:id:sugimomoto:20200626112615p:plain

ここの環境にSSHでアクセスして、API Server の構築を行っていきます。

CData API Serverのダウンロード

まず、CData API Server 本体を入手します。以下のURLからダウンロードに移動し「Cross-Platform版」をダウンロードしてください。

https://www.cdata.com/jp/apiserver/

ZIPファイルを解答すると、以下のファイルが展開されますので、前述の通り「setup.jar」ファイルをこの後利用します。

f:id:sugimomoto:20200417222634p:plain

なお、サーバーにこの後このwarファイルをアップするのですが、今回はwgetコマンドでインスタンス上にダウンロードするので、予め私はクラウドストレージにアップロードしておきました。もちろん、FTPやSCPでアップロードしてもかまいません。

API Server のセットアップ

それでは API Server のセットアップを進めていきます。

Cross-Platform版には、JDKが必要なので、あらかじめ、OpenJDKをインストールしておきます。

sudo yum install -y java-1.8.0-openjdk

その後API Serverの「setup.jar」をダウンロードし、実行すると、ダイアログに従ってインストールをすすめることができます。

sudo wget https://XXXX/APIServer/setup.jar
sudo java -jar setup.jar

Firewall の構成

続いて、TomcatのPort「8080」をFirewallが通過できるように、「apiserver.xml」を作成します。

cd /usr/lib/firewalld/services/
sudo touch apiserver.xml
sudo vi apiserver.xml

「apiserver.xml」の内容は以下のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>CData API Server</short>
  <description>CData API Server</description>
  <port protocol="tcp" port="8080"/>
</service>

あとは、先程作成したXMLFirewallに登録して、リスタートすればOKです。

sudo firewall-cmd --zone=public --permanent --add-service=apiserver
sudo systemctl restart firewalld.service

API Server を使ってみる

それでは実際にAPI Server を使ってみましょう。

構成されたIPアドレスでポートNo「8080」を指定することで、API Serverの管理画面にアクセスすることができます。

http://XXX.XXX.XXX.XXX:8080/

ログイン情報はデフォルトだとadmin/adminでは入れます。

f:id:sugimomoto:20200624112743p:plain

ログイン後、情報タブでライセンスをアクティベーションしましょう。今回はトライアルライセンスでアクティベーションを行いました。

f:id:sugimomoto:20200624112751p:plain

続いてAPIを構成していきます。今回は以前以下の記事でとりあげたO'Reilly Book List のExcel ファイルをAPI Serverで構成してみます。

kageura.hatenadiary.jp

ファイルは 「/root/OReillyBookList.xlsx」に配置しました。

「接続」→「接続」をクリックすると、データソースとして登録できるサービスの一覧が表示されるのでその中から Excel を選択します。

f:id:sugimomoto:20200624112756p:plain

接続情報を入力する画面では、Excelファイルのファイルパスを入力します。

入力後「接続テスト」をクリックし、接続成功のメッセージが出たら、設定を保存します。

f:id:sugimomoto:20200624112802p:plain

次に Excel のどのシートを REST API として生成するのかの設定を行います。

「リソース」タブに移動し「リソースを追加」をクリックします。

f:id:sugimomoto:20200624112809p:plain

まず先程作成した対象の接続情報を選択し

f:id:sugimomoto:20200624112815p:plain

次にExcelファイルに含まれるシートを選択します。今回のExcelファイルは1シートしかないので、以下のように一つだけがリソースとして追加できます。複数シートを一括でAPI化することも可能です。

f:id:sugimomoto:20200624112821p:plain

あとは対象のリソース名(URLリソース名になります)と、どの操作を許容するのか(参照・作成・更新・削除)、どのカラムを公開するのか、を選択し保存するだけでAPIの作成が完了します。今回はGETだけできるAPIとして構成してみました。

f:id:sugimomoto:20200624112827p:plain

最後にAPIアクセス用のユーザーを作成します。このユーザー情報とユーザーの認証トークンを使ってAPIアクセスを行います。

f:id:sugimomoto:20200624112832p:plain

では作成したAPIにアクセスしてみましょう。APIタブに移動すると、作成されたAPIの仕様を確認することができます。

f:id:sugimomoto:20200624112852p:plain

GETのリクエストURLをそのままブラウザに貼り付けると、レスポンスがJSONで返ってくることがわかります。

f:id:sugimomoto:20200624112858p:plain

おわりに

今回はExcelを元にAPIを生成する方法を紹介しましたが、API Serverは様々なデータソースからAPIを生成することが可能です。

トライアルはもちろん、現在ExcelMySQLデータソース用の無償版もあるので、ぜひ試してみてください。

www.cdata.com

f:id:sugimomoto:20200417224437p:plain