Firebase Functions の送信元IP固定

VPCネットワークを作成

VPCネットワークを作成しようとしたらCompute Engine APIを有効にする?と画面が出てきたよ。避けられなさそうなので、次に進めると信じて「有効にする」を選ぶよ。

有効にしたら出てくるリージョン一覧の画面上部にVPCネットワークを作成、というメニューがあるから、選択してみるよ。

実際に作ってみるよ。サブネット作成すると、ファイアフォール ルールが表示されるようになるけど、デフォルトで「全てのIP範囲に適用する許可ルール」が作成されてるけど、適用しないでおこう。

サーバレスVPCアクセスコネクタの作成

クラウドコンソールからサーバレスVPCコネクタの作成を行うよ。

コネクタ作成したら、次はネットワークからクラウドNATゲートウェイを作成するよ。ついでにCloud Routerも作成することになるよ。

Cloud Functions の設定

クラウドコンソールからこんどはFunctionsの設定を行います。関数の一覧から関数名をクリックして、関数の詳細→編集を開きます。ランタイム・ビルド・接続の設定を開いたら、接続タブから

あとは「次へ」で進んでデプロイしてみましょう。

んん?忘れてた

これまで一つも静的IPの話出てきてなかったね。いま東京mxのジャッキーチェン「酔拳」見ながら設定してるので、集中してなかったんだね。

もう一度クラウドコンソールからCloud NATの設定を開いて、今度はCloud NATゲートウェイの編集からCloud NATマッピングを選んでみましょう。何も考えずにゲートウェイを作成しているとCloud NAT IPアドレスが多分デフォルトの自動割当になっていたと思うので(丁度ジャッキーが酔拳覚えたくらいのタイミングだったはず)、手動を選んで、IPアドレスの設定のところで静的IPを指定すれば送信元グローバルIP(=VPCの外側アドレス)が固定されるはず。自動生成されてたnat-auto-ip-XXXではなくて、その下の「IPアドレスを作成」で作成したものを設定してね。

接続元の確認

これで設定はおしまい。Cloud Functionでなにかひとつ、接続元IPを表示してくれるサイトを開いて、bodyを送信するようなテスト用関数を書いて、そのレスポンスをhtmlに落としてローカル表示するなどして確認してみよう。javascriptならこんな感じ。

router.post("/testip", function (request, response, next) {
  url = 'https://www.whatismyip.org/'

  var req = require('request');
  req.get(url, function (err, res, body) {
    if (err) {
      console.log(err);
      return response.status(500).send(err);
    }

     console.log(body); 
     return response.status(200).send(body);
    });
});

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です