教學課程:使用 CloudFront Functions 建立簡單的函數
本教學課程將協助您開始使用 CloudFront Functions。您可建立簡單函數將檢視器重新導向至不同的 URL,此外也會傳回自訂回應標頭。
必要條件
要使用 CloudFront Functions,您需要一個 CloudFront 分佈。如果您沒有帳戶,請參閱 開始使用 CloudFront 標準分佈。
建立函數
您可使用 CloudFront 主控台建立簡單函數,該函數將檢視器重新導向至不同的 URL,以及傳回自訂回應標頭。
建立 CloudFront 函數
登入 AWS 管理主控台 並開啟位於 https://console.aws.amazon.com/cloudfront/v4/home
的 CloudFront 主控台。 -
在導覽面板上選擇函數,然後選擇建立函數。
-
在建立函數頁面對名稱輸入函數名稱,例如
MyFunctionName。 -
(選用) 對於說明,請輸入函數的說明內容,例如
Simple test function。 -
對於執行時期,請保留預設選取的 JavaScript 版本。
-
選擇 Create function (建立函數)。
-
複製下列函數程式碼。此函數程式碼會將檢視者重新導向至不同的 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==