Lambda@Edge 関数をトリガーするために使用する CloudFront イベントを決定する方法 - Amazon CloudFront

Lambda@Edge 関数をトリガーするために使用する CloudFront イベントを決定する方法

Lambda 関数をトリガーするために使用する CloudFront イベントを決定する際には、次の点を考慮してください。

Lambda 関数によって変更されたオブジェクトを CloudFront でキャッシュするかどうか

Lambda 関数によって変更されたオブジェクトを CloudFront でキャッシュして、次にそのオブジェクトがリクエストされたときにエッジロケーションから提供できるようにする場合は、オリジンリクエストイベントかオリジンレスポンスイベントを使用します。これにより、オリジンの負荷と以降のリクエストのレイテンシーが軽減され、以降のリクエストで Lambda@Edge を呼び出すコストが削減されます。

例えば、オリジンから返されたオブジェクトのヘッダーを追加、削除、または変更する場合に、その結果を CloudFront でキャッシュするには、オリジンレスポンスイベントを使用します。

すべてのリクエストに対して関数を実行するかどうか

CloudFront が受信したディストリビューションのすべてのリクエストに対して関数を実行する場合は、ビューワーリクエストイベントかビューワーレスポンスイベントを使用します。オリジンリクエストイベントとオリジンレスポンスイベントは、リクエストされたオブジェクトがエッジロケーションにキャッシュされておらず、CloudFront がリクエストをオリジンに転送する場合にだけ発生します。

関数でキャッシュキーを変更するかどうか

キャッシュ条件として使用している値を関数で変更する場合はビューワーリクエストイベントを使用します。たとえば、関数で URL を変更してパスに言語の省略形を含める場合 (ユーザーがドロップダウンリストから言語を選択した場合など) は、ビューワーリクエストイベントを使用します。

  • ビューワーリクエストの URL - https://example.com/en/index.html

  • リクエストがドイツの IP アドレスから送られてきた場合の URL - https://example.com/de/index.html

Cookie またはリクエストヘッダーをキャッシュ条件として使用している場合もビューワーリクエストイベントを使用します。

注記

関数で Cookie またはヘッダーを変更する場合は、リクエストの該当部分をオリジンに転送するように CloudFront を設定します。詳細については、以下のトピックを参照してください。

関数がオリジンからのレスポンスに影響するかどうか

関数でリクエストに加える変更がオリジンからのレスポンスに影響する場合は、オリジンリクエストイベントを使用します。通常、ほとんどのビューワーリクエストイベントはオリジンに転送されません。 CloudFront がエッジキャッシュにすでに存在するオブジェクトを使用してリクエストに応答します。オリジンリクエストイベントに基づく関数でリクエストを変更すると、変更されたオリジンリクエストに対するレスポンスが CloudFront でキャッシュされます。