本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Lambda@Edge 的限制
下列限制僅適用於 Lambda@Edge。
內容
如需 配額的詳細資訊,請參閱Lambda@Edge 的配額。
DNS 解析
CloudFront 在執行原始伺服器請求 Lambda@Edge 函數之前,會對原始伺服器網域名稱執行 DNS 解析。如果您網域的 DNS 服務遇到問題,且 CloudFront 無法解析網域名稱以取得 IP 位址,您的 Lambda@Edge 函數將不會調用。CloudFront 將傳回 HTTP 502 狀態碼 (無效的閘道) 給用戶端。如需更多詳細資訊,請參閱 DNS 錯誤 (NonS3OriginDnsError)。
如果您的函數邏輯修改原始網域名稱,CloudFront 將在函數完成執行後對更新的網域名稱執行另一個 DNS 解析。
如需有關管理 DNS 備援的詳細資訊,請參閱《Amazon Route 53 開發人員指南》中的設定 DNS 備援。
HTTP 狀態碼
無論回應來自原始伺服器或 CloudFront 快取,檢視器回應事件的 Lambda@Edge 函數無法修改回應的 HTTP 狀態碼。
Lambda 函數版本
您必須使用 Lambda 函數的已編號版本,而不是 $LATEST 或別名。
Lambda 區域
Lambda 函數必須位於美國東部 (維吉尼亞北部)區域。
Lambda 角色許可
與 Lambda 函數關聯的 IAM 執行角色必須可由服務主體 lambda.amazonaws.com 和 edgelambda.amazonaws.com 擔任。如需更多詳細資訊,請參閱 設定 Lambda@Edge 的 IAM 許可權限和角色。
Lambda 功能
Lambda@Edge 不支援下列 Lambda 函數:
-
自動 (預設值) 以外的 Lambda 執行時期管理組態。
-
用於存取您 VPC 中的資源的 Lambda 函數組態
-
Lambda 環境變數 (自動支援預留環境變數除外)
-
透過圖層管理 AWS Lambda 相依項的 Lambda 函數
-
Lambda 佈建並行
注意
Lambda@Edge 函數與所有 Lambda 函數共用相同的區域並行功能。如需更多詳細資訊,請參閱 Lambda@Edge 的配額。
-
具有超過 512 MB 暫時性儲存的 Lambda 函數
支援的執行時期
Lambda@Edge 支援最新版本的 Node.js 和 Python 執行時期。如需支援版本及其未來棄用日期的清單,請參閱《AWS Lambda 開發人員指南》中的支援的執行時期。
提示
-
依照最佳實務,請使用所提供的最新版本執行時期,以獲得效能提升與新功能。
-
您無法使用棄用的 Node.js 版本來建立或更新函數。您只能將現有函數與這些版本與 CloudFront 分佈建立關聯。使用此版本且與分佈相關聯的函數會繼續執行。不過,建議您將函數移至更新版本的 Node.js。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的執行時期支援政策和 GitHub 上的 Node.js 發行排程
。
CloudFront 標頭
Lambda@Edge 函數可以讀取、編輯、移除或新增任何列於 新增 CloudFront 請求標頭 的 CloudFront 標頭。
備註
-
如果您希望 CloudFront 新增這些標頭,則必須將 CloudFront 設定為使用快取政策或原始伺服器請求政策來新增標頭。
-
CloudFront 會在檢視器請求事件之後新增標頭,這表示檢視器請求中的 Lambda@Edge 函數無法使用這些標頭。標頭僅適用於原始伺服器請求和原始伺服器回應中的 Lambda@Edge 函數。
-
如果檢視器請求包含具有這些名稱的標頭,且您將 CloudFront 設定為使用快取政策或伺服器請求政策來新增標頭,則 CloudFront 會覆寫檢視器請求中的標頭值。檢視器對應的函數會從檢視器請求查看標頭值,而原始伺服器對應的函數則會查看 CloudFront 新增的標頭值。
-
若檢視器請求函數新增
CloudFront-Viewer-Country標頭,它將無法通過驗證,且 CloudFront 會向檢視器傳回 HTTP 狀態碼 502 (無效的閘道)。
使用包含內文選項時的要求內文限制
如果您選擇包含本文選項以向您的 Lambda@Edge 函數公開請求本文,則請您注意,公開或替換的本文部分須遵循下列的資訊和大小配額。
-
CloudFront 一律會在將要求內文公開給 Lambda@Edge 之前對其進行 base64 編碼。
-
如果要求內文過大,CloudFront 會在公開給 Lambda@Edge 之前將內文截斷,如下所示:
-
針對檢視器請求事件,會在 40 KB 處截斷內文。
-
針對原始伺服器請求事件,會在 1 MB 處截斷內文。
-
-
如果以唯讀方式存取請求內文,CloudFront 會將完整的原始伺服器請求內文傳送給原始伺服器。
-
如果 Lambda@Edge 函數替換了請求本文,則下列大小配額適用於函數所傳回的本文:
-
如果 Lambda@Edge 函數以純文字格式傳回內文:
-
針對檢視器請求事件,本文限制為 40 KB。
-
針對原始伺服器請求事件,本文限制為 1 MB。
-
-
如果 Lambda@Edge 函數以 base64 編碼的文字傳回內文:
-
針對檢視器請求事件,本文限制為 53.2 KB。
-
針對原始伺服器請求事件,本文限制為 1.33 MB。
-
-
注意
如果您的 Lambda@Edge 函數傳回超過這些限制的本文,您的請求將使用 HTTP 502 狀態碼 (Lambda 驗證錯誤) 失敗。我們建議您更新 Lambda@Edge 函數,讓本文不超過這些限制。
回應逾時和保持連線逾時 (僅限自訂原始伺服器)
如果您使用 Lambda@Edge 函數來設定分佈原始伺服器的回應逾時或持續作用逾時,請確認您正在指定原始伺服器可支援的值。如需更多詳細資訊,請參閱 回應和保持連線逾時配額。