

# イベントを選択して関数をトリガーする
<a name="lambda-how-to-choose-event"></a>

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 を設定します。詳細については、以下の各トピックを参照してください。  
+ [Cookie に基づいてコンテンツをキャッシュする](Cookies.md)
+ [リクエストヘッダーに基づいてコンテンツをキャッシュする](header-caching.md)

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