

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

# 建立 CloudFront 連線函數以進行交互 TLS （檢視器） 驗證
<a name="create-connection-functions"></a>

您會分兩個階段建立 CloudFront Connection Function：

1. 建立函數程式碼做為 JavaScript。您可以從 CloudFront 主控台使用預設範例或自行撰寫。如需詳細資訊，請參閱下列主題：
   + 寫入 mTLS 驗證的 CloudFront 連線函數程式碼
   + CloudFront Connection Function 事件結構和回應格式
   + 連線函數程式碼範例

1. 使用 CloudFront 建立連線函數並包含您的程式碼。程式碼存在於函數內部 (而不是引用形式)。

**Topics**
+ [CloudFront 主控台](#create-connection-function-console)
+ [AWS CLI](#create-connection-function-cli)

## CloudFront 主控台
<a name="create-connection-function-console"></a>

**建立連線函數**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 選擇**建立函數**。

1. 輸入 中唯一的函數名稱 AWS 帳戶，選擇**連線函數**做為函數類型，然後選擇**繼續**。

1. 新連線函數的詳細資訊頁面隨即出現。
**注意**  
連線函數僅支援 JavaScript 執行期 2.0。若要在函數中使用 CloudFront Connection Function KeyValueStore 整合，您必須使用此執行時間版本。

1. 在**函數程式碼**區段中，選擇**建置**索引標籤，然後輸入您的連線函數程式碼。組建索引標籤中包含的範例程式碼說明 Connection Function 程式碼的基本語法。

1. 選擇**儲存變更**。

1. 如果連線函數程式碼使用 KeyValueStore 進行憑證撤銷檢查或裝置驗證，您必須建立 KeyValueStore 的關聯。

   您可以在第一次建立函數時建立 KeyValueStore 的關聯。或者，您可以稍後透過關聯連線函數來建立關聯。

   若要立即建立 KeyValueStore 的關聯，請遵循下列步驟：
   + 前往**關聯 KeyValueStore** 區段，然後選擇**關聯現有的 KeyValueStore**。
   + 選取包含連線函數憑證資料的 KeyValueStore，然後選擇**關聯 KeyValueStore**。

   CloudFront 會立即將存放區與該函數建立關聯。您無需儲存函數。

## AWS CLI
<a name="create-connection-function-cli"></a>

如果您使用 AWS CLI，通常會先在 檔案中建立連線函數程式碼，然後使用 建立函數 AWS CLI。

**建立連線函數**

1. 在 檔案中建立連線函數程式碼，並將其存放在電腦可連線的目錄中。

1. 執行命令，如範例所示。此範例會使用 `fileb://` 標記法來傳入檔案。它還會包括換行符號，讓命令更易於讀取。

   ```
   aws cloudfront create-connection-function \
       --name CertificateValidator \
       --connection-function-config '{
           "Comment":"Device certificate validation",
           "Runtime":"cloudfront-js-2.0",
           "KeyValueStoreAssociations":{
               "Quantity":1,
               "Items":[{
                   "KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
               }]
           }
       }' \
       --connection-function-code fileb://certificate-validator.js
   ```
**注意**  
**執行期** – 連線函數僅支援 JavaScript 執行期 2.0 (cloudfront-js-2.0)。
**KeyValueStoreAssociations** – 如果您的連線函數使用 KeyValueStore 進行憑證驗證，您可以在第一次建立函數時關聯 KeyValueStore。或者，您可以稍後使用 update-connection-function 建立關聯。數量一律為 1，因為每個連線函數只能有一個與其相關聯的 KeyValueStore。

1. 如果命令成功執行，您會看到如下所示的輸出。

   ```
   ETag: ETVABCEXAMPLE
   ConnectionFunctionSummary:
     ConnectionFunctionConfig:
       Comment: Device certificate validation
       Runtime: cloudfront-js-2.0
       KeyValueStoreAssociations:
         Quantity: 1
         Items:
           - KeyValueStoreARN: arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
     ConnectionFunctionMetadata:
       CreatedTime: '2024-09-04T16:32:54.292000+00:00'
       ConnectionFunctionARN: arn:aws:cloudfront::111122223333:connection-function/CertificateValidator
       LastModifiedTime: '2024-09-04T16:32:54.292000+00:00'
       Stage: DEVELOPMENT
     Name: CertificateValidator
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/connection-function/arn:aws:cloudfront:::connection-function/CertificateValidator
   ```

   大多數資訊都是從請求中複製的。其他資訊會由 CloudFront 新增。
**注意**  
**ETag** – 每次修改連線函數時，此值都會變更。您需要此值才能更新或發佈函數。
**階段** – 在 DEVELOPMENT 階段啟動新的連線函數。您必須先發佈函數以將其移至 LIVE 階段，再將其與分佈建立關聯。
**狀態** – 函數狀態為未發佈，直到您將其發佈至 LIVE 階段為止。