ヴァル研究所 Advent Calendar 2016、6日目です。
javascriptで駅すぱあとWebサービス(WebAPI)を使いたいんだけど、アクセスキーが見られちゃうのは勘弁〜な人のために、
AWSのAPIGatewayを利用したアクセスキー隠蔽方法をご紹介します。
※ほぼAPIGatewayの説明です。駅すぱあとWebサービスに限らず、他のWebAPIで同じ悩みに遭遇している方も是非読んでいただけるとうれしいです。
APIGateway とは
APIを簡単に作成したり配布したり、保守や監視が行えるサービスです。
詳しくは公式ページをご覧ください。
駅すぱあとWebサービス とは
皆さんご存知(?)「駅すぱあと」の機能をWebAPIとして提供しているサービスです。経路探索はもちろん、駅や時刻表などの情報を取得することが出来ます。無料で使えるフリープランがありますので気になった方は駅すぱあとWebサービスの紹介ページをご覧ください。
それでは作ってみよう
今回は駅情報の機能をラップするAPIを作ります。
APIの作成
APIGatewayのページにアクセスし、「APIの作成」をクリックします。
API名と説明を入力して「APIの作成」をクリックします。
リソースの作成
駅情報APIは、api.ekispert.jp/v1/{format}/station
というエンドポイントなので、station
というリソースを作成することにします。
メソッドの作成
次に、メソッドを作成します。
「メソッドの作成」をクリックします。
「統合タイプ」はHTTP
を選択しましょう。
「エンドポイントURL」は、http://api.ekispert.jp/v1/json/station?key=xxxxxxx
を入力します。json
の部分はxml
でもかまいません。
テスト
ここまで出来たら、テストを実行してみましょう。
「テスト」をクリックして、駅すぱあとWebサービスのレスポンスが返るか確認してみましょう。
デプロイ
デプロイを行い、APIを使える状態にします。
「デプロイ」をクリックすると、エンドポイントが生成されます。
アクセスして、テスト通りの結果になっているか確認しましょう。
これで、駅情報の機能をラップするAPIが完成しました!
まとめ
今回は駅すぱあとWebサービスの機能を例に、
APIGatewayのHTTPプロキシ機能を使って、アクセスキーを隠蔽する方法をご紹介しました。
キーを隠蔽する以外にも、様々な使い方があります。
- 他のAPIと組み合わせることで、1つのエンドポイントで事が済ませられる
- メソッドレスポンスのモデルをいじることでレスポンスを整形することが出来るので、アプリケーション側の実装内容に合わせて、コード量を少なくすることが可能
- リクエスト時に付与するパラメータ名を変更することが可能なので、オレオレAPIを作る事が出来る
APIをさらに便利に使う事が出来ますね♩
それでは良いAPIライフを!