Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

Lambda@Edge を使用したエッジでのコンテンツのカスタマイズ

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

CloudFront ディストリビューションを Lambda@Edge 関数に関連付けると、CloudFront エッジロケーションでリクエストとレスポンスが傍受されます。Lambda 関数は、次の CloudFront イベントの発生時に実行できます。

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

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

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

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

Lambda@Edge の処理にはさまざまな用途があります。以下に例を示します。

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

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

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

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

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

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

サンプルコードと追加の例については、「Lambda@Edge 関数の例」を参照してください。