$util.dynamodb의 DynamoDB 헬퍼 - AWS AppSync

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

$util.dynamodb의 DynamoDB 헬퍼

참고

이제 우리는 주로 APPSYNC_JS 런타임과 해당 문서를 지원합니다. 여기에서 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

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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 유틸리티

$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" }