
【グローバルサービス】
CloudFront は、AWSが提供するグローバルな CDN(Content Delivery Network) サービスです。
世界中の Edge Location(エッジロケーション) から、静的・動的・ストリーミングコンテンツを低遅延で配信します。
オリジンとして S3(Simple Storage Service)、ALB(Application Load Balancer)、EC2(Elastic Compute Cloud)、API Gateway、メディア系サービス、またはカスタムオリジンを指定することができます。
Origin Shield(オリジンシールド)や Regional Edge Cache(リージョナルエッジキャッシュ)を活用することで、キャッシュの多層化とキャッシュ効率の最適化を実現し、オリジンへのアクセス負荷を軽減できます。また、柔軟な キャッシュ制御 により、コンテンツの更新頻度やユーザーの要求に応じた最適な配信が可能です。
セキュリティ面では、ACM(AWS Certificate Manager) によるHTTPS証明書管理、WAF(Web Application Firewall)、Shield によるDDoS防御、OAC(Origin Access Control) によるオリジン保護を統合できます。さらに、署名URL や 署名付きクッキー により、コンテンツアクセスの認可制御を行うことができます。
Lambda@Edge によってリクエスト/レスポンス処理をエッジで動的にカスタマイズでき、Real-Time Logs(リアルタイムログ) を用いて詳細なL7レベルのアクセス分析が可能です。
CloudFrontは、SPA(Single Page Application)の配信、APIの高速化、セキュアなアセット配布を実現するうえで非常に有効なサービスです。
重要用語
ユースケース
| グローバルWebサイトの高速配信 | 世界中のエッジロケーションにコンテンツをキャッシュし、日本以外のユーザーからのアクセスでもレスポンスを高速化する。 |
| S3静的サイトのCDN配信 | S3に配置した静的WebサイトのオリジンにCloudFrontをかぶせて、HTTPS対応・キャッシュ・アクセス制御を簡単に実現する。 |
| オリジンサーバーの保護とコスト削減 | CloudFront経由でのみオリジンにアクセスさせることで直接アクセスを防ぎ、キャッシュヒット率を高めてデータ転送料金とオリジン負荷を軽減する。 |
ベストプラクティス
| オリジンシールドの活用 | オリジンへの負荷を軽減しキャッシュ効率を高めるためにオリジンシールドを有効化する。 |
| HTTPS強制と最新TLS | ビューワープロトコルポリシーでHTTPSのみを許可し、TLSの最低バージョンを制御する。 |
| キャッシュポリシーの最適化 | パス・クエリ・ヘッダを適切にキャッシュキーに含めてヒット率と正しさを両立する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・エッジロケーション内のサーバー群 ・複数のエッジロケーション ・リージョナルエッジキャッシュ ・オリジンフェッチパス ・DNS解決システム ・ネットワーク接続 ・キャッシュストレージ |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| WAF(アプリケーション層の脅威に対する防御) | WAFをアタッチすることを推奨 |
| Shield(DDoS攻撃からのリソース保護) | Shield Standardは常時有効 Shield Advancedの有効化を推奨 |
| ACM(SSL/TLS証明書の自動管理) | HTTPS利用時はACM証明書が必須 リージョン:us-east-1(バージニア北部) |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 ディストリビューション設定変更履歴・HTTPS/ログ/ジオ制限等の準拠評価(※グローバル記録有効時) |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 ディストリビューション設定変更のAPI異常検知 |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | アクセスログ 【Kinesis Data StreamsからLambdaで転送】 リアルタイムログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| BytesDownloaded | ダウンロードされたバイト数 |
| BytesUploaded | アップロードされたバイト数 |
| CacheHitRate | キャッシュヒット率 |
| CacheMissRate | キャッシュミス率 |
| OriginLatency | オリジンへのレイテンシ |
| Requests | 全リクエスト数 |
| 4xxErrorRate | 4xxエラー率 |
| 5xxErrorRate | 5xxエラー率 |
| LambdaExecutionError | Lambda@Edge実行エラー数 |
| LambdaValidationError | Lambda@Edge検証エラー数 |
| OriginConnectErrorRate | オリジン接続エラー率 |
| OriginDnsErrorRate | オリジンDNSエラー率 |
| OriginResponseErrorRate | オリジン応答エラー率 |
| TotalErrorRate | 全エラー率(4xx+5xx) |
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| Lambda@Edge関数数/リージョン | 無制限 |
| データ転送量 | 無制限 |
| ハードリミット | 制限値 |
|---|---|
| SSL証明書数/ディストリビューション | 1 |
| ソフトリミット | 制限値 |
|---|---|
| ディストリビューション数/アカウント | 200(Web)、100(RTMP非推奨) |
| オリジン数/ディストリビューション | 25 |
| キャッシュビヘイビア数/ディストリビューション | 25 |
| カスタムヘッダー数/オリジン | 10 |
| CloudFront Functions関数数/アカウント | 100 |
| リクエストレート | 250,000 RPS(デフォルト) |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| データ転送アウト | エッジロケーションからのデータ転送量 |
| HTTPSリクエスト | HTTP/HTTPSリクエスト数 |
| 無効化リクエスト | キャッシュ無効化リクエスト(最初の1,000件以降) |
| カスタムSSL証明書 | 専用IPカスタムSSL証明書 |
| Lambda@Edge | Lambda@Edgeの実行時間とリクエスト |
| リアルタイムログ | リアルタイムログの配信 |