pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

CloudFrontメモ

CloudFrontとは?

以下を実現するCDN
・高い安全性
・高い性能
・プログラム可能

動作

・ユーザーを一番近いエッジロケーションに誘導 ※低レイテンシで判断。EDNS Client Subnet情報も利用。
・エッジサーバでコンテンツキャッシュ
AWS WAF、AWS Shield連携しセキュリティ対策
AWS Certficate Manager(ACM)の証明書利用

用語

Viewer

Webブラウザ等のクライアント

Distribution

配信の設定単位。ドメイン名毎に作成。以下要素を含む。
・Origin
 コンテンツ提供するWebサーバ
 カスタムオリジン→VPCやオンプレのWebサーバ
 S3オリジン→S3バケット
・Behaviour
 キャッシュ動作、URLパスパターン設定

Behaviour設定

・リクエストパスパターン毎にキャッシュTTL設定
・サーバレスポンスにCache-Control:no-cache、no-store、privateディレクティブを付けた場合、CloudFrontでキャッシュされない。
 設定ミスると以下のようなトラブル事例もあり。
 CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして | メルカリエンジニアリング

証明書

・標準で「cloudfront.net」ドメイン証明書
独自ドメイン証明書も利用可能。以下のCNAMEレコード登録が必要
 独自ドメインFQDN → cloudfront.netドメインFQDN
 ※ディストリビューション設定の以下に"独自ドメインFQDN"を設定する必要あり。これを設定しないとCloudfrontは"cloudfront.netドメインFQDN"の証明書を提示してくる。
  
  関連情報
  CloudFront の無効なリクエストのエラーを解決する
  代替ドメイン名 (CNAME) を追加することによるカスタム URL の使用 - Amazon CloudFront

プロトコルポリシー

・クライアント→Cloudfront間
 HTTP or HTTPS/Redirect HTTP to HTTPS/HTTPS Only
・Cloudfront→オリジン間
 HTTPS Only/Match Viewer(Viewer→Cloudfronと同じプロトコル利用)

署名付きURL、Cookie

 URLもしくは、Cookieにコンテンツへの資格情報を含めて認証OKの場合にアクセスを許可する機能
 公開鍵認証で認証をする。
 アプリケーションで認証し、認証OKの場合にURLもしくはCookie秘密鍵で暗号化したデータを含め、Cloudfrontは公開鍵で復号できれば認証OKの判断をする。
 使い分けは、コンテンツが単一ファイルの場合はURL、複数ファイルある場合はCookie
 仕組みの詳細は以下参照
 署名付き URL の使用 - Amazon CloudFront
 署名付き Cookie の使用 - Amazon CloudFront

オリジンアクセスアイデンティティ(OAI)

 オリジンに直接アクセス不可にし、Cloudfron経由のみ許可する
 ※S3のみ。

エッジでのgzip圧縮機能

 S3がgzip圧縮未サポートの為、価値あり。

オリジンフェイルオーバ

 複数オリジンを作成し、片系異常時に正常系にフェイルオーバする機能

Geographical Restriction

 特定の国からのアクセスを制限する機能

Price Class

 利用するエッジロケーションを制限