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

こんにちは。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

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

関連コンテンツ