0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

無料枠を最大活用!予算超過を防ぐBaaSの請求アラート設定ガイド

0
Posted at

クラウドのBaaS(Supabase や Firebase など)は、無料枠が用意されているので、個人開発や学習プロジェクトのスタートに最適です。しかし、無料枠は「いつまで」「どこまで」使えるかが明示されているだけで、利用量が増えるとすぐに課金が始まります。初心者が「請求アラート」を設定しないまま放置すると、思わぬ請求が来てしまうことがあります。ここでは、無料枠を安全に使い続けるための「請求アラート設定」の重要性と、実装手順をシンプルに解説します。

1. 無料枠の仕組みを把握しよう

Supabase の無料プランは、データベース容量 500 MB、認証リクエスト 10 k、ストレージ 1 GB など、各リソースに上限が設定されています。上限を超えると自動的に有料プランに切り替わり、従量課金が始まります。**「上限を超えてもすぐに課金が始まる」**という点が、請求アラートの設定が必須になる理由です。

2. 請求アラートの目的

目的 具体的な効果
予算超過の早期検知 使用量が閾値に達したらすぐに通知
無料枠の有効活用 必要以上にリソースを消費しない
コスト意識の向上 開発者が「コスト=リソース使用量」の関係を学べる

3. Supabase の使用量を取得する方法

Supabase は管理コンソールから手動で確認できますが、API 経由で取得すれば自動化が可能です。以下は supabase CLI と curl を組み合わせて、プロジェクトの使用量を取得する例です。

# supabase CLI でプロジェクト ID を取得
PROJECT_ID=$(supabase projects list --json | jq -r '.projects[0].id')

# 使用量を取得(例: データベース容量)
curl -s "https://api.supabase.com/v1/projects/${PROJECT_ID}/usage" \
  -H "apikey: $SUPABASE_SERVICE_ROLE_KEY" \
  -H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
  | jq '.db_storage_bytes'

このスクリプトを CI に組み込めば、毎日自動で使用量をチェックできます。

4. GitHub Actions で請求アラートを送る

以下は GitHub Actions のワークフロー例です。Supabase の使用量が無料枠の 80 % を超えたら、Slack に通知します。

name: Supabase Usage Alert

on:
  schedule:
    - cron: '0 9 * * *' # 毎日 09:00 UTC に実行

jobs:
  check-usage:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Install jq
        run: sudo apt-get install -y jq

      - name: Get Supabase usage
        env:
          SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
        run: |
          PROJECT_ID=$(supabase projects list --json | jq -r '.projects[0].id')
          USAGE=$(curl -s "https://api.supabase.com/v1/projects/${PROJECT_ID}/usage" \
            -H "apikey: $SUPABASE_SERVICE_ROLE_KEY" \
            -H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
            | jq '.db_storage_bytes')
          LIMIT=$((500 * 1024 * 1024)) # 500 MB をバイトに変換
          THRESHOLD=$((LIMIT * 80 / 100))
          if [ "$USAGE" -gt "$THRESHOLD" ]; then
            curl -X POST -H 'Content-type: application/json' \
              --data "{\"text\":\"⚠️ Supabase のデータベース使用量が80%を超えました。現在 ${USAGE} バイトです。\"}" \
              ${{ secrets.SLACK_WEBHOOK_URL }}
          fi

ポイント解説

  1. スケジュール実行で毎日自動チェック。
  2. SUPABASE_SERVICE_ROLE_KEY はプロジェクトのシークレットとして管理。
  3. 無料枠の 80 % を閾値に設定し、超えたら Slack に通知。

5. 実際に設定したらやるべきこと

  1. 無料枠の上限をドキュメント化(チーム内 Wiki など)。
  2. 請求アラートの閾値を段階的に調整(80 % → 90 % など)。
  3. 通知先を複数設定(Slack + メール)し、見逃し防止。
  4. アラートが来たらリソース削減策を実行(不要データの削除、キャッシュの最適化)。

まとめ

無料枠は開発コストを抑える強力な味方ですが、「使いすぎて課金が始まる」リスクも併せ持っています。請求アラートを設定すれば、予算超過を未然に防げるだけでなく、リソース使用量への意識も高まります。初心者でも数行のコードと GitHub Actions だけで自動監視が可能です。ぜひ今回紹介した手順を試して、安心して BaaS を活用してください。

詳しい手順はこちら → https://felixstudio0.gumroad.com/?utm_source=qiita&utm_medium=github_actions&utm_campaign=2026-q1&utm_content=qiita-footer

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?