

# 함수 업데이트
<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`)입니다.