LoginSignup
3
0

More than 1 year has passed since last update.

Firebase HostingからCloud Functionsへのrewriteで、リージョン指定できるようになった?

Posted at

us-central1以外でもrewriteできるようになってない? という話です。

今まで(の認識)

Hostingで動的なページを表示する際などにFunctionsへrewriteするってことがありますが、ここにあるように

Firebase Hosting の動的コンテンツを提供するために HTTP 関数を使用している場合は、 us-central1を使用する必要があります。

という縛りがあるので

functions
export const hoge = functions.region('asia-northeast1').onRequest(app)
firebase.json
"hosting": {
  "rewrites": [
    {
      "source": "/hoge",
      "function": "hoge"
    }
  ]
}

みたいな形にすると動かなかったんですよね。
少なくとも1年くらい前はus-central1じゃないとダメだったような記憶・・・。

今(2022/12/07)

なんですが、ドキュメントを見ていたら

regionがhosting構成から省略されている場合、Firebase CLI は関数のソース コードからリージョンを自動的に検出しようとします。指定されていない場合は、デフォルトでus-central1ます。ソース コードが利用できない場合、CLI はデプロイされた関数からリージョンを検出しようとします。関数が複数のリージョンにある場合、CLI では、 hosting構成でregionを指定する必要があります。

あれ、この記述って前からあったっけ・・・。
あったような気もするし、その上で動かなかった気もするしどうだったっけ?

ともやもやしたので

firebase.json
"hosting": {
  "rewrites": [
    {
      "source": "/hoge",
      "function": "hoge",
      "region": "asia-northeast1"
    }
  ]
}

としてfirebase serveしたところ・・・あれ? 動いてね?
Firebase CLIのバージョンは10.2.2と割と古いままなので、ここの問題でもなさそう。

ならばということでデプロイしたところ・・・やっぱり動いてね?

何かのあれでFunctionsがus-central1にデプロイされてたりするのか? と思い、FunctionsのURLを直接叩くも、us-cental1はダメで、asia-northeast1だとちゃんと動く。
ダッシュボードを見ても確かにasia-northeast1だし。
同名の関数なのが微妙だったかと思い別名の関数でデプロイしてみてもやっぱり動く・・・。

以前試したときに動かなかったのは、何か設定がおかしかった(firebase.jsonregion指定してなかったとか)だけで、実は前からリージョン指定可能だったんだろうか?
それともどこかで仕様変更あったんだろうか?

ちなみに

Functionsをasia-northeast1にした場合、firebase.jsonregionを未指定にすると動きません。
(devtoolsをみる感じus-central1に繋がってるっぽい)

なので

regionがhosting構成から省略されている場合、Firebase CLI は関数のソース コードからリージョンを自動的に検出しようとします。指定されていない場合は、デフォルトでus-central1ます。ソース コードが利用できない場合、CLI はデプロイされた関数からリージョンを検出しようとします。

にある「リージョンを検出しようとする~」のくだりはアテにしないほうがよさそうです。
そもそもCLIに言及してるから、localでの話なのかも?

終わりに

もし本当に勘違いとかでなくus-central1縛りがなくなったのだとしたら、Functionsでweb APIを作るときにプロジェクトID露出させなくて済むな~とか。
近いリージョンだけでやろうとすると、どうしても直アクセスになってたんですよね。

そしてドキュメントちゃんと更新してほしい・・・。

3
0
1

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
3
0