メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

CloudFront と Lambda@Edge の使用

Lambda@Edge とは、AWS Lambda の拡張機能です。AWS Lambda は、CloudFront を使用して配信されるコンテンツをカスタマイズする関数を実行できるコンピューティングサービスです。1 つのリージョンで作成した関数を、サーバーのプロビジョニングや管理の必要もなく、世界中の AWS リージョンと AWS エッジロケーションで実行できます。Lambda@Edge は、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。オリジンサーバーの代わりにエッジロケーションでリクエストを処理すると、レイテンシーが大幅に軽減され、ユーザーエクスペリエンスが向上します。

CloudFront ディストリビューションを Lambda@Edge 関数に関連付けると、CloudFront エッジロケーションでリクエストとレスポンスが傍受されます。Lambda@Edge 関数は、お客様の最寄りのリージョンまたはエッジロケーションで CloudFront イベントに対するレスポンスとして実行されます。

Lambda 関数は、次の CloudFront イベントの発生時に実行できます。

  • CloudFront がビューワーからリクエストを受信したとき (ビューワーリクエスト)

  • CloudFront がリクエストをオリジンに転送する前 (オリジンリクエスト)

  • CloudFront がオリジンからレスポンスを受信したとき (オリジンレスポンス)

  • CloudFront がビューワーにレスポンスを返す前 (ビューワーレスポンス)

Lambda@Edge の処理にはさまざまな用途があります。以下はそのほんの一部です。

  • Cookie を検査して URL を書き換える Lambda 関数を作成して、A/B テスト用に異なるバージョンのサイトをユーザーに表示できます。

  • User-Agent ヘッダーに基づいて異なるオブジェクトをビューワーに返すことができます。このヘッダーには、ユーザーがコンテンツの表示に使用しているデバイスに関する情報が含まれています。たとえば、デバイスの画面サイズに基づいて異なるイメージを返すことができます。同様に、Referer ヘッダーの値を考慮する関数を作成して、最も低い解像度のイメージをボットに返すこともできます。

    そのほかの条件を考慮することもできます。たとえば、衣料品の通販ウェブサイトで、ユーザーが選択したジャケットの色を Cookie に保存する場合に、関数でリクエストを変更して、選択した色のジャケットのイメージが返されるようにすることができます。

  • Lambda 関数を使用して、CloudFront のビューワーリクエストイベントまたはオリジンリクエストイベントの発生時に HTTP レスポンスを生成できます。

  • Lambda 関数でヘッダーまたは認証トークンを検査して、CloudFront がリクエストをオリジンに転送する前に、コンテンツへのアクセスを制御する適切なヘッダーを挿入できます。

  • Lambda 関数でヘッダーの追加、削除、変更を行ったり、URL パスを書き換えて異なるオブジェクトが返されるようにしたりできます。

  • Lambda 関数で外部リソースのネットワーク呼び出しを実行して、ユーザー認証情報を確認したり、追加のコンテンツを取得してレスポンスをカスタマイズしたりできます。

    注記

    ビューワーリクエストイベントとビューワーレスポンスイベントに対してはネットワーク呼び出しを実行しないことをお勧めします。

Lambda@Edge で CloudFront をセットアップする詳細については、『AWS Lambda Developer Guide』の「Lambda@Edge」を参照してください。セットアップの手順が完了したら、以下のトピックを参照して、CloudFront と Lambda@Edge を使用する方法を確認してください。