0
0

Firebase Cloud Functions のデコレータ設定(Python) Region編

Last updated at Posted at 2024-09-22

内容

Firebase Cloud FunctionsをPythonで実装する際に設定するデコレータのRegionの解説を行います。
Firebaseが公開している公式ドキュメントと、実際のソースコードを見ながら解説をしていきます。

目次

1. デコレータとは

デコレータとは関数やクラスの前後に特定の処理を追加出来る機能です。
Pythonでは、関数やクラスの定義する前に@をつけることで設定出来ます。

Python sample.py
@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クラスに設定されるリージョンが定義されています。

firebase_functions.options.py
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ではリージョンによって料金設定が異なるようです。
スクリーンショット 2024-09-22 20.33.30.png

全てのリージョンが同一の価格設定ではなく、二酸化炭素の排出量を理由に2つの料金形態に分かれているようです。

公式ドキュメントによると、Tier1の方がTier2よりも安いようです。
おそらくasia-northeast1(東京), asia-northeast2(大阪)を選択する方が大多数だと思うので、料金については特に気にする必要はいと思います。

Cloud Functionsのロケーション(公式ドキュメント)

3. 実装

今回はデプロイ先をasia-northeast1(東京)に設定しました。

Python sample.py
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でのロケーション設定

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