Open10

Amazon CloudFront

hbsnowhbsnow

Edge Location

  • Amazon Route 53
  • AWS Global Accelerator
  • Amazon CloudFront
  • AWS WAF
  • AWS Shield
  • AWS Lambda@Edge
hbsnowhbsnow

エッジでの gzip 圧縮機能

リクエストヘッダに Accept-Encoding:gzip が指定されており、オリジンが gzip に対応していない場合は CloudFront エッジにて gzip 圧縮を行い配信する。S3ではgzip圧縮をサポートしていないため、有効なオプション

hbsnowhbsnow

キャッシュコントロール

キャッシュコントロールヘッダの挙動

  • キャッシュ時間のコントロールが可能
  • オリジン側が HPPT キャッシュコントロールヘッダを付与しない場合でも上書きが可能
  • キャッシュ動作(ビヘイベア)ごとにキャッシュ設定を行うことで。URLパスごとにキャッシュ期間を変えることが可能
    • デフォルトTTL: オリジンがキャッシュコントロールヘッダを指定しない場合に利用(デフォルト24時間)
    • 最小TTL: CloudFront側でキャッシュすべき最小時間
    • 最大TTL: CloudFront側でキャッシュすべき最大時間
  • HTTPのメタタグ、Pragmaが指定されていてもCloudFrontでは利用されない
    • オリジンがS3の場合、S3のMetadataにHTTPヘッダを指定する

動的コンテンツキャッシュへの対応

  • オリジンに Header/Cookie/Query String情報をフォワードすることで、動的なページの配信にも対応
    • Header
      • すべてのHeader/Cookie/Query Stringをフォワードするとキャッシュ効率が落ちるので、必要最低限に絞る
      • Query Stringはパラメータの順序を常に統一し、大文字小文字も揃えないとそれぞれでキャッシュされてしまうので注意
        • Lambda@Edgeで正規化できる
  • URLパス(ビヘイビア)と組合せて、きめ細かなキャッシュコントロールを実現
  • WhilteListを利用して最低限のパラメータのみをフォワード設定することで、キャッシュを有効活用することが可能
  • キャッシュしないコンテンツでもオリジンとの通信最適化により配信の高速化を実現
hbsnowhbsnow

キャッシュの無効化

  • コンテンツごとの無効化パス(3000個まで)
  • ワイルドカードの利用(15個まで、オブジェクトの制限なし)
  • マネコンはAPIで実行可能
hbsnowhbsnow

カスタムエラー

  • 4xxはオリジンで対応、5xxはオリジンでエラーのためCloudFrontで対処
  • エラーキャッシュ期間はデフォルト5分
  • オリジンのタイムアウトはデフォルト30秒 (4-60秒で指定)
  • キープアライブタイムアウトデフォルト5秒 (1-60秒で指定)
hbsnowhbsnow

オリジンフェイルオーバー

オリジングループを作成し、プライマリオリジン、セカンダリオリジンを指定。プライマリが5xx系エラーとなったときにバックアップオリジンにルーティングする

Lambda@Edge関数やカスタムエラーページでもオリジンフェイルオーバーが可能

hbsnowhbsnow

署名付きURL/Cookie

  • 単一コンテンツは署名つきURL、複数コンテンツアクセスは署名付きCookieを推奨

署名付きURL

  • 有効期限を最小にすることを推奨
  • 決められたフォマットでクエリにパラメータ値を設定
  • CloudFrontの秘密鍵を利用して Signatureのパラメータ文字列を署名
  • アクセスごとに署名が必要

署名付きCookie

  • 許可コンテンツにワイルドカードが指定可能
hbsnowhbsnow

POSTリクエストの特定データフィールドを特定のアプリケーションのみアクセスできるように保護

hbsnowhbsnow

オリジンサーバの保護

S3

  • Origin Access Identity (OAI) を利用
    • S3のバケットへのアクセスをCloudFrontからのみに制限

カスタムオリジン

  • オリジンカスタムヘッダを利用する
    • ALBのホストヘッダーのルーティングルールでチェック可能
  • オリジン側のアドレスを公開しないとともに、CloudFrontが利用するIPアドレスのみを許可