Amazon CloudFront Origin Shield の使用
CloudFront Origin Shield は、オリジンの負荷を最小限に抑え、可用性を向上させ、運用コストを削減するために役立つ、CloudFront キャッシュインフラストラクチャ内の追加レイヤーです。CloudFront Origin Shield の使用には、次のメリットがあります。
- キャッシュヒット率の向上
-
Origin Shield は、オリジンの前に追加のキャッシュレイヤーを提供するため、CloudFront ディストリビューションのキャッシュヒット率を向上させるために役立ちます。Origin Shield を使用すると、CloudFront のすべてのキャッシュレイヤーからオリジンへのすべてのリクエストが Origin Shield を通過し、キャッシュがヒットする可能性が高くなります。CloudFront は、Origin Shield からの 1 つのオリジンリクエストを使用して各オブジェクトを取得できます。CloudFront キャッシュのその他のレイヤー (エッジロケーションとリージョン別エッジキャッシュ) はすべて、Origin Shield からオブジェクトを取得できます。
- オリジンの負荷を軽減
-
Origin Shield を使用すると、オリジンに送信される同じオブジェクトへの同時リクエストの数をさらに減らすことができます。Origin Shield のキャッシュにないコンテンツへのリクエストは、同じオブジェクトに対する他のリクエストと統合され、オリジンに送信されるリクエストは 1 件のみになります。オリジンで処理するリクエスト数を減らすと、ピークロード時や想定外のトラフィック急増時にオリジンの可用性が維持され、ジャストインタイムパッケージング、画像変換、データ転送 (DTO) などのコストを削減できます。
- ネットワークパフォーマンスの向上
-
オリジンに対するレイテンシーが最も低い AWS リージョンで Origin Shield を有効にすることで、最良のネットワークパフォーマンスが得られます。AWS リージョン内のオリジンの場合、CloudFront のネットワークトラフィックは、オリジンに到達するまで高スループットの CloudFront ネットワーク上に留まります。AWS 外のオリジンの場合、CloudFront のネットワークトラフィックは、オリジンへの低レイテンシー接続がある Origin Shield に到達するまで CloudFront ネットワーク上に留まります。
Origin Shield の使用には追加料金が発生します。詳細については、「CloudFront 料金表
トピック
Origin Shield のユースケース
CloudFront Origin Shield は、次のような多くのユースケースで役立ちます。
-
異なる地理的リージョンにビューワーが分散している場合
-
ライブストリーミングまたはオンザフライ画像処理のために、オリジンがジャストインタイムパッケージを提供する場合
-
オンプレミスのオリジンに、容量または帯域幅の制約がある場合
-
ワークロードが複数のコンテンツ配信ネットワーク (CDN) を使用する場合
Origin Shield は、動的コンテンツがオリジンにプロキシ化される場合、コンテンツのキャッシュ可能性が低い安倍、コンテンツのリクエスト頻度の低い場合など、上記以外の状況には適さないことがあります。
以下のセクションでは、以下のユースケースにおける Origin Shield の利点について説明します。
異なる地理的リージョンにビューワーが分散している場合
Amazon CloudFront を使用すると、CloudFront がキャッシュを使用して処理できるリクエストはオリジンに送信されないため、オリジンの負荷が軽減されます。CloudFront が提供するエッジロケーションのグローバルネットワーク
ビューワーのリージョンが地理的に異なる場合、リクエストは異なるリージョン別エッジキャッシュを介してルーティングされ、それぞれから同じコンテンツに対するリクエストがオリジンに送信される可能性があります。Origin Shield を使用すると、リージョン別エッジキャッシュとオリジンの間にキャッシュのレイヤーが追加されます。すべてのリージョン別エッジキャッシュからのリクエストはすべて、Origin Shield を通過し、オリジンの負荷をさらに軽減します。次の図にその概念を示します。次の図で、オリジンは AWS Elemental MediaPackage です。
Origin Shield を使用しない場合
Origin Shield を使用しない場合は、次の図に示されているように、同じコンテンツに対するリクエストをオリジンが重複して受け取る可能性があります。
Origin Shield を使用する場合
Origin Shield を使用すると、次の図に示されているように、オリジンの負荷を軽減できます。
複数の CDN を使用する場合
ライブビデオイベントや人気のあるオンデマンドコンテンツを配信するには、複数のコンテンツ配信ネットワーク (CDN) を使用することがあります。複数の CDN の使用には利点もありますが、同じコンテンツに対して多数の重複リクエストをオリジンが受け取る可能性があります。それぞれのリクエストは、異なる CDN から送信されることも、同じ CDN 内の異なる場所から送信されることもあります。このような冗長リクエストにより、オリジンの可用性に影響することも、ジャストインタイムパッケージングやインターネットへのデータ転送 (DTO) などのプロセスに追加の運用コストが発生することもあります。
Origin Shield を使用し、他の CDN のオリジンとして CloudFront ディストリビューションを組み合わせると、次のようなメリットがあります。
-
オリジンで受信される冗長リクエストが少なくなるため、複数の CDN を使用した場合の悪影響を軽減できます。
-
CDN 全体で共通のキャッシュキーを使用し、オリジン向けの機能を一元管理できます。
-
ネットワークパフォーマンスの向上。他の CDN からのネットワークトラフィックが近くの CloudFront エッジロケーションで終了し、ローカルキャッシュからのヒットが発生する可能性があります。リクエストされたオブジェクトがエッジロケーションキャッシュ内にない場合、オリジンへのリクエストは Origin Shield までの間 CloudFront ネットワーク上に残り、オリジンへの高いスループットと低レイテンシーを提供します。リクエストされたオブジェクトが Origin Shield のキャッシュ内にある場合、オリジンへのリクエストは完全に回避されます。
重要
マルチ CDN アーキテクチャでオリジンシールドを使用し、割引料金を利用する場合は、[お問い合わせ]
以下の図は、複数の CDN で人気のあるライブビデオイベントを提供する場合に、この設定がオリジンへの負荷を最小限に抑える方法を示しています。次の図で、オリジンは AWS Elemental MediaPackage です。
Origin Shield を使用しない場合 (複数の CDN を使用)
Origin Shield を使用しない場合は、次の図に示されているように、同じコンテンツに対する多数の重複リクエストを (それぞれ異なる CDN から) オリジンが受け取る可能性があります。
Origin Shield を使用する場合 (複数の CDN を使用)
Origin Shield を使用し、他の CDN のオリジンとして CloudFront を組み合わせると、次の図に示されているように、オリジンの負荷を軽減できます。
Origin Shield の AWS リージョンの選択
Amazon CloudFront は、CloudFront のリージョンエッジキャッシュがある AWS リージョンで Origin Shield を提供しています。Origin Shield を有効にするときは、Origin Shield の AWS リージョンを選択します。オリジンに対するレイテンシーが最も低い AWS リージョンを選択するようにしてください。Origin Shieldは、AWS リージョン内にあるオリジンにも、AWS 外のオリジンにも使用できます。
AWS リージョン内のオリジン
オリジンが AWS リージョンにある場合は、CloudFront が Origin Shield を提供するリージョン内にオリジンがあるかどうかを最初に判断します。CloudFront は、以下の AWS リージョンで Origin Shield を提供しています。
-
米国東部 (オハイオ) –
us-east-2
-
米国東部 (バージニア北部) –
us-east-1
-
米国西部 (オレゴン) –
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
CloudFront で Origin Shield が提供されている AWS リージョン内にオリジンがある場合
CloudFront が Origin Shield を提供する AWS リージョン (上記のリストを参照) にオリジンがある場合は、オリジンと同じリージョンで Origin Shield を有効にします。
CloudFront が Origin Shield を提供する AWS リージョン内にオリジンがない場合
CloudFront が Origin Shield を提供する AWS リージョンにオリジンがない場合は、以下の表を参照して、Origin Shield を有効にするリージョンを判断します。
オリジンの場所 |
Origin Shield を有効にするリージョン |
---|---|
米国西部 (北カリフォルニア) – |
米国西部 (オレゴン) – |
アフリカ (ケープタウン) – |
欧州 (アイルランド) – |
アジアパシフィック (香港) – |
アジアパシフィック (シンガポール) – |
カナダ (中部) – |
米国東部 (バージニア北部) – |
欧州 (ミラノ) – |
欧州 (フランクフルト) – |
欧州 (パリ) – |
欧州 (ロンドン) – |
欧州 (ストックホルム) – |
欧州 (ロンドン) – |
中東 (バーレーン) – |
アジアパシフィック (ムンバイ) – |
オリジンが 外にある場合AWS
Origin Shield は、オンプレミスのオリジン、または AWS リージョン外のオリジンにも使用できます。その場合は、オリジンに対するレイテンシーが最も低い AWS リージョンで Origin Shield を有効にします。オリジンに対するレイテンシーが最も低い AWS リージョンがわからない場合は、以下の提案を参考にして判断することができます。
-
上記の表を参照し、オリジンの地理的位置に基づいて、オリジンに対するレイテンシーが最も低いと思われる AWS リージョンを見計らいます。
-
オリジンに地理的に近いいくつかの異なる AWS リージョンで Amazon EC2 インスタンスを起動し、
ping
を使用してテストを数回実行して、これらのリージョンとオリジンの間の典型的なネットワークレイテンシーを測定できます。
Origin Shield の有効化
Origin Shield を有効にすると、キャッシュヒット率の向上、オリジンへの負荷の軽減、パフォーマンスの強化を図ることができます。オリジンシールドを有効にするには、CloudFront ディストリビューションのオリジン設定を変更します。Origin Shield は、オリジンのプロパティです。CloudFront ディストリビューションのオリジンごとに、そのオリジンに最適なパフォーマンスを提供する AWS リージョンで Origin Shield を個別に有効化できます。
Origin Shield は、CloudFront コンソール、AWS CloudFormation、または CloudFront API で有効にすることができます。
Origin Shield のコストの見積もり
Origin Shield の料金は、増分レイヤーとして Origin Shield に送信されるリクエストの数に基づいて計算されます。
オリジンにプロキシ化される動的 (キャッシュ不可能な) リクエストの場合、Origin Shield は常に増分レイヤーとなります。動的リクエストでは、HTTP メソッド PUT
、POST
、PATCH
、DELETE
を使用します。
有効期限 (TTL) の設定が 3,600 秒未満の GET
および HEAD
リクエストは、動的リクエストと見なされます。また、キャッシュが無効になっている GET
および HEAD
リクエストも動的リクエストと見なされます。
動的リクエストに対する Origin Shield の料金を見積もるには、次の式を使用します。
動的リクエストの総数 x 10,000 リクエストあたりの Origin Shield 料金 / 10,000
HTTP メソッド GET
、HEAD
、OPTIONS
を使用する非動的リクエストの場合、Origin Shield は増分レイヤーになることがあります。Origin Shield を有効にするときは、Origin Shield の AWS リージョンを選択します。Origin Shield と同じリージョン内のリージョン別エッジキャッシュに本来送信されるリクエストの場合、Origin Shield は増分レイヤーになりません。このようなリクエストに対しては、Origin Shield の料金が発生しません。Origin Shield とは異なるリージョンのリージョン別エッジキャッシュに送信されてから Origin Shield に送信されるリクエストの場合、Origin Shield は増分レイヤーになります。このようなリクエストに対しては、Origin Shield の料金が発生します。
キャッシュ可能なリクエストに対する Origin Shield の料金を見積もるには、次の式を使用します。
キャッシュ可能なリクエストの総数 x (1 – キャッシュヒット率) x 異なるリージョンのリージョン別エッジキャッシュから Origin Shield に送信されるリクエストの割合 x 10,000 リクエストあたりの Origin Shield 料金 / 10,000
Origin Shield の 10,000 リクエストあたりの料金について詳しくは、「CloudFront の料金
Origin Shield の高可用性
Origin Shield では、CloudFront のリージョン別エッジキャッシュを活用します。これらのエッジキャッシュはそれぞれ、少なくとも 3 つのアベイラビリティーゾーン
Origin Shield と他の CloudFront 機能との連携
以下のセクションでは、Origin Shield と他の CloudFront 機能との連携について説明します。
Origin Shield と CloudFront ログ記録
Origin Shield がいつリクエストを処理したかを確認するには、以下のいずれかを有効にする必要があります。
-
CloudFront 標準ログ (アクセスログ)。標準ログは無料で提供されます。
-
CloudFront リアルタイムログ。リアルタイムログの使用には追加料金が発生します。「Amazon CloudFront の料金
」を参照してください。
Origin Shield からのキャッシュヒットは、CloudFront ログの OriginShieldHit
フィールドに x-edge-detailed-result-type
として表示されます。Origin Shield では、Amazon CloudFront のリージョン別エッジキャッシュが活用されます。リクエストが CloudFront エッジロケーションから Origin Shield として機能するリージョン別エッジキャッシュにルーティングされた場合、ログには Hit
としてではなく OriginShieldHit
として報告されます。
Origin Shield とオリジングループ
Origin Shield は CloudFront オリジングループとの互換性があります。Origin Shield はオリジンのプロパティであるため、オリジンがオリジングループの一部であっても、リクエストは常に各オリジンの Origin Shield を通過します。CloudFront はリクエストごとに、プライマリオリジンの Origin Shield を介してリクエストをオリジングループのプライマリオリジンにルーティングします。このリクエストが失敗した場合 (オリジングループのフェイルオーバー基準に従って)、CloudFront はセカンダリオリジンの Origin Shield を介してリクエストをセカンダリオリジンにルーティングします。
Origin Shield と Lambda@Edge
Origin Shield は Lambda@Edge 関数の機能性には影響しませんが、これらの関数が実行される AWS リージョンに影響を及ぼす可能性があります。
Lambda@Edge と共に Origin Shield を使用する場合、オリジン向けのトリガー (オリジンリクエストとオリジンレスポンス) は、Origin Shield が有効になっている AWS リージョンで実行されます。プライマリ Origin Shield ロケーションが利用できないために、CloudFront がリクエストをセカンダリ Origin Shield ロケーションにルーティングする場合、Lambda@Edge オリジン向けのトリガーもセカンダリ Origin Shield ロケーションを使用するようにシフトされます。
ビューワー向けトリガーは影響を受けません。