

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# $util.dynamodb의 DynamoDB 도우미
<a name="dynamodb-helpers-in-util-dynamodb"></a>

**참고**  
이제 우리는 주로 APPSYNC\_JS 런타임과 해당 문서를 지원합니다. [여기](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)에서 APPSYNC\_JS 런타임과 해당 안내서를 사용해 보세요.

`$util.dynamodb`에는 Amazon DynamoDB에 데이터 쓰기 및 읽기를 더 용이하게 하는 도우미 메서드가 포함되어 있습니다(예: 자동 유형 매핑 및 형식 지정). 이러한 메서드는 기본 유형 및 목록을 적절한 DynamoDB 입력 형식(`{ "TYPE" : VALUE }` 형식의 `Map`)에 자동으로 매핑하도록 설계되어 있습니다.

예를 들어, 이전에는 DynamoDB에서 새 항목을 생성하는 요청 매핑 템플릿은 다음과 같았습니다.

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : { "S" : "$util.autoId()" }
    },
    "attributeValues" : {
         "title" : { "S" : $util.toJson($ctx.args.title) },
         "author" : { "S" : $util.toJson($ctx.args.author) },
         "version" : { "N", $util.toJson($ctx.args.version) }
    }
}
```

객체에 필드를 추가하려는 경우 스키마에서 GraphQL 쿼리를 업데이트하고 요청 매핑 템플릿도 업데이트해야 했습니다. 그러나 이제는 스키마에 추가되는 새 필드를 자동으로 선택해 올바른 형식으로 DynamoDB에 추가하도록 요청 매핑 템플릿을 재구성할 수 있습니다.

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
```

이전 예에서는 `$util.dynamodb.toDynamoDBJson(...)` 도우미를 사용하여 생성된 ID를 자동으로 받아 문자열 속성의 DynamoDB 표현으로 변환했습니다. 그런 다음 모든 인수를 받아 DynamoDB 표현으로 변환하고 템플릿의 `attributeValues` 필드에 출력했습니다.

각 도우미에는 객체(예: `$util.dynamodb.toString(...)`)를 반환하는 버전과 객체를 JSON 문자열(예: `$util.dynamodb.toStringJson(...)`)로 반환하는 버전 두 가지가 있습니다. 이전 예에서는 데이터를 JSON 문자열로 반환하는 버전을 사용했습니다. 템플릿에 사용하기 전에 객체를 조작하려는 경우 다음과 같이 대신 객체를 반환하도록 선택할 수 있습니다.

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },

    #set( $myFoo = $util.dynamodb.toMapValues($ctx.args) )
    #set( $myFoo.version = $util.dynamodb.toNumber(1) )
    #set( $myFoo.timestamp = $util.dynamodb.toString($util.time.nowISO8601()))

    "attributeValues" : $util.toJson($myFoo)
}
```

이전 예에서는 최종적으로 `version`을 사용하여 템플릿의 `timestamp` 필드에 출력하기 전에 JSON 문자열 대신 맵으로 변환된 인수를 반환한 다음 `attributeValues` 및 `$util.toJson(...)` 필드에 추가합니다.

각 도우미의 JSON 버전은 `$util.toJson(...)`에서 JSON 이외 버전을 래핑하는 것과 동일합니다. 예를 들어 다음 문은 정확하게 동일합니다.

```
$util.toStringJson("Hello, World!")
$util.toJson($util.toString("Hello, World!"))
```

## toDynamoDB
<a name="utility-helpers-in-toDynamoDB"></a>

### toDynamoDB 유틸리티 목록
<a name="utility-helpers-in-toDynamoDB-list"></a>

** `$util.dynamodb.toDynamoDB(Object) : Map` **  
입력 객체를 적절한 DynamoDB 표현으로 변환하는 DynamoDB용 일반 객체 변환 도구입니다. 이 도구는 몇 가지 형식을 표현하는 방법에 대해 독자적인 방식을 가지고 있습니다. 예를 들어 집합(‘SS’, ‘NS’, ‘BS’)보다는 목록(‘L’)을 사용합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  
**문자열 예제**  

```
Input:      $util.dynamodb.toDynamoDB("foo")
Output:     { "S" : "foo" }
```
**숫자 예제**  

```
Input:      $util.dynamodb.toDynamoDB(12345)
Output:     { "N" : 12345 }
```
**부울 예제**  

```
Input:      $util.dynamodb.toDynamoDB(true)
Output:     { "BOOL" : true }
```
**록 예제**  

```
Input:      $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ])
Output:     {
               "L" : [
                   { "S" : "foo" },
                   { "N" : 123 },
                   {
                       "M" : {
                           "bar" : { "S" : "baz" }
                       }
                   }
               ]
           }
```
**맵 예제**  

```
Input:      $util.dynamodb.toDynamoDB({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "M" : {
                   "foo"  : { "S" : "bar" },
                   "baz"  : { "N" : 1234 },
                   "beep" : {
                       "L" : [
                           { "S" : "boop" }
                       ]
                   }
               }
           }
```

****`$util.dynamodb.toDynamoDBJson(Object) : String`** **  
`$util.dynamodb.toDynamoDB(Object) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toString 유틸리티
<a name="utility-helpers-in-toString"></a>

### toString 유틸리티 목록
<a name="utility-helpers-in-toString-list"></a>

****`$util.dynamodb.toString(String) : String`** **  
입력 문자열을 DynamoDB 문자열 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toString("foo")
Output:     { "S" : "foo" }
```

** `$util.dynamodb.toStringJson(String) : Map` **  
`$util.dynamodb.toString(String) : String`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.toStringSet(List<String>) : Map` **  
문자열이 포함된 목록을 DynamoDB 문자열 집합 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toStringSet([ "foo", "bar", "baz" ])
Output:     { "SS" : [ "foo", "bar", "baz" ] }
```

** `$util.dynamodb.toStringSetJson(List<String>) : String` **  
`$util.dynamodb.toStringSet(List<String>) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toNumber 유틸리티
<a name="utility-helpers-in-toNumber"></a>

### toNumber 유틸리티 목록
<a name="utility-helpers-in-toNumber-list"></a>

** `$util.dynamodb.toNumber(Number) : Map` **  
숫자를 DynamoDB 숫자 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toNumber(12345)
Output:     { "N" : 12345 }
```

** `$util.dynamodb.toNumberJson(Number) : String` **  
`$util.dynamodb.toNumber(Number) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.toNumberSet(List<Number>) : Map` **  
숫자 목록을 DynamoDB 숫자 집합 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toNumberSet([ 1, 23, 4.56 ])
Output:     { "NS" : [ 1, 23, 4.56 ] }
```

** `$util.dynamodb.toNumberSetJson(List<Number>) : String` **  
`$util.dynamodb.toNumberSet(List<Number>) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toBinary 유틸리티
<a name="utility-helpers-in-toBinary"></a>

### toBinary 유틸리티 목록
<a name="utility-helpers-in-toBinary-list"></a>

** `$util.dynamodb.toBinary(String) : Map` **  
base64 문자열로 인코딩된 이진 데이터를 DynamoDB 이진 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toBinary("foo")
Output:     { "B" : "foo" }
```

** `$util.dynamodb.toBinaryJson(String) : String` **  
`$util.dynamodb.toBinary(String) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.toBinarySet(List<String>) : Map` **  
base64 문자열로 인코딩된 이진 데이터 목록을 DynamoDB 이진수 집합 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toBinarySet([ "foo", "bar", "baz" ])
Output:     { "BS" : [ "foo", "bar", "baz" ] }
```

** `$util.dynamodb.toBinarySetJson(List<String>) : String` **  
`$util.dynamodb.toBinarySet(List<String>) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toBoolean 유틸리티
<a name="utility-helpers-in-toBoolean"></a>

### toBoolean 유틸리티 목록
<a name="utility-helpers-in-toBoolean-list"></a>

** `$util.dynamodb.toBoolean(Boolean) : Map` **  
부울을 적절한 DynamoDB 부울 형식으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toBoolean(true)
Output:     { "BOOL" : true }
```

** `$util.dynamodb.toBooleanJson(Boolean) : String` **  
`$util.dynamodb.toBoolean(Boolean) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toNull 유틸리티
<a name="utility-helpers-in-toNull"></a>

### toNull 유틸리티 목록
<a name="utility-helpers-in-toNull-list"></a>

** `$util.dynamodb.toNull() : Map` **  
null을 DynamoDB null 형식으로 반환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toNull()
Output:     { "NULL" : null }
```

** `$util.dynamodb.toNullJson() : String` **  
`$util.dynamodb.toNull() : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toList 유틸리티
<a name="utility-helpers-in-toList"></a>

### toList 유틸리티 목록
<a name="utility-helpers-in-toList-list"></a>

****`$util.dynamodb.toList(List) : Map`** **  
객체 목록을 DynamoDB 목록 형식으로 변환합니다. 목록의 각 항목 역시 적절한 DynamoDB 형식으로 변환됩니다. 이 도구는 몇 가지 중첩 객체를 표현하는 방법에 대해 독자적인 방식을 가지고 있습니다. 예를 들어 집합(‘SS’, ‘NS’, ‘BS’)보다는 목록(‘L’)을 사용합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toList([ "foo", 123, { "bar" : "baz" } ])
Output:     {
               "L" : [
                   { "S" : "foo" },
                   { "N" : 123 },
                   {
                       "M" : {
                           "bar" : { "S" : "baz" }
                       }
                   }
               ]
           }
```

** `$util.dynamodb.toListJson(List) : String` **  
`$util.dynamodb.toList(List) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## toMap 유틸리티
<a name="utility-helpers-in-toMap"></a>

### toMap 유틸리티 목록
<a name="utility-helpers-in-toMap-list"></a>

** `$util.dynamodb.toMap(Map) : Map` **  
맵을 DynamoDB 맵 형식으로 변환합니다. 맵의 각 값 역시 적절한 DynamoDB 형식으로 변환됩니다. 이 도구는 몇 가지 중첩 객체를 표현하는 방법에 대해 독자적인 방식을 가지고 있습니다. 예를 들어 집합(‘SS’, ‘NS’, ‘BS’)보다는 목록(‘L’)을 사용합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toMap({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "M" : {
                   "foo"  : { "S" : "bar" },
                   "baz"  : { "N" : 1234 },
                   "beep" : {
                       "L" : [
                           { "S" : "boop" }
                       ]
                   }
               }
           }
```

** `$util.dynamodb.toMapJson(Map) : String` **  
`$util.dynamodb.toMap(Map) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.toMapValues(Map) : Map` **  
각 값이 적절한 DynamoDB 형식으로 변환된 탭의 사본을 생성합니다. 이 도구는 몇 가지 중첩 객체를 표현하는 방법에 대해 독자적인 방식을 가지고 있습니다. 예를 들어 집합(‘SS’, ‘NS’, ‘BS’)보다는 목록(‘L’)을 사용합니다.  

```
Input:      $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "foo"  : { "S" : "bar" },
               "baz"  : { "N" : 1234 },
               "beep" : {
                   "L" : [
                       { "S" : "boop" }
                   ]
               }
           }
```
이는 전체 속성 값 자체가 아니라 DynamoDB 속성 값의 내용만 반환하기 때문에 `$util.dynamodb.toMap(Map) : Map`과 약간 다릅니다. 예를 들어 다음 문은 정확하게 동일합니다.  

```
$util.dynamodb.toMapValues($map)
$util.dynamodb.toMap($map).get("M")
```

** `$util.dynamodb.toMapValuesJson(Map) : String` **  
`$util.dynamodb.toMapValues(Map) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

## S3Object 유틸리티
<a name="utility-helpers-in-S3Object"></a>

### S3Object 유틸리티 목록
<a name="utility-helpers-in-S3Object-list"></a>

** `$util.dynamodb.toS3Object(String key, String bucket, String region) : Map` **  
키, 버킷 및 리전을 DynamoDB S3 객체 표현으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toS3Object("foo", "bar", region = "baz")
Output:     { "S" : "{ \"s3\" : { \"key\" : \"foo", \"bucket\" : \"bar", \"region\" : \"baz" } }" }
```

** `$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String` **  
`$util.dynamodb.toS3Object(String key, String bucket, String region) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map` **  
키, 버킷, 리전 및 선택적 버전을 DynamoDB S3 객체 표현으로 변환합니다. DynamoDB 속성 값을 설명하는 객체를 반환합니다.  

```
Input:      $util.dynamodb.toS3Object("foo", "bar", "baz", "beep")
Output:     { "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }
```

** `$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String` **  
`$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map`과 동일하지만 DynamoDB 속성 값을 JSON 인코딩 문자열로 반환합니다.

** `$util.dynamodb.fromS3ObjectJson(String) : Map` **  
DynamoDB S3 객체의 문자열 값을 수락하고 키, 버킷, 리전 및 선택적 버전을 포함하는 맵을 반환합니다.  

```
Input:      $util.dynamodb.fromS3ObjectJson({ "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" })
Output:     { "key" : "foo", "bucket" : "bar", "region" : "baz", "version" : "beep" }
```