형식 시스템(요청 매핑)
AWS AppSync DynamoDB 해석기를 사용하여 DynamoDB 테이블을 호출하는 경우 AWS AppSync에서는 해당 호출에 사용된 각 값의 형식을 알고 있어야 합니다. 이는 DynamoDB가 GraphQL 또는 JSON보다 더 많은 유형 기본 형식(예: 세트 및 이진 데이터)을 지원하기 때문입니다. AWS AppSync는 GraphQL과 DynamoDB 간에 변환할 때 몇 가지 힌트가 필요합니다. 그렇지 않으면 테이블에서 데이터가 구성되는 방식에 대해 몇 가지 가정을 해야 합니다.
DynamoDB 데이터 유형에 대한 자세한 내용은 DynamoDB 데이터 유형 설명자 및 데이터 유형 설명서를 참조하세요.
DynamoDB 값은 단일 키-값 페어가 포함된 JSON 객체로 나타납니다. 여기서 키는 DynamoDB 형식을 지정하고 값은 값 자체를 지정합니다. 다음 예에서 키 S는 값이 문자열임을 나타내고 값 identifier는 문자열 값 자체를 나타냅니다.
{ "S" : "identifier" }
JSON 객체는 키-값 페어를 두 개 이상 포함할 수 없습니다. 키-값 페어를 두 개 이상 지정하면 요청 매핑 문서가 구문 분석되지 않습니다.
요청 매핑 문서에서 값을 지정해야 하는 모든 곳에 DynamoDB 값을 사용할 수 있습니다. 이렇게 해야 하는 위치로는 key 및 attributeValue 섹션과 표현식 섹션 중 expressionValues 섹션이 있습니다. 다음 예에서는 DynamoDB 문자열 값 identifier를 key 섹션(GetItem 요청 매핑 문서)의 id 필드에 할당합니다.
"key" : { "id" : { "S" : "identifier" } }
지원되는 유형
AWS AppSync는 다음 DynamoDB 스칼라, 문서 및 집합 형식을 지원합니다.
- String 형식
S -
단일 문자열 값. DynamoDB String 값은 다음과 같이 표시됩니다.
{ "S" : "some string" }사용 예제는 다음과 같습니다.
"key" : { "id" : { "S" : "some string" } } - String set 형식
SS -
문자열 값 집합. DynamoDB String Set 값은 다음과 같이 표시됩니다.
{ "SS" : [ "first value", "second value", ... ] }사용 예제는 다음과 같습니다.
"attributeValues" : { "phoneNumbers" : { "SS" : [ "+1 555 123 4567", "+1 555 234 5678" ] } } - Number 형식
N -
단일 숫자 값. DynamoDB Number 값은 다음과 같이 표시됩니다.
{ "N" : 1234 }사용 예제는 다음과 같습니다.
"expressionValues" : { ":expectedVersion" : { "N" : 1 } } - Number set 형식
NS -
숫자 값 집합. DynamoDB Number Set 값은 다음과 같이 표시됩니다.
{ "NS" : [ 1, 2.3, 4 ... ] }사용 예제는 다음과 같습니다.
"attributeValues" : { "sensorReadings" : { "NS" : [ 67.8, 12.2, 70 ] } } - Binary 형식
B -
이진 값. DynamoDB Binary 값은 다음과 같이 표시됩니다.
{ "B" : "SGVsbG8sIFdvcmxkIQo=" }값은 실제로 문자열이며, 여기서 문자열은 이진 데이터의 base64 인코딩 표현입니다. AWS AppSync는 이 문자열을 DynamoDB로 보내기 전에 이 문자열을 이진 값으로 다시 디코딩합니다. AWS AppSync는 RFC 2045에 정의된 base64 디코딩 체계를 사용합니다. base64 알파벳에 없는 모든 문자는 무시됩니다.
사용 예제는 다음과 같습니다.
"attributeValues" : { "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" } } - Binary set 형식
BS -
이진 값 집합. DynamoDB Binary Set 값은 다음과 같이 표시됩니다.
{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }값은 실제로 문자열이며, 여기서 문자열은 이진 데이터의 base64 인코딩 표현입니다. AWS AppSync는 이 문자열을 DynamoDB로 보내기 전에 이 문자열을 이진 값으로 다시 디코딩합니다. AWS AppSync는 RFC 2045에 정의된 base64 디코딩 체계를 사용합니다. base64 알파벳에 없는 모든 문자는 무시됩니다.
사용 예제는 다음과 같습니다.
"attributeValues" : { "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] } } - Boolean 형식
BOOL -
부울 값. DynamoDB Boolean 값은 다음과 같이 표시됩니다.
{ "BOOL" : true }true및false만 유효한 값입니다.사용 예제는 다음과 같습니다.
"attributeValues" : { "orderComplete" : { "BOOL" : false } } - List 형식
L -
기타 지원되는 DynamoDB 값 목록입니다. DynamoDB List 값은 다음과 같이 표시됩니다.
{ "L" : [ ... ] }값은 복합 값으로, 목록에는 지원되는 DynamoDB 값(다른 목록 포함)이 0개 이상 포함될 수 있습니다. 또한 목록에는 여러 형식이 혼합되어 포함될 수 있습니다.
사용 예제는 다음과 같습니다.
{ "L" : [ { "S" : "A string value" }, { "N" : 1 }, { "SS" : [ "Another string value", "Even more string values!" ] } ] } - Map 형식
M -
지원되는 다른 DynamoDB 값의 키-값 페어로 구성된 순서 없는 모음을 나타냅니다. DynamoDB Map 값은 다음과 같이 표시됩니다.
{ "M" : { ... } }맵에는 키-값 페어가 0개 이상 포함될 수 있습니다. 키는 문자열이어야 하며 값은 지원되는 모든 DynamoDB 값(다른 맵 포함)일 수 있습니다. 또한 맵에는 여러 형식이 혼합되어 포함될 수 있습니다.
사용 예제는 다음과 같습니다.
{ "M" : { "someString" : { "S" : "A string value" }, "someNumber" : { "N" : 1 }, "stringSet" : { "SS" : [ "Another string value", "Even more string values!" ] } } } - Null 형식
NULL -
null 값. DynamoDB Null 값은 다음과 같이 표시됩니다.
{ "NULL" : null }사용 예제는 다음과 같습니다.
"attributeValues" : { "phoneNumbers" : { "NULL" : null } }
각 형식에 대한 자세한 내용은 DynamoDB 문서를 참조하십시오.