Amazon CloudFront Origin Shield の使用 - Amazon CloudFront

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 が提供するエッジロケーションのグローバルネットワークに加え、リージョン別エッジキャッシュは中間層のキャッシュレイヤーとして機能します。これにより、地理的に近いリージョンのビューワーにキャッシュヒットが提供され、オリジンリクエストが統合されます。ビューワーリクエストは、まず近くの CloudFront エッジロケーションにルーティングされ、オブジェクトがそのロケーションでキャッシュされていない場合、リクエストはリージョン別エッジキャッシュに送信されます。

ビューワーのリージョンが地理的に異なる場合、リクエストは異なるリージョン別エッジキャッシュを介してルーティングされ、それぞれから同じコンテンツに対するリクエストがオリジンに送信される可能性があります。Origin Shield を使用すると、リージョン別エッジキャッシュとオリジンの間にキャッシュのレイヤーが追加されます。すべてのリージョン別エッジキャッシュからのリクエストはすべて、Origin Shield を通過し、オリジンの負荷をさらに軽減します。次の図にその概念を示します。次の図で、オリジンは AWS Elemental MediaPackage です。

Origin Shield を使用しない場合

Origin Shield を使用しない場合は、次の図に示されているように、同じコンテンツに対するリクエストをオリジンが重複して受け取る可能性があります。

CloudFront Origin Shield を使用しない場合、オリジンは重複したリクエストを受け取る可能性があります。

Origin Shield を使用する場合

Origin Shield を使用すると、次の図に示されているように、オリジンの負荷を軽減できます。

CloudFront オリジンシールドを使用すると、オリジンが受け取る重複リクエストを減らすことができます。

複数の CDN を使用する場合

ライブビデオイベントや人気のあるオンデマンドコンテンツを配信するには、複数のコンテンツ配信ネットワーク (CDN) を使用することがあります。複数の CDN の使用には利点もありますが、同じコンテンツに対して多数の重複リクエストをオリジンが受け取る可能性があります。それぞれのリクエストは、異なる CDN から送信されることも、同じ CDN 内の異なる場所から送信されることもあります。このような冗長リクエストにより、オリジンの可用性に影響することも、ジャストインタイムパッケージングやインターネットへのデータ転送 (DTO) などのプロセスに追加の運用コストが発生することもあります。

Origin Shield を使用し、他の CDN のオリジンとして CloudFront ディストリビューションを組み合わせると、次のようなメリットがあります。

  • オリジンで受信される冗長リクエストが少なくなるため、複数の CDN を使用した場合の悪影響を軽減できます。

  • CDN 全体で共通のキャッシュキーを使用し、オリジン向けの機能を一元管理できます。

  • ネットワークパフォーマンスの向上。他の CDN からのネットワークトラフィックが近くの CloudFront エッジロケーションで終了し、ローカルキャッシュからのヒットが発生する可能性があります。リクエストされたオブジェクトがエッジロケーションキャッシュ内にない場合、オリジンへのリクエストは Origin Shield までの間 CloudFront ネットワーク上に残り、オリジンへの高いスループットと低レイテンシーを提供します。リクエストされたオブジェクトが Origin Shield のキャッシュ内にある場合、オリジンへのリクエストは完全に回避されます。

重要

マルチ CDN アーキテクチャでオリジンシールドを使用し、割引料金を利用する場合は、[お問い合わせ] または AWS 営業担当者を通じて詳細をご確認ください。追加料金が適用される場合があります。

以下の図は、複数の CDN で人気のあるライブビデオイベントを提供する場合に、この設定がオリジンへの負荷を最小限に抑える方法を示しています。次の図で、オリジンは AWS Elemental MediaPackage です。

Origin Shield を使用しない場合 (複数の CDN を使用)

Origin Shield を使用しない場合は、次の図に示されているように、同じコンテンツに対する多数の重複リクエストを (それぞれ異なる CDN から) オリジンが受け取る可能性があります。

オリジンが、それぞれが異なる CDN から着信する重複リクエストをどのように受信できるかを示すグラフィック。

Origin Shield を使用する場合 (複数の CDN を使用)

Origin Shield を使用し、他の CDN のオリジンとして CloudFront を組み合わせると、次の図に示されているように、オリジンの負荷を軽減できます。

CloudFront Origin Shield が受け取る重複リクエストの数が少ないことを示すグラフィック。

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 を有効にするリージョン

米国西部 (北カリフォルニア) – us-west-1

米国西部 (オレゴン) – us-west-2

アフリカ (ケープタウン) – af-south-1

欧州 (アイルランド) – eu-west-1

アジアパシフィック (香港) – ap-east-1

アジアパシフィック (シンガポール) – ap-southeast-1

カナダ (中部) – ca-central-1

米国東部 (バージニア北部) – us-east-1

欧州 (ミラノ) – eu-south-1

欧州 (フランクフルト) – eu-central-1

欧州 (パリ) – eu-west-3

欧州 (ロンドン) – eu-west-2

欧州 (ストックホルム) – eu-north-1

欧州 (ロンドン) – eu-west-2

中東 (バーレーン) – me-south-1

アジアパシフィック (ムンバイ) – ap-south-1

オリジンが 外にある場合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 で有効にすることができます。

Console
既存のオリジンに対して Origin Shield を有効にするには (コンソール)
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. 更新するオリジンがあるディストリビューションを選択します。

  3. [Origin and Origin Groups (オリジンおよびオリジングループ)] タブを選択します。

  4. 更新するオリジンを選択し、[編集] を選択します。

  5. [Origin Shield を有効にする] で、[はい] を選択します。

  6. [Origin Shield Region] (Origin Shield のリージョン) には、Origin Shield を有効にする AWS リージョンを選択します。リージョンの選択については、「Origin Shield の AWS リージョンの選択」を参照してください。

  7. ページの最下部で [はい、編集します] を選択します。

ディストリビューションのステータスが [デプロイ済み] であれば、Origin Shield の準備が完了しています。これには数分かかります。

新しいオリジンの Origin Shield を有効にするには (コンソール)
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. 既存のディストリビューションに新しいオリジンを作成するには、次の操作を行います。

    1. オリジンを作成するディストリビューションを選択します。

    2. [オリジンの作成] を選択し、ステップ 3 に進みます。

    新しいディストリビューションに新しいオリジンを作成するには、次の操作を行います。

    1. [Create Distribution] を選択します。

    2. [ウェブ] セクションで、[今すぐ始める] を選択します。[オリジン設定] セクションで、次の操作をステップ 3 から行います。

  3. [Origin Shield を有効にする] で、[はい] を選択します。

  4. [Origin Shield Region] (Origin Shield のリージョン) には、Origin Shield を有効にする AWS リージョンを選択します。リージョンの選択については、「Origin Shield の AWS リージョンの選択」を参照してください。

    新しいディストリビューションを作成する場合は、そのページの他の設定を使用して、ディストリビューションの設定を続けて行います。詳細については、「ディストリビューション設定リファレンス」を参照してください。

  5. [作成] (既存のディストリビューションに新しいオリジンを作成する場合) を選択するか、[ディストリビューションの作成] (新しいディストリビューションに新しいオリジンを作成する場合) を選択して、変更内容を保存します。

ディストリビューションのステータスが [デプロイ済み] であれば、Origin Shield の準備が完了しています。これには数分かかります。

AWS CloudFormation

AWS CloudFormation で Origin Shield を有効にするには、AWS::CloudFront::Distribution リソースの Origin プロパティタイプに OriginShield プロパティを使用します。OriginShield プロパティは、既存の Origin に追加することも、新しい Origin を作成するときに含めることができます。

次の例は、米国西部 (オレゴン) リージョン (OriginShield) で us-west-2 を有効にするための構文を YAML 形式で示しています。リージョンの選択については、「Origin Shield の AWS リージョンの選択」を参照してください。この例では、Origin リソース全体ではなく、AWS::CloudFront::Distribution プロパティタイプのみを示しています。

Origins: - DomainName: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Id: Example-EMP-3ae97e9482b0d011 OriginShield: Enabled: true OriginShieldRegion: us-west-2 CustomOriginConfig: OriginProtocolPolicy: match-viewer OriginSSLProtocols: TLSv1

詳細については、AWS CloudFormation ユーザーガイドのリソースとプロパティのリファレンスセクションで「AWS::CloudFront::Distribution Origin」を参照してください。

API

AWS SDK または AWS Command Line Interface (AWS CLI) を使用して CloudFront API で Origin Shield を有効にするには、OriginShield タイプを使用します。OriginShield は、OriginDistributionConfig 内で指定します。OriginShield タイプの詳細については、「Amazon CloudFront API リファレンス」の以下の情報を参照してください。

これらのタイプと操作を使用するための具体的な構文は、使用する SDK、CLI、API クライアントによって異なります。詳細については、SDK、CLI、またはクライアントのリファレンスドキュメントを参照してください。

Origin Shield のコストの見積もり

Origin Shield の料金は、増分レイヤーとして Origin Shield に送信されるリクエストの数に基づいて計算されます。

オリジンにプロキシ化される動的 (キャッシュ不可能な) リクエストの場合、Origin Shield は常に増分レイヤーとなります。動的リクエストでは、HTTP メソッド PUTPOSTPATCHDELETE を使用します。

有効期限 (TTL) の設定が 3,600 秒未満の GET および HEAD リクエストは、動的リクエストと見なされます。また、キャッシュが無効になっている GET および HEAD リクエストも動的リクエストと見なされます。

動的リクエストに対する Origin Shield の料金を見積もるには、次の式を使用します。

動的リクエストの総数 x 10,000 リクエストあたりの Origin Shield 料金 / 10,000

HTTP メソッド GETHEADOPTIONS を使用する非動的リクエストの場合、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 つのアベイラビリティーゾーンと Amazon EC2 Auto Scaling インスタンスのフリートを使用して、AWS リージョン内に構築されます。CloudFront のロケーションから Origin Shield への接続では、リクエストごとにアクティブなエラー追跡が使用されます。これにより、プライマリ Origin Shield ロケーションが利用できない場合は、リクエストがセカンダリ Origin Shield ロケーションに自動的にルーティングされます。

Origin Shield と他の CloudFront 機能との連携

以下のセクションでは、Origin Shield と他の CloudFront 機能との連携について説明します。

Origin Shield と CloudFront ログ記録

Origin Shield がいつリクエストを処理したかを確認するには、以下のいずれかを有効にする必要があります。

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 ロケーションを使用するようにシフトされます。

ビューワー向けトリガーは影響を受けません。