本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
概觀和工作流程
CloudFront Connection Functions 是一種特殊類型的 CloudFront Functions,當用戶端嘗試建立 mTLS 連線時,會在 TLS 交握期間執行。您的 Connection Function 可以存取用戶端憑證資訊、mTLS 組態參數、憑證撤銷檢查結果,以及用戶端 IP 地址。
在 CloudFront 執行標準憑證驗證 (信任鏈、過期、簽章驗證) 後叫用連線函數,但即使憑證撤銷檢查失敗,也可以執行。這可讓您實作自訂邏輯,以處理撤銷的憑證或新增其他驗證條件。
建立並發佈 Connection Function 之後,請務必為啟用 mTLS 的分佈新增連線請求事件類型的關聯。這可讓函數在每次用戶端嘗試與 CloudFront 建立 mTLS 連線時執行。
CloudFront Connection Functions 遵循兩階段生命週期,可讓您在將函數部署到生產環境之前開發和測試函數。此工作流程可確保連線函數在影響即時流量之前正常運作。
函數階段
連線函數存在於兩個階段之一:
-
開發 – 可修改、測試和更新此階段中的函數。使用此階段來寫入和偵錯函數程式碼。
-
LIVE – 此階段中的函數為唯讀並處理生產流量。您無法直接修改 LIVE 階段中的函數。
當您建立新的連線函數時,它會在 DEVELOPMENT 階段啟動。測試和驗證之後,您會發佈函數以將其移至 LIVE 階段。
開發工作流程
遵循此工作流程來開發和部署連線函數:
-
建立 – 在 DEVELOPMENT 階段使用初始程式碼和組態建立新的連線函數。
-
測試 – 使用測試功能,在部署之前使用範例連線事件來驗證您的函數。
-
更新 – 根據測試結果,視需要修改函數程式碼和組態。
-
發佈 – 準備生產時,發佈函數以將其從 DEVELOPMENT 移至 LIVE 階段。
-
關聯 – 將已發佈的函數與已啟用 mTLS 的分佈建立關聯,以處理即時連線。
若要變更 LIVE 函數,您必須更新 DEVELOPMENT 版本並再次發佈。這會在 LIVE 階段中建立新的版本。
與其他函數類型的差異
連線函數與檢視器請求和檢視器回應函數有幾個重要方面不同:
-
在進行任何 HTTP 處理之前,連線函數會在 mTLS 交握之後執行
-
連線函數可存取 TLS 憑證資訊,而不是 HTTP 請求/回應資料
-
連線函數只能允許或拒絕連線,不能修改 HTTP 資料
-
僅針對新的 TLS 連線叫用連線函數,而非針對連線重複使用
-
mTLS 不支援 TLS 工作階段恢復,以確保憑證驗證在每個連線上發生
-
除了標準檢視器請求和檢視器回應函數之外,連線函數也會執行
-
您可以在分佈層級建立連線函數的關聯,而不是在快取行為層級建立關聯。
-
連線函數僅支援 JavaScript 執行期 2.0。