こんにちは。CData Software Japanリードエンジニアの杉本です。
今回はIIJが提供するクラウドサービスである IIJ GIO で CData API Serverを構成する方法を紹介します。
IIJ GIOインフラストラクチャーP2 とは?
IIJが提供するパブリッククラウドとプライベートクラウドを融合したIaaSです。
一般的なIaaSとして利用可能なパブリックリソースと、VMware環境をそのままクラウドへ移行可能なプライベートリソースが選べることが特徴です。
今回は前者のパブリックリソースにAPI Serverを構成してみたいと思います。
CData API Server の構成方法
CData API Server は現在 .NET ベースの「Windows版」とJavaベースの「Cross-Platform版」、およびCross-Platformを予めAMIイメージとして提供している「Amazon AMI版」の3種類が提供されています。
今回はその中の「Cross-Platform版」を使って、IIJ GIOのIaaSへ展開する方法を紹介したいと思います。
なお、細かな構成方法は以下のヘルプにも掲載されています。
Cross-Platform版を構成するにあたって
Cross-Platform版は現在大きく分けて2種類の構成方法があります。
一つはCData API Server に予め組み込まれている組み込みJetty サーバーを使うパターン
もう一つはユーザーが任意のJava Servlet コンテナ(Tomcat、JBoss、WebLogic、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 で 仮想サーバを構成する
今回、IIJ GIOでは「VB2-3」プランで「CentOS 8 :64bit」をブートマシンとして構成しました。
ここの環境にSSHでアクセスして、API Server の構築を行っていきます。
CData API Serverのダウンロード
まず、CData API Server 本体を入手します。以下のURLからダウンロードに移動し「Cross-Platform版」をダウンロードしてください。
https://www.cdata.com/jp/apiserver/
ZIPファイルを解答すると、以下のファイルが展開されますので、前述の通り「setup.jar」ファイルをこの後利用します。
なお、サーバーにこの後この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>
あとは、先程作成したXMLをFirewallに登録して、リスタートすれば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では入れます。
ログイン後、情報タブでライセンスをアクティベーションしましょう。今回はトライアルライセンスでアクティベーションを行いました。
続いてAPIを構成していきます。今回は以前以下の記事でとりあげたO'Reilly Book List のExcel ファイルをAPI Serverで構成してみます。
ファイルは 「/root/OReillyBookList.xlsx」に配置しました。
「接続」→「接続」をクリックすると、データソースとして登録できるサービスの一覧が表示されるのでその中から Excel を選択します。
接続情報を入力する画面では、Excelファイルのファイルパスを入力します。
入力後「接続テスト」をクリックし、接続成功のメッセージが出たら、設定を保存します。
次に Excel のどのシートを REST API として生成するのかの設定を行います。
「リソース」タブに移動し「リソースを追加」をクリックします。
まず先程作成した対象の接続情報を選択し
次にExcelファイルに含まれるシートを選択します。今回のExcelファイルは1シートしかないので、以下のように一つだけがリソースとして追加できます。複数シートを一括でAPI化することも可能です。
あとは対象のリソース名(URLリソース名になります)と、どの操作を許容するのか(参照・作成・更新・削除)、どのカラムを公開するのか、を選択し保存するだけでAPIの作成が完了します。今回はGETだけできるAPIとして構成してみました。
最後にAPIアクセス用のユーザーを作成します。このユーザー情報とユーザーの認証トークンを使ってAPIアクセスを行います。
では作成したAPIにアクセスしてみましょう。APIタブに移動すると、作成されたAPIの仕様を確認することができます。
GETのリクエストURLをそのままブラウザに貼り付けると、レスポンスがJSONで返ってくることがわかります。
おわりに
今回はExcelを元にAPIを生成する方法を紹介しましたが、API Serverは様々なデータソースからAPIを生成することが可能です。
トライアルはもちろん、現在Excel・MySQLデータソース用の無償版もあるので、ぜひ試してみてください。