

# 키 값 데이터로 작업
<a name="kvs-with-functions-kvp"></a>

이 주제에서는 기존 키 값 저장소에 키 값 페어를 추가하는 방법을 설명합니다. 키 값 저장소를 처음 생성할 때 키 값 페어를 포함하려면 [키 값 저장소 생성](kvs-with-functions-create.md) 섹션을 참조하세요.

**Topics**
+ [키 값 페어 작업(콘솔)](#kvs-with-functions-kvp-using-console)
+ [CloudFront KeyValueStore 소개](#kvs-with-functions-api-describe)
+ [키 값 페어 작업(AWS CLI)](#work-with-kvs-cli-keys)
+ [키 값 페어 작업(API)](#kvs-with-functions-kvp-using-api)

## 키 값 페어 작업(콘솔)
<a name="kvs-with-functions-kvp-using-console"></a>

CloudFront 콘솔을 사용하여 키 값 페어로 작업할 수 있습니다.

**키-값 페어로 작업하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions)에 있는 CloudFront 콘솔에서 **함수** 페이지를 엽니다.

1. **KeyValueStore** 탭을 선택합니다.

1. 변경할 키 값 저장소를 선택합니다.

1. **키 값 페어** 섹션에서 **편집** 버튼을 선택합니다.

1. 키 값 페어를 추가하거나, 키 값 페어를 삭제하거나, 기존 키 값 페어의 값을 변경할 수 있습니다.

1. 작업을 마쳤으면 **변경 내용 저장**을 선택합니다.

## CloudFront KeyValueStore 소개
<a name="kvs-with-functions-api-describe"></a>

**작은 정보**  
CloudFront KeyValueStore API는 인증에 서명 버전 4A(SigV4A)를 사용하는 글로벌 서비스입니다. SigV4A에서 임시 자격 증명을 사용하려면 버전 2 세션 토큰이 필요합니다. 자세한 내용은 [CloudFront KeyValueStore API에 임시 자격 증명 사용](cloudfront-function-restrictions.md#regional-endpoint-for-key-value-store) 섹션을 참조하세요.

AWS Command Line Interface(AWS CLI) 또는 자체 코드를 사용하여 CloudFront KeyValueStore API를 직접 호출하는 경우 다음 섹션을 참조하세요.

키 값 저장소와 해당 키 값 페어를 사용할 때 직접적으로 호출하는 서비스는 사용 사례에 따라 달라집니다.
+ **기존 키 값 저장소에서 키 값 페어를 사용하려면 CloudFront KeyValueStore 서비스를 사용합니다.
+ 키 값 저장소를 처음 생성할 때 키 값 저장소에 키 값 페어를 포함하려면 CloudFront 서비스를 사용합니다.**

CloudFront API와 CloudFront KeyValueStore API에는 모두 `DescribeKeyValueStore` 작업이 있습니다. 직접 호출하는 이유는 여러 가지 입니다. 차이점을 이해하려면 다음 테이블을 참조하세요.


|  | CloudFront DescribeKeyValueStore API | CloudFront KeyValueStore DescribeKeyValueStore API | 
| --- | --- | --- | 
| 키 값 저장소 관련 데이터 |  키 값 저장소 자체가 마지막으로 수정된 상태 및 날짜와 같은 데이터를 반환합니다.  |  스토리지 리소스의 **콘텐츠(저장소의 키 값 페어, 콘텐츠 크기)에 대한 데이터를 제공합니다.  | 
| 키 값 저장소를 식별하는 데이터 |  키 값 저장소의 `ETag`, UUID, ARN을 반환합니다.  |  키 값 저장소의 `ETag`, ARN을 반환합니다.  | 

**참고**  
각 DescribeKeyValueStore 작업은 서로 다른 **`ETag`를 반환합니다. `ETags`는 서로 바꿔서 사용할 수 없습니다.
API 작업을 직접적으로 호출하여 작업을 완료할 때는 적절한 API에서 `ETag`를 지정해야 합니다. 예를 들어 CloudFront KeyValueStore [DeleteKey](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_DeleteKey.html) 작업에서는 CloudFront KeyValueStore [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_DescribeKeyValueStore.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_DescribeKeyValueStore.html) 작업에서 반환한 `ETag`를 지정합니다.
CloudFront KeyValueStore를 사용하여 CloudFront Functions을 호출하는 경우 함수 호출 중에 키 값 저장소의 값이 업데이트되거나 변경되지 않습니다. 업데이트는 함수 호출 사이에 처리됩니다.

## 키 값 페어 작업(AWS CLI)
<a name="work-with-kvs-cli-keys"></a>

CloudFront KeyValueStore에 대해 다음 AWS Command Line Interface 명령을 실행할 수 있습니다.

**Contents**
+ [키 값 페어 나열](#kvs-cli-list-keys)
+ [키 값 페어 가져오기](#kvs-cli-get-keys)
+ [키 값 저장소 설명](#kvs-cli-describe-keys)
+ [키 값 페어 생성](#kvs-cli-create-keys)
+ [키 값 페어 삭제](#kvs-cli-delete-keys)
+ [키 값 페어 업데이트](#kvs-cli-update-key)

### 키 값 페어 나열
<a name="kvs-cli-list-keys"></a>

키 값 저장소의 키 값 페어를 나열하려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore list-keys \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example
```

**응답**

```
{
    "Items": [
        {
            "Key": "key1",
            "Value": "value1"
        }
    ]
}
```

### 키 값 페어 가져오기
<a name="kvs-cli-get-keys"></a>

키 값 저장소의 키 값 페어를 가져오려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore get-key \
    --key=key1 \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example
```

**응답**

```
{
    "Key": "key1",
    "Value": "value1",
    "ItemCount": 1,
    "TotalSizeInBytes": 11
}
```

### 키 값 저장소 설명
<a name="kvs-cli-describe-keys"></a>

키 값 저장소를 설명하려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore describe-key-value-store \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example
```

**응답**

```
{
    "ETag": "KV1F83G8C2ARO7P",
    "ItemCount": 1,
    "TotalSizeInBytes": 11,
    "KvsARN": "arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example",
    "Created": "2024-05-08T07:48:45.381000-07:00",
    "LastModified": "2024-08-05T13:50:58.843000-07:00",
    "Status": "READY"
}
```

### 키 값 페어 생성
<a name="kvs-cli-create-keys"></a>

키 값 저장소에 키 값 페어를 생성하려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore put-key \
    --if-match=KV1PA6795UKMFR9 \
    --key=key2 \
    --value=value2 \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example
```

**응답**

```
{
    "ETag": "KV13V1IB3VIYZZH",
    "ItemCount": 3,
    "TotalSizeInBytes": 31
}
```

### 키 값 페어 삭제
<a name="kvs-cli-delete-keys"></a>

키 값 페어를 삭제하려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore delete-key \
    --if-match=KV13V1IB3VIYZZH \
    --key=key1 \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example
```

**출력**

```
{
    "ETag": "KV1VC38T7YXB528",
    "ItemCount": 2,
    "TotalSizeInBytes": 22
}
```

### 키 값 페어 업데이트
<a name="kvs-cli-update-key"></a>

`update-keys` 명령을 사용하여 둘 이상의 키 값 페어를 업데이트할 수 있습니다. 예를 들어 기존 키 값 페어를 삭제하고 다른 키 값 페어를 만들려면 다음 명령을 실행합니다.

```
aws cloudfront-keyvaluestore update-keys \
    --if-match=KV2EUQ1WTGCTBG2 \
    --kvs-arn=arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example \
    --deletes '[{"Key":"key2"}]' \
    --puts '[{"Key":"key3","Value":"value3"}]'
```

**응답**

```
{
    "ETag": "KV3AEGXETSR30VB",
    "ItemCount": 3,
    "TotalSizeInBytes": 28
}
```

## 키 값 페어 작업(API)
<a name="kvs-with-functions-kvp-using-api"></a>

이 섹션을 따라 프로그래밍 방식으로 키 값 페어 작업 

**Contents**
+ [키 값 저장소에 대한 참조 가져오기](#kvs-with-functions-api-ref)
+ [키 값 저장소의 키 값 페어 변경](#kvs-with-functions-api-actions)
+ [CloudFront 키 값 저장소 예제 코드](#example-code-key-value-store)

### 키 값 저장소에 대한 참조 가져오기
<a name="kvs-with-functions-api-ref"></a>

CloudFront KeyValueStore API를 사용하여 쓰기 작업을 직접적으로 호출할 때는 키 값 저장소의 ARN과 `ETag`를 지정해야 합니다. 이 데이터를 가져오려면 다음 작업을 수행합니다.

**키 값 저장소에 대한 참조를 가져오려면**

1. [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListKeyValueStores.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListKeyValueStores.html) API 작업을 사용하여 키 값 저장소 목록을 가져옵니다. 변경할 키 값 저장소를 찾습니다.

1. [CloudFrontKeyValueStore DescribeKeyValueStore API 작업](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_DescribeKeyValueStore.html)을 사용하여 이전 단계의 키 값 저장소를 지정합니다.

   응답에는 키 값 저장소의 ARN과 `ETag`가 포함됩니다.
   + 다음 예와 같이 ARN에는 AWS 계정 번호, 상수 `key-value-store`, UUID가 포함됩니다.

     `arn:aws:cloudfront::123456789012:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`
   + `ETag`는 다음 예와 같습니다.

     `ETVABCEXAMPLE2`

### 키 값 저장소의 키 값 페어 변경
<a name="kvs-with-functions-api-actions"></a>

업데이트하려는 키 값 페어가 들어 있는 키 값 저장소를 지정할 수 있습니다.

다음 CloudFront KeyValueStore API 작업을 참조하세요.
+ [CloudFrontKeyValueStore DeleteKey](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_DeleteKey.html) – 키 값 페어를 삭제합니다.
+ [CloudFrontKeyValueStore GetKey](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_GetKey.html) – 키 값 페어를 반환합니다.
+ [CloudFrontKeyValueStore ListKeys](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_ListKeys.html) – 키 값 페어 목록을 반환합니다.
+ [CloudFrontKeyValueStore PutKey](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_PutKey.html) – 다음과 같은 작업을 수행할 수 있습니다.
  + 새 키 이름과 값을 지정하여 하나의 키 값 저장소에 키 값 페어를 생성합니다.
  + 기존 키 이름과 새 키 값을 지정하여 기존 키 값 페어에 다른 값을 설정합니다.
+ [CloudFrontKeyValueStore UpdateKeys](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_UpdateKeys.html) - 전부 또는 전무 작업 하나로 다음 작업 중 하나 이상을 수행할 수 있습니다.
  + 하나 이상의 키 값 페어 삭제
  + 새 키 값 페어를 하나 이상 생성
  + 하나 이상의 기존 키 값 페어에 다른 값 설정

### CloudFront 키 값 저장소 예제 코드
<a name="example-code-key-value-store"></a>

**Example**  
다음 코드는 키 값 저장소에 대한 `DescribeKeyValueStore` API 작업을 직접적으로 호출하는 방법을 보여줍니다.  

```
const {
  CloudFrontKeyValueStoreClient,
  DescribeKeyValueStoreCommand,
} = require("@aws-sdk/client-cloudfront-keyvaluestore");

require("@aws-sdk/signature-v4-crt");

(async () => {
  try {
    const client = new CloudFrontKeyValueStoreClient({
      region: "us-east-1"
    });
    const input = {
      KvsARN: "arn:aws:cloudfront::123456789012:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    };
    const command = new DescribeKeyValueStoreCommand(input);

    const response = await client.send(command);
  } catch (e) {
    console.log(e);
  }
})();
```