🦛
Firebase Cloud FunctionsのsetGlobalOptionsの設定方法と注意点
はじめに
Firebase Cloud Functionsを使用する際、複数の関数を作成していると、それぞれの関数ごとにリージョンを指定するのは非常に面倒なので、setGlobalOptions
を使って全ての関数に対して一括でリージョンを設定する方法について解説します。
ファイル構成
今回の例では、以下のような構成でファイルを分けています:
index.ts: メインのエントリーポイントとなるファイル。ここでグローバル設定を行い、外部の関数をエクスポートします。
test.ts: 実際のCloud Function(今回はtestという関数)を実装しているファイル。
test.tsは以下のようなシンプルな構造になっています:
test.ts
import { onRequest } from "firebase-functions/v2/https";
export const test = onRequest((req, res) => {
console.log("Hello from Firebase!");
});
問題点
最初、私は以下のようにメインファイルを書いていました:
index.ts
import { setGlobalOptions } from "firebase-functions/v2";
import { test } from "./test";
setGlobalOptions({
region: "asia-northeast1",
});
export { test };
しかし、このコードではsetGlobalOptions
が正しく機能せず、グローバル設定が適用されませんでした。
解決策
調査の結果、setGlobalOptions
は他のモジュールをインポートする前に呼び出す必要があることがわかりました。正しいコードは以下の通りです:
index.ts
import { setGlobalOptions } from "firebase-functions/v2";
setGlobalOptions({
region: "asia-northeast1",
});
import { test } from "./test";
export { test };
このように、setGlobalOptions
を最初に呼び出してからモジュールをインポートすることで、すべての関数に対してグローバル設定が適用されます。
なぜこの順序が重要なのか
Firebase Cloud Functionsでは、関数のインポート時に設定が適用されるため、setGlobalOptions
はそれらがインポートされる前に呼び出す必要があります。
まとめ
Firebase Cloud Functionsで複数の関数に同じ設定を適用したい場合は、setGlobalOptions
を使用することで効率的に設定できますが、必ずモジュールのインポート前に呼び出すようにしましょう。
Discussion