CloudFront の概要

  • CloudFront は、静的、動的な web またはストリーミングコンテンツのエンドユーザーへの配信を高速化する web サービスです。
  • CloudFront は、エッジロケーションと呼ばれるデータセンターの世界的なネットワークを通じてコンテンツを配信
  • CloudFront は、ビジネスおよび Web アプリケーション開発者に、低レイテンシおよび高データ転送速度でコンテンツを配信するための簡単でコスト効率の高い方法を提供します。
  • CloudFront は、各ユーザリクエストをエッジロケーションにルーティングすることにより、コンテンツの配信を高速化するため、最も低いレイテンシを提供します。
  • CloudFront は、ユーザーの要求が通過する必要があるネットワークホップの数を大幅に削減し、パフォーマンスを向上させ、待ち時間を短縮し、データ転送速度を高めることができます。
  • CloudFront は、一般的なウェブサイトの画像、動画、メディアファイル、ソフトウェアのダウンロードなど、エッジ配信によってもたらされる頻繁にアクセスされる静的コンテンツの配信に適しています。

ソリューションアーキテクトプロフェッショナル試験のための最も重要なトピック

CloudFront のメリット

  • CloudFront は、インターネットを介して複数のサイトでキャッシュサーバーのネットワークを運用する際の費用と複雑さを排除し、トラフィックの急増に対応するために過剰なプロビジョニング能力を必要としません。
  • CloudFront はまた、オブジェクトのコピーが世界中の複数のエッジロケーションで保持されるため、信頼性と可用性が向上します。
  • CloudFront は、オリジンサーバとの永続的な接続を保持し、それらのファイルを可能な限り迅速にオリジンサーバからフェッチできるようにします。
  • CloudFront では、同じファイルのエッジ位置にある同時ビューア要求を、オリジンサーバへの単一のリクエストに集約して、原点の負荷を軽減するなどの手法も使用します。
  • CloudFront は、IP アドレス、HTTP ヘッダー、およびカスタム URI 文字列に基づいて構成されたルールを許可することにより、web アプリケーションを攻撃から保護するための、AWS WAF と統合します。

構成とコンテンツの配信

  • 構成
    1. 配信用のファイルを取得するには、オリジンサーバーを構成する必要があります。オリジンサーバーは、オブジェクトの元の決定的なバージョンを格納し、たとえば、S3、EC2、オンプレミスサーバなどの AWS ホストサービスを提供します。
    2. ファイル (オブジェクトとも呼ばれます) は、公開読み取りアクセス許可または OAI に制限されたアクセス許可を持つオリジンサーバーに追加/アップロードできます。
    3. CloudFront ディストリビューションを作成し、ユーザがファイルをリクエストしたときにファイルを取得するオリジンサーバを CloudFrontに指示します。
    4. CloudFront は、配信構成をすべてのエッジロケーションに送信します。
    5. ウェブサイトは、CloudFront が提供するドメイン名またはカスタム代替ドメイン名で使用することができます
    6. オリジンサーバーは、アクセスプロトコルの制限、動作のキャッシュ、TTL または有効期限を追加するファイルへのヘッダーの追加を行うように構成できます。
  • ユーザーへのコンテンツ配信
    1. ユーザーが web サイト、ファイル、またはオブジェクトにアクセスすると、DNS は要求を最も低い待ち時間でユーザーの要求に最もよく役立つ CloudFront エッジの場所にルーティングします。
    2. CloudFront は、要求されたオブジェクトがエッジ位置のキャッシュに存在する場合、オブジェクトを直ちに返します。
    3. 要求されたオブジェクトがエッジの場所にあるキャッシュに存在しない場合、CloudFront はオリジンサーバーからオブジェクトを要求し、受信を開始するとすぐにユーザーに返します。
    4. オブジェクトが有効期限に達すると、CloudFrontは 最新の要求をすべてオリジンサーバーでチェックし、最新のものがあれば同じオブジェクトを使用します。 オリジナルサーバに最新のバージョンがある場合は、同じものが取得され、ユーザに提供され、キャッシュされます。

配送方法

ウェブディストリビューション

  • html、css、js、画像などの HTTP または HTTPS を使用して、静的および動的なコンテンツの両方をサポートします。
  • プログレッシブダウンロードと Apple HTTP ライブストリーミング (HLS) を使用して、オンデマンドでマルチメディアコンテンツをサポートします。
  • 会議、コンサートなどのライブイベントをリアルタイムでサポートします。ライブストリーミングでは、AWS CloudFormation スタックを使用して自動的に配信を作成できます。
  • オリジンサーバは、Amazon S3 バケットまたは HTTP サーバ (web サーバや AWS ELB など) のいずれかになります。

RMTP 分布

  • Adobe Media サーバーと Adobe リアルタイムメッセージングプロトコル (RTMP) を使用したメディアファイルのストリーミングをサポート
  • S3 バケットをオリジンとして使用する必要があります。
  • CloudFront を使用してメディアファイルをストリーミングするには、2種類のファイルが必要です。
    • メディアファイル
    • メディアプレイヤー 例えば、JW プレーヤー、Flowplayer、またはアドビフラッシュ
  • エンドユーザーは、提供されているメディアプレーヤーを使用してメディアファイルを表示します。デバイスのコンピュータにローカルにインストールされていない
  • エンドユーザーがメディアファイルをストリーム配信すると、ファイルが CloudFront からダウンロードされている間、メディアプレーヤーはファイルコンテンツの再生を開始します。
  • メディアファイルは、エンドユーザーのシステムにローカルに保存されません。
  • 2つの CloudFront ディストリビューションが必要であり、メディアプレーヤーのための Web ディストリビューションと RMTP 配信
  • メディアプレーヤーとメディアファイルは、同じオリジン S3 バケットまたは異なるバケットに保存することができます。

オリジン

  • 各オリジンは、元のコンテンツを格納する web サーバーなどの S3 バケットまたは HTTP サーバーのいずれかです。
  • HTTP サーバーをオリジンとして、リソースのドメイン名をマップする必要があり、ファイルをパブリックに読み取り可能にする必要があります。
  • S3 バケットの場合は、バケット URL または、静的 Web サイトエンドポイント URL を使用し、ファイルは OAI を使用して公開または保護する必要があります。
  • オリジンのアクセスを制限する (S3 のみの場合)、オリジンアクセス ID を使用して S3 オブジェクトに直接アクセスできないように設定可能。
  • ディストリビューションでは、各バケットに対して複数のオリジンを持つことができ、それぞれのオリジンに要求をルーティングする1つ以上のキャッシュ動作があります。キャッシュ動作のパスパターンは、そのキャッシュの動作に関連付けられているオリジン (S3 バケット) にルーティングされる要求を決定します。

キャッシュの動作

  • キャッシュの動作を定義することができます
    • 要求に適用するパスパターン。既定の (*) パターンが作成され、既定のパスを優先するパターンで複数のキャッシュ配信を追加できます。

