教學課程:使用函數建立簡單 CloudFront 函數 - Amazon CloudFront

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

教學課程:使用函數建立簡單 CloudFront 函數

本教程向您展示如何開始使用 CloudFront 函數。您可以創建一個簡單的函數,將查看器重定向到不同的 URL,並且還返回自定義響應標題。

必要條件

要使用 CloudFront 函數,您需要一個 CloudFront 分佈。如果您沒有帳戶,請參閱 開始使用基本 CloudFront發行版

建立函數

您可以使用 CloudFront 控制台創建一個簡單的函數,將查看者重定向到不同的 URL,並返回自定義響應標題。

若要建立 CloudFront 函數
  1. 登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 在導覽窗格中,選擇 [數],然後選擇 [建立函數]。

  3. 在 [建立函數] 頁面上,對於 [名稱],輸入函數名稱,例如MyFunctionName

  4. (選擇性) 在說明中,輸入函數的說明,例如Simple test function

  5. 對於「執行階段」,保留預設選取的 JavaScript版本。

  6. 選擇建立函數

  7. 複製下列函數程式碼。此函數程式碼會將檢視者重新導向至不同的 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; }
  8. 對於函數程式碼,請將程式碼貼到程式碼編輯器中,以取代預設程式碼。

  9. 選擇儲存變更

  10. (可選)您可以在發布之前對其進行測試。本教程不描述如何測試函數。如需詳細資訊,請參閱 測試功能

  11. 選擇「發布」選項卡,然後選擇「發布」功能。您必須先發 CloudFront 佈函數,才能將其與發行版產生關聯。

  12. 接下來,您可以將函數與散佈或快取行為相關聯。在MyFunctionName頁面上,選擇 [發佈] 索引標籤。

    警告

    在下列步驟中,選擇用於測試的發行版或快取行為。請勿將此測試函數與生產環境中使用的散佈或快取行為相關聯。

  13. 選擇 Add association (建立關聯)

  14. 在「關聯」對話方塊中,選擇發佈和/或快取行為。對於事件類型,請保留預設值。

  15. 選擇 Add association (建立關聯)

    關聯的分佈資料表中會顯示關聯的分佈。

  16. 等待幾分鐘,讓關聯的分佈完成部署。若要檢查分配的狀態,請在「相關分配」表格中選取分配,然後選擇「檢視分配」。

    當分佈的狀態為已部署時,您就可以確認該函數正常運作。

驗證功能

部署函數之後,您可以驗證它是否適用於您的發行版。

若要驗證功能
  1. 在您的 Web 瀏覽器中,導航到您分發的域名(例如,https://d111111abcdef8.cloudfront.net)。

    該函數傳回重定向到瀏覽器,因此瀏覽器會自動轉到 https://aws.amazon.com/cloudfront/

  2. 在命令行窗口中,您可以使用類似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==