Closed7

herokuで固定IPを使いたいのでaddon選定などのメモ

ピン留めされたアイテム
北山淳也北山淳也

herokuのアプリケーションから特定のWebAPIに接続するときに固定IPであることが求められるケースがある。
有名なところでは LINE BOT は IP の allowlist を登録する仕組みであるために
固定IPである必要がある。

heroku はコンテナが立ち上がり直すたびにIPが変わる動的IPな仕組みであるために
なんらかの対応を取る必要がある。
基本的には固定IPを実現するための heroku add-on を導入することになる

なお、今回は無料プランに拘るつもりはないので無料プランの有無などについての情報が必要な方は
各add-onページなどを見てみてください

北山淳也北山淳也

ドキュメントを読む限り、
Fixie と QuotaGuard Static IP's はローカル開発環境からも使えそう。
Proximo は Proximo wrapper が必要& Procfile の更新が必要そう?

北山淳也北山淳也

Proximo を使っている記事

Fixie を使っている記事

QuotaGuard Static IP's を使っている記事

北山淳也北山淳也

外部API(WebAPI) への接続は nahi / httpclient を使う予定なのでついでにメモ
proxy を使ったRequestの方法など

北山淳也北山淳也

当然だが固定IPになってるかはやってみるしかない。
当初の目的と同じくWebAPIで確認できると嬉しい

つまり
http://ip-api.com/json/ に Request すればOK。

ローカルからなら

% curl http://ip-api.com/json/

Response の query として取得できるIPが
CMAN で確認できるIPアドレスと同じなのが確認できるはず。

固定IP add-on を使う前のProxy確認はこの辺使えばできます(自己責任で!)

北山淳也北山淳也

結局 Fixie を採用した。
選定理由は以下

  • ローカルでも使える
    • ただし当然ながら月間リクエスト数にはカウントされるので使用制限には注意
  • Proximo と比べるとWrapperが必要ない

Fixie の利用方法

  • コンソールから heroku addons:add fixie 、もしくは Heroku Dashboard から Fixie を追加
  • heroku の環境変数に FIXIE_URL が追加されるので heroku のコンテナを再起動して読み込めるようにする
  • gem httpclient を使うなら以下のようにすることで利用可能
require 'httpclient'

class ApiClient
  def execute()
    proxy = ENV["FIXIE_URL"]
    # proxy を指定
    HTTPClient.new(proxy)
    # http://ip-api.com/json/ にリクエストすることでIPを確認
    result = client.get('http://ip-api.com/json/')
  end
end
このスクラップは2021/10/31にクローズされました