ビューアプロトコルポリシー

  • ビューアプロトコルポリシーは、許可されるアクセスプロトコルを定義するように構成できます。 HTTP と HTTPS のどちらでもか、HTTPSのみ、または HTTPS にリダイレクトされたHTTP

HTTPS 接続

  • CloudFront とビューアーの間で、キャッシュの配信は HTTP または HTTPS リクエストを許可するか、HTTPS のみを使用するか、またはすべての HTTP リクエストを HTTPS にリダイレクトするように構成できます。
  • Cloudfront とオリジンの間では、Cloudfront が HTTPS を使用してオリジンからオブジェクトをフェッチすることを要求するようにキャッシュ配信を構成したり、ビューアがオブジェクトを要求するために使用したプロトコルを使用します。
  • S3 のoオリジンとして、
    • Web サイトの場合、HTTPS がサポートされていないため、プロトコルは HTTP でなければなりません。
    • S3 バケットの場合、デフォルトのオリジンプロトコルポリシーはビューアと一致しており、変更することはできません。そのため、Cloudfront がビューアと CloudFront の間で HTTPS をリクエストするように構成されている場合、自動的に HTTPS を使用して S3 と通信します。
  • CloudFront は、以下を使用して代替ドメイン名に対して HTTPS で動作するようにコンフィグレーションすることもできます。
    • 専用 IP アドレスを使用した HTTPS リクエストの配信
      • CloudFront は、代替ドメイン名を専用の IP アドレスに関連付け、証明書は IP アドレスに関連付けられます。IP アドレスの DNS サーバーから要求を受信すると、
      • CloudFront は IP アドレスを使用して、ディストリビューションと SSL/TLS 証明書を識別し、ビューアに戻ります。
      • このメソッドは、ユーザーが使用しているブラウザやその他のビューアに関係なく、すべての HTTPS リクエストに対して機能します。
      • 追加の月額料金 (約 $ 600/month) は、専用 IP アドレスを使用するために発生します
    • SNI を使用した HTTPS リクエストの提供
      • SNI カスタム SSL は、複数のドメインがホスト名を含むことによって同じ IP アドレスを介して提供することができます、TLS プロトコルの SNI 拡張に依存して、視聴者はに接続しようとしている
      • SNI メソッドを使用すると、CloudFront は IP アドレスを代替ドメイン名に関連付けますが、IP アドレスは専用ではありません。
      • CloudFront は IP アドレスに基づいて、要求が IP アドレス専用ではないドメインを決定することはできません。
      • SNI をサポートするブラウザは、リクエスト URL からドメイン名を自動的に取得し、リクエストヘッダーの新しいフィールドに追加します。
      • CloudFront は、SNI をサポートするブラウザから HTTPS リクエストを受信すると、リクエストヘッダでドメイン名を検索し、該当する SSL/TLS 証明書を使用してリクエストに応答します。
      • ビューアと CloudFront は SSL ネゴシエーションを実行し、CloudFront は要求されたコンテンツをビューアに返します。
      • 古いブラウザはサポートしていません
      • SNI カスタム SSL は、標準の CloudFront データ転送およびリクエスト料金を超える追加コストなしで利用可能
  • エンドツーエンドの HTTPS 接続については、次の要件に従って、ビューアと CloudFront と CloudFront とオリジンの両方に証明書を適用する必要があります。
    • ビューアと CloudFront 間の HTTPS
      • Comodo、DigiCert、Symantecなどの信頼できる認証局(CA)によって発行された証明書
      • AWS 証明書マネージャ (ACM) によって提供される証明書
      • 自己署名証明書
    • CloudFront とカスタムオリジンの間の HTTPS
      • オリジンが ELB ロードバランサでない場合、証明書は Comodo、DigiCert、Symantec などの信頼できる CA によって発行される必要があります。
      • ELB ロードバランサーでは、ACM によって提供される証明書を使用できます

許可される HTTP メソッド

  • CloudFront は GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE をサポートし、オブジェクトの取得、追加、更新、削除を行い、オブジェクトヘッダを取得します。
  • GET、HEAD、OPTIONS メソッド CloudFront を使用してオブジェクト、オブジェクトヘッダを取得する、またはオリジンからサポートされるオプションのリストを取得する方法。
  • POST、PUT 操作も実行できます。例えば、 Webフォームからデータを送信します。これらのデータは直接オリジンサーバーにプロキシされます。
  • CloudFront は、GET および HEAD リクエストに対する応答のみをキャッシュし、OPTIONS リクエストすることもできます。CloudFront は、PUT、POST、PATCH、DELETE リクエストメソッドに対する応答をキャッシュせず、これらのリクエストはオリジンに送られます。
  • PUT、POST http メソッドは、これらの操作がオリジンに送信されるため、コンテンツのアップロードを高速化するのにも役立ちます。 CloudFront がエッジ位置からオリジンサーバーまで維持する監視された永続的な接続からアプリケーションを恩恵を受けることを可能にします。

CloudFront エッジキャッシュの改善

  • キャッシュの最大有効期間を制御する
    • キャッシュヒット率を上げるために、オリジンは、キャッシュコントロールの max-age ディレクティブをオブジェクトに追加するように構成できます。
    • インターバルが短いほど、オリジンから検索されます。
  • クエリ文字列パラメータに基づくキャッシュ
    • Web ディストリビューションの場合、CloudFront はクエリパラメータに基づいてキャッシュするように設定できます。
    • キャッシュのパフォーマンスを向上させるには
      • オリジンが一意のオブジェクトを返すクエリ文字列のみを転送するように CloudFront を設定します。
      • パラメータ値 A または a のパラメータ値に同じケースを使用すると、返された応答またはオブジェクトが同じであっても、CloudFront は同じリクエストを2回キャッシュします。
      • リクエスト a = x&b = y および b = y&a = x に対して同じパラメータ順序を使用すると、返されたレスポンスまたはオブジェクトが同一であると考えても、CloudFront は同じリクエストを2回キャッシュします。
    • RTMP ディストリビューションでは、CloudFront がオリジンサーバからオブジェクトを要求すると、クエリ文字列パラメータが削除されます。
  • クッキー値に基づくキャッシング
    • Web ディストリビューションの場合、CloudFront は cookie の値に基づいてキャッシュするように設定できます。
    • 既定では、エッジの場所でのキャッシュ中に cookie は考慮されません。
    • キャッシュのパフォーマンスを向上させるには
      • すべての cookie を転送するのではなく、指定した cookie のみを転送するように CloudFront を設定します。リクエストに3つの値を持つ2つの cookie がある場合、CloudFront は、応答が単一の cookie を考慮しても、可能なすべての組み合わせをキャッシュします。
      • クッキーの名前と値は両方のケースに敏感なので、同じケースに固執する方が良い
      • 静的および動的なコンテンツに対して個別のキャッシュ動作を作成し、動的コンテンツに対してのみ cookie をオリジンに転送するように CloudFront を構成する css ファイルの場合、クッキーはクッキーの値によってオブジェクトが変化しないので、意味をなさない
      • 可能であれば、cookie の値がユーザーごとに一意である動的コンテンツ (ユーザー ID など) に対して個別のキャッシュ動作を作成し、少数の一意の値に基づいて異なる動的コンテンツを組み合わせて数を減らします。
    • RTMP ディストリビューションの場合、CloudFront は Cookie を処理するように設定することはできません。 CloudFront はオリジンサーバーからオブジェクトを要求すると、要求をオリジンに転送する前にクッキーを削除します。 あなたのオリジンがオブジェクトとともにクッキーを返す場合、CloudFront はオブジェクトをビューアに返す前にそれらを削除します。
  • リクエストヘッダーに基づくキャッシュ
    • CloudFront はリクエストヘッダに基づいてキャッシュするように設定可能
    • デフォルトでは、CloudFront はエッジロケーションにオブジェクトをキャッシュする際にヘッダを考慮しません。
    • リクエストヘッダーに基づいてキャッシュするように構成された CloudFront は、CloudFrotn が転送するヘッダを変更せず、CloudFront がヘッダ値に基づいてオブジェクトをキャッシュするかどうかだけを指定します。
    • キャッシュのパフォーマンスを向上させるには
      • すべてのヘッダーに基づいて転送およびキャッシュするのではなく、指定されたヘッダーのみに基づいてフォワードおよびキャッシュするように CloudFront を設定します。
      • 多数の一意の値を持つリクエストヘッダーに基づいてキャッシュを避けるようにしてください。
      • CloudFront がオリジンにすべてのヘッダを転送するように設定されている場合、CloudFront はこのキャッシュ動作に関連付けられたオブジェクトをキャッシュしません。代わりに、すべてのリクエストをオリジンに送信します。
      • CloudFront キャッシュはヘッダー値に基づいてキャッシュしますが、ヘッダー名の大文字と小文字は区別されませんが、ヘッダー値の大文字と小文字は区別されます。
    • RTMP ディストリビューションの場合、CloudFront はヘッダ値に基づいてキャッシュするように設定することはできません。

オブジェクトのキャッシュと有効期限

  • オブジェクトの有効期限は、オブジェクトが CloudFront キャッシュに保存されるまでの時間を決定し、オリジンから再度フェッチします。
  • 低有効期限により、頻繁に変更されるコンテンツを提供し、有効期限が長くなると、パフォーマンスが向上し、オリジンへの負荷を軽減できます。
  • 有効期限が切れると、CloudFront は最新バージョンがまだあるかどうかをチェックします。
    • キャッシュに最新バージョンが既に存在する場合、オリジンは 304 ステータスコード (変更されていません) を返します。
    • CloudFront キャッシュに最新バージョンがない場合、オリジンは 200 ステータスコード (OK) とオブジェクトの最新バージョンを返します。
  • エッジロケーションのオブジェクトが頻繁に要求されていない場合、CloudFront はオブジェクトを削除し、有効期限の前にオブジェクトを除去して、最近リクエストしたオブジェクトのスペースを作成することができます。
  • デフォルトでは、各オブジェクトは 24 時間後に自動的に有効期限が切れる
  • Web ディストリビューションでは、デフォルトの動作を変更することができます
    • パスパターン全体に対して、最小 TTL、最大 TTL、およびデフォルト tTL 値を設定することにより、キャッシュ動作を構成できます。
    • 個々のオブジェクトの場合、オリジンは、キャッシュコントロールの max-age またはキャッシュコントロールの s-maxage ディレクティブ、または有効期限ヘッダーフィールドをオブジェクトに追加するように構成できます。
    • AWS では、キャッシュ制御の max-age ディレクティブの有効期限ヘッダーを使用して、オブジェクトのキャッシュ動作を制御することを推奨します。
    • キャッシュコントロールの max-age ディレクティブと有効期限ヘッダーの両方が指定されている場合、CloudFront はキャッシュコントロールの max-age の値のみを使用します。
    • ビューアーからの GET リクエストの HTTP キャッシュコントロールまたはプラグマヘッダーフィールドを使用して、CloudFront がオブジェクトのオリジンサーバーに戻るのを強制することはできません。
    • デフォルトでは、オリジンが HTTP 4xx または 5xx のステータスコードを返すと、CloudFront はこれらのエラー応答を5分間キャッシュし、オブジェクトの次の要求をオリジンに送信して、リクエストされたオブジェクトが利用可能であり、問題が解決されているかどうかを確認します。
  • RTMP ディストリビューションの場合
    • キャッシュ制御または期限切れヘッダーをオブジェクトに追加して、CloudFront がエッジキャッシュにオブジェクトを保持してから、別のリクエストをオリジンに転送する時間を変更することができます。
    • 最小期間は3600秒 (1 時間) です。低い値を指定すると、CloudFront は3600秒を使用します。

ビューアアクセスの制限

プライベートコンテンツの提供

  • CloudFront を使用してプライベートコンテンツを安全に提供するには
    • 特別な CloudFront 署名付き URL または以下の制限付きの署名付き cookie を使用して、ユーザーにプライベートコンテンツへのアクセスをリクエストする
      • URL が有効でなくなった終了日と時刻
      • URL が有効になったときに開始する日付時刻
      • URL にアクセスする IP アドレスまたはアドレスの範囲
    • S3 URL ではなく、CloudFront URL のみを使用して S3 コンテンツにアクセスすることをユーザーにリクエストします。CloudFront URL をリクエストする必要はありませんが、ユーザーが署名付き URL または署名付き cookie で指定された制限を迂回しないようにすることをお勧めします。
  • 署名付き URL または署名付き cookie は、オリジンとして HTTP サーバーを使用して CloudFront で使用できます。コンテンツの直接的な URL を共有しないようにするには、パブリックにアクセスできるようにする必要があります。
  • オリジンのための制限は適用することができる
    • S3 の場合、オリジンアクセス ID を使用して、バケットポリシーまたはオブジェクト ACL を使用する CloudFront アクセスのみをコンテンツに付与し、その他のアクセス権を削除します。
    • HTTP サーバの場合、CloudFront によってカスタムヘッダを追加することができ、オリジンで使用してリクエストが CloudFront から来たことを確認することができます。
  • 信頼できる署名者
    • 署名付き URL または署名付き cookie を作成するには、アクティブな CloudFront キーペアを持つ少なくとも1つの AWS アカウント (信頼された署名者) が必要です
    • AWS アカウントを信頼された署名者として配信に追加すると、CloudFront は、ユーザーが署名付き URL または署名付き cookie を使用してオブジェクトにアクセスすることを要求し始めます。
    • 信頼された署名者のキーペアからの秘密キーは、URL または cookie の一部に署名します。誰かが制限されたオブジェクトをリクエストすると、CloudFront は URL または cookie の符号付き部分を符号なしの部分と比較して、URL または cookie の改ざんが行われていないことを確認します。また、CloudFront は URL または cookie が有効であるかどうかを検証します。
    • CloudFront 署名付き URL または署名付き cookie を作成するために使用する信頼された各署名者 AWS アカウントには、頻繁にローテーションする必要がある独自のアクティブな CloudFront キーペアが必要です。
    • キャッシュの動作または RTMP ディストリビューションごとに、最大5つの信頼された署名者を割り当てることができます。

署名付き URL 対 署名付き cookie

  • CloudFront が署名した URL と署名付き cookie は、コンテンツを保護し、コンテンツにアクセスできる人を決定するためのコントロールを提供します。
  • 次の場合は、署名付き URL を使用します。
    • 署名付き cookie がサポートされていない RTMP ディストリビューションの場合
    • アプリケーションのインストールダウンロードなど、個々のファイルへのアクセスを制限します。
    • cookie をサポートしないカスタム HTTP クライアントなどのクライアントを使用するユーザー
  • 次の場合は、署名付き cookie を使用します。
    • HLS 形式のすべてのビデオファイル、または Web サイトの購読者の領域にあるすべてのファイルなど、複数の制限されたファイルへのアクセスを提供します。
    • 現在の URL を変更しないようにします。

規定ポリシーとカスタムポリシー

  • 規定ポリシーまたはカスタムポリシーは、署名された URL によって使用されるポリシーステートメントであり、例えば有効期限などの制限を定義するのに役立つ。

規定ポリシーとカスタムポリシー

  • CloudFront は、イベントの開始時に有効期限を検証します。
  • ユーザーが大きなオブジェクトをダウンロードしていて、その URL の有効期限が切れると、ダウンロードは引き続き続行され、RTMP ディストリビューションでも同じようになります。
  • ただし、ユーザーが範囲 GET リクエストを使用している場合、またはストリーミングビデオが他のイベントをトリガーする別の位置にスキップされた場合、リクエストは失敗します。

圧縮ファイルの提供

  • CloudFront は、特定のタイプのファイルを自動的に圧縮し、ビューアリクエストに Accept-Encoding: gzip が含まれている場合に圧縮ファイルを提供するように設定することができます。
  • コンテンツを圧縮すると、ファイルのサイズが小さくなり、CloudFront データ転送のコストがデータの総量に基づいているため、ダウンロードが高速になります。
  • カスタムオリジンから提供される場合は、それを使用して
    • CloudFront 圧縮の有無にかかわらずファイルを圧縮するように構成する。
    • CloudFront が圧縮しないファイルタイプを圧縮します。
  • オリジンが圧縮ファイルを返す場合、CloudFront はコンテンツエンコーディングヘッダ値によって圧縮を検出し、ファイルを再度圧縮しません。
  • CloudFront は以下のように圧縮を使用してコンテンツを提供します。
    1. CloudFront ディストリビューションが作成され、コンテンツを圧縮するように構成されます。
    2. ビューアは、リクエストに対して Accept-Encoding: gzip ヘッダーを追加することにより、圧縮ファイルをリクエストします。
    3. エッジの場所では、CloudFront は、リクエストで参照されているファイルの圧縮バージョンのキャッシュをチェックします。
    4. 圧縮ファイルが既にキャッシュにある場合、CloudFront はファイルをビューアに返し、残りの手順をスキップします。
    5. 圧縮ファイルがキャッシュにない場合、CloudFront はリクエストをオリジンサーバ (S3 バケットまたはカスタムオリジン) に転送します。
    6. CloudFront がキャッシュにファイルの非圧縮バージョンを持っている場合でも、リクエストをオリジンに転送します。
    7. 送信元サーバーは、要求されたファイルの非圧縮バージョンを返します。
    8. CloudFront は、ファイルが圧縮性であるかどうかを判断します。
      1. ファイルは、CloudFront が圧縮するタイプでなければなりません。
      2. ファイルサイズは、1000 ~ 1000万バイトの間でなければなりません。
      3. 応答には、CloudFront が有効な圧縮制限内のサイズを判断するための Content-Length ヘッダーが含まれている必要があります。 Content-Length ヘッダーがない場合、CloudFront はファイルを圧縮しません。
      4. ファイルの Content-Encoding ヘッダーの値が gzip であってはなりません。つまり、オリジンが既にファイルを圧縮しています。
    9. ファイルが圧縮されている場合、CloudFront は圧縮したファイルをビューアに返し、それをキャッシュに追加します。
    10. ビューアはファイルを圧縮します。

配信の詳細

価格クラス

  • CloudFront は、世界中にエッジの位置を持ち、各エッジの場所のコストが変化し、リクエストを提供するために請求される価格も異なります
  • CloudFront エッジロケーションは地理的リージョンにグループ化され、リージョンは価格クラスにグループ化されています。
    • デフォルトの価格クラス – すべてのリージョンが含まれています
    • もう1つの価格クラスには、ほとんどのリージョン(米国、ヨーロッパ、香港、韓国、シンガポール、日本、インドのリージョン) が含まれますが、最も高価なリージョンを除きます。
    • 3 番目の価格クラスには、最も安価なリージョン(米国およびヨーロッパのリージョン) のみが含まれます。
  • 価格クラスを選択してコストを下げることはできますが、CloudFront は選択した価格クラスのエッジロケーションからのみリクエストを処理するため、これはパフォーマンスを犠牲にしてのみ実行されます (待ち時間が長くなります)。
  • CloudFront は、価格クラス内に含まれていないリージョンからのリクエストを提供する場合がありますが、選択した価格クラスで最も安価な地域の料金を請求される場合があります。

代替ドメイン名 (CNAME)

  • デフォルトで CloudFront は、配信用のドメインを割り当てます。例えば d111111abcdef8.cloudfront.net
  • CNAME とも呼ばれる代替ドメイン名を使用して、オブジェクトへのリンクに独自のカスタムドメイン名を使用できます。
  • Web と RTMP の両方のディストリビューションは、代替ドメイン名をサポートしています。
  • CloudFront は、サブドメインを個別に指定するのではなく、名前の先頭で * ワイルドカードをサポートします。
  • ただし、ワイルドカードは *domain.example.com などのサブドメイン名の一部を置き換えることができないか、ドメイン名の途中でサブドメインを置き換えることはできません。

地理的制限 (Geoblocking)

  • Geo 制限は、選択した国のユーザーがコンテンツにアクセスすることを許可または禁止するのに役立ちます。
  • CloudFront ディストリビューションは、ユーザーが
    • 特定の国のホワイトリストは、コンテンツにアクセスしたり
    • 特定の国のブラックリストにあるユーザーを拒否してコンテンツにアクセスする
  • Geo の制限は、すべてのファイルへのアクセスを制限するために使用することができます。配信に関連し、国レベルでのアクセスを制限する。
  • CloudFront は、HTTP ステータスコード 403 (禁止) を使用して、制限された国のビューアからのリクエストに応答します。
  • 配信に関連付けられているファイルのサブセットにアクセスを制限する場合や、国レベルよりもきめ細かなアクセスを制限する場合は、サードパーティのジオロケーションサービスを使用します。

Amazon S3 と CloudFront

  • CloudFront は、S3 バケットからコンテンツを配信するために使用することができます
  • RTMP ディストリビューションの場合、S3 バケットはサポートされているオリジンのみであり、カスタムオリジンは使用できません。
  • S3 以上の CloudFront を使用すると、以下の利点があります
    • より高いコスト効果を得ることができます。オブジェクトが頻繁に使用されるようにアクセスする場合、CloudFront データ転送の価格は、S3 データ転送の価格よりもはるかに低くなります。
    • ダウンロードは、オブジェクトがユーザーに近い場所に格納されるため、S3 だけではなく、CloudFront で高速です。
  • S3 をディストリビューションのオリジンとして使用し、バケットを別のリージョンに移動する場合、CloudFront は、次の両方の条件に該当する場合に、そのレコードを更新してリージョンの変更を含めるまでに1時間かかることがあります。
    • オリジンアクセス ID (OAI) は、バケットへのアクセスを制限するために使用されます。
    • バケットは、認証に署名バージョン4を必要とする S3 リージョンに移動されます。

オリジンアクセス ID

  • S3 をオリジンとして使用する場合、S3 内のオブジェクトにはパブリック読み取り権限を付与する必要があり、そのため、オブジェクトは両方の S3 および CloudFront からアクセス可能です。
  • にもかかわらず、CloudFront は、基になる S3 URL を公開しませんが、直接共有されている場合、またはアプリケーションが使用する場合にはユーザーに知らせることができます。
  • CloudFront が署名した URL または署名された cookie を使用してオブジェクトにアクセスできるようにするには、ユーザーが S3 オブジェクトに直接アクセスできないようにする必要があります。
  • S3 オブジェクトに直接アクセスするユーザーは
    • CloudFront によって提供されるコントロールをバイパスする URL または署名されたクッキー、例えば、ユーザーがコンテンツにアクセスできなくなり、IP アドレスがコンテンツにアクセスするために使用できる日付時間を制御する
    • CloudFront アクセスログは不完全であるため、あまり役に立ちません。
  • オリジンアクセス ID (OAI) を使用して、ユーザーが S3 からオブジェクトに直接アクセスできないようにする
  • オリジンアクセス ID は、特殊な CloudFront ユーザであり、そのディストリビューションに関連付けられています。
  • S3 バケット/オブジェクトのパーミッションは、オリジンアクセス id へのアクセスのみを提供するように設定する必要があります。
  • ユーザーが CloudFront からオブジェクトにアクセスすると、OAI を使用してユーザーに代わってコンテンツをフェッチし、S3 オブジェクトへの直接アクセスが制限されます。

オブジェクトの操作

  • CloudFront は、カスタムヘッダを含むように設定したり、リクエストをオリジンに転送する際に既存のヘッダを変更したりすることができ
    • CDN をバイパスして、ユーザーが直接元にアクセスしていないことを検証する
    • 同じオリジンを使用するように複数の CloudFront ディストリビューションがコンフィグレーションされている場合、リクエストが転送された CDN を識別します。
    • ユーザーが CORS をサポートしていないビューアを使用している場合は、オリジンヘッダーをオリジンに転送するように CloudFront を設定します。これにより、オリジンはすべての要求に対してアクセス制御の許可元ヘッダーを返すようになります。

オブジェクトの追加と更新

  • オブジェクトはオリジンに追加するだけで、CloudFront はアクセス時にそれらの配信を開始します。
  • CloudFront がオリジンによって提供されるオブジェクトは、
    • 元のオブジェクトを上書きする
    • 別のバージョンを作成し、ユーザーに公開されているリンクを更新する
  • オブジェクトを更新する場合は、ファイルやフォルダ全体をバージョンで使用することを推奨し、更新を強制的に更新するときにリンクを変更できます。
  • バージョン管理では、
    • CloudFront が新しいバージョンのサービスを開始する前に、オブジェクトが期限切れになるまで待機する時間はありません。
    • エッジから提供されるオブジェクトの一貫性に違いはありません
    • オブジェクトの無効化を支払う費用はかかりません。

オブジェクトの削除/無効化

  • デフォルトでは、オブジェクトは有効期限 (TTL) 時に削除され、最新のオブジェクトはオリジンからフェッチされます。
  • 有効期限が切れる前に、エッジキャッシュからオブジェクトを削除することもできます。
    • 異なる名前を持つオブジェクトの異なるバージョンを提供するために、オブジェクト名 (バージョン管理) を変更する
    • エッジキャッシュからオブジェクトを無効にします。次の要求の場合、CloudFront はオリジンに戻り、オブジェクトをフェッチします。
  • Web ディストリビューションの場合、
    • オブジェクトを頻繁に更新する必要がある場合は、オブジェクト名の変更 (バージョン管理) を無効にすることをお勧めします。
      • ユーザーがローカルまたは企業のキャッシュプロキシの背後にあるバージョンをキャッシュしている場合でも、要求が返すオブジェクトを制御できます。オブジェクトが無効になっている場合、ユーザーはこれらのキャッシュから期限が切れるまで、古いバージョンを引き続き表示する可能性があります。
      • CloudFront アクセスログにオブジェクトの名前が含まれているため、オブジェクトの変更の結果を簡単に分析できます。
      • 異なるバージョンを別のユーザーに提供する方法を提供します。
      • オブジェクトのリビジョン間のロールフォワードとバックを簡素化します。
      • オブジェクトを無効にするための費用として、安価です。
      • 例えば、header-v1.jpg を header-v2.jpg に 変更する
    • キャッシュからのオブジェクトの無効化
      • キャッシュ内のオブジェクトは、更新を強制するために有効期限が切れる前に明示的に無効にすることができます。
      • 選択したオブジェクトを無効にできます
      • ディレクトリ内のオブジェクト、または同じ文字で始まる名前を持つオブジェクトのすべてに対して複数のオブジェクトを無効にするには、無効パスの末尾に * ワイルドカードを含めることができます。
      • 指定された数の無効化パスは、毎月無料で送信できます。割り当てられた番号よりも多くの無効化リクエスト。毎月、送信された無効化パスごとに料金がかかります。
      • 最初の1000の無効化パスリクエストは、1か月ごとに無料で送信されます。1ヶ月に1000以上の各無効化パスに対して適用されます。
      • 無効パスは、たとえば/js/ab.js または/js/* の複数のオブジェクトに対して1つのオブジェクトに対して、* ワイルドカードリクエストが何千ものオブジェクトを無効にしても1つの要求としてカウントされます
  • RTMP ディストリビューションでは、提供されたオブジェクトを無効にすることはできません。

部分リクエスト(範囲 GETs)

  • GET リクエストの範囲ヘッダーを使用する部分的なリクエストは、オブジェクトをより小さな単位でダウンロードし、部分的なダウンロードの効率と部分的に失敗した転送からの回復を改善するのに役立ちます。
  • 部分的な GET 範囲リクエストの場合、CloudFront は
    • リクエストされた範囲またはオブジェクト全体のエッジ位置にあるキャッシュをチェックし、存在する場合はすぐにそれを提供します。
    • リクエストされた範囲が存在しない場合、リクエストをオリジンに転送し、パフォーマンスを最適化するためにリクエストしたクライアントよりも大きな範囲をリクエストすることがあります。
    • オリジン range ヘッダーをサポートしている場合、リクエストされたオブジェクト範囲を返し、CloudFront はビューアに同じ値を返します。
    • オリジン range ヘッダーをサポートしていない場合は、完全なオブジェクトを返し、CloudFront はオブジェクト全体を提供し、将来のためにキャッシュします。
    • CloudFront は、キャッシュされたオブジェクト全体を使用して、将来の範囲の GET ヘッダーリクエストを提供します。

アクセスログ

  • CloudFront は、CloudFront が受信するすべてのユーザリクエストに関する詳細情報を含むログファイルを作成するようにコンフィグレーションできます。
  • アクセスログは、Web と RTMP の両方のディストリビューションで使用できます。
  • ロギングを有効にすると、CloudFront がファイルを保存する場所として S3 バケットを指定できます。
  • CloudFront は、配信用のアクセスログを、1時間に数回まで定期的に配信します。
  • CloudFront は通常、ログに表示されるイベントの1時間以内に、その期間のログファイルを S3 バケットに配信します。ただし、期間の一部またはすべてのログファイルエントリが最大24時間遅れることがあることに注意してください。

CloudFront コスト

  • CloudFront の料金は、4つのエリアでサービスの実際の使用状況に基づいています。
    • インターネットへのデータ転送
      • CloudFront エッジロケーションから転送されたデータのボリュームに対して課金が適用され、GB 単位で計測
      • AWS オリジン (例: S3、EC2 など) から CloudFront へのデータ転送は、もはや課金されません。これは、すべての AWS リージョンからすべてのグローバル CloudFront エッジロケーションへのデータ転送に適用されます。
    • HTTP/HTTPS リクエスト
      • コンテンツに対して行われた HTTP/HTTPS リクエストの数
    • 無効化リクエスト
      • 無効化リクエストのパスごと
      • 無効化リクエストにリストされているパスは、CloudFront キャッシュから無効にするオブジェクトの URL(またはパスにワイルドカード文字が含まれている場合は複数の URL) を表します。
    • CloudFront ディストリビューションに関連付けられた専用 IP カスタム SSL 証明書
      • カスタム SSL 証明書サポートの専用 IP バージョンを使用して1つ以上の CloudFront ディストリビューションに関連付けられたカスタム SSL 証明書ごとに月額 $600

AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. あなたの会社は、各ページに画像がロードされた小さなトラッキングのウェブページユーザーを追跡する方向に移動しています現在、米国東部からこの画像を配信していますが、西海岸のユーザーの画像を読み込む時間がかかり始めています。このイメージの配信をスピードアップする2つの最良の方法は何ですか? 2つの回答を選択
    1. **ルート53のレイテンシベースのルーティングを使用して、米国のイメージを US-West-2 だけでなく、US-East-1 も提供。
    2. CloudFront を介してイメージを提供する
    3. S3 からイメージを提供して、Web アプリケーション層のサービスが提供されないようにする
    4. EBS PIOPs を使用して、EC2 インスタンスからイメージを高速に提供する
  2. Elastic Beanstalk を使用して会社のウェブサイトを展開し、S3 にログファイルのローテーションを有効にしました。EMR ジョブは、定期的に S3 のログを分析して、CIO と共有する利用状況ダッシュボードを作成します。あなたは最近、動的なコンテンツ配信のためのクラウドフロントを使用してウェブサイトの全体的なパフォーマンスを改善し、オリジンとしてのウェブサイト。このアーキテクチャの変更後、使用状況ダッシュボードには、Web サイトのトラフィックが桁違いに減少していることが示されます。どのようにあなたの使用状況ダッシュボード を修正するのですか?[PROFESSIONAL]
    1. CloudFront が S3 にアクセスログを配信し、それらを Elastic Map Reduce ジョブの入力として使用できるようにする
    2. Cloud Trail をオンにして S3 のトレイルログタイルを Elastic Map Reduce ジョブの入力として使用する
    3. Elastic Map Reduce ジョブの入力として Cloud Watch ELB メトリックを使用するようにログ収集プロセスを変更します。
    4. Elastic Beanstalk の “Rebuild Environment”オプションを使用して、Elastic Map Reduce ジョブへのログ配信を更新します。
    5. Elastic Beanstalk の “Restart App server(s)” オプションを使用して、Elastic Map Reduce ジョブへのログ配信を更新します。
  3. AWS のお客様は、公開ブログのウェブサイトを運営しています。 サイトユーザーは月に200万件のブログエントリをアップロードします。 ブログエントリの平均サイズは200 KBです。 ブログエントリへのアクセス率は、出版後6ヶ月で無視され、ユーザは出版後1年でブログエントリにアクセスすることはほとんどありません。 さらに、ブログエントリーは、出版後最初の3ヶ月間に更新率が高い。 6ヶ月後には更新されません。 顧客は、CloudFront を使用してユーザーの読み込み時間を改善したいと考えています。 次の推奨事項のどれをお客様に提示しますか?[PROFESSIONAL]
    1. エントリを2つの異なるバケットに複製し、2つの別個の CloudFront ディストリビューションを作成して、S3 アクセスがクラウドフロント ID のみに制限される
    2. 米国/ヨーロッパユーザー向けの「米国 & ヨーロッパ」価格クラスと、残りのユーザーのすべてのエッジロケーションを持つ別の cloudfront ディストリビューションを使用して、cloudfront ディストリビューションを作成します。
    3. S3 アクセスが CloudFront ID のみに制限された CloudFront ディストリビューションを作成し、CloudFront ビヘイビアで使用するためにアップロードされた月に従って S3 でブログエントリの場所を分割します
    4. ビューアへのアクセスを制限するフォワードクエリ文字列を True に設定し、最小 TTL を 0 にして CloudFront ディストリビューションを作成します。
  4. あなたの会社には社内マルチティアの PHP Web アプリケーションがあります。これは最近、会社の発表により Web トラフィックが大幅に増加したため、ダウンタイムが発生しました。 次の日、同様の予期せぬバーストを起こすような同様のアナウンスが予想され、予期せぬトラフィックの増加を処理するインフラストラクチャの機能を迅速に改善する方法を模索しています。 このアプリケーションは現在、ロードバランサといくつかの Linux Apache Web サーバー、および MySQL データベースをホストする Linux サーバーをホストするデータベース層からなる2層の Web 層で構成されています。 次のシナリオでは、フルサイト機能を提供しながら、短期間でアプリケーションの能力を向上させるのに役立ちますか?
    1. オンプレミス環境からのトラフィックのオフロード CloudFront ディストリビューションを設定し、カスタムオリジンのオブジェクトをキャッシュするように CloudFront を設定するオブジェクトキャッシュの動作をカスタマイズし、オブジェクトがキャッシュ内に存在するはずのTTLを選択します。
    2. AWSへの移行 VM のインポート/エクスポートを使用して、オンプレミス Web サーバーを AMI にすばやく変換します。インポートされた AMI を使用して着信トラフィックに基づいて Web 層を拡張する Auto Scaling グループを作成します。RDSインスタンスとオンプレミス MySQL サーバーを使用してデータベースを移行します。
    3. フェイルオーバー環境:S3 バケットを作成して Web サイトのホスティングを構成するゾーンを使用して DNS を Route53 に移行する(Route53 DNS フェイルオーバーを利用して S3 ホストされた Web サイトへのフェイルオーバーを行う)
    4. ハイブリッド環境 EC2 で Web セラファーを起動するために使用できる AMI を作成。AMIを使用して着信トラフィックに基づいて Web 層を拡張する Auto Scaling グループを作成する Elastic Load Balancing を使用して、AWSでホストされる。
  5. 機密トレーニングビデオを従業員に配信するシステムを構築しています。CloudFront を使用すると、s3 に格納されているが、直接 S3 からアクセスできないコンテンツを提供するためにどのような方法を使用できますか?
    1. CloudFront のオリジンアクセス ID (OAI) を作成し、その OAI に S3 バケット内のオブジェクトへのアクセスを許可します。
    2. 適切な S3 バケットポリシーに、CloudFront アカウントセキュリティグループ “amazon cf/amazon-cf-sg” を追加します。
    3. CloudFront の ID およびアクセス管理 (IAM) ユーザーを作成し、その IAM ユーザーに S3 バケット内のオブジェクトへのアクセスを許可します。
    4. Amazon リソース名 (ARN) として、プリンシパルとターゲットバケットとして CloudFront ディストリビューション ID を一覧表示する S3 バケットポリシーを作成します。
  6. メディア制作会社は、世界中のお客様に試作とダビングのための高精細 RAW ビデオを提供したいと考えています。彼らは、彼らのシナリオのために Amazon CloudFront を使用したいと思います、そして、彼らは、構成可能な数に顧客とビデオ・ファイルごとのダウンロードを制限する能力を必要とします。TTL = 0 の CloudFront ダウンロードディストリビューションはすでに、すべてのクライアント HTTP リクエストが Amazon Elastic コンピュートクラウド (EC2)/RDS で認証バックエンドをヒットしたことを確認するためにセットアップされていますが、これはダウンロード数を制限する責任があります。コンテンツは S3 に格納され、CloudFront 経由でのみアクセスできるように構成されています。要件を満たすアーキテクチャを実現するために、他に何を行う必要があるか。2つの回答を選ぶ [PROFESSIONAL]
    1. URL パラメータの転送を有効にし、認証バックエンドが RDS の顧客ごとのダウンロード数をカウントし、ダウンロードの制限に達しない限り、コンテンツ S3 の URL を返すようにします。
    2. CloudFront が S3 バケットにログインできるようにし、EMR を活用して CloudFront ログを分析し、お客様ごとのダウンロード数を決定し、ダウンロード制限に達しない限りコンテンツ S3 URL を返します。(CloudFront ログは定期的に記録され、EMR はリアルタイムではないため、適切ではありません)
    3. URL パラメータの転送を有効にし、認証バックエンドで RDS の顧客ごとのダウンロード数をカウントし、ダウンロード制限に達するとすぐに CloudFront ディストリビューションを無効にします。(配信は無効ではありませんがオブジェクト)
    4. CloudFront が S3 バケットにログインできるようにするには、認証バックエンドがこれらのログを解析して顧客ごとのダウンロード数を決定し、ダウンロード制限に達しない限りコンテンツ S3 URL を返すようにします。(CloudFront ログは定期的に記録され、EMR はリアルタイムではないため、適切ではありません)
    5. 信頼された署名者の一覧を構成し、認証バックエンドが RDS の顧客ごとのダウンロード要求数をカウントし、ダウンロード制限に達しない限り、動的に署名した URL を返します。
  7. お客様の顧客は、AWS 上でビデオオンデマンドストリーミングプラットフォームを実装しています。 要件は、iOS、Android、PC などの複数のデバイスをクライアントデバイスとしてサポートし、標準のクライアントプレーヤーを使用し、ストリーミングテクノロジ(ダウンロードではない)とスケーラブルなアーキテクチャを使用してコスト効率を向上させます。[PROFESSIONAL]
    1. ビデオコンテンツをオリジンサーバーとして Amazon シンプルストレージサービス (S3) に保存します。ストリーミングオプションを使用して Amazon CloudFront ディストリビューションを構成し、ビデオコンテンツをストリーム配信する。
    2. ビデオコンテンツをオリジンサーバーとして Amazon S3 に保存します。ビデオコンテンツをストリーミングするためのダウンロードオプションを使用して Amazon CloudFront ディストリビューションを設定する (リンクを参照)
    3. Amazon エラスティックコンピューティングクラウド (EC2) 上でストリーミングサーバー (たとえば、Adobe Media server) を起動し、ビデオコンテンツをオリジンサーバーとして保存します。ビデオコンテンツをストリーミングするためのダウンロードオプションを使用して Amazon CloudFront ディストリビューションを構成する。
    4. Amazon エラスティックコンピューティングクラウド (EC2) 上でストリーミングサーバー (たとえば、Adobe Media server) を起動し、ビデオコンテンツをオリジンサーバーとして保存します。ビデオコンテンツをストリーミングするために、Amazon EC2 上で必要な量のストリーミングサーバーをエッジサーバーとして起動および構成する。
  8. あなたは、ニュースを共有するモバイルアプリケーションのためのアーキテクトです。世界のどこでも、ユーザーは選択したトピックのローカルニュースを見ることができます。彼らは、アプリケーションの中から写真やビデオを投稿することができます。アプリケーションは、携帯電話で使用されているので、接続の安定性は、コンテンツをアップロードするために必要であり、配信が迅速である必要があります。コンテンツは、投稿された後の最初の分に大量にアクセスされますが、消える前にすぐに新しいコンテンツに置き換えられます。ニュースのローカルな性質は、アップロードされたコンテンツの90パーセントは、ローカル (それが掲載された場所から100キロ未満) を読むことを意味します。ユーザーがコンテンツをアップロードして表示するときに、ページの読み込み時間を最小化し、アップロード時間を最小化することによって、どのようなソリューションを最適化しますか。[PROFESSIONAL]
    1. コンテンツをアップロードして中央の Amazon シンプルストレージサービス (S3) バケットに保存し、コンテンツ配信用の Amazon クラウドフロントディストリビューションを使用します。
    2. ユーザーに最も近いリージョンの Amazon S3 バケットにコンテンツをアップロードして保存し、コンテンツ配信に複数の Amazon クラウドフロントディストリビューションを使用します。
    3. ユーザーに最も近いリージョンの Amazon エラスティックコンピューティングクラウド (EC2) インスタンスにコンテンツをアップロードし、コンテンツをセントラル S3 バケットに送信し、コンテンツ配信用に Amazon Cloud のフロントディストリビューションを使用します。
    4. Amazon Cloud のフロントディストリビューションを使用して、コンテンツをセントラル Amazon S3 バケットにアップロードし、コンテンツを配信します。
  9. ユーザーのブラウザから CloudFront 経由でオリジンへのエンドツーエンドの HTTPS 接続を有効にするには、次のオプションのどれが有効ですか?2つの回答を選ぶ [PROFESSIONAL]
    1. CloudFront のオリジンおよび CloudFront のデフォルト証明書で自己署名証明書を使用します。(オリジンは自己署名できません)
    2. オリジンと CloudFront の両方で CloudFront デフォルト証明書を使用する (CloudFront cert をオリジンに適用することはできません)
    3. CloudFront のオリジンおよび CloudFront のデフォルト証明書でサードパーティ CA 証明書を使用する
    4. オリジンと CloudFront の両方でサードパーティ CA 証明書を使用する
    5. オリジンと CloudFront の両方で自己署名証明書を使用する (オリジンは自己署名できません)
  10. アプリケーションは 10% の書き込みと 90% の読み取りで構成されています。現在、EC2 Auto スケーリンググループの前にある AWS ELB に向けた Route53 エイリアスレコードを使用して、すべてのリクエストをサービスします。特定のニュースイベント中に大量のトラフィックが急増し、その間に多くの人が同じようなデータを同時に読み取るよう要求する場合、システムは非常に高価になっています。このようなスパイクでコストとスケールを削減するための最も簡単で安い方法は何ですか?[PROFESSIONAL]
    1. S3 バケットを作成し、共通要求の応答を S3 オブジェクトに非同期的にレプリケートします。事前計算された応答のリクエストが入ったら、AWS S3 にリダイレクトします。
    2. 他のシステムの上にマウントされている別の ELB および Auto Scaling グループレイヤを作成し、システムにティアを追加します。最上層からのほとんどの読まれた要求を提供しなさい
    3. CloudFront Distribution を作成し、Distribution に Route53 を誘導します。 ELB をオリジンとして使用し、キャッシュ動作をプロキシキャッシュ要求に指定します。これは遅く処理できます。(CloudFront のキャッシュからのサーバリクエスト、および複数のキャッシュ動作は、ファイル拡張子、ファイル名、または URL の任意の部分に基づいて、指定された URL パターンのルールに基づいて定義できます。ビューア接続プロトコル、最小有効期限、クエリ文字列パラメータ、Cookie、プライベートコンテンツの信頼された署名者)
    4. AWS ElastiCache で Memcached クラスタを作成します。キャッシュロジックを作成して、メモリ内キャッシュから遅延してパフォーマンスを向上させることができる要求を提供します。
  11. クリックストリームデータを一括して集計し、週に1回だけ電子メールでレポートを配信するサービスを設計しています。データは非常にスパイク状であり、地理的に分散しており、大規模であり、予測不能である。このシステムをどのように設計すべきですか?
    1. 大規模な RedShift クラスタを使用して分析を行い、Lambda プラットフォームは RedShift テーブルにレコードを挿入します。Lambda はトラフィックの急増に十分に迅速に対応します。
    2. S3 にアクセスログを配信する CloudFront ディストリビューションを使用します。クリックは、クエリ文字列 GET として配信に記録する必要があります。レポートは、S3のアクセスログで定期的に実行される EMR ジョブによって構築され、送信されます。(CloudFrontは、ギガビット・スケールのHTTP(S)グローバルリクエスト配信サービスで、10 Gbpsまたは15,000 RPSを超えるピークでうまく動作し、規模、地理的分布、スパイク、予期しないことを処理できます。バッチ分析やEMRを使用した電子メールでも問題なく機能します。他のストリーミングオプションは、バッチ分析が必要なため、必要でないため高価です)
    3. APIゲートウェイは Kinesis に PutRecords を呼び出し、Spark を実行する EMR は Kinesis 上で GetRecords を実行しスパイクで拡大縮小します。 EMR に点火すると S3 に分析結果が出力され、電子メールで送信されます。
    4. AWS Elasticsearch サービスと EC2 自動スケーリンググループを使用します。自動スケーリングのグループは、クリックのスループットに基づいてスケールし、スケーラブルな Elasticsearch ドメインにストリーミングします。定期的にレポートを生成するには、Kibanaを使用します。
  12. あなたのウェブサイトは、オンデマンドのトレーニングビデオをあなたの従業員に提供しています。動画は毎月高解像度の MP4 形式でアップロードされます。あなたの従業員は、ビデオを見るために HTTP ライブストリーミング(HLS)プロトコルを必要とする会社提供のタブレットを使用して、世界中で頻繁に配信されます。あなたの会社にはビデオトランスコーディングの専門知識はなく、コンサルタントに支払う必要があるかもしれません。高可用性とビデオ配信の品質を損なうことなく、コスト効率の高いアーキテクチャをどのように実装しますか? [PROFESSIONAL]
    1. Elastic Transcoder を使用してオリジナルの高解像度 MP4 ビデオを HLS にトランスコードします。 S3 はライフサイクルマネジメントのビデオをホストし、元のファイルを数日後に Glacier に保存する。 CloudFront は S3 から HLS トランスコードされた動画を提供します。
    2. タスクを配信するために SQS を使用するビデオトランスコーディングパイプラインと、キューの長さに応じてノード数を調整する自動スケーリングライフサイクル管理を使用してビデオをホストする S3 すべてのファイルを数日後に Glacier にアーカイブする CloudFront
      から HLS トランスコーディング Glacier の動画。
    3. Elastic Transcoder を使用してオリジナルの高解像度 MP4 ビデオを HLS EBS ボリュームにトランスコードしてビデオをホストし、EBS スナップショットを使用して数日後に元のルートを増分バックアップします。 EC2 から HLS トランスコードビデオを提供するCloudFront。
    4. タスクを配信するために SQS を使用して EC2 上で実行されるビデオトランスコードパイプライン、およびキューの長さに応じてノードの数を調整する自動スケーリング EBS ボリュームでビデオをホストし、EBS スナップショットを使用して数日後に元のファイルを増分バックアップします。 EC2 から HLS トランスコードビデオを提供する CloudFront

リファレンス


Jayendra’s Blog

この記事は自己学習用に「AWS CloudFront – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。