CloudFront 可觸發 Lambda@Edge 函數的事件 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CloudFront 可觸發 Lambda@Edge 函數的事件

對於 Amazon CloudFront 分佈中的每個快取行為,您最多可以新增四個觸發程序 (關聯),這些觸發程序會導致 Lambda 函數在特定事件發生時 CloudFront執行。 CloudFront 觸發程序可以基於四個 CloudFront 事件之一,如下圖所示。

概念圖形,顯示 Lambda 函數的 CloudFront 觸發事件如何與 整合 CloudFront。

可用於觸發 Lambda@Edge 函數 CloudFront 的事件如下:

檢視者請求

函數會在 CloudFront 收到來自檢視器的請求時執行,然後檢查請求的物件是否在快取中 CloudFront。

函數不在以下情況執行:

  • 擷取自訂錯誤頁面時。

  • 當 CloudFront 自動將HTTP請求重新導向至 HTTPS(當 檢視器通訊協定政策 的值重新導向HTTP至 HTTPS時)。

原始伺服器請求

只有當 將請求 CloudFront 轉送到您的原始伺服器時,函數才會執行 。當請求的物件位於 CloudFront 快取中時, 函數不會執行。

原始伺服器回應

函數會在 從原始伺服器 CloudFront 收到回應後執行 ,然後在回應中快取物件之前執行 。請注意,即使原始伺服器傳回錯誤,函數仍會執行。

函數不在以下情況執行:

  • 當請求的檔案位於 CloudFront 快取中且未過期時。

  • 當回應是從原始伺服器請求事件觸發的函數所產生。

檢視者回應

函數會在請求的檔案傳回給檢視器之前執行。請注意,無論檔案是否已在 CloudFront 快取中,函數都會執行。

函數不在以下情況執行:

  • 當原始伺服器傳回 400 或更高HTTP的狀態碼時。

  • 當傳回自訂錯誤頁面。

  • 當回應是被檢視器請求事件觸發的函數所產生。

  • 當 CloudFront 自動將HTTP請求重新導向至 HTTPS(當 檢視器通訊協定政策 的值重新導向HTTP至 HTTPS時)。

當您新增多個觸發條件至相同的快取行為時,可將其用於針對每個觸發條件執行相同或不同的函數。您也可以將相同的函數與一個以上的分佈建立關聯。

注意

當 CloudFront 事件觸發 Lambda 函數的執行時,函數必須先完成才能 CloudFront 繼續。

例如,如果 Lambda 函數是由 CloudFront 檢視器請求事件觸發,CloudFront 則在 Lambda 函數完成執行之前,不會將回應傳回給檢視器或將請求轉送至原始伺服器。

這表示觸發 Lambda 函數的每個請求都會增加請求的延遲,因此您希望函數盡快執行。