CData Software Blog

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

CData API Server を AWS EC2 Amazon Linux2 で構成する

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

前回、CData Sync を AWS EC2 で構成する方法を紹介しました。今回は CData API Serverの構成も紹介したいと思います。

www.cdatablog.jp

CData API Server の構成方法

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

www.cdata.com

f:id:sugimomoto:20200417222416p:plain

今回はその中でも「Cross-Platform版」を使って、自前でAWS EC2を構成し、展開する方法を紹介したいと思います。

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

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 が利用できるように展開されます。

今回は後者の任意のJava Servletコンテナに展開する例として「AWS EC2」のAmazon Linuxを立ち上げて、Tomcatを構成し、CData API Server を展開する方法を紹介します。

手順

CData API Serverのダウンロード

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

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

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

f:id:sugimomoto:20200417222634p:plain

なお、EC2 にこの後このwarファイルをアップするのですが、今回はwgetコマンドでEC2上にダウンロードするので、予め私はAmazon S3にアップロードしておきました。

AWS EC2 Amazon Linux の立ち上げ

次にAWS EC2のインスタンスを立ち上げます。

なお、今回は最小環境で構成しますが、必要な性能要件は利用するデータソースや頻度、求めるパフォーマンスによって異なります。

最低限必要な環境要件は以下のURLから確認してください。

http://cdn.cdata.com/help/BWE/jp/odata/System-Requirements.html

今回はベーシックな「Amazon Linux 2 AMI(HVM) SSD Volume Type」

f:id:sugimomoto:20200408225137p:plain

無料利用枠の対象である「t2.micro」で立ち上げました。

f:id:sugimomoto:20200408225433p:plain

環境構成で唯一注意したい点はセキュリティグループの設定で開けるポートです。8080ポートで接続することになるので、以下のようにカスタムTCPでポートを許可しておきましょう。

f:id:sugimomoto:20200408225500p:plain

環境構成後、SSHで接続しますが、今回はお手軽な EC2 Instance Connect で行いました。

f:id:sugimomoto:20200408225615p:plain

JDK Install

まず、JDKをインストールします。今回は手軽にインストールできる yum から「java-1.8.0-openjdk」をインストールしました。

sudo yum install -y java-1.8.0-openjdk

Tomcat Install

続いて、yumJava Servlet コンテナとして利用する「tomcat」をインストールします。

sudo yum install tomcat

CData API Server の配置

Tomcatをインストール後、tomcatのWebAppsフォルダに CData API Server のwarファイルを配置します。

cd /usr/share/tomcat/webapps

前述の通り、あらかじめS3にアップロードしておいたので、wgetで取得しました。

sudo wget https://XXXXXX/apiserver.war

最後にTomcat ユーザーに CData API Server へのアクセスを許容します。「conf/tomcat-users.xml」を編集し

sudo vi /usr/share/tomcat/conf/tomcat-users.xml

以下の行を追加します。

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

以上で構成は完了です。

Tomcat 起動

あとはTomcatを起動して、アクセスするだけです。

sudo systemctl start tomcat

前述の通り、8080ポートを開けていたので、以下のようなURLでアクセスできます。

http://XXXXXX.ap-northeast-1.compute.amazonaws.com:8080/apiserver

先程設定した Tomcat ユーザーでログインして利用できます。

f:id:sugimomoto:20200417223312p:plain

MariaDBの構成

せっかくなので、API Server で REST APIの生成を試すことができる MariaDBMySQLで接続)も構成してみたいと思います。

# MariaDB をインストール
$ sudo yum install -y mariadb-server

# MariaDB程度 有効化・自動起動設定
$ sudo systemctl start mariadb

# パスワードなどの設定(任意のパスワードを設定)
$ sudo mysql_secure_installation

MariaDB にサンプルデータをインストール

次に MySQL のサンプルデータベースとして公開されているSakila DBを登録します。

https://dev.mysql.com/doc/sakila/en/sakila-installation.html

# 各SQLファイルをダウンロードしてロード
$ sudo wget https://downloads.mysql.com/docs/sakila-db.tar.gz

# ダウンロードした tar.gz を解凍
$ sudo gunzip sakila-db.tar.gz
$ sudo tar xvf sakila-db.tar

# MariaDBにログインして、sakila DB を構成
$ mysql -u root -p

mysql> SOURCE /home/ec2-user/sakila-db/sakila-schema.sql;
mysql> SOURCE /home/ec2-user/sakila-db/sakila-data.sql;

API Server から LocalhostMariaDB に接続してAPIを構成

では、インストールしたMariaDBから REST API を生成してみます。

CData API Server にログインし「設定」→「接続」の画面に移動し、データソース一覧の中から「MySQL」を選択します。

f:id:sugimomoto:20200417223617p:plain

あらかじめ設定したLocalhost MariaDBの接続情報を入力し、テスト接続で接続状況を確認した上で、設定を保存しましょう。

f:id:sugimomoto:20200417223655p:plain

次にリソースを追加するために「設定」→「リソース」へ移動し、「リソースを追加」をクリックします。

f:id:sugimomoto:20200417223724p:plain

接続先の一覧から先程登録したMariaDBMySQL接続を選択すると

f:id:sugimomoto:20200417223753p:plain

対象のテーブル一覧に予め登録したSakila DB のテーブルリストが出てきます。ここから任意のテーブルを選択して

f:id:sugimomoto:20200417223817p:plain

あとは、保存をクリックすれば対象のテーブルがそのままREST APIとして生成されて公開されます。

f:id:sugimomoto:20200417223838p:plain

APIページに行くと、テーブルリソースが追加され、API Reference を確認できます。

f:id:sugimomoto:20200417223911p:plain

実際にエンドポイントにアクセスしてみると、GETリクエストが実行されて、データを取得できました。

f:id:sugimomoto:20200417223948p:plain

おわりに

CData API Server は現在無償版もあるので、ぜひ試してみてください。

www.cdata.com

f:id:sugimomoto:20200417224437p:plain