Blazeプランの概要

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プランに変更する

請求アカウントは予算を作成したものを選択

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です