メニュー
Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

Lambda 関数をトリガーできる CloudFront イベント

CloudFront ディストリビューションの各キャッシュ動作に、特定の CloudFront イベントの発生時に Lambda 関数を実行させるトリガー (関連付け) を 4 つまで追加できます。CloudFront トリガーは、次の図に示す、4 つの CloudFront イベントのいずれかに基づくことができます。

 CloudFront と統合する Lambda 関数の CloudFront トリガーイベントを示す概念的なグラフィック。

Lambda@Edge 関数のトリガーに使用できる CloudFront イベントには、以下のものがあります。

ビューワーリクエスト

CloudFront がビューワーからリクエストを受け取った後、リクエストされたオブジェクトがエッジキャッシュにあるかどうかを確認する前に関数が実行されます。

オリジンリクエスト

CloudFront がリクエストをオリジンに転送する場合にのみ関数が実行されます。リクエストされたオブジェクトがエッジキャッシュにある場合は実行されません。

オリジンレスポンス

CloudFront がオリジンからのレスポンスを受け取った後、レスポンス内のオブジェクトをキャッシュする前に関数が実行されます。関数は、オリジンからエラーが返された場合でも実行されることに注意してください。

次の場合には関数は実行されません。

  • リクエストされたファイルがエッジキャッシュにある場合

  • オリジンリクエストイベントによってトリガーされた関数からレスポンスが生成された場合

ビューワーレスポンス

リクエストされたファイルがビューワーに返される前に関数が実行されます。ファイルがすでにエッジキャッシュに存在するかどうかに関係なく関数が実行されることに注意してください。

次の場合には関数は実行されません。

  • オリジンが 400 以上の HTTP ステータスコードを返した場合

  • カスタムエラーページが返された場合

  • ビューワーリクエストイベントによってトリガーされた関数からレスポンスが生成された場合

  • CloudFront で HTTP リクエストが自動的に HTTPS にリダイレクトされる場合 ([ビューワープロトコルポリシー] の値が [Redirect HTTP to HTTPS] の場合)

同じキャッシュ動作に複数のトリガーを追加する場合、各トリガーに対して同じ関数を実行することも、異なる関数を実行することもできます。また、複数のディストリビューションに同じ関数を関連付けることもできます。

注記

CloudFront イベントによって Lambda 関数の実行がトリガーされると、その関数が終了するまで CloudFront は続行できません。たとえば、CloudFront ビューワーリクエストイベントによって Lambda 関数がトリガーされると、その Lambda 関数が実行を終了するまで、CloudFront によってビューワーにレスポンスが返されることも、リクエストがオリジンに転送されることもありません。つまり、Lambda 関数をトリガーするリクエストではリクエストのレイテンシーが長くなるため、関数をできる限り速く実行する必要があります。