測試函數
在將函數部署到即時階段 (生產環境) 之前,可以測試該函數以確保其運作正常。若要測試函數,您可以指定一個事件物件,代表您的 CloudFront 分佈可在生產環境中接收的 HTTP 請求或回應。
CloudFront Functions 會執行下列作業:
-
執行該函數,使用提供的事件物件作為函數的輸入。
-
返回函數的結果 (修改後的事件物件),同時返回任何函數日誌或錯誤訊息以及函數的運算利用率。如需運算使用率的詳細資訊,請參閱 了解運算利用率。
注意
當您測試函數時,CloudFront 只會驗證函數執行錯誤。CloudFront 不會驗證發佈後請求是否成功通過。例如,如果您的函數刪除必要的標頭,測試將會成功,因為程式碼沒有問題。不過,如果您發佈函數並將其與分佈建立關聯,則函數會在透過 CloudFront 提出請求時失敗。
設定事件物件
在測試函數之前,您必須建立事件物件以進行測試。有幾種選項。
- 選項 1:設定事件物件而不儲存
-
您可以在 CloudFront 主控台的視覺化編輯器中設定事件物件,而不儲存該事件物件。
您可以使用此事件物件從 CloudFront 主控台測試函數,即使該函數尚未儲存也是如此。
- 選項 2:在視覺化編輯器中建立事件物件
-
您可以在 CloudFront 主控台的視覺化編輯器中設定事件物件,而不儲存該事件物件。您可以針對每個函數建立 10 個事件物件,例如,可測試不同的可能輸入。
以這種方式建立事件物件時,您可以使用事件物件,在 CloudFront 主控台中測試函數。您不能使用它來測試使用 AWS API 或 SDK 的函數。
- 選項 3:使用文字編輯器建立事件物件
-
您可以使用文字編輯器,以 JSON 格式建立事件物件。如需有關事件物件結構的詳細資訊,請參閱 事件結構。
您可以使用此事件物件來測試使用 CLI 的函數。但是您無法使用它來測試 CloudFront 主控台中的函數。
建立事件物件 (選項 1 或 2)
-
在 https://console.aws.amazon.com/cloudfront/v4/home#/functions
登入 CloudFront 主控台,並選擇函數頁面。 選擇您要測試的函數。
-
在函數詳細資訊頁面上,選擇測試索引標籤。
-
針對事件類型,選擇以下其中一個選項:
-
如果函數會根據請求修改 HTTP 請求或產生回應,請選擇檢視者請求。請求區段隨即出現。
-
選擇檢視器回應。請求和回應區段隨即出現。
-
-
完成您想要包含在事件中的所有欄位。您可選擇編輯 JSON 來檢視原始 JSON。
-
(選用) 若要儲存事件,請選擇儲存,然後在儲存測試事件中輸入名稱,然後選擇儲存。
您也可以選擇編輯 JSON 並複製原始 JSON,並將其儲存在 CloudFront 之外您自己的檔案中。
建立事件物件 (選項 3)
使用文字編輯器建立事件物件。將檔案儲存於電腦可以連線的目錄中。
請確定您遵循這些準則:
-
省略
distributionDomainName、distributionId和requestId欄位。 -
標頭、Cookie 和查詢字串的名稱必須為小寫。
以這種方式建立事件物件的一個選項是使用視覺化編輯器建立範例。您可以確定範例格式正確。然後您可以複製原始 JSON 並將其貼到文字編輯器中並儲存檔案。
如需有關事件結構的詳細資訊,請參閱 事件結構。
測試函數
您可以在 CloudFront 主控台中或使用 AWS Command Line Interface (AWS CLI) 測試函數。
備註
-
FunctionExecutionLogs包含函數在console.log()語句中撰寫的日誌行清單 (如果有的話)。 -
ComputeUtilization包含執行函數的相關資訊。請參閱 了解運算利用率。 -
FunctionOutput包含該函數返回的事件物件。
了解運算利用率
運用利用率是指執行函數所花費的時間,以所允許時間上限的百分比表示。例如,35 的值表示該函數以所允許時間上限的 35% 完成。
如果某個函數持續時間,超過允許時間上限,則 CloudFront 會將該函數限流。下列清單說明,根據運算利用率的值,函數限流的可能性。
運算利用率值:
-
1 — 50—函數遠低於允許時間上限,應不會受到限流。
-
51 — 70—函數接近允許時間上限。考慮將函數程式碼最佳化。
-
71 — 100—函數非常接近或超過允許時間上限。如果您將此函數與分佈產生關聯,CloudFront 很有可能會將此函數限流。