各製品の資料を入手。
詳細はこちら →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 に統合され、時間単位の従量課金になるというのも大きなポイントですね。
必要なもの
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が公開されます。
Postmanからも APIをインターネット越しに操作できるようになります。
1. AMIでのAPI Server デプロイ
まず、以下の CData API Server のページに移動し、画面下にあるAWS MARKETPLACEのボタンをクリックします。
https://www.cdata.com/jp/apiserver/
Amazon Marketplace の CData ページが表示されるので、右上の「Continue to Subscribe」をクリックして、構成作業を開始します。
料金や利用契約を確認して、「Accept Terms」をクリックしてください。
クリック後、「Continue to Configuration」に進めるようになります。
ここの画面では、ベースとなる構成として、CData API Serverのバージョンや配置するリージョンを選択できます。
「Fulfillment Option」は現在は一種類のみ、Software Versionも「2018.0.6918」のみが選択可能です。
Regionはいろいろと選べるので、今回はAsia Pacific(Tokyo)を選んでみました。
次に、EC2の細かな環境構成を選択します。
Choose Actionでは、今の画面から構成を選択するのか、EC2の管理画面から設定するのかを選択することができます。今回はそのまま「Lanch from Website」で構成します。
あとは基本的なEC2の設定項目で、EC2 Instance Type(推奨はt2.large)、デプロイ先のプライベートネットワークの選択、サブネットの設定、EC2インスタンスの対象セキュリティグループ、マシンにSSHなどでアクセスする際のKey Pairの選択などを行います。
それぞれを設定後、「Luanch」をクリックすれば、環境が構成されます。
以下のようにEC2 画面でインスタンスが構成されていることがわかりますね。(私は間違えて2つ構成してしまいました)
あとは、EC2のパブリックURLにアクセスすれば、API Serverのログイン画面が表示されます。
以下のようなURLです。(すでに環境は無いので、アクセスできません)
https://ec2-18-182-18-145.ap-northeast-1.compute.amazonaws.com
ちなみにログイン情報のデフォルト値はユーザー名が「admin」パスワードがEC2のインスタンスIDに「例:i-003dba44660a1814e」なります。
ログイン後、「Tearms and Conditions」に同意すれば
API Serverが使えるようになります!
2.Amazon Aurora DB から API を構成
それでは、実際に構成したAPI Serverを使って、REST ful な Web APIを構成してみましょう。
今回は個人的な検証で以前構成していた、Amazon Aurora DB (PostgreSQL)に繋いでみたいと思います。
CData API Serverは以下の3ステップでAPIが公開できます。
接続先データソースの設定を行う「Connections」の構成
APIとして公開するテーブルやビューを選択する「Resource」の構成
APIにアクセスするためのユーザー情報を指定する「Users」の構成
3. Connectionの追加
最初にDBへのコネクションを追加します。
「SETTINGS」→「Connections」の画面に移動し「+Add Connection」をクリックします。
接続先のDatabase一覧の中から「PostgreSQL」を選択
Amazon Aurora DB に接続するためのServerURLやPort、接続先のDatabase名、接続時に使用するUserID・Passwrdなどを入力し、接続します。
Test Conection をクリックすることで、Amazon Auroraに接続できているか確認できます。接続できない場合は、Amazon auroraのセキュリティ設定でEC2に対するネットワークのアクセス許可が通っていない可能性もあるので、そちらも確認してみてください。
4. Resourceの追加
次に対象のDBからどのテーブルやビューをAPIとして公開するのかを設定します。
「SETTINGS」→「Resouces」から「+Add Resouce」をクリックし
先程登録したConnectionを選択
登録されているテーブルやビューの一覧が表示されるので、公開したいものを選択し、次へ進みます。
次の画面では、そのテーブルに対して、許可するオペレーション(GET、POST、PUT、DELETE)と公開するカラムや接続を許可するユーザー情報、エンドポイントの名称などを設定します。
これを設定すれば、Resouceの構成は完了です。
5. Userの追加
最後にAPIアクセス時に利用するユーザー情報を登録します。
「SETTINGS」→「Users」から「+Add」ボタンをクリックし
ユーザー名や許可する操作、レート制限などを指定し、ユーザーを作成します。
作成後、一覧画面にてAPIリクエスト時に利用するAuthtokenが生成されて表示されます。
これでAPIを利用する準備が整いました。
構成したAPIにリクエストを送ってみる
構成した API は以下のように自動的にドキュメントが生成されます。
CRUD操作方法やリクエストできるURLパラメータなどもここで確認できます。
それでは、構成した 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経由で取得できました!
なお、EC2が保護されていないSSLの場合、初期状態のPOSTMAN設定だとリクエストできない場合があります。
その時は、POSTMANの「SETTINGS」→「General」→「SSL certificate verification」をOFFにすることで、接続できるようになります。
おわりに。API Server 参考リンク
ちなみに、CData API Server以外にも、DBにSalesforceやDynamics 365のデータをレプリケートしてしまう、CData Syncという製品もAMI版として同時にリリースしています。
こちらも是非使ってみてください。
また、API Serverの技術記事はQiitaでいろいろと公開しています。管理用APIの使い方やロードバランサーの構成方法などもあるので、参考にしてもらえればと思います。