SJ blog
architecture
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CloudFront Origin Shield — オリジンの負荷削減とキャッシュヒット率向上

CloudFront Origin Shieldの仕組み、追加キャッシュレイヤーとしての役割、リージョン別のキャッシュヒット率向上効果、オリジンのスパイク保護、Origin Shieldのリージョン選択基準を解説。

一言結論

Origin Shieldはエッジロケーションとオリジン間にキャッシュレイヤーを追加することでオリジンへのリクエストを60〜70%以上削減できるため、グローバル配信かつオリジン負荷が課題の場合に有効な選択肢だ。

Origin Shield の概要

Origin Shieldは CloudFrontとオリジン間に追加のキャッシュレイヤーを設ける機能だ。世界中のエッジロケーションからのオリジンリクエストを集約し、オリジンへのリクエスト数を大幅に削減する。

通常のCloudFrontの動作:
  東京エッジ → キャッシュミス → オリジン(東京)にリクエスト
  NYC エッジ  → キャッシュミス → オリジン(東京)にリクエスト
  London エッジ → キャッシュミス → オリジン(東京)にリクエスト
  → エッジが多いほどオリジンへのリクエストが増える

Origin Shield ありの動作:
  東京エッジ → キャッシュミス → Origin Shield(東京)→ オリジン
  NYC エッジ  → キャッシュミス → Origin Shield(東京) 
  London エッジ → キャッシュミス → Origin Shield(東京)
  → Origin Shieldのキャッシュがヒットすればオリジンへは行かない

Origin Shield の効果

効果1: オリジンへのリクエスト数削減
  → Origin Shield のキャッシュヒット率: 60〜70%以上
  → オリジンのサーバー負荷・コスト削減
  
効果2: キャッシュヒット率の向上
  → 全体的なキャッシュヒット率が向上
  → エンドユーザーへのレスポンス速度が改善

効果3: オリジンのスパイク保護
  → 大量リクエストがあってもOrigin Shieldが集約
  → オリジンはOrigin Shieldから均一なリクエストを受ける
  
効果4: キャッシュフィル(Cache Fill)の効率化
  → 同じコンテンツをOrigin Shieldが1回だけ取得
  → 複数エッジが同時にオリジンにリクエストする「サンダーハード問題」を回避

Origin Shield の設定

# オリジンにOrigin Shieldを設定
aws cloudfront update-distribution \
  --id DISTRIBUTION_ID \
  --distribution-config '{
    "Origins": {
      "Items": [{
        "Id": "my-origin",
        "DomainName": "api.example.com",
        "OriginShield": {
          "Enabled": true,
          "OriginShieldRegion": "ap-northeast-1"
        }
      }]
    }
  }'

Origin Shield リージョンの選択

選択基準: オリジンに最も近いリージョンを選ぶ

利用可能なOrigin Shieldリージョン:
  us-east-1: バージニア北部
  us-east-2: オハイオ
  us-west-2: オレゴン
  ap-south-1: ムンバイ
  ap-northeast-2: ソウル
  ap-southeast-1: シンガポール
  ap-southeast-2: シドニー
  ap-northeast-1: 東京
  eu-central-1: フランクフルト
  eu-west-1: アイルランド
  eu-west-2: ロンドン
  sa-east-1: サンパウロ
  
選択例:
  オリジンが東京ALB → Origin Shield: ap-northeast-1(東京)
  オリジンがus-east-1 → Origin Shield: us-east-1(バージニア)

Origin Shield のコスト

料金: オリジンからOrigin Shieldへのリクエスト数に応じて課金
  HTTPS リクエスト: $0.010 / 10,000リクエスト(東京)
  
コスト vs 効果の計算例:
  月間1,000万リクエスト、キャッシュヒット率70%の場合:
  
  Origin Shieldなし: 300万リクエスト → オリジン
  Origin Shieldあり: 1,000万 × 0.030 = $300(Origin Shield料金)
                     1,000万 × 0.30 × 0.70 = 210万 → オリジンに到達
  
  → オリジンサーバーのコスト削減と安定性向上が料金より大きい場合に有効

Regional Edge Cache との違い

Regional Edge Cache(REC):
  → CloudFrontが自動的に使用する中間キャッシュ
  → ユーザーに近いリージョンに配置
  → エッジロケーションのキャッシュが切れた場合に参照
  → 追加料金なし

Origin Shield:
  → 明示的に設定する追加キャッシュ層
  → オリジンの直前に配置
  → オリジンの保護・負荷削減が目的
  → 追加料金あり

階層構造:
  エッジロケーション → Regional Edge Cache → Origin Shield → オリジン

Origin Shield が特に有効なケース

✅ オリジンの処理コストが高い(動的コンテンツ生成)
✅ オリジンがトラフィックスパイクに弱い
✅ マルチリージョンのエッジロケーションから同一オリジンにアクセス
✅ オリジンがオンプレミスや低帯域幅環境

あまり効果がないケース:
  ❌ キャッシュヒット率が低い(動的コンテンツが多い)
  ❌ オリジンが高スケーラブル(S3バケット等)
  ❌ キャッシュTTLが非常に短い

試験頻出ポイント

シナリオ回答
オリジンへのリクエスト数を削減したいOrigin Shieldを有効化
Origin Shieldのリージョン選択基準オリジンに最も近いリージョン
自動中間キャッシュ(設定不要)ARegional Edge Cache
大規模イベント時のオリジン保護Origin Shield
Origin Shieldの料金オリジンへのリクエスト数に課金

まとめ

Origin ShieldはCloudFrontとオリジン間の追加キャッシュ層で、オリジンへのリクエスト数削減と負荷の平準化を実現する。オリジンに最も近いAWSリージョンを選択することで最大の効果を得られる。動的コンテンツが少なくオリジンの負荷が課題の場合に特に有効だ。