個人開発してたらNetlifyから月$160の請求が!?帯域255GBの静的サイトをCloudflareで救った話
はじめに
個人で静的サイトを運用していたある日、突然Netlifyから160ドルの請求メールが届きました。
あまりの金額に落ち込み、サービスを閉じてしまおうかとまで思いましたが、
なんとかCloudflareを使うことで帯域を97%以上削減し、サービスを継続できる状態に戻せました。
この記事では、その一連の流れを共有します。
発端:帯域255GB、月$160の課金
Netlifyからのメール文面
“Based on your usage so far this month, we’ve billed you for an additional Bandwidth usage package…”
調べてみると、4月のNetlifyの帯域使用量はなんと 255.9GB。その結果、自動的に100GB追加パッケージ ×2 が請求され、合計 $160(約25,000円) の課金が発生していました。
え・・・やめて・・・
原因は?
• 画像やPDFの外部クローラー(例:Googlebot)
• 一部海外からの高頻度アクセス
• HTML以外の静的ファイルがCDNキャッシュされておらずNetlifyが直接返していた
解決策:Cloudflare CDNの活用
帯域を減らすために、以下のような対策を取りました。
-
Cloudflareにドメインを追加し、DNSを移管
• 取得した独自ドメインをCloudflareに追加
• ネームサーバーをCloudflare指定に変更
• Netlifyのサブドメイン(例:elegant-pie-xxxx.netlify.app)をCNAMEとして登録 -
Cache Everything + 長いTTL設定
Cloudflareのキャッシュルールで以下を設定
• キャッシュレベル:Cache Everything
• Edge Cache TTL:1 month
これにより、CloudflareがHTML, CSS, JS, 画像、PDFすべてをキャッシュしてくれるようになり、Netlifyにはほとんどリクエストが来なくなりました。
効果検証
日付 帯域使用量
5/7(変更前) 7.9GB
5/8(設定日) 7.6GB
5/9 2.4GB
5/10 665.6MB
5/11 437.3MB
5/12 448.3MB
5/13 448.3MB
5/14 348MB
5/15 499.4MB
5/16 452.1MB
5/17 271.4MB
1週間観測を続け、安定していることを確認できました!
キャッシュ状況の確認
以下はCloudflareのリクエスト分析画面。
7日間で48万件超のアクセスのうち、92%がキャッシュヒットとして処理され、Netlify側への帯域負担は大幅に軽減されました。
Cloudflareの導入により、実質的に帯域課金ゼロの運用が可能になったと言えます。
学びと再現可能性
今回の対応から得たことは以下です
• Netlifyは帯域超過課金が突然発生する仕様である
• Cloudflareの無料プランでも十分に対策できる
• 帯域は「画像・PDF・Bot」が主要因。キャッシュ設計がすべてを左右する
• コスト最適化は技術力の証明であり、信頼につながる
まとめ
静的サイトは“無料でホストできる”という認識が広まりつつありますが、実際には帯域課金のトラップが潜んでいるケースも少なくありません。
しかし、Cloudflareを活用すれば、それすらも無料の範囲で解決可能です。
「やってしまった」を「やってよかった」に変えた実体験として、誰かの参考になれば嬉しいです。
Discussion
【追記】Cloudflare経由でNetlifyに接続すると 522エラーになる件について
独自ドメインをNetlifyでホスティングし、CloudflareをDNS管理・CDNとして併用していたところ、「522 Connection timed out」エラーが発生しました。
発生状況
原因と考察
CloudflareからNetlifyへのリクエストがタイムアウトしていた要因として、
• Cloudflareの プロキシ(オレンジの雲)設定がON
• AレコードがNetlifyとは無関係なIPアドレスを指していた
• Netlify推奨のCNAME設定が適切に反映されていなかった
という複数の構成ミスが重なっていたと考えられます。
解決した手順
以下の対応により、Cloudflare経由でも 正常に表示されるようになりました。
1. CloudflareのDNS設定で、カスタムドメイン および www に設定されていた Aレコード(IPアドレス)をすべて削除
2. カスタムドメイン と www に対して、Netlifyの .netlify.app ドメインを指すCNAMEレコードを設定
3. Cloudflareのプロキシ設定(オレンジの雲)を オフ(DNS Only、グレーの雲) に変更
Netlifyでは独自のCDNとSSL(Let’s Encrypt)を提供しており、CloudflareのプロキシCDNと競合しやすいため、CNAME経由でのDNS解決のみを利用し、プロキシを無効化する構成が安定します。