選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

對所有邊緣函數的限制

焦點模式
對所有邊緣函數的限制 - Amazon CloudFront

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

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

下列限制適用於所有邊緣函數,包括 CloudFront Functions 和 Lambda@Edge。

AWS 帳戶 擁有權

若要將邊緣函數與 CloudFront 分佈產生關聯,函數和分佈必須由相同的 AWS 帳戶擁有。

結合 CloudFront Functions 與 Lambda@Edge

下列限制適用於指定的快取行為:

  • 每個事件類型 (檢視器請求、原始伺服器請求、原始伺服器回應和檢視器回應) 只能有一個邊緣函數關聯。

  • 您無法在檢視器事件 (檢視器請求和檢視器回應) 中結合 CloudFront Functions 和 Lambda@Edge。

允許邊緣函數的所有其他組合。下表說明了允許的組合。

CloudFront Functions

檢視者請求

檢視者回應

Lambda@Edge

檢視者請求

不允許

不允許

原始伺服器請求

已允許

已允許

原始伺服器回應

已允許

已允許

檢視者回應

不允許

不允許

HTTP 狀態碼

當原始伺服器傳回 HTTP 狀態碼 400 或更高版本時,CloudFront 不會叫用檢視器回應事件的邊緣函數。

CloudFront 會針對所有原始伺服器回應,呼叫原始伺服器回應事件的 Lambda@Edge 函數,包括在原始伺服器傳回 HTTP 狀態碼 400 (或更高值) 時。如需詳細資訊,請參閱 更新原始伺服器回應觸發條件中的 HTTP 回應

HTTP 標頭

某些 HTTP 標頭不允許使用,這意味著這些標頭不會公開給邊緣函數,且函數無法新增這些標頭。其他標頭是唯讀的,這表示函數可以讀取它們,但無法新增、修改或刪除它們。

不允許的標頭

下列 HTTP 標頭不會公開給邊緣函數,且函數無法新增這些標頭。如果您的函數新增這些標頭之一,CloudFront 驗證請求會失敗,且 CloudFront 會傳回 HTTP 狀態碼 502 (無效的閘道) 給檢視器。

  • Connection

  • Expect

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Upgrade

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-Errortype

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-*

  • X-Forwarded-Proto

  • X-Real-IP

唯讀標頭

下列標頭為唯讀的狀態。您的函數可以讀取這些標頭並將其作為函數邏輯的輸入,但無法變更其值。如果您的函數新增或編輯了唯讀標頭,請求會無法通過 CloudFront 驗證,而且 CloudFront 會傳回 HTTP 狀態碼 502 (無效的閘道) 給檢視器。

檢視器請求事件中的唯讀標頭

下列標頭在檢視器請求事件中為唯讀的狀態。

  • Content-Length

  • Host

  • Transfer-Encoding

  • Via

原始伺服器請求事件中的唯讀標頭 (僅限 Lambda@Edge)

下列標頭在原始伺服器請求事件中為唯讀的狀態,僅存在於 Lambda@Edge 中。

  • Accept-Encoding

  • Content-Length

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Transfer-Encoding

  • Via

原始伺服器回應事件中的唯讀標頭 (僅限 Lambda@Edge)

下列標頭在原始伺服器回應事件中為唯讀的狀態,僅存在於 Lambda@Edge 中。

  • Transfer-Encoding

  • Via

檢視器回應事件中的唯讀標頭

下列標頭在 CloudFront Functions 與 Lambda@Edge 的檢視器回應事件中為唯讀。

  • Warning

  • Via

下列標頭在 Lambda@Edge 檢視器回應事件中為唯讀狀態。

  • Content-Length

  • Content-Encoding

  • Transfer-Encoding

查詢字串

下列限制適用於讀取、更新或在請求 URI 中建立查詢字串的函數。

  • (僅限 Lambda@Edge) 若要存取原始伺服器請求或原始伺服器回應函數中的查詢字串,您的快取政策或原始伺服器請求政策必須針對查詢字串設定為 All (全部)。

  • 函數可以為檢視器請求和原始伺服器請求事件建立或更新查詢字串 (原始伺服器請求事件僅存在於 Lambda@Edge 中)。

  • 函數可以讀取查詢字串,但無法為原始伺服器回應和檢視器回應事件建立或更新查詢字串 (原始伺服器回應事件僅存在於 Lambda@Edge 中)。

  • 如果函數建立或更新查詢字串,將適用下列限制:

    • 查詢字串不可包含空格、控制字元或片段識別碼 (#)。

    • URI 的總大小 (包含查詢字串) 必須小於 8,192 個字元。

    • 我們建議您於 URI 和查詢字串使用 % 編碼。如需詳細資訊,請參閱URI、查詢字串和標頭編碼

URI

如果函數為請求變更了 URI,這不會改變針對請求進行的快取動作,也不會改變請求轉傳目的地的原始伺服器。

URI 的總大小 (包含查詢字串) 必須小於 8,192 個字元。

URI、查詢字串和標頭編碼

傳遞給邊緣函數的 URI、查詢字串和標頭的值為 UTF-8 編碼。您的函數應該針對傳回的 URI、查詢字串和標頭值使用 UTF-8 編碼。百分比編碼與 UTF-8 編碼相容。

下列清單說明 CloudFront 如何處理 URI、查詢字串和標頭的編碼:

  • 如果請求中的值為 UTF-8 編碼,CloudFront 不需變更值,即可將其轉傳給函數。

  • 當請求中的值採用 ISO-8859-1 編碼時,CloudFront 會將這些值轉換為 UTF-8 編碼,然後再將其轉傳給函數。

  • 當請求中的值採用其他字元編碼時,CloudFront 會假設其為 ISO-8859-1 編碼,並嘗試將 ISO-8859-1 編碼轉換為 UTF-8 編碼。

    重要

    轉換後的字元中的值可能是原始伺服器請求的不正確轉譯。這可能會導致函數或原始伺服器產生意外結果。

CloudFront 轉送至原始伺服器的 URI、查詢字串和標頭值取決於函數是否變更值:

  • 如果函數未變更 URI、查詢字串或標頭,CloudFront 會將請求中收到的值轉送到原始伺服器。

  • 如果函數變更 URI、查詢字串或標頭,CloudFront 會轉送 UTF-8 編碼值。

Microsoft Smooth Streaming

您無法將邊緣函數與 CloudFront 分佈搭配使用,用於已轉碼為 Microsoft Smooth Streaming 格式的串流媒體檔案。

標記

您無法將標籤新增至邊緣函數。如需在 CloudFront 中標記的詳細資訊,請參閱 標記分佈

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。