目的
herokuでは固定IPが付与されないため、固定IPが必要になるAPIが利用できません。これを回避するには幾つか方法がありますが、プロキシサーバーを利用するのが手間なくできます。今回は、有料Add-onのProximoを使って、固定IPが必要なAPIを利用できるように設定しました。
回避方法についてはこちらにまとまっています。
http://blog.quotaguard.com/google-maps-geocoding-api-heroku/
herokuを利用する場合は、極力サーバーAPIではなくJSから利用するフロントAPIを使うようにアーキテクチャを考えていた方が良さそうですね。
前提
- Node.jsを利用しています。
- APIにはGoogleのYouTube Data APIを想定しています。
- Proximoを利用します。はじめ同様のAdd-onのQuotaGuardを使ったんですが、うまくいきませんでした。
手順
Proximoの追加
ProximoのページからAdd-onを追加します。月間1000回呼び出しで$5なのでけっこうします。
https://addons.heroku.com/proximo
heroku configで確認すると、PROXIMO_URLという環境変数が設定されています。<user>:<pass>@<proxy_server>という構成になっています。
$ heroku config
=== social-tube Config Vars
MONGOLAB_URI: mongodb://xxxx:xxxx@xxxx.mongolab.com:49150/xxxx
PROXIMO_URL: http://xxxx:xxxx@xxxx.proximo.io
Google APIでプロキシサーバーを指定する
Google APIではプロキシサーバーを指定する事ができるようになっています。
https://github.com/google/google-api-nodejs-client#global-options
幾つかやり方がありますが、今回は下記のようにプロキシサーバーを設定しました。
var googleapis = require('googleapis');
console.log(process.env.PROXIMO_URL);
if(process.env.PROXIMO_URL){
console.log('use proxy');
googleapis.options({ proxy: process.env.PROXIMO_URL});
}
var youtube = googleapis.youtube('v3');
APIのアクセス元のIPアドレスを変更する
API ConsoleからCredentialsのAllowed IPsを変更します。
https://console.developers.google.com/
IPアドレスはPROXIMO_URLに設定されたサーバーURLにpingを打てば分かります。
Proximoの利用回数を確認する
Proximoの利用回数を確認するには下記のようにコマンドを実行します。
heroku addons:open proximo -a social-tube