Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Azure SQL DatabaseをCData API ServerでWeb API(OData)アクセスできるように構成してみる その1 Web Apps構成編

私の勤めているCData Software では、各種Webサービス(Dynamics 365やSharePointなどなど)をJDBCODBCといったデータベース接続ドライバ経由で、つまるところSQLクエリでアクセスできるようにする製品をメインで販売しています。

そんな製品群の中でもちょっと特殊な立ち位置の製品が、今日紹介するAPI Serverです。

www.cdata.com

f:id:sugimomoto:20171125170336p:plain

この製品はJDBCODBCドライバとは逆で、既存のSQL ServerMySQLOracleといった各種Databaseを簡単にWeb APIとして簡単に公開することができるツールです。

また、データベースだけでなく、各種クラウドサービスのWeb APIを、OData・OpenAPIといった仕様に準拠したWeb APIとして変換して提供できるという機能もあります。

最終的には、以下のような形でWeb API経由でデータベースにアクセスできるようになります。

[PostmanでAPI Serverから公開されたAzure SQLのテーブルにアクセスしているイメージ]

f:id:sugimomoto:20171125173237p:plain

そもそもOData・OpenAPIに準拠することが嬉しいの?

素早くWeb APIが作れるメリットはイメージが湧きやすいと思いますが、既存のクラウドサービスのWeb APIを、OData・OpenAPIの仕様に準拠した形で出力することのメリットはなかなか捉えづらいのではないでしょうか。

常々身の回りでは言っているんですが、Web APIはHTTP経由のプログラム用インターフェース全般を指し

Web APIで頻繁に出てくるキーワードであるRESTはアーキテクチャスタイルであって、プロトコルでも標準仕様でもありません。

過去の勉強会の資料でも触れています。

kageura.hatenadiary.jp

現在日本でも多種多様なWeb APIが公開されていますが、ちょっと悲しいことにあまり標準化に目を向けられていないように感じられます。(あくまで個人的な感触ですが)

では、それら仕様に準拠することで、具体的にどんなメリットが出てくるか?

もちろん、仕様に準拠したほうが、他の様々なアプリケーションが開発・マッシュアップされやすくなるというのは明白かと思います。

でも、それ以上に、様々な外部サービスを活用しているサービスが繋がりやすくなる、というのがメリットではないでしょうか。

今回私のBlogがAzureベースなので、マイクロソフトプロダクト中心で考えると

Power BI・Excelといった分析用ツールでデータの取得

SharePoint の外部リストやDynamics 365 の仮想エンティティとしての利用

SQL Server Integration ServiceやAzure Data Factoryといったインテグレーションサービスと連携

といったところが考えられます。

これらは個別のサービスにそれぞれ交渉の上で、対応してもらうことも可能でしょうが(Powe Appsでは実際に窓口がありますね)、かなりの労力であろうことは、想像に難くありません。

今回の構成イメージ

では、実際にAPI Serverを構成していきたいと思います。

API Serverはローカルマシンでも利用することが可能ですが、今回はせっかくなのでAzure PaaS上にすべて環境構成をしてみたいと思います。

以下のような感じで、Azure SQL DatabaseをWeb Apps上に構成したAPI Server経由で、Web APIとして公開します。

f:id:sugimomoto:20171125170458p:plain

最終的には、前述した各種マイクロソフトプロダクトから接続することが目的です。

そのあたりは追々このBlogで触れていこうと思います。

API Server インストール

といわけで、まずAPI Server本体をローカルにダウンロードして、展開します。

以下のURLにアクセスし

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

画面右上の[ダウンロード]をクリック

f:id:sugimomoto:20171125170606p:plain

今回は[Windows Setup(.exe)]版をダウンロードします。

f:id:sugimomoto:20171125170612p:plain

ダウンロード後exeファイルを実行すると、以下のようなダイアログが出てきます。

特に難しい設定は無く、そのままポチポチするだけで、インストールできます。

f:id:sugimomoto:20171125170618p:plain

一点だけ、API Serverの接続情報等を管理するための管理者ユーザーのパスワードを設定する箇所があるので、注意しましょう。

f:id:sugimomoto:20171125170626p:plain

インストールが完了後、API ServerはWindows サービスで起動します。

f:id:sugimomoto:20171125170635p:plain

下のような形でブラウザに画面が表示されれば起動OKです。

ログインしてみましょう。なお、ユーザーIDの初期設定はadminです。

f:id:sugimomoto:20171125170644p:plain

ログインすると以下のような画面が表示されます。

もちろん、ローカル環境で評価する場合であれば、このまま利用してもらっても問題ありません。

f:id:sugimomoto:20171125170649p:plain

ちなみに、後ほど必要になるAPI Server本体となるWeb アプリケーションは以下のフォルダに格納されています。

[C:\Program Files\CData\CData API Server\www]

f:id:sugimomoto:20171125170658p:plain

Web Appsへのデプロイ

今度はAzure Web Apps上にAPI Serverをデプロイします。

まず、Azure 管理コンソールからWeb Appsを新規で作成します。

f:id:sugimomoto:20171125170704p:plain

アプリ名やリソースグループは任意のものを選択してください。

OSはWindows版を選択します。

App Service プランはFreeでも大丈夫です。

f:id:sugimomoto:20171125170711p:plain

API ServerはFTP経由でアップしますので、FTP用のパスワードを構成しておきます。

Web Apps管理画面から[デプロイ資格情報]を選択して、パスワードを設定します。

f:id:sugimomoto:20171125170719p:plain

あとは、以下のFTPユーザー名とホスト名を利用して、アップロードを行います。

f:id:sugimomoto:20171125170724p:plain

FTPソフトはなんでもかまわないですが、私は普段使っているFileZiraを使用しました。

先程のホスト名とユーザー名、パスワードを選択し接続します。

前述した「C:\Program Files\CData\CData API Server\www」のファイル一式を

[/site/wwwroot]上へアップロードします。

f:id:sugimomoto:20171125170729p:plain

アップロード後、Azure Web AppsのURLにアクセスし、以下のようにAPI Serverログイン画面が表示されれば、アップ完了です。

f:id:sugimomoto:20171125170739p:plain

f:id:sugimomoto:20171125170746p:plain

次回は実際に、Azure SQL DatabaseのテーブルをWeb APIとして公開する手順を紹介していこうと思います。

参考情報

www.cdata.com

API Server ヘルプ

cdn.cdata.com

www.cdata.com