CloudFront

【グローバルサービス】

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で転送】
リアルタイムログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
BytesDownloadedダウンロードされたバイト数
BytesUploadedアップロードされたバイト数
CacheHitRateキャッシュヒット率
CacheMissRateキャッシュミス率
OriginLatencyオリジンへのレイテンシ
Requests全リクエスト数
4xxErrorRate4xxエラー率
5xxErrorRate5xxエラー率
LambdaExecutionErrorLambda@Edge実行エラー数
LambdaValidationErrorLambda@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@EdgeLambda@Edgeの実行時間とリクエスト
リアルタイムログリアルタイムログの配信
料金計算ツール

公式ページ

AWSドキュメント CloudFront