【AWS発表】CloudFrontでカスタムコンテンツの配信が可能に
Amazon CloudFrontは、高速かつ低遅延でエンドユーザにコンテンツを配信するサービスで他のAWSサービス群とも接続して利用できます。CloudFrontの使用を開始するためには、「Distribution」を作成し、S3、EC2のようなAWSサービス、またはカスタムオリジンを起動させて、 これらを静的または動的なオリジンとして指定することで「Distribution」の一部として適用されるURLを利用することができます。
本日、ユーザーに配信する動的コンテンツをカスタマイズすることができる新機能を強化いたしました。 これで、エンドユーザーからの要求からの位置情報やデバイス情報といった追加特性によって、どのコンテンツを返すかの決定に使用することができます。 この特性情報はCloudFrontからHTTPヘッダの形式でオリジンサーバに渡されます。 CloudFrontで追加されたヘッダ情報はCloudFront-
のプレフィックスが付けられます。
ヘッダーの威力!
オリジンサーバに対して追加のヘッダが利用できるということは、アプリケーションが要求されたコンテキスト全体によって、より完全な形で通知するといったことが選択できることを意味します。ここに可能になった例をいくつか示します。:
- モバイルデバイスの検出 - デスクトップとモバイルデバイスを識別するために
ユーザーエージェント
のヘッダを使うことができ、それぞれに適したコンテンツを提供することができるようになりました。CloudFrontは内部デバイス一覧に対して、ヘッダも合致させ、デバイスタイプを認識させるために、CloudFront-Is-Mobile-Viewer
,CloudFront-Is-Desktop-Viewer
,CloudFront-Is-Tablet-Viewer
のヘッダーを送信します。 - ジオタギング - CloudFrontは、オリジンへの国を制限するために、
CloudFront-Viewer-Country
ヘッダーにある国コードによって 通過を指定させることができるようになりました。 それぞれの国を特定するために個別のURLを使わずに、応答をカスタマイズする目的で、この情報を使う事ができます。 - マルチサイトホスティング - CloudFrontは、オリジンサーバごとに
Host
ヘッダーを通過させる設定ができるようになりました。 その結果、複数のWEBサイトのホストすることができ、各サイトを特定するキャッシュ応答をCloudfrontに持つことができます。 - プロトコルの検出 - WEBサイトにアクセスするために使うプロトコル(HTTPかHTTPS)によって、別のコンテンツに配信することができるようになりました。 この情報は、
CloudFront-Forwarded-Proto
ヘッダでオリジンサーバ向けに利用できます。 - CORS (Cross Origin Resource Sharing) - Cloudfront は他のWEBサイトにJavaスクリプトやフォントのようなWEB資産を配信することができるようになりました。 CloudFrontはオリジンサーバに
Origin
ヘッダーを通過して設定できるようになったためで、コンテンツに対してCORSを使って、クロスオリジンへのアクセスできるようになっています。
どのように動作するのか?
CloudFrontのそれぞれのDistributionはオリジンサーバへ転送されるヘッダの一覧情報を含んでいます。3つのオプションがあります。:
- None - このオプションは、固有の「Behavior」を要求します。
- All - このオプションは、全てのヘッダーを転送し、効率的にエッジにある全てキャッシュを無効にします。
- Whitelist - このオプションは、転送されるヘッダーを完全に制御できるようにします。 この一覧は空欄で始まり、ヘッダー情報を追加することで拡張できます。 一覧から選択することで、共通のHTTPヘッダーを追加することができます。 単純に名前を入力することによって、「カスタム」ヘッダーを追加することもできます。
Whitelistのオプションを選択した場合、一覧に追加したそれぞれのヘッダーは「Distribution」に関連されたURL向けのキャッシュのキーの一部になります。 単純に、一覧にヘッダーを追加すると、CloudFrontにヘッダーの値がオリジンサーバによって返されるコンテンツの挙動に影響させることができるようになります。
転送されたヘッダーの一覧にAccept-Language
を加えてみましょう。 これには、2つの重要な影響があります。 第1に、オリジンサーバは選択した言語でアクセスし、その言語でコンテンツを返すようにできます。 第2に、ヘッダーの値がキャッシュのキーの一部になります。 言い換えれば、それぞれのエッジノードは、ノードがある地理的に近い国の言語でコンテンツを特定し、キャッシュすることができるようになります。
一覧に新しいヘッダーを追加するときに、注意点があります。 大量のヘッダー情報を追加すると、エッジからのキャッシュヒット率が下がる可能性があります。 これは結果として、オリジンサーバに追加のトラフィックを発生させてしまうでしょう。
もし、S3と一緒にCloudFrontを使用するのであれば、Origin
ヘッダーの転送を選択できます。 これを使用した場合、複数のWEBサイト間で同じコンテンツを共有するためにCORSポリシーを使うことができます。
さあ、始めましょう。
CloudFront API、もしくはAWSマネージメントコンソールからヘッダーを管理することができます。
こちらが、コンソールからヘッダを管理する方法です。:
-- Jeff;
この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 Deliver Custom Content With CloudFrontを 平山毅 (Facebook, Twitter)が翻訳したものです。
コメント