CloudFrontの見積もりが難しいのは、転送量とリクエスト数という2軸の掛け算に、地域別の単価と段階制が重なるからです。そこへ2025年11月、超過課金の無い定額料金プランが加わり、選択肢が二重になりました。この記事では、日本向け配信の単価をAWS Price List APIの実測値で分解し、定額プランと従量課金が逆転する転送量を計算し、AWS CLIでプランを申し込む手順まで扱います。数値は2026年9月時点の一次情報です。
まとめ:CloudFront料金の判断を分ける単価と定額プランの要点
日本向けのデータ転送は最初の10TBが1GBあたり0.114USD、HTTPSリクエストは100万件あたり1.20USDです。オリジンがS3やALBならCloudFrontへの転送は無料で、請求のほぼ全量がこの2項目に集まります。月1TBの配信なら従量課金のまま月20USD前後に収まります。
判断が割れるのは、AWS WAFを前段に置く構成です。WAFはweb ACLが月5.00USD、ルールが1本あたり月1.00USDかかるため、ルール5本の最小構成でも月10USDが固定で乗ります。2025年11月に追加された定額プランのProは月15USDでWAFもRoute 53もTLS証明書も込みのため、WAFを使う構成なら月44GBを超えた時点でProのほうが安くなります。Freeプラン(0USD)にもweb ACLとルール5本・DDoS保護・OACが含まれる点は見落とされがちです。
ただし定額プランには落とし穴が2つあります。1つはアクセスログで、CloudFrontとWAFのログはPro以上でなければ取得できません。もう1つは上限の構造で、Proの使用上限は転送50TB・リクエスト1,000万件です。この比率は1リクエストあたり5.2MBに相当し、一般的なWebサイトではリクエスト側が先に上限へ当たります。転送量の数字だけを見てプランを選ぶと判断を誤ります。
リアルタイムログ・ステージング配信・マルチテナント配信のいずれかを使っているディストリビューションは、そもそも定額プランを申し込めません。
日本向け配信の従量単価をPrice List APIの実額で分解する
CloudFrontの単価はエッジの所在地ごとに違い、CloudFrontの料金ページはリージョン選択で表示が切り替わります。社内の見積もり資料に米国標準リージョンの数字がそのまま入り込む事故はここで起きます。この章で扱うのは日本(JP)の単価だけで、値はAWS Price List APIのオファーファイル(AmazonCloudFront・版20260916132208)から抽出した実測値です。
日本向けデータ転送アウトの7段階単価と月間累計量による切り替え境界
インターネット向けのデータ転送は累計量に応じた7段階です。境界は月間の累計で判定され、翌月にリセットされます。
| 月間の累計転送量 | 日本向けの単価 |
|---|---|
| 最初の10TB | 0.114USD/GB |
| 次の40TB | 0.089USD/GB |
| 次の100TB | 0.086USD/GB |
| 次の350TB | 0.084USD/GB |
| 次の524TB | 0.080USD/GB |
| 次の4PB | 0.070USD/GB |
| 5PB超 | 0.060USD/GB |
アジアパシフィック(日本以外)は最初の10TBが0.120USDで、日本のほうが安く設定されています。エッジの所在地は視聴者の位置で決まるため、国内向けサービスは日本の単価で見積もって差し支えありません。CloudFrontからオリジンへ戻る転送は地域を問わず0.060USD/GBで、段階制がありません。
日本向けリクエスト課金でHTTPSとFLEの単価が2倍以上ずれる条件
リクエストはメソッドとプロトコルで単価が分かれます。100万件あたりの実額が下表です。
| リクエスト種別 | 100万件あたり |
|---|---|
| HTTP GET・HEAD | 0.90USD |
| HTTPS GET・HEAD | 1.20USD |
| HTTP プロキシ(POST等) | 0.90USD |
| HTTPS プロキシ(POST等) | 1.20USD |
| フィールドレベル暗号化付き | 2.00USD |
全通信をHTTPSにするのが前提の今、実務で効くのは下段のフィールドレベル暗号化です。クレジットカード番号などをエッジで暗号化すると、該当のPOSTリクエストだけ単価が1.67倍になります。決済系のAPIを前段に置くときは対象数を分けて見積もってください。
見積もり用のオファーファイルから日本の単価だけを抜き出すコマンド
単価は四半期より短い間隔で更新されます。料金ページを目視するより、Price List APIのオファーファイルを直接叩くほうが確実です。日本向けの単価はリージョン別ファイルではなく aws-other に入っています。
# 現行版オファーファイルのURLを取得する(日本向け単価は aws-other 側)
BASE=https://pricing.us-east-1.amazonaws.com
PATH_JSON=$(curl -s "$BASE/offers/v1.0/aws/AmazonCloudFront/current/region_index.json" \
| jq -r '.regions["aws-other"].currentVersionUrl')
# usagetype が JP- で始まる項目だけを単価つきで並べる
curl -s "$BASE$PATH_JSON" | jq -r '
.products as $p
| .terms.OnDemand | to_entries[]
| .key as $sku
| .value[].priceDimensions[]
| select($p[$sku].attributes.usagetype | startswith("JP-"))
| [$p[$sku].attributes.usagetype, .beginRange, .endRange, .pricePerUnit.USD]
| @tsv'
beginRange と endRange はGB単位の累計境界で、10240 が10TBに対応します。レスポンスの publicationDate と version を見積書に控えれば、単価の時点を後から争わずに済みます。
定額料金プラン4階層の月額と使用上限・含まれるサービスの範囲
2025年11月18日、AWSは超過料金の無い定額料金プランを発表しました。ディストリビューション1本と、そこに紐づくWAFのweb ACL・Route 53ホストゾーン・CloudWatch Logs取り込みをまとめて月額固定にする仕組みで、1プランの対象は apex ドメイン1つまでです。
Free・Pro・Business・Premiumの月額と使用上限の対応
| 階層 | 月額 | リクエスト上限 | 転送上限 | S3クレジット |
|---|---|---|---|---|
| Free | 0USD | 100万 | 100GB | 5GB |
| Pro | 15USD | 1,000万 | 50TB | 50GB |
| Business | 200USD | 1億2,500万 | 50TB | 1TB |
| Premium | 1,000USD | 5億 | 50TB | 5TB |
Premiumだけは使用レベルを選べます。既定の5億リクエスト・50TBから、7.5億・75TBで1,450USD、12.5億・125TBで2,250USD、20億・200TBで3,500USD、35億・350TBで6,000USD、60億・600TBで10,000USDまで6段階です。引き上げは即時に日割りで反映され、引き下げは翌請求サイクルから効きます。
定額プランで転送量よりリクエスト側が先に上限へ達する構造と選定基準
転送上限はPro以上すべて50TBで据え置かれ、階層が上がるとリクエスト上限だけが伸びます。両方を使い切る前提で1リクエストあたりのサイズを逆算すると、階層ごとの想定ワークロードが見えます。
| 階層 | 上限を使い切る平均サイズ | 想定される配信物 |
|---|---|---|
| Pro | 約5.2MB/件 | 動画・大容量ダウンロード |
| Business | 約419KB/件 | 画像の多いサイト |
| Premium | 約105KB/件 | API・一般的なWebサイト |
平均レスポンスが100KB前後のWebサイトをProで運用すると、転送量が1TBに届かないうちにリクエスト1,000万件の上限へ達します。転送50TBという数字は事実上使い切れません。プラン選定はリクエスト数から入り、転送量は後から検算する順序が正しくなります。
上限はハードリミットではありません。公式ドキュメントは、上限の3倍までの初回スパイクは当月の配信に影響しないと明記しています。WAFがブロックしたリクエストとDDoS攻撃は算入されません。
定額プランと従量課金の費用が逆転する月間転送量と実額での比較計算
「どちらが安いか」は転送量だけでは決まりません。定額プランにはWAFとRoute 53とTLS証明書が含まれるため、同じ構成を従量課金で組んだときの固定費を先に積む必要があります。
WAFの固定費を含めると月44GBまで下がる定額プランとの分岐点
AWS WAFの実額(awswaf 版20260914163921・CLOUDFRONTスコープはus-east-1で請求)は、web ACLが月5.00USD、ルールが1本あたり月1.00USD、リクエスト処理が100万件あたり0.60USDです。マネージドルールグループを足すとさらに増え、Anti-DDoSルールグループは月20.00USDと100万リクエストあたり0.15USD、Bot Controlは月10.00USDと100万リクエストあたり1.00USDです。
web ACL1本とルール5本という最小構成でも月10.00USDが固定でかかります。Proの15USDとの差は5USDで、転送の単価0.114USD/GBで割ると43.9GBです。
| 前提の構成 | Proが安くなる転送量 |
|---|---|
| WAFあり(ルール5本) | 月44GB超 |
| WAFなし | 月132GB超 |
月44GBは小規模なコーポレートサイトでも超える水準です。逆にWAFを使わずCDNだけを使う構成では、分岐点は月132GBまで上がります。判断の分かれ目は転送量ではなくWAFの有無にあります。
Businessの200USDは同等の従量課金の25分の1になる
上位階層ほど差は開きます。Businessの上限いっぱい(1億2,500万リクエスト・50TB転送)を従量課金で組んだ場合の実額を積み上げると、次のようになります。
| 項目 | 従量課金の月額 |
|---|---|
| 転送50TB(段階制適用) | 約4,812USD |
| HTTPS 1億2,500万件 | 150USD |
| WAF固定費とリクエスト | 約85USD |
| 合計 | 約5,047USD |
同じ量をBusinessの200USDで賄える計算です。ただしこれは上限を使い切った場合の比較で、リクエスト側が先に当たる運用では転送50TBに届きません。現実的な数字は自分のディストリビューションの実績値から出します。
# 直近30日の配信量とリクエスト数を取る(CloudFrontのメトリクスは us-east-1)
DIST_ID=EDFDVBD6EXAMPLE
FROM=$(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZ)
TO=$(date -u +%Y-%m-%dT%H:%M:%SZ)
for M in BytesDownloaded Requests; do
echo "$M:"
aws cloudwatch get-metric-statistics --region us-east-1 \
--namespace AWS/CloudFront --metric-name "$M" \
--dimensions Name=DistributionId,Value=$DIST_ID Name=Region,Value=Global \
--start-time "$FROM" --end-time "$TO" \
--period 2592000 --statistics Sum \
--query 'Datapoints[0].Sum' --output text
done
BytesDownloaded をGBに直し、Requests と合わせて上限と突き合わせれば、どの階層に収まるかが1分で判定できます。配信の仕組みとエッジ機能の関係はAmazon CloudFrontとはで整理しています。
AWS CLIで定額プランを申し込み・変更・解約する実行手順
2026年9月3日、定額料金プランのAPIサポートが公開されました。それまでコンソール操作だけだった申し込みが、CLI・SDK・CloudFormation・CDKから扱えます。サービス名は PricingPlanManager で、エンドポイントは us-east-1 のみです。
web ACLを先に作り2段階で承認する定額プラン申し込みの流れ
サブスクリプションの作成にはディストリビューションARNとWAFのweb ACL ARNの両方が必須で、APIはweb ACLを自動では作りません。web ACLは CLOUDFRONT スコープ(us-east-1)に置く必要があります。順序は「web ACLを作る→web ACLを参照するディストリビューションを作る→両方のARNでサブスクリプションを作る」です。
DIST_ARN=arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE
ACL_ARN=arn:aws:wafv2:us-east-1:111122223333:global/webacl/my-acl/a1b2c3d4-EXAMPLE
# 手順1: PROプランをMANUAL承認モードで作成する(この時点では課金されない)
SUB_ARN=$(aws pricing-plan-manager create-subscription \
--plan-family CloudFront \
--plan-tier PRO \
--resource-arns "$DIST_ARN" "$ACL_ARN" \
--approval-mode MANUAL \
--query 'subscription.arn' --output text)
# 手順2: 現在のETagを取得して承認する(ここから課金が始まる)
ETAG=$(aws pricing-plan-manager get-subscription --arn "$SUB_ARN" \
--query 'eTag' --output text)
aws pricing-plan-manager approve-paid-subscription \
--arn "$SUB_ARN" --if-match "$ETAG"
承認モードを MANUAL にすると、作成直後の状態は PENDING_APPROVAL で課金は発生しません。IMMEDIATE では作成と同時に課金が始まり、呼び出し元に両方の権限が要求されます。公式の入門ガイドは、パイプラインやサービスロールには CreateSubscription だけを与え、承認権限は人が操作するロールへ分けることを推奨しています。有料プランは当月中の取り消しができず、Premiumは月10,000USDまで伸びるためです。
定額プランの変更と解約におけるETagの競合制御と反映時期の違い
更新系の操作はすべて楽観的ロックで、直前に取得した ETag を –if-match に渡します。値が古いと ConflictException(HTTP 409)になるので、取り直して再試行します。
# 階層の変更(アップグレードは即時・ダウングレードは請求期間末に予約される)
ETAG=$(aws pricing-plan-manager get-subscription --arn "$SUB_ARN" \
--query 'eTag' --output text)
aws pricing-plan-manager update-subscription \
--arn "$SUB_ARN" --if-match "$ETAG" \
--plan-tier PREMIUM --usage-level CF_PREMIUM_L3
# 予約済みのダウングレードや解約を取り消して現行プランを継続する
ETAG=$(aws pricing-plan-manager get-subscription --arn "$SUB_ARN" \
--query 'eTag' --output text)
aws pricing-plan-manager cancel-subscription-change \
--arn "$SUB_ARN" --if-match "$ETAG"
ダウングレードで注意すべきは、機能の削減だけが即座に効く点です。請求と使用上限は期間末まで現行階層のままなのに、上位階層だけの機能は要求した時点で使えなくなります。–usage-level を省略するとPremiumの使用レベルが既定値へ戻るため、階層だけを変える場合も明示的に指定してください。
Freeプランを本番配信に使えなくするアクセスログと機能の制限
月額0USDのFreeプランには、web ACL・ルール5本・DDoS保護・無料TLS証明書・Route 53 DNS・S3クレジット5GBが含まれます。同じ構成を従量課金で組めばWAFだけで月10USDかかるため、額面では明確に得です。OAC(オリジンアクセスコントロール)も全階層で使え、S3バケットを非公開のまま配信する構成はFreeでも組めます。
Freeプランでアクセスログが取れない制約と障害調査への具体的な影響
Freeで欠けるのはログです。CloudFrontの標準アクセスログとWAFのリクエストログはどちらもPro以上で、Freeにはセキュリティダッシュボードしかありません。配信の不具合を調べるにもWAFの誤検知を切り分けるにも、生のログが無ければ手詰まりです。本番の受け皿としてFreeを選ぶ判断は、この一点で止まります。
定額プランの階層をまたぐと使える機能が段階的に増える境界と構成条件
| 機能 | 使える階層 |
|---|---|
| アクセスログ・WAFログ | Pro以上 |
| KeyValueStore | Pro以上 |
| カスタムキャッシュルール | Business以上 |
| VPCオリジン | Business以上 |
| 高度なDDoS防御 | Business以上 |
| 稼働率SLA | Business以上 |
| Origin Shield | Premiumのみ |
| オリジンの自動フェイルオーバー | Premiumのみ |
実務で効くのはSLAとVPCオリジンの線引きです。稼働率のSLAはBusiness以上にしか付かないため、対外的な可用性の約束がある案件でProを選ぶ余地は消えます。ALBやEC2をプライベートのまま公開するVPCオリジンもBusiness以上で、この構成を前提に設計すると月200USDが実質的な下限です。キャッシュビヘイビアの上限もFreeが5本、Proが10本、Businessが50本と差があります。
定額プランを申し込めないディストリビューション構成の事前確認
既存のディストリビューションに定額プランを後付けしようとすると、構成によっては CreateSubscription が ValidationException で失敗します。非対応として明示されているのは、リアルタイムログ・マルチテナント配信・継続的デプロイ用のステージング配信です。該当する機能を外してからでないと申し込めません。
# 申し込み前に非対応機能の有無を確認する
aws cloudfront get-distribution-config --id EDFDVBD6EXAMPLE \
--query 'DistributionConfig.{
staging: Staging,
realtimeLog: DefaultCacheBehavior.RealtimeLogConfigArn,
webAcl: WebACLId }'
staging が true、realtimeLog にARNが入っている場合は、そのままでは申し込めません。webAcl が空なら先に web ACL を作って関連付けます。リアルタイムログの目的が秒単位の監視なら、Pro以上の標準アクセスログとCloudWatchメトリクスで代替できるかを先に検討してください。
サブスクリプションが SYNC_IN_PROGRESS の間は変更操作を受け付けず、反映には通常2〜5分かかります。CloudFormationやCDKで一括適用するときは、スタック内で連続して階層を変更しない構成にします。
Lambda@EdgeとOrigin Shieldという別枠で請求される付帯課金
従量課金を続ける場合、転送とリクエスト以外にも課金が積み上がります。東京リージョンで発生する代表的な2つを実額で押さえます。
Lambda@Edgeはリクエスト単価がCloudFront本体の半額
Lambda@Edgeは東京リージョンで100万リクエストあたり0.60USD、実行が1GB秒あたり0.00005001USDです。リクエスト単価はCloudFrontのHTTPSリクエスト(100万件1.20USD)の半額ですが、こちらには無料枠がありません。ビューワーリクエストとオリジンリクエストの両方でトリガーすると2倍かかるため、対象を絞ったキャッシュビヘイビアにだけ紐づけます。オリジン側でLambdaを動かす構成との比較はCloudFront・API Gateway・Lambdaの連携で扱っています。
Origin Shieldはリクエストのみ課金で転送は無料になる
Origin Shieldを東京に置いた場合、追加で発生するのは1万リクエストあたり0.009USD(100万件あたり0.90USD)だけです。オリジンとOrigin Shieldの間のデータ転送は往復ともに0USDでオファーファイルに定義されており、課金はリクエスト側に限られます。オリジンがオンプレミスでCloudFrontからの転送が有料(0.060USD/GB)なら、集約による削減額のほうが大きくなるでしょう。なお定額プランでOrigin Shieldに対応するのはPremiumだけです。
CloudFrontを従量課金のまま運用すべき条件と移行の判断基準
ここまでの数字を、実際の判断の順序に組み替えます。
定額プランへ移すべき構成と従量のまま残す構成を切り分ける判断基準
定額プランを選ぶ条件は3つです。1つ目はWAFを前段に置いていること。web ACLとルールの固定費だけで月10USDかかるため、Proの15USDとの差は月44GBの転送で埋まります。2つ目は攻撃やバズによる請求変動を避けたいこと。3つ目はディストリビューションが1本で、ドメインも1つに収まること。プランは1ディストリビューション1 apexドメインが単位のため、複数配信を束ねる用途には向きません。
従量課金のまま残すべきなのは、リアルタイムログやステージング配信を組み込んでいる場合、複数ドメインを1本のディストリビューションで捌いている場合、転送量が月数十GB以下でWAFも使わない場合です。
CDN以外の選択肢と比較するときの配信目的と時間課金を含む単価の見方
静的配信ではなくTCP/UDPレベルの高速化が目的なら、比較対象はCDNではありません。固定IPと時間課金で動くサービスとの比較はAWS Global Acceleratorの料金で扱っており、こちらは時間課金が乗る構造のため低トラフィックでは割高です。キャッシュ可能なコンテンツが主体ならCloudFront、動的通信の遅延短縮が目的ならGlobal Acceleratorという切り分けになります。
どちらを選ぶ場合も、見積もりの精度は実測データの有無で決まります。設計段階で配信量とリクエスト数の想定を置き、プラン上限との距離を確認しておけば、運用開始後の請求で驚くことはありません。AWS上の配信基盤の設計とコスト試算を含めた相談はインフラ構築(AWS・Google Cloud・Azure)で対応しています。
よくある質問
CloudFrontの料金について繰り返し問われる5つの論点に答えます。数値はいずれも日本向け配信・2026年9月時点のものです。
定額プランの上限を超えたら追加請求されますか?
されません。公式ドキュメントは、上限をどれだけ超えても超過料金は発生しないと明記しています。代わりに配信品質の調整が入る可能性があり、初回のスパイクは上限の3倍まで当月の配信に影響せず、継続的な超過は2〜3か月かけて評価されます。それでも超過が続くと、より遠いエッジからの配信といった調整が段階的に入る仕組みです。上位階層へ上げれば元の性能に戻ります。
ProとBusinessはどちらを選ぶべきですか?
月間リクエスト数と稼働率SLAの要否で決まります。Proの上限は1,000万リクエストで、平均100KBのページなら転送1TB程度で到達します。これを超えるならBusinessです。対外的な可用性の約束がある案件、VPCオリジンを組む案件、パスごとにキャッシュ方針を変える案件もBusiness以上が前提になります。
定額プランに申し込むとWAFの料金は別途かかりますか?
ディストリビューションに紐づけたweb ACLの費用はプランに含まれます。対象はweb ACL本体・カスタムルール・AWSマネージドルール・リクエスト処理料で、ルール数の上限はFreeが5本、Proが25本、Businessが50本、Premiumが75本です。プランに紐づけていない別のweb ACLは従量課金のままです。
従量課金でCloudFrontの無料枠はまだありますか?
料金ページには常時無料の枠が案内されていますが、AWSの無料利用枠は2025年7月の改定でアカウントプラン制に変わり、適用条件は契約形態に依存します。見積もりでは無料枠を前提にせず、実測の使用量に単価を掛けた額を置くほうが安全です。定額プランのFree階層(転送100GB・100万リクエスト)とは別物である点にも注意してください。
CloudFrontの単価はいつ更新されますか?
決まった周期はありません。Price List APIのオファーファイルには publicationDate と version が入っており、本記事が参照した AmazonCloudFront の版は 20260916132208、AWS WAF は 20260914163921 です。見積書にこの版数を控えておけば、後から差分を追えます。
関連記事
- Amazon CloudFrontとは?仕組み・料金プランとエッジ機能・採用判断を実装者目線で解説:金額の前提となる配信の仕組み
- CloudFront VPCオリジンとは?ALB・EC2をプライベートのまま公開する設定と制約:Business以上で使える構成
- CloudFront OAC(オリジンアクセスコントロール)とは?OAIとの違いとS3バケットポリシー設定手順:全階層で使える非公開配信
- AWS Global Acceleratorの料金と仕組み|東京リージョンの月額試算とCloudFrontとの違い:比較対象の単価構造
- AWS CloudFront、API Gateway、Lambdaの連携とは何か?基本解説:付帯課金が乗る構成例