Amazon RDS Aurora DB(PostgreSQL)から 5分で REST ful APIを作成:CData API Server AMI

by 杉本和也 | 2019年04月11日

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

今回は、最近リリースされた、AWS AMI版、CData API Server を使って、5分で Amazon RDS の Aurora DBから REST ful を作成する方法を紹介したいと思います!

AMI(Amazon Machine Image) CData API Server とは?

通常、CData で提供している API Server はサーバーに配置するタイプのソフトウェア製品なので、APIを公開する際には Windows Server や Linux Server といったサーバー環境を構築し、そこにデプロイする必要がありました。

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

それを、AMI 版 CData API Serverでは、AWS Marketplaceの画面から環境構成を指定していくだけで、自動的にEC2にサーバー環境とそこにインストールされた API Server をデプロイし使えるようにしてしまう、お手軽環境構成セットです。

aws.amazon.com

f:id:sugimomoto:20190410170852p:plain

また、ライセンス課金がAWS に統合され、時間単位の従量課金になるというのも大きなポイントですね。

必要なもの

  • AWS アカウント

  • Amazon Aurora (今回はPostgreSQL版を利用していますが、MySQL版でも大丈夫です)

基本的にはAWSアカウントと接続先のDBがあれば大丈夫です。

今回は Amazon Auroraを使っていますが、例えばDynamoDBやOracleといったDBにも接続することができます。

利用可能なデータソース一覧は以下のURLから。

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

API の作り方

それでは、APIの作り方を解説していきたいと思います。

基本的にほとんど設定だけなので、小難しいことは特にありません。

最終的に、以下のような感じで、Amazon AuroraのDBに構成されたCustomersテーブルをCRUD操作できるAPIが公開されます。

f:id:sugimomoto:20190410171254p:plain

Postmanからも APIをインターネット越しに操作できるようになります。

f:id:sugimomoto:20190410171301p:plain

1. AMIでのAPI Server デプロイ

まず、以下の CData API Server のページに移動し、画面下にあるAWS MARKETPLACEのボタンをクリックします。

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

f:id:sugimomoto:20190410171311p:plain

Amazon Marketplace の CData ページが表示されるので、右上の「Continue to Subscribe」をクリックして、構成作業を開始します。

f:id:sugimomoto:20190410171317p:plain

料金や利用契約を確認して、「Accept Terms」をクリックしてください。

f:id:sugimomoto:20190410171322p:plain

クリック後、「Continue to Configuration」に進めるようになります。

f:id:sugimomoto:20190410171329p:plain

ここの画面では、ベースとなる構成として、CData API Serverのバージョンや配置するリージョンを選択できます。

「Fulfillment Option」は現在は一種類のみ、Software Versionも「2018.0.6918」のみが選択可能です。

Regionはいろいろと選べるので、今回はAsia Pacific(Tokyo)を選んでみました。

f:id:sugimomoto:20190410171336p:plain

次に、EC2の細かな環境構成を選択します。

Choose Actionでは、今の画面から構成を選択するのか、EC2の管理画面から設定するのかを選択することができます。今回はそのまま「Lanch from Website」で構成します。

あとは基本的なEC2の設定項目で、EC2 Instance Type(推奨はt2.large)、デプロイ先のプライベートネットワークの選択、サブネットの設定、EC2インスタンスの対象セキュリティグループ、マシンにSSHなどでアクセスする際のKey Pairの選択などを行います。

f:id:sugimomoto:20190410171344p:plain

それぞれを設定後、「Luanch」をクリックすれば、環境が構成されます。

f:id:sugimomoto:20190410171351p:plain

以下のようにEC2 画面でインスタンスが構成されていることがわかりますね。(私は間違えて2つ構成してしまいました)

f:id:sugimomoto:20190410171357p:plain

あとは、EC2のパブリックURLにアクセスすれば、API Serverのログイン画面が表示されます。

以下のようなURLです。(すでに環境は無いので、アクセスできません)

https://ec2-18-182-18-145.ap-northeast-1.compute.amazonaws.com

f:id:sugimomoto:20190410171403p:plain

ちなみにログイン情報のデフォルト値はユーザー名が「admin」パスワードがEC2のインスタンスIDに「例:i-003dba44660a1814e」なります。

ログイン後、「Tearms and Conditions」に同意すれば

f:id:sugimomoto:20190410171412p:plain

API Serverが使えるようになります!

f:id:sugimomoto:20190410171420p:plain

2.Amazon Aurora DB から API を構成

それでは、実際に構成したAPI Serverを使って、REST ful な Web APIを構成してみましょう。

今回は個人的な検証で以前構成していた、Amazon Aurora DB (PostgreSQL)に繋いでみたいと思います。

f:id:sugimomoto:20190410171427p:plain

CData API Serverは以下の3ステップでAPIが公開できます。

  1. 接続先データソースの設定を行う「Connections」の構成

  2. APIとして公開するテーブルやビューを選択する「Resource」の構成

  3. APIにアクセスするためのユーザー情報を指定する「Users」の構成

3. Connectionの追加

最初にDBへのコネクションを追加します。

「SETTINGS」→「Connections」の画面に移動し「+Add Connection」をクリックします。

f:id:sugimomoto:20190410171450p:plain

接続先のDatabase一覧の中から「PostgreSQL」を選択

f:id:sugimomoto:20190410171455p:plain

Amazon Aurora DB に接続するためのServerURLやPort、接続先のDatabase名、接続時に使用するUserID・Passwrdなどを入力し、接続します。

Test Conection をクリックすることで、Amazon Auroraに接続できているか確認できます。接続できない場合は、Amazon auroraのセキュリティ設定でEC2に対するネットワークのアクセス許可が通っていない可能性もあるので、そちらも確認してみてください。

f:id:sugimomoto:20190410171502p:plain

4. Resourceの追加

次に対象のDBからどのテーブルやビューをAPIとして公開するのかを設定します。

「SETTINGS」→「Resouces」から「+Add Resouce」をクリックし

f:id:sugimomoto:20190410171528p:plain

先程登録したConnectionを選択

f:id:sugimomoto:20190410171547p:plain

登録されているテーブルやビューの一覧が表示されるので、公開したいものを選択し、次へ進みます。

f:id:sugimomoto:20190410171554p:plain

次の画面では、そのテーブルに対して、許可するオペレーション(GET、POST、PUT、DELETE)と公開するカラムや接続を許可するユーザー情報、エンドポイントの名称などを設定します。

これを設定すれば、Resouceの構成は完了です。

f:id:sugimomoto:20190410171601p:plain

5. Userの追加

最後にAPIアクセス時に利用するユーザー情報を登録します。

「SETTINGS」→「Users」から「+Add」ボタンをクリックし

f:id:sugimomoto:20190410171609p:plain

ユーザー名や許可する操作、レート制限などを指定し、ユーザーを作成します。

f:id:sugimomoto:20190410171614p:plain

作成後、一覧画面にてAPIリクエスト時に利用するAuthtokenが生成されて表示されます。

f:id:sugimomoto:20190410171620p:plain

これでAPIを利用する準備が整いました。

構成したAPIにリクエストを送ってみる

構成した API は以下のように自動的にドキュメントが生成されます。

CRUD操作方法やリクエストできるURLパラメータなどもここで確認できます。

f:id:sugimomoto:20190410171626p:plain

それでは、構成した API を使ってみましょう。手軽にPostmanからリクエストをかけてみます。

User生成時に取得したTokenはHTTPヘッダーに「x-cdata-authtoken」で指定します。

’’’ GET /api.rsc/sample_public_customers/ HTTP/1.1 Host: ec2-18-182-18-145.ap-northeast-1.compute.amazonaws.com x-cdata-authtoken: 6b3G5g3e3C4s5k6E0j8p ’’’

以下のような形で Amazon Aurora のデータをAPI Server経由で取得できました!

f:id:sugimomoto:20190410171633p:plain

なお、EC2が保護されていないSSLの場合、初期状態のPOSTMAN設定だとリクエストできない場合があります。

その時は、POSTMANの「SETTINGS」→「General」→「SSL certificate verification」をOFFにすることで、接続できるようになります。

f:id:sugimomoto:20190410171639p:plain

おわりに。API Server 参考リンク

ちなみに、CData API Server以外にも、DBにSalesforceやDynamics 365のデータをレプリケートしてしまう、CData Syncという製品もAMI版として同時にリリースしています。

こちらも是非使ってみてください。

また、API Serverの技術記事はQiitaでいろいろと公開しています。管理用APIの使い方やロードバランサーの構成方法などもあるので、参考にしてもらえればと思います。

qiita.com

qiita.com

qiita.com

qiita.com

qiita.com

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。