Terraformで実現するAmazon CloudFrontからCloudflareへの移行
株式会社ネクストビート / Akira Yagishita
テックリード / テックリード
| ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|
| 10名以下 | 2025年9月 | B to C |
| ツールの利用規模 | 10名以下 |
|---|---|
| ツールの利用開始時期 | 2025年9月 |
| 事業形態 | B to C |
アーキテクチャ

導入の背景・解決したかった問題
導入背景
ツール導入前の課題
弊社で展開している子育て情報メディア「KIDSNA STYLE」 において動画配信コンテンツを提供しています。当初はYouTubeの埋め込み機能などを利用していましたが、限定配信といったビジネス要件の都合上、AWS S3をオリジンとし、CloudFrontを経由して配信する構成を採用していました。
しかし、2025年6月頃から動画コンテンツの大容量化が進み、S3からCloudFrontへのデータ転送量(通信量)が想定以上に高騰していることが判明しました。 このコスト増は一過性のものではなく、今後のコンテンツ拡充に伴い恒常的に増加していくことが見込まれたため、早急なコスト最適化が経営課題となっていました。
どのような状態を目指していたか
今回のプロジェクトで目指したのは、単なるツールの置き換えではなく、以下の3つの状態を実現することでした。
1.コスト構造の抜本的な改善(最重要)
- 課題であったS3⇔CloudFront間の データ転送コスト(Egress fee) を限りなくゼロに近づけること。
- 新しい構成(Cloudflare)の利用料を含めても、メディア配信にかかるインフラトータルコストを明確に削減すること。
2.IaC (Infrastructure as Code) による継続的な運用保守性の確保
- 既存のAWSインフラと同様に、移行後のCloudflare構成もTerraformで一元管理できる状態。
- キャッシュルールやDNS設定など、重要な設定変更がレビュー可能で、属人化を排除し、安全かつ迅速にデプロイできる体制を維持すること。
3. 既存のユーザー体験(配信パフォーマンス)の維持・向上
- コスト削減を優先しつつも、メディアのUX(ユーザー体験)を損なわないよう、既存のCloudFront構成と比較して同等以上の動画配信パフォーマンス(速度、安定性)を維持すること。
比較検討したサービス
- 既存構成: AWS CloudFront + AWS S3 (オリジン)
- 新規検討構成: Cloudflare CDN + Cloudflare R2 (オリジン)
比較した軸
比較検討にあたり、以下の3点を最重要視しました。
1.コスト最適化(最重要)
- 特に、高騰していた データ転送コスト(Egress fee) を抜本的に削減できるか。
- CDNやストレージの利用料を含めたトータルコストで、明確な削減効果が見込めること。
2.インフラのコード管理(IaC)の継続
- 既存のAWSインフラはTerraformで管理していました。
- 移行先も同様にTerraformで宣言的に管理でき、プロビジョニングや設定変更の運用保守性を維持できること。
3. 配信パフォーマンス
- メディアとしてのUXを損なわないよう、既存のCloudfront構成と比較して同等以上の配信パフォーマンスが維持できること。
選定理由
最終的にCloudflareへの移行を決定した決め手は、重要視していた点をすべてクリアできたためです。
1.圧倒的なコストメリット
- Cloudflare R2はS3とは異なり、Egress fee(データ転送コスト)が無料です。高騰していたコストの主要因を根本から解消できる点が最大の魅力でした。
2.Terraformの公式サポート
- Cloudflareが公式にTerraform Provider を提供しており、既存のIaC運用フローを崩さずに、DNS設定からキャッシュルール(Ruleset)の適用まで一貫してコード管理できる見通しが立ったこと。
導入の成果
改善したかった課題はどれくらい解決されたか
最大の懸案であった 「S3からCloudFrontへの高額なデータ転送コスト(Egress fee)」は、ほぼゼロ にすることに成功しました。 Cloudflare R2の「Egress fee無料」という特徴が、課題に対して完璧に合致しました。
どのような成果が得られたか
期待していた成果を達成することができました。
1.ランニングコストの大幅な最適化
- 上記(Egress feeの撲滅)により、Cloudflareの利用料を含めても、メディア配信にかかるインフラコスト全体の大幅な削減を達成できました。
2.TerraformによるIaCの実現と運用保守性の向上
- Cloudflareの導入・設定もTerraformで管理することで、インフラの属人化を防ぐことができました。設定の意図がコードとして残るため、将来的な設定変更にも迅速かつ安全に対応できる体制(レビュー体制)を維持できています。
導入時の苦労・悩み
導入はTerraformを用いて実施しましたが、特にCloudflare特有のリソース設定には学習コストが必要でした。
1.Terraformでの「Ruleset」の管理
- キャッシュ設定やヘッダー付与を行う「
cloudflare_ruleset」の記述方法、ルールの適用順序、条件式の書き方をTerraformコードに落とし込む部分で試行錯誤しました。実践的な実装サンプルがまだ少なく、手探りで進めた部分もありました。
2.S3からR2へのデータ移行戦略
- 既存のS3バケットからR2へ、大容量の動画データをどのように効率的かつ安全に移行するか(一括移行か、アクセスがあったものから順次移行かなど)は悩んだポイントです。
3.切り替えのダウンタイム最小化
- DNSの切り替えに伴い、エンドユーザーへの影響(ダウンタイム)を最小限に抑えるための手順やタイミングの検討には慎重を期しました。
導入に向けた社内への説明
上長・チームへの説明
上長や関連チームへの説明時には、客観的なデータを用いて「なぜ今やる必要があるのか」を明確にしました。
1.現状の課題(コスト)の可視化
- まず、AWSの請求ダッシュボードを基に、S3⇔CloudFront間の通信コストが具体的にいくら発生しており、どのような増加傾向にあるかをグラフなどで提示しました。
2.移行後のコスト削減試算
- 次に、Cloudflare (R2) に移行した場合のランニングコストを試算。「Cloudflareの利用料を含めても、トータルでどれだけのコスト削減が見込めるか」を具体的な金額で示しました。
3.目的の明確化
- 今回の移行は「機能追加」ではなく、明確な 「コスト最適化(ビジネス目標)」 であることを強調し、投資対効果を説明しました。
活用方法
よく使う機能
今回のメディア配信基盤の移行・構築において、特に中核となったCloudflareの機能は以下です。
1.Cloudflare CDN (Caching)
- メインとなる機能です。キャッシュルール(
cloudflare_ruleset)をTerraformで詳細に定義し、動画コンテンツや静的アセットのキャッシュヒット率を高め、オリジン(R2)への負荷を最小限に抑えています。
2.Cloudflare R2
- AWS S3の移行先として採用したストレージサービスです。動画ファイルのオリジンとして利用しています。
3.Ruleset (ルールセット)
- Terraformでの
cloudflare_rulesetリソースを多用しました。これ一つでキャッシュ動作の制御、リクエスト/レスポンスヘッダーの書き換え(セキュリティヘッダーの付与など)、特定パスのリダイレクトなど、CDNの動作を柔軟に制御しています。
4.Terraform Provider (cloudflare)
- 機能ではありませんが、今回の構築で不可欠だったツールです。DNSレコード、R2バケット、Rulesetの適用まで、インフラ構成のほぼ全てをTerraform経由でプロビジョニング・管理しています。
ツールの良い点
Cloudflareへ移行して感じた、特に優れている点は以下の通りです。
1.圧倒的なコストパフォーマンス (Egress Fee無料)
- AWS S3など他のクラウドストレージで高額になりがちなデータ転送コスト(Egress fee)がR2では無料です。これは、今回の移行目的であった「通信コストの高騰」という課題に対する完璧な回答でした。
2.IaC (Terraform) との高い親和性
- 公式のTerraform Providerが非常に充実しています。特に
cloudflare_rulesetのような複雑な設定もコードで宣言的に管理できるため、「GUIでのみ設定可能」といった属人化がなく、レビュー可能な状態を維持できています。
3.統合されたプラットフォーム
- CDN、ストレージ(R2)、DNS、WAF(今回は詳細に触れていませんが)などがシームレスに連携します。特にR2をオリジンに設定した場合、Cloudflare CDNとの連携が自動で最適化されるため、設定がシンプルで済みます。
ツールの課題点
一方で、導入にあたり課題と感じた点、ハードルになった点は以下です。
1.cloudflare_rulesetの学習コスト
Cloudflareの柔軟性の核となる機能ですが、Amazon CloudFrontの
BehaviorやFunctionとは考え方が異なります。特にTerraformでこれを管理する場合、ルールの実行順序や上書きのロジック、
expression(条件式)の書き方などを理解するまでに一定の学習コストが必要でした。
2.Terraformでの実装サンプルが少ない
- 基本的な設定のサンプルはありますが、
cloudflare_rulesetを用いて複雑なキャッシュ戦略やヘッダー操作をTerraformで実装する際の、実践的なベストプラクティスや「ハマりどころ」に関する情報はまだ少ないと感じました。 - 別途Terraformでの構築内容をまとめたブログ を公開しており、是非そちらもご一読ください。
ツールを検討されている方へ
もし、Cloudflare(特にR2やCDN)の導入を検討されている方がいれば、以下のアドバイスを送ります。
1.「Egress Fee」に課題感があるなら最優先で検討すべき
- もし既存のインフラ(特にAWSやGCP)でデータ転送コストに悩んでいるなら、Cloudflare R2はコスト削減の特効薬になり得ます。コスト試算だけでも行う価値は絶対にあります。
2.Terraformでの管理を強く推奨します
- CloudflareはGUI(ダッシュボード)が非常に強力ですが、キャッシュルールやWAFルールが複雑化すると、GUIでの管理は破綻します。導入初期からTerraformで管理することで、設定の意図が明確になり、変更も安全に行えます。
3.「ルールセット」の概念を最初に理解する
- Cloudflareを使いこなす鍵は「ルールセット」にあります。キャッシュ、リダイレクト、ヘッダー操作など、リクエストがどのような順序でどのルールに処理されるか、というデータフローの理解を深めることが、トラブルシューティングと安定運用の近道です。
株式会社ネクストビート / Akira Yagishita
テックリード / テックリード
よく見られているレビュー
株式会社ネクストビート / Akira Yagishita
テックリード / テックリード
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法


