LoginSignup
18
16

More than 5 years have passed since last update.

herokuで固定IPが必要なAPIを利用する方法

Posted at

目的

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

スクリーンショット 2014-11-02 21.25.52.png

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
18
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16