

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

# 搭配原始伺服器交互 TLS 使用 CloudFront 函數
<a name="origin-mtls-cloudfront-functions"></a>

CloudFront Functions 在邊緣提供輕量的無伺服器運算，以自訂內容交付。搭配 CloudFront Functions 使用原始伺服器交互 TLS 時，需要注意有關原始伺服器選取和操作的特定行為和限制。

## 支援的 CloudFront Functions 操作
<a name="supported-cloudfront-functions-operations"></a>

CloudFront Functions 可以透過以下方式與啟用 mTLS 的原始伺服器互動：

### updateRequestOrigin()
<a name="update-request-origin-function"></a>

使用啟用 mTLS 的原始伺服器時，updateRequestOrigin() 函數支援有限的修改：
+ **在原始伺服器 mTLS 原始伺服器之間切換：**您可以更新請求，以路由到使用原始伺服器 mTLS 的不同原始伺服器，前提是兩個原始伺服器都使用**相同的用戶端憑證**。這可讓您實作自訂路由邏輯，同時維持交互 TLS 身分驗證。
+ **停用原始伺服器 mTLS：**您可以透過在 函數`mTLSConfig: 'off'`中設定 ，從啟用 mTLS 的原始伺服器切換到非 mTLS 原始伺服器。這可提供靈活性，以根據請求特性有條件地停用交互 TLS 身分驗證。

#### 範例：在具有相同憑證的原始伺服器 mTLS 原始伺服器之間切換
<a name="example-switching-mtls-origins"></a>

```
function handler(event) {
    var request = event.request;

    // Route to different origin based on request path
    if (request.uri.startsWith('/api/v2')) {
        request.origin = {
            domainName: 'api-v2.example.com',
            customHeaders: {},
            // Both origins must use the same certificate
        };
    }

    return request;
}
```

#### 範例：有條件停用原始伺服器 mTLS
<a name="example-disabling-mtls"></a>

```
function handler(event) {
    var request = event.request;

    // Disable mTLS for specific paths
    if (request.uri.startsWith('/public')) {
        request.origin = {
            domainName: 'public-origin.example.com',
            customHeaders: {},
            mTLSConfig: 'off'
        };
    }

    return request;
}
```

## 不支援的 CloudFront Functions 操作
<a name="unsupported-cloudfront-functions-operations"></a>

下列 CloudFront Functions 操作不支援一般可用性啟用 mTLS 的原始伺服器：

### selectRequestOriginById()
<a name="select-request-origin-by-id-function"></a>

`selectRequestOriginById()` 函數無法選取已啟用原始伺服器 mTLS 的原始伺服器。嘗試使用此函數選取已啟用 mTLS 的原始伺服器會導致驗證錯誤。

如果您的使用案例需要使用原始伺服器 mTLS 進行動態原始伺服器選擇，請`updateRequestOrigin()`改用 ，確保所有目標原始伺服器都使用相同的用戶端憑證。

### createRequestOriginGroup()
<a name="create-request-origin-group-function"></a>

`createRequestOriginGroup()` 函數不支援建立包含啟用 mTLS 之原始伺服器的原始伺服器群組。無法透過 CloudFront Functions 動態建立具有原始 mTLS 原始伺服器的原始伺服器群組。

如果您需要具有原始伺服器 mTLS 的原始伺服器容錯移轉功能，請直接在 CloudFront 分佈設定中設定原始伺服器群組，而不是在函數中動態建立原始伺服器群組。