選擇要觸發函數的事件 - Amazon CloudFront

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

選擇要觸發函數的事件

當您決定要使用哪個 CloudFront 事件來觸發 Lambda 函數,請考慮以下資訊:

我想要 CloudFront 快取由 Lambda 函數變更的物件

若要快取 Lambda 函數修改的物件,以便 CloudFront 下次請求時可以從節點為物件提供服務,請使用原始伺服器請求原始伺服器回應事件。

這樣可以降低原始伺服器的負載,減少後續請求的延遲,並降低叫用 Lambda@Edge 在後續請求的費用。

例如,如果您想要新增、移除或變更傳回原始伺服器的物件標頭,且您希望 CloudFront 快取結果,請使用原始伺服器的回應事件。

我想要函數為每個請求執行

若要針對 CloudFront 針對分佈收到的每個請求執行 函數,請使用檢視器請求檢視器回應事件。

原始伺服器請求與原始伺服器回應事件,僅會在當請求的物件未快取於節點以及 CloudFront 轉送請求至原始伺服器時發生。

我想要函數變更快取金鑰

若要變更您用來做為快取基礎的值,請使用檢視器請求事件。

例如,若函數變更其 URL 以包含語言縮寫在路徑中 (例如,因為使用者從下拉式清單中選擇其語言),請使用檢視器請求事件:

  • 檢視器請求中的 URL – https://https://example.com/en/index.html

  • 請求來自德國 IP 地址的 URL – https://https://example.com/de/index.html

如果您快取根據 Cookie 或請求標頭,也可以使用檢視器請求事件。

注意

如果函數變更 Cookie 或標頭,可設定 CloudFront 轉送請求適用的部分到原始伺服器。如需詳細資訊,請參閱下列主題:

函數會影響來自原始伺服器的回應

若要以影響原始伺服器回應的方式變更請求,請使用原始伺服器請求事件。

一般而言,大多數檢視器請求事件不會轉送至原始伺服器。CloudFront 會使用已在節點快取中的物件回應請求。如果函數依原始伺服器請求事件變更請求,CloudFront 會快取對變更的原始伺服器請求的回應。