SRE-1539: CloudFlare CDNへのCloudFront移行によるPrefix List追加対応
チケット概要
JIRA URL: https://fastdoctor.atlassian.net/browse/SRE-1539
概要: CloudFlareとCloudFrontのPrefix ListをSecurity Groupに追加する作業において、既存のSecurity Group Rule数制限により直接的なルール追加が困難。そのため、CloudFront CDNからCloudFlare CDNへの移行を実施した後にPrefix Listの追加を行う。
課題・制約事項
Security Group Rule制限
- AWSのSecurity GroupにはInbound/Outboundルール数に上限があり(デフォルト60ルール/方向)
- 現状のSecurity Groupが既に上限に近い状態
- CloudFlareとCloudFrontの両方のPrefix Listを同時に追加すると制限に抵触
解決アプローチ
既存のCloudFrontからCloudFlare CDNへ移行することで、CloudFrontのPrefix Listルールを削除し、CloudFlareのPrefix Listルールのみを追加する構成とする。
実装計画
Phase 1: CloudFront → CloudFlare CDN移行準備
- 現在のCloudFront設定の調査・ドキュメント化
- CloudFlare CDN設定の設計
- 移行計画の詳細化
- テスト環境での移行テスト
Phase 2: CloudFlare CDN移行実施
- CloudFlare CDN設定の実装
- DNS切り替え
- CloudFront設定の削除
- 動作確認
Phase 3: Security Group Prefix List更新
- CloudFrontのPrefix Listルールを削除
- CloudFlareのPrefix Listルールを追加
- 通信テスト・動作確認
関連リソース
AWS Resources
- Security Groups: 対象となるSGのID一覧
- CloudFront Distribution: 移行対象のDistribution ID
- Route53: DNS設定
CloudFlare Resources
- CDN設定: CloudFlare CDN設定情報
- SSL証明書: SSL/TLS設定
- キャッシュルール: Page Rules設定
Terraform Resources
- Security Group モジュール:
fastdoctor-template/template_modules/配下 - CloudFront モジュール: 既存のCloudFront設定
- Route53 モジュール: DNS設定用モジュール
作業記録・実装ログ
2025-09-02
- 作業内容: タスクドキュメント作成
- 実施者: Claude Code
- 詳細:
- CLAUDE.mdのファイル命名ルールに従い単一ファイル形式に変更
- 課題整理と実装計画を記載
- CloudFlare CDN移行によるPrefix List追加のアプローチを決定
課題・ブロッカー
Security Group Rule制限
- 発見日: 2025-09-02
- 詳細: AWS Security GroupのInbound/Outboundルール数制限(デフォルト60ルール/方向)により、CloudFlareとCloudFrontの両方のPrefix Listを同時追加不可
- 対処方針: CloudFront → CloudFlare CDN移行により既存ルールを置換する方式に変更
進捗状況
- [ ] Phase 1: 移行準備
- [ ] CloudFront設定調査
- [ ] CloudFlare CDN設計
- [ ] 移行計画策定
- [ ] テスト環境での移行テスト
- [ ] Phase 2: CDN移行実施
- [ ] CloudFlare CDN設定
- [ ] DNS切り替え
- [ ] CloudFront削除
- [ ] 動作確認
- [ ] Phase 3: Prefix List更新
- [ ] CloudFrontルール削除
- [ ] CloudFlareルール追加
- [ ] 通信テスト・動作確認
完了条件
- CloudFrontからCloudFlare CDNへの完全移行
- CloudFlareのPrefix ListがSecurity Groupに適用済み
- 全てのサービスが正常動作
- CloudFront関連リソースの適切な削除
- ドキュメントの更新完了
リスク・注意事項
- DNS切り替え時のダウンタイム: TTL設定によるキャッシュ影響
- SSL証明書: CloudFlareでのSSL証明書設定確認必須
- キャッシュ設定: CloudFrontとCloudFlareでのキャッシュ動作差異
- ロールバック計画: 問題発生時の迅速な戻し手順の準備
技術メモ
AWS Security Group制限
- デフォルトルール数: 60 (Inbound) / 60 (Outbound)
- Prefix List使用時も1エントリ = 1ルールとしてカウント
- 制限緩和申請も可能だが、アーキテクチャ変更の方が推奨される
CloudFlare vs CloudFront
| 項目 | CloudFront | CloudFlare |
|---|---|---|
| Prefix List | aws:cloudfront | aws:cloudflare |
| SSL終端 | 対応 | 対応 |
| キャッシュ設定 | TTL/Behavior | Page Rules/Workers |
| 料金モデル | 使用量課金 | 定額+超過分 |
関連コマンド・スクリプト
bash
# Security Groupルール数確認
aws ec2 describe-security-groups --group-ids sg-xxxxxxxx --query 'SecurityGroups[0].[IpPermissions | length, IpPermissionsEgress | length]'
# CloudFront Distribution確認
aws cloudfront list-distributions --query 'DistributionList.Items[*].[Id, DomainName, Status]'
# Prefix List確認
aws ec2 describe-managed-prefix-lists --filters Name=prefix-list-name,Values=com.amazonaws.global.cloudfront.origin-facing次回作業予定
Phase 1: 移行準備作業
現状調査
- 対象Security Groupの特定と現在のルール数確認
- CloudFront Distributionの設定詳細調査
- 依存するサービス・アプリケーションの特定
CloudFlare CDN設計
- CloudFrontと同等機能の実現方法検討
- SSL証明書設定方針決定
- キャッシュルール設計
- DNS切り替え手順策定
テスト計画
- 開発環境での移行テスト実施
- 性能・機能テスト項目策定
最終更新日
2025-09-02