CloudFront Lambda@Edge での AWS Lambda の使用 - AWS Lambda

CloudFront Lambda@Edge での AWS Lambda の使用

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

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

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

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

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


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

Lambda@Edge は、限定数のランタイムと機能をサポートしています。詳細については、Amazon CloudFront デベロッパーガイドの Requirements and restrictions on Lambda functions を参照してください。

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

例 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 デベロッパーガイドUsing Lambda functions to generate HTTP responses to viewer and origin requests を参照してください。

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