判斷函數用途 - Amazon CloudFront

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

判斷函數用途

在撰寫函數程式碼之前,請先確定函數的用途。CloudFront Functions 中的大多數函數都具有以下用途之一。

無論函數的用途如何,handler 都是任何函數的入口點。它採用一個稱為 event 的參數,該參數由 CloudFront 傳遞給函數。event 是一個 JSON 對象,其中包含 HTTP 請求的表示 (以及回應,前提是您的函數修改了 HTTP 回應)。

修改檢視器請求事件類型中的 HTTP 請求

您的函數可以修改 CloudFront 從檢視者 (用戶端) 接收的 HTTP 請求,並將修改後的請求返回給 CloudFront 以繼續處理。例如,您的函數程式碼可能會標準化快取金鑰或修改請求標頭。

在您建立和發佈修改 HTTP 請求的函數之後,請務必為檢視器請求事件類型新增關聯。如需詳細資訊,請參閱建立函數。這可讓函數在每次 CloudFront 收到來自檢視器的請求時執行,然後再檢查請求的物件是否在 CloudFront 快取中。

範例

下面的虛擬程式碼顯示了修改 HTTP 請求的函數結構。

function handler(event) { var request = event.request; // Modify the request object here. return request; }

該函數將修改後的 request 物件返回到 CloudFront。CloudFront 會按如下方式繼續處理返回的請求:檢查 CloudFront 快取以取得快取命中率,並在必要時將請求傳送至來源。

在檢視器請求事件類型中產生 HTTP 回應

您的函數可以在邊緣產生 HTTP 回應,並直接將其返回給檢視者 (用戶端),而無需檢查快取的回應,也無需 CloudFront 進一步處理。例如,您的函數程式碼可能會將請求重新導向至新的 URL,或檢查授權並將 401403 回應返回給未經授權的請求。

建立產生 HTTP 回應的函數時,請務必選擇檢視者請求事件類型。這表示 CloudFront 每次收到來自檢視者的請求時,該函數就會執行,然後 CloudFront 才進一步處理請求。

範例

下面的虛擬程式碼顯示了產生 HTTP 回應的函數結構。

function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }

該函數將 response 物件返回到 CloudFront,CloudFront 立即將其返回給檢視者,而無需檢查 CloudFront 快取或將請求傳送至來源。

在檢視者回應事件類型中修改 HTTP 回應

您的函數可以在 CloudFront 將其發送給檢視者 (用戶端) 之前修改 HTTP 回應,無論該回應來自 CloudFront 快取還是來源。例如,您的函數代碼可能會新增或修改回應標頭、狀態碼,與本文內容。

建立可修改 HTTP 回應的函數時,請務必選擇檢視者回應事件類型。這表示無論回應是來自 CloudFront 快取還是來源,此函數都會在 CloudFront 將回應返回給檢視者之前執行。

範例

下面的虛擬程式碼顯示了修改 HTTP 回應的函數結構。

function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }

該函數將修改後的 response 物件返回到 CloudFront,CloudFront 立即將其返回給檢視者。

如需使用 CloudFront Functions 的詳細資訊,請參閱下列主題: