CloudFront Lambda@Edge での AWS Lambda の使用
Lambda@Edge は、Amazon CloudFront のエッジロケーションに Python および Node.js の関数をデプロイできる、AWS Lambda の拡張です。Lambda @Edge の一般的な使用例は、関数を使用して CloudFront ディストリビューションがエンドユーザーに配信するコンテンツをカスタマイズすることです。オリジンサーバーではなくビューワーの近くでそれらの関数を呼び出すことで、レイテンシーが大幅に軽減され、ユーザーエクスペリエンスが向上します。
CloudFront ディストリビューションを Lambda@Edge 関数に関連付けると、CloudFront エッジロケーションでリクエストとレスポンスがインターセプトされます。その後、CloudFront はイベントを送信して Lambda 関数を呼び出します。次のイベントの発生時に、CloudFront から Lambda 関数を呼び出すことができます。
-
CloudFront がビューワーからリクエストを受信したとき (ビューワーリクエスト)
-
CloudFront がリクエストをオリジンに転送する前 (オリジンリクエスト)
-
CloudFront がオリジンからレスポンスを受信したとき (オリジンレスポンス)
-
CloudFront がビューワーにレスポンスを返す前 (ビューワーレスポンス)

注記
Lambda@Edge は、限定数のランタイムと機能をサポートしています。詳細については、Amazon CloudFront デベロッパーガイドの Requirements and restrictions on Lambda functions を参照してください。
CloudFront イベントの例を次に示します。
例 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 の使用の詳細については、「Lambda@Edge で CloudFront を使用する」を参照してください。