確定功能目的 - Amazon CloudFront

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

確定功能目的

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

無論函數的用途如何,handler 都是任何函數的入口點。它需要一個稱為的參數event,該參數通過傳遞給函數 CloudFront。的event是一個包含HTTP請求表示的JSON對象(和響應,如果你的函數修改了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響應事件類型中的響應

無論HTTP響應是來自 CloudFront 緩存還是來自源,您的函數都可以在將響應 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 函數的詳細資訊,請參閱下列主題: