本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用函數建立簡單 CloudFront 函數
本教程向您展示如何開始使用 CloudFront 函數。您可以創建一個簡單的函數,將查看器重定向到不同的 URL,並且還返回自定義響應標題。
必要條件
要使用 CloudFront 函數,您需要一個 CloudFront 分佈。如果您沒有帳戶,請參閱 基本 CloudFront分佈入門。
建立函數
您可以使用 CloudFront 控制台創建一個簡單的函數,將查看者重定向到不同的 URL,並返回自定義響應標題。
若要建立 CloudFront 函數
登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home
。 -
在導覽窗格中,選擇 [函數],然後選擇 [建立函數]。
-
在 [建立函數] 頁面上,對於 [名稱],輸入函數名稱,例如
MyFunctionName
。 -
(選擇性) 在說明中,輸入函數的說明,例如
Simple test function
。 -
對於「執行階段」,保留預設選取的 JavaScript版本。
-
選擇建立函數。
-
複製下列函數程式碼。此函數程式碼會將檢視者重新導向至不同的 URL,並傳回自訂回應標頭。
function handler(event) { // NOTE: This example function is for a viewer request event trigger. // Choose viewer request for event trigger when you associate this function with a distribution. var response = { statusCode: 302, statusDescription: 'Found', headers: { 'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' }, 'location': { value: 'https://aws.amazon.com/cloudfront/' } } }; return response; }
-
對於函數程式碼,請將程式碼貼到程式碼編輯器中,以取代預設程式碼。
-
選擇儲存變更。
-
(可選)您可以在發布之前對其進行測試。本教程不描述如何測試函數。如需詳細資訊,請參閱 測試功能。
-
選擇「發布」選項卡,然後選擇「發布」功能。您必須先發 CloudFront 佈函數,才能將其與發行版產生關聯。
-
接下來,您可以將函數與散佈或快取行為相關聯。在
MyFunctionName
頁面上,選擇 [發佈] 索引標籤。警告
在下列步驟中,選擇用於測試的發行版或快取行為。請勿將此測試函數與生產環境中使用的散佈或快取行為相關聯。
-
選擇 Add association (建立關聯)。
-
在「關聯」對話方塊中,選擇發佈和/或快取行為。對於事件類型,請保留預設值。
-
選擇 Add association (建立關聯)。
關聯的分佈資料表中會顯示關聯的分佈。
-
等待幾分鐘,讓關聯的分佈完成部署。若要檢查分配的狀態,請在「相關分配」表格中選取分配,然後選擇「檢視分配」。
當分佈的狀態為已部署時,您就可以確認該函數正常運作。
驗證功能
部署函數之後,您可以驗證它是否適用於您的發行版。
若要驗證功能
-
在您的 Web 瀏覽器中,導航到您分發的域名(例如,
https://d111111abcdef8.cloudfront.net
)。該函數傳回重定向到瀏覽器,因此瀏覽器會自動轉到
https://aws.amazon.com/cloudfront/
。 -
在命令行窗口中,您可以使用類似curl將請求發送到分發域名的工具。
curl -v https://d111111abcdef8.cloudfront.net/
在響應中,您會看到重定向響應(
302 Found
)和該函數添加的自定義響應標題。您的回應可能如下列範例所示。curl -v https://d111111abcdef8.cloudfront.net/ > GET / HTTP/1.1 > Host: d111111abcdef8.cloudfront.net > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 302 Found < Server: CloudFront < Date: Tue, 16 Mar 2021 18:50:48 GMT < Content-Length: 0 < Connection: keep-alive < Location: https://aws.amazon.com/cloudfront/ < Cloudfront-Functions: generated-by-CloudFront-Functions < X-Cache: FunctionGeneratedResponse from cloudfront < Via: 1.1 3035b31bddaf14eded329f8d22cf188c.cloudfront.net (CloudFront) < X-Amz-Cf-Pop: PHX50-C2 < X-Amz-Cf-Id: ULZdIz6j43uGBlXyob_JctF9x7CCbwpNniiMlmNbmwzH1YWP9FsEHg==