

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

# 更新函數
<a name="update-function"></a>

您隨時都可以更新。這些變更只會對 `DEVELOPMENT` 階段中的函數版本進行。若要將更新從 `DEVELOPMENT` 階段複製到 `LIVE`，您必須[發佈函數](publish-function.md)。

您可以在 CloudFront 主控台中或使用 AWS Command Line Interface (AWS CLI) 更新函數的程式碼。

------
#### [ Console ]

**更新函數程式碼**

1. 在 [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) 登入 CloudFront 主控台，並選擇**函數**頁面。

   選擇要更新的函數。

1. 選擇**編輯**，然後進行您想要的變更：
   + 更新**詳細資訊**區段中的任何欄位。
   + 變更或移除關聯的鍵值存放區。如需鍵值存放區的詳細資訊，請參閱 [Amazon CloudFront KeyValueStore](kvs-with-functions.md)。
   + 變更函數程式碼。選擇**建置**索引標籤，進行變更，然後選擇**儲存變更**，儲存對程式碼的變更。

------
#### [ CLI ]

**若要更新函數程式碼**

1. 開啟命令列視窗。

1. 執行下列命令。

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

   ```
   aws cloudfront update-function \
       --name MaxAge \
       --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \
       --function-code fileb://function-max-age-v1.js \
       --if-match ETVABCEXAMPLE
   ```
**備註**  
您可以透過名稱和 ETag (在 `if-match` 參數中) 來識別函數。請確定您使用目前的 ETag。您可以從 [DescribeFunction](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DescribeFunction.html) API 作業取得此值。
即使您不想要變更，您也必須包含 `function-code`。
要小心 `function-config`。您應該傳遞您想要在組態中保留的所有內容。具體而言，請依下列方式處理鍵值存放區：  
若要保留現有的鍵值存放區關聯 (如果有的話)，請指定*現有*存放區的名稱。
若要變更關聯，請指定*新*鍵值存放區的名稱。
若要移除關聯，請省略 `KeyValueStoreAssociations` 參數。

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

   ```
   ETag: ETVXYZEXAMPLE
   FunctionSummary:
     FunctionConfig:
       Comment: Max Age 2 years \
       Runtime: cloudfront-js-2.0 \
       KeyValueStoreAssociations= \
         {Quantity=1, \
         Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \
     FunctionMetadata: \
       CreatedTime: '2021-04-18T20:38:56.915000+00:00' \
       FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge \
       LastModifiedTime: '2023-12-19T23:41:15.389000+00:00' \
       Stage: DEVELOPMENT \
     Name: MaxAge \
     Status: UNPUBLISHED
   ```

------

大多數資訊都是從請求中複製的。其他資訊會由 CloudFront 新增。

**備註**  
`ETag` – 每次修改鍵值存放區時，這個值都會變更。
`FunctionARN` – CloudFront 函數的 ARN。
`Stage` – 函數的階段 (`LIVE` 或 `DEVELOPMENT`)。
`Status` – 函數的狀態 (`PUBLISHED` 或 `UNPUBLISHED`)。