導入
コンテンツをユーザーに近い場所から配信できれば、速くなるだけでなくオリジンの負荷も減ります。この仕組みを担うのが CloudFront です。
説明
Amazon CloudFront は、AWSのCDN(コンテンツデリバリーネットワーク)です。世界中のエッジロケーションにコンテンツをキャッシュし、ユーザーに最も近い拠点から配信することで、レイテンシーを削減します。
- オリジン:配信元となるS3バケットやALBなど
- キャッシュ動作:パスパターンごとにキャッシュ時間(TTL)や転送するヘッダー・Cookieを設定できる
- OAC(Origin Access Control):S3をオリジンにする際、S3バケット自体を非公開のままにし、CloudFront経由のアクセスだけを許可する仕組み。S3を直接インターネットに公開せずに済むため、セキュリティ設計の定番
コンテンツへのアクセスを制限したい場合は、署名付きURL や 署名付きCookie を使います。有効期限付きのトークンを発行し、正規のリンクを持つユーザーだけがコンテンツを取得できるようにします(動画配信の限定公開、有料コンテンツなど)。署名付きURLは1つのファイル向け、署名付きCookieは複数ファイル(動画のセグメント群など)へのアクセス制御に向きます。
flowchart LR
User["世界中のユーザー"] --> Edge["CloudFront<br/>エッジロケーション"]
Edge -->|"キャッシュヒット"| User
Edge -->|"キャッシュミス時のみ"| Origin["オリジン (S3 / ALB)"]
Edge -.->|"OACで直接公開を防止"| Origin
読んでみよう
「S3を直接公開せず保護したい」→ OAC。「グローバルなユーザーへの配信を高速化したい」→ CloudFront。「限定公開のコンテンツへのアクセスを制御したい」→ 署名付きURL/Cookie。CloudFrontはS3の前段だけでなく、ALB・EC2をオリジンにした動的コンテンツの配信高速化にも使える点も押さえておきましょう。