本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 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
擔任。如需詳細資訊,請參閱 設定身分與存取權管理權限和角色 @Edge。
Lambda 功能
Lambda@Edge 不支援下列 Lambda 函數:
-
自動以外的 Lambda 執行階段管理組態 (預設值)
-
設定 Lambda 函數以存取虛擬私人 VPC 內的資源
-
Lambda 環境變數 (自動支援的保留環境變數除外)
-
使用 Lambda 函數與層管理 AWS Lambda 相依性
-
Lambda 佈建並行
注意
Lambda @Edge 函數具有與 Lambda 函數相同的區域並行功能。但是,當並行 Lambda @Edge 執行的配額增加時,所有複寫 Lambda @Edge 函數的 AWS 區域 配額都會增加。如需詳細資訊,請參閱 Lambda@Edge 的配額。
-
具有超過 512 MB 暫時儲存體的 Lambda 函數
-
擷取 JSON 結構化格式的 Lambda 函數記錄
-
控制 Lambda 函數日誌的日誌層級精細度
-
設定 Lambda 將日誌傳送到哪個 Amazon CloudWatch 日誌群
支援的執行期
Lambda@Edge 支援具有下列執行時間的 Lambda 函數:
Node.js |
Python |
---|---|
|
|
¹ 此版本的 Node.js 已經結束,很快就會被 AWS Lambda淘汰。
² 此版本的 Node.js 已經到了生命週期結束,並且已由 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
標頭,則驗證失敗,並將 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 函數來設定發佈來源的回應逾時或保持使用中逾時,請確認您指定的是來源可支援的值。如需更多詳細資訊,請參閱 回應和保持作用逾時配額。