AWS Lambda
開発者ガイド

CloudFront Lambda@Edge での AWS Lambda の使用

Lambda@Edge では、Node.js および Python の Lambda 関数を実行して CloudFront が発信するコンテンツをカスタマイズし、ビューワーに近い AWS 地域でこの関数を実行できます。この関数は、プロビジョニングや管理の必要なく、CloudFront イベントに応答を実行します。Lambda 関数を使用して、次の時点で CloudFront リクエストとレスポンスを変更できます。

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

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

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

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


      CloudFront イベントが Lambda 関数をトリガーする方法を示す概念的なグラフィック。

オリジンにリクエストを一切送信することなく、ビューワーへのレスポンスを生成することもできます。

例 CloudFront メッセージイベント

{ "Records": [ { "cf": { "config": { "distributionId": "EDFDVBD6EXAMPLE" }, "request": { "clientIp": "2001:0db8:85a3:0:0:8a2e:0370:7334", "method": "GET", "uri": "/picture.jpg", "headers": { "host": [ { "key": "Host", "value": "d111111abcdef8.cloudfront.net" } ], "user-agent": [ { "key": "User-Agent", "value": "curl/7.51.0" } ] } } } } ] }

Lambda@Edge を使用すると、さまざまなソリューションを構築できます。次に例を示します。

  • A/B テスト用に、異なるバージョンのサイトに URL を書き換えるために Cookie を検査します。

  • リクエストを送信したデバイスに関する情報が含まれている、User-Agent ヘッダーに基づいてユーザーにさまざまなオブジェクトを送信します。たとえば、ユーザーのデバイスに応じて、さまざまな解像度のイメージをユーザーに送信できます。

  • ヘッダーまたは認証トークンを検査し、対応するヘッダーを挿入して、リクエストをオリジンに転送する前にアクセス制御を有効にします。

  • ヘッダーの追加、削除、変更、および URL パスの書き換えを行い、キャッシュの異なるオブジェクトにユーザーをダイレクトします。

  • 未認証ユーザーをログインページにリダイレクトしたり、エッジから直に静的ウェブページを作成して配信したりといったことを行う新しい HTTP レスポンスを生成します。詳細については、『Amazon CloudFront 開発者ガイド』の「Lambda 関数を使用してビューワーおよびオリジンリクエストへの HTTP レスポンスを生成する」を参照してください。

Lambda@Edge の使用の詳細については、「Lambda@Edge で CloudFront を使用する」を参照してください。