Blazeプランの概要
無料枠について
* 無料枠は毎月リセットされます。
* 無料枠の内容は、以下のサービスごとに定められています。
例:Firebase Functions(Cloud Functions for Firebase)
* 関数の呼び出し回数:200万回/月
* コンピューティング時間:400,000 GB-秒/月
* ネットワーク送信量:5 GB/月
その他のサービスの無料枠
* Firebase Authentication
* 無制限の認証機能が無料で利用可能
* Firebase Realtime Database
* 1 GBのデータストレージ
* 10 GB/月のダウンロード
* Firestore
* 1 GBのデータストレージ
* 5万回の読み取り/日
* 2万回の書き込み/日
* 2万回の削除/日
* Firebase Hosting
* 10 GB/月のデータ送信
* 10 GBのストレージ
* カスタムドメインのSSL証明書が無料
費用の管理
* 無料枠内であれば料金は発生しません。
* 無料枠を超過した場合のみ、使用量に応じて課金されます。
* 予算アラートや費用上限の設定が可能で、予期しない高額な請求を防ぐことができます。
料金の例
Firebase Functions
* 関数の呼び出し:$0.40/100万回(無料枠超過分)
* コンピューティング時間:
* GB-秒あたり$0.0000025(メモリ使用量と実行時間に基づく)
* ネットワーク送信量:
* 北米地域:$0.12/GB(無料枠超過分)
Firestore
* データストレージ:$0.18/GB/月(無料枠超過分)
* 読み取り操作:$0.06/10万回
* 書き込み操作:$0.18/10万回
* 削除操作:$0.02/10万回
これらを元に対策をしておく
従量課金の場合助言はないためリスク管理が必要
Firebase の課金で爆死しないための設定方法
を参考に設定を調べる
Functions は関数の実行時間、関数の呼び出し回数、関数にプロビジョニングしたリソースの数に基づいて課金される
export const api = functions.https.onRequest(app);
の部分を
export const api = functions.runWith({ maxInstances: 1, timeoutSeconds: 30, memory: "128MB", }).https.onRequest(app);
というように
最大インスタンス数1
timeoutSeconds30秒
メモリ128MB
というように設定することで回避できそう
次に
Hosting はストレージが10GBまで無料
データ転送は1ヶ月あたり 10GB まで無料
それを超えると課金が発生
デフォルトでは無制限に保持する設定になっているため
Firebase コンソールの Hostring から設定を変更
これらを元に
個人アプリなら10もあれば十分
転送量は制限できないのでアプリケーションの作りで頑張るしかない
あと
Firestore は以下の内容で課金されます。
* 読んだり、書いたり、削除したりする文書の数。
* 集計クエリで一致したインデックス エントリの数。
クエリに一致する最大 1000 のインデックス
エントリのバッチごとに 1 つのドキュメントの読み取りが課金されます。
* メタデータとインデックスのオーバーヘッドを含む、データベースが使用するストレージの量。
* 使用するネットワーク帯域幅の量。
Firestore は何か制限を設けることができません。
なので上記を参考に書き込みや読み取り方法をチューニングしたり、
インデックスを作成してアプリケーション側をよくしていくしかない
そして
コストアラートを設定する
予算の 50%, 90%, 100% でアラートが来る設定をできるらしい
そして
最悪、Firebaseを止める方法
firebase hosting:disable
を実行すれば
Hosting は止まる
Functions を止める方法は
firebase functions:delete {関数名}
Firestore を止める方法は
Firebase コンソールから以下のルールの設定を入れて公開
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read: if false; allow write: if false; } } }
これで読み取り、書き込み全てをブロック
これらを元にまずはアラートを予算1000円で動作するよう設定
https://console.cloud.google.com/billing/
で
予算を設定できるので1,000円に設定
index.js の内容を
export const api = functions.https.onRequest(app);
から
const runtimeOpts = { timeoutSeconds: 30, memory: '128MB', maxInstances: 1, // 最大同時実行数を5に制限 }; exports.app = functions .runWith(runtimeOpts) .https.onRequest(app);
へ変更し保存
これでBlazeプランに変更する
請求アカウントは予算を作成したものを選択