選擇要觸發功能的事件 - Amazon CloudFront

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

選擇要觸發功能的事件

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

我想緩 CloudFront 存由 Lambda 函數更改的對象

若要快取由 Lambda 函數修改的物件, CloudFront以便在下次要求物件時從邊緣位置提供物件,請使用來源要求來源回應事件。

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

例如,如果您想要新增、移除或變更來源傳回之物件的標頭,並且想 CloudFront 要快取結果,請使用原始回應事件。

我希望函數為每個請求執行

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

只有當請求的對象未緩存在邊緣位置並將請求 CloudFront 轉發到來源時,Origin 請求和源響應事件才會發生。

我希望函數更改緩存鍵

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

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

  • 檢視器要求中的網址 — https://example.com/en/index.html

  • 當請求來自德國的 IP 地址時的網址 — https://example.com/de/index.html

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

注意

如果功能變更 Cookie 或標頭,請設定 CloudFront 為將要求的適用部分轉寄至來源。如需詳細資訊,請參閱下列主題:

該功能影響來自原點的響應

若要以影響來自來源回應的方式變更要求,請使用原始要求事件。

一般而言,大多數檢視者要求事件不會轉寄至來源。CloudFront 回應具有已存在於邊緣快取中的物件的要求。如果函數根據來源要求事件變更要求,則會 CloudFront 快取變更的原始要求的回應。