こんにちは! CData Software Japan リードエンジニアの杉本です。
今回はCData API Serverの機能でも若干特殊ながら、とても重要な機能である「Cloud Gateway」を解説したいと思います。
CData API Server とは?
CData API Server は3Stepでお好みのRDBやNoSQL、クラウドサービスからREST ful APIを生成して、公開することができるソフトウェアです。
https://www.cdata.com/jp/apiserver/
配置型のソフトウェア製品なので、基本的にはサーバーないしWebアプリをホスティングできる環境を用意して、そこにAPI Serverを構成し、アクセスできるようにする製品です。
なので、インターネット上に公開したAPIを作成したい場合は、クラウドホスティング、オンプレミスの場合はDMZなどに配置する必要が出てきます。
そこで今回紹介する Cloud Gatewayの機能を活用することができます。
Cloud Gateway機能について
Cloud Gateway はクラウド上のSSHサーバーのリバースSSHポートフォワーディングを利用し、CData API Serverをインターネット上に公開する機能です。
http://cdn.cdata.com/help/BWE/jp/odata/Windows-Edition.html#cloud-gateway
API Server がSSH Server と接続を確立した状態で、SSH Server がHTTP/Sリクエストをポートフォワーディングすることにより、API Serverをインターネットアクセスを可能にします。
これにより、ファイアウォールの変更、DMZへの配置、固定IPアドレス・ドメインといった要素をAWSなどのクラウドサービス側に寄せることができ、セキュアにオンプレミスに存在するRDBや基幹システムをクラウド上で扱えます。
今回はこの機能をAWS EC2・Amazon Linux インスタンスで構成する方法を紹介したいと思います。なお、SSHサーバーはお好みのマシンで構いません。
必要なもの
- CData API Server
- MySQL(API Server の APIデータソースとして使います)
- AWS EC2(SSHサーバーとなるマシンであれば、AzureでもGCPでも)
- Windows マシン(API Server を配置するオンプレミス環境です)
SSHサーバーとなるEC2 インスタンスを構成する
まずはゲートウェイの役割を担うSSH ServerをAWS EC2で構成したいと思います。EC2の場合、SSHがデフォルトで接続できる状態なので、あまり小難しい準備は必要ありません。
今回はAmazon Linux の以下のインスタンスを使用しました。
検証用なので、無償利用枠で構成しています。
必要なポートはSSHと最終的にAPI Serverを公開するポートです。今回は API Serverのデフォルトポートである「8783」を選択しました。
環境が構成できたら、EC2の設定を調整します。EC2 Instance ConnectでSSHアクセスし
「sshd_config」に「GatewayPorts yes」を追加してください。デフォルトではコメントアウト状態で「#GatewayPorts no」になっています。
以上で、EC2側の準備は完了です。
オンプレミス側 API Server のセットアップ
続いて、オンプレミス側にAPI ServerとMySQLをダウンロード・インストールします。とりあえずローカルでのみ動く、ベーシックなAPIを構成してみましょう。MySQLは予めインストールされていることを想定しています。
詳細な手順を見たい方はこちらをどうぞ。
以下URLからWindows版のAPI Server をダウンロード、インストールしてください。
https://www.cdata.com/jp/apiserver/download/
CData API Server にログインし「設定」→「接続」の画面に移動し、データソース一覧の中から「MySQL」を選択します。
あらかじめ設定したLocalhost MySQLの接続情報を入力し、テスト接続で接続状況を確認した上で、設定を保存しましょう。
次にリソースを追加するために「設定」→「リソース」へ移動し、「リソースを追加」をクリックします。
接続先の一覧から先程登録したMySQL接続を選択すると
対象のテーブル一覧が出てきます。ここから任意のテーブルを選択して
あとは、保存をクリックすれば対象のテーブルがそのままREST APIとして生成されて公開されます。
APIページに行くと、テーブルリソースが追加され、API Reference を確認できます。
実際にエンドポイントにアクセスしてみると、GETリクエストが実行されて、データを取得できました。
Cloud Gatewayの構成
最後にCloud Gatewayの構成を行います。
タスクメニューのAPI Serverアイコンを右クリックして「Server Options」を選択します。
Server Options画面の「Cloud Gateway」タブから設定を行うことができます。
「Enable Cloud Gateway」にチェックを入れて、EC2に接続するために必要な情報を入力します。
- Host:構成したAWS EC2のホスト名を入力します。
- Port:デフォルトは22です。
- Authentication Type:Public Key
- User:Amazon Linux ですとデフォルトは「ec2-user:です。
- Certificate:予め作成しておいたAWS EC2接続用の証明書ファイルを選択します。
設定後、「Test Connection」をクリックして以下のようなメッセージが表示されればOKです。
最後に「Service」タブに戻り「Run as a Windows Service」のチェックボックスをOFFにして、「Save Changes」をクリックします。クリック後、API Serverの再起動が始まるので、正常に起動すればOKです。(始まらない場合はStartボタンをクリックしてください)
EC2からAPI Serverにアクセスしてみる
あとはEC2のホストアドレスにポート番号:8783を付与すれば、CloudGatewayがポートフォワーディング処理を実施して、API Serverへのアクセスを提供してくれます。
また、デフォルトではBaseURLがローカルホストになっているので、API Serverのサーバー設定タブからAWS EC2 の BaseURLを指定しておきましょう。
おわりに
いかがでしたでしょうか。これによりクラウドサービス・アプリケーションから手軽にオンプレミスのデータへのアクセスを提供することができるようになります。
構成がちょっとむずかしい、よくわからない所がある、などありましたら、どうぞお気軽にテクニカルサポートまで聞いてみてください。
テクニカルサポートへの問い合わせは以下のサポートフォームで受け付けています。