

# 関数を更新する
<a name="update-function"></a>

関数はいつでも更新できます。変更は、`DEVELOPMENT` ステージ内の関数のバージョンに対してのみ行われます。更新を `DEVELOPMENT` ステージから `LIVE` にコピーするには、[関数を発行](publish-function.md)する必要があります。

関数のコードを更新するには、CloudFront コンソールまたは AWS Command Line Interface (AWS CLI) を使用できます。

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

**関数コードを更新するには**

1. CloudFront コンソール ([https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions)) にサインインし、**[関数]** ページを選択します。

   対象の関数を選択します。

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`)。