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

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

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


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

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

ビューワーリクエスト

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

オリジンリクエスト

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

オリジンレスポンス

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

以下の場合、関数は実行されません。

  • リクエストされたファイルが CloudFront キャッシュ内にあり、その有効期限が切れていない場合。

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

ビューワーレスポンス

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

以下の場合、関数は実行されません。

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

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

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

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

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

注記

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