本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Lambda@Edge 的限制
下列限制僅適用於 Lambda@Edge。
內容
如需配額的詳細資訊,請參閱 Lambda@Edge 的配額。
DNS 解析度
CloudFront 會在原始網域名稱執行原始伺服器請求 Lambda@Edge 函數之前,先對原始伺服器網域名稱執行DNS解析。如果網域DNS的服務遇到問題,且 CloudFront 無法解析網域名稱以取得 IP 地址,您的 Lambda@Edge 函數將不會叫用 。 CloudFront 會將 HTTP 502 狀態碼 (錯誤的閘道) 傳回給用戶端。如需詳細資訊,請參閱DNS錯誤(NonS3OriginDnsError)。
如需管理DNS容錯移轉的詳細資訊,請參閱 Amazon Route 53 開發人員指南 中的設定DNS容錯移轉。
HTTP 狀態碼
檢視器回應事件的 Lambda@Edge 函數無法修改回應HTTP的狀態碼,無論回應來自原始伺服器或 CloudFront快取。
Lambda 函數版本
您必須使用 Lambda 函數的已編號版本,而不是 $LATEST
或別名。
Lambda 區域
Lambda 函數必須位於美國東部 (維吉尼亞北部)區域。
Lambda 角色許可
與 Lambda 函數相關聯的IAM執行角色必須允許服務主體lambda.amazonaws.com
和 edgelambda.amazonaws.com
擔任該角色。如需詳細資訊,請參閱設定 Lambda@Edge 的IAM許可和角色。
Lambda 功能
Lambda@Edge 不支援下列 Lambda 函數:
-
Auto 以外的 Lambda 執行期管理組態 (預設)
-
設定 Lambda 函數以存取您 內部的資源 VPC
-
Lambda 環境變數 (預留環境變數除外,這些變數會自動支援)
-
Lambda 函數搭配使用 層管理 AWS Lambda 相依性
-
Lambda 佈建並行
注意
Lambda@Edge 函數與所有 Lambda 函數共用相同的區域並行功能。如需詳細資訊,請參閱Lambda@Edge 的配額。
-
Lambda 函數具有超過 512 MB 的暫時性儲存
-
以JSON結構化格式擷取 Lambda 函數日誌
-
控制 Lambda 函數日誌的日誌層級精細度
-
設定 Amazon CloudWatch 日誌群組 Lambda 將日誌傳送至哪個 Amazon 日誌群組
支援的執行期
Lambda@Edge 支援具有下列執行時間的 Lambda 函數:
Node.js |
Python |
---|---|
|
|
1此版本的 Node.js 已達到生命週期結束,且即將由 取代 AWS Lambda。
2此版本的 Node.js 已達到生命週期結束,並由 完全取代 AWS Lambda。
您無法使用已棄用版本的 Node.js 建立或更新函數。您只能將現有函數與這些版本與 CloudFront 分佈建立關聯。具有與分佈相關聯的這些版本的函數將繼續執行。不過,建議您將函數移至較新的 Node.js 版本。如需詳細資訊,請參閱 AWS Lambda 開發人員指南中的執行期取代政策,以及 上的 Node.js 發行排程
提示
最佳實務是使用提供的最新版本執行期來改善效能和使用新功能。
CloudFront 標頭
Lambda@Edge 函數可以讀取、編輯、移除或新增 中列出的任何 CloudFront 標頭新增 CloudFront 要求標頭。
備註
-
如果您想要 CloudFront 新增這些標頭,您必須設定 CloudFront 以使用快取政策或原始伺服器請求政策 來新增它們。
-
CloudFront 在檢視器請求事件之後新增標頭,這表示檢視器請求中的 Lambda@Edge 函數無法使用標頭。標頭僅適用於原始伺服器請求和原始伺服器回應中的 Lambda@Edge 函數。
-
如果檢視器請求包含具有這些名稱的標頭,且您設定為使用快取政策或原始伺服器請求政策 CloudFront 新增這些標頭,則 會 CloudFront 覆寫檢視器請求中的標頭值。面向檢視器的函數會從檢視器請求中查看標頭值,而面向原始伺服器的函數則會查看新增的 CloudFront標頭值。
-
如果檢視器請求函數新增
CloudFront-Viewer-Country
標頭,則驗證會失敗,並將HTTP狀態碼 502 (錯誤的閘道) CloudFront 傳回給檢視器。
使用包含內文選項時的要求內文限制
當您選擇包含內文選項將請求內文公開至 Lambda@Edge 函數時,下列資訊和大小限制適用於已公開或已取代的內文部分。
-
CloudFront 一律在將請求內文公開給 Lambda@Edge 之前,Base64 會先編碼請求內文。
-
如果請求內文較大,請在將其暴露至 Lambda@Edge 之前 CloudFront 將其截斷,如下所示:
-
針對檢視器請求事件,會在 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 函數來設定分發原始伺服器的回應逾時或保持連線逾時,請確認您正在指定原始伺服器可支援的值。如需詳細資訊,請參閱回應和保持連線逾時配額。