内容
Firebase Cloud FunctionsをPythonで実装する際に設定するデコレータのRegionの解説を行います。
Firebaseが公開している公式ドキュメントと、実際のソースコードを見ながら解説をしていきます。
目次
1. デコレータとは
デコレータとは関数やクラスの前後に特定の処理を追加出来る機能です。
Pythonでは、関数やクラスの定義する前に@
をつけることで設定出来ます。
@https_fn.on_request()
def fetch_data(req: https_fn.Request) -> https_fn.Response:
#省略
今回のFirebaseのデコレータは@https_fn.on_request()
になります。
2. Regionの設定
FirebaseのRegionとは?
Regionとは、デプロイ先の地域になります。
利用するユーザーに近いRegionを設定するのが良いと思います。
Cloud Functionsのリージョン一覧
デプロイする関数をどのリージョンで実行するかを指定します。
Firebaseのソースコード内のSupportedRegion
クラスに設定されるリージョンが定義されています。
class SupportedRegion(str, _enum.Enum):
"""
All regions supported by Cloud Functions (2nd gen).
"""
ASIA_NORTHEAST1 = "asia-northeast1"
ASIA_EAST1 = "asia-east1"
ASIA_NORTHEAST2 = "asia-northeast2"
EUROPE_NORTH1 = "europe-north1"
EUROPE_WEST1 = "europe-west1"
EUROPE_WEST4 = "europe-west4"
US_CENTRAL1 = "us-central1"
US_EAST1 = "us-east1"
US_EAST4 = "us-east4"
US_WEST1 = "us-west1"
ASIA_EAST2 = "asia-east2"
ASIA_NORTHEAST3 = "asia-northeast3"
ASIA_SOUTHEAST1 = "asia-southeast1"
ASIA_SOUTHEAST2 = "asia-southeast2"
ASIA_SOUTH1 = "asia-south1"
AUSTRALIA_SOUTHEAST1 = "australia-southeast1"
EUROPE_CENTRAL2 = "europe-central2"
EUROPE_WEST2 = "europe-west2"
EUROPE_WEST3 = "europe-west3"
EUROPE_WEST6 = "europe-west6"
NORTHAMERICA_NORTHEAST1 = "northamerica-northeast1"
SOUTHAMERICA_EAST1 = "southamerica-east1"
US_WEST2 = "us-west2"
US_WEST3 = "us-west3"
US_WEST4 = "us-west4"
デフォルトの値はus-central1
です。
なお、日本のリージョンの値は以下なので参考にしてください。
東京: asia-northeast1
大阪: asia-northeast2
Regionごとの料金
Firebaseではリージョンによって料金設定が異なるようです。
全てのリージョンが同一の価格設定ではなく、二酸化炭素の排出量を理由に2つの料金形態に分かれているようです。
公式ドキュメントによると、Tier1の方がTier2よりも安いようです。
おそらくasia-northeast1(東京)
, asia-northeast2(大阪)
を選択する方が大多数だと思うので、料金については特に気にする必要はいと思います。
Cloud Functionsのロケーション(公式ドキュメント)
3. 実装
今回はデプロイ先をasia-northeast1(東京)
に設定しました。
from firebase_functions import https_fn
@https_fn.on_request(region="asia-notheast1")
def fetch_data(req: https_fn.Request) -> https_fn.Response:
#省略
これでリージョンを設定することが出来ます。
4. まとめ
今回はFirebase Cloud FunctionsをPythonでデプロイする際に必要なデコレータの設定の中の1つである、Regionについての解説を行いました。今回はPythonでの書き方を解説しましたが、TypeScriptについても同様の設定があります。こちらについては、過去に執筆したので是非参考にしてみてください。
TypeScriptでのロケーション設定