

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

# 概觀和工作流程
<a name="connection-functions-overview"></a>

CloudFront Connection Functions 是一種特殊類型的 CloudFront Functions，當用戶端嘗試建立 mTLS 連線時，會在 TLS 交握期間執行。您的 Connection Function 可以存取用戶端憑證資訊、mTLS 組態參數、憑證撤銷檢查結果，以及用戶端 IP 地址。

在 CloudFront 執行標準憑證驗證 （信任鏈、過期、簽章驗證） 後叫用連線函數，但即使憑證撤銷檢查失敗，也可以執行。這可讓您實作自訂邏輯，以處理已撤銷的憑證或新增其他驗證條件。

建立並發佈 Connection Function 之後，請務必為啟用 mTLS 的分佈新增連線請求事件類型的關聯。這可讓函數在每次用戶端嘗試與 CloudFront 建立 mTLS 連線時執行。

CloudFront Connection Functions 遵循兩階段生命週期，可讓您在將函數部署到生產環境之前開發和測試函數。此工作流程可確保連線函數在影響即時流量之前正常運作。

**Topics**
+ [函數階段](#connection-function-stages)
+ [開發工作流程](#connection-function-development-workflow)
+ [與其他函數類型的差異](#connection-function-differences)

## 函數階段
<a name="connection-function-stages"></a>

連線函數存在於兩個階段之一：
+ **開發** – 可修改、測試和更新此階段中的函數。使用此階段來寫入和偵錯函數程式碼。
+ **LIVE** – 此階段中的函數為唯讀並處理生產流量。您無法直接修改 LIVE 階段中的函數。

當您建立新的連線函數時，它會在 **DEVELOPMENT** 階段啟動。測試和驗證之後，您會發佈函數以將其移至 **LIVE** 階段。

## 開發工作流程
<a name="connection-function-development-workflow"></a>

遵循此工作流程來開發和部署 Connection Functions：

1. **建立** – 在 DEVELOPMENT 階段使用初始程式碼和組態建立新的連線函數。

1. **測試** – 使用測試功能，在部署之前使用範例連線事件來驗證您的函數。

1. **更新** – 根據測試結果，視需要修改函數程式碼和組態。

1. **發佈** – 準備進行生產時，發佈函數以將其從 DEVELOPMENT 移至 LIVE 階段。

1. **關聯** – 將已發佈的函數與已啟用 mTLS 的分佈建立關聯，以處理即時連線。

若要變更 LIVE 函數，您必須更新 DEVELOPMENT 版本並重新發佈。這會在 LIVE 階段中建立新的版本。

## 與其他函數類型的差異
<a name="connection-function-differences"></a>

連線函數與檢視器請求和檢視器回應函數在幾個重要方面不同：
+ 在進行任何 HTTP 處理之前，連線函數會在 mTLS 交握之後執行
+ 連線函數可存取 TLS 憑證資訊，而不是 HTTP 請求/回應資料
+ 連線函數只能允許或拒絕連線，不能修改 HTTP 資料
+ 連線函數只會針對新的 TLS 連線叫用，而不是針對連線重複使用叫用
+ mTLS 不支援 TLS 工作階段恢復，以確保憑證驗證在每個連線上發生
+ 除了標準檢視器請求和檢視器回應函數之外，連線函數也會執行
+ 您可以在分佈層級建立 Connection Functions 的關聯，而不是在快取行為層級建立關聯。
+ 連線函數僅支援 JavaScript 執行期 2.0。