DynamoDB Low-Level API 는 실제 DynamoDB 에 요청하는 마지막 단계 인터페이스로, 이 HTTP(S) 요청은 올바른 형식이어야 한다.
- HTTP(S) 요청은 POST 방식이어야 한다.
- Authorization 헤더에는 DynamoDB 가 요청을 인증하는 데 필요한 정보가 포함되어야 한다.
- X-Amz-Target 헤더에는 DynamoDB 작업의 이름(GetItem, PutItem 등...) 이 포함되어야 한다.
- 요청 본문은 JSON 형식이어야 한다.
응답도 JSON 형식으로 반환된다.
DynamoDB 가 요청을 처리할 수 없는 경우, HTTP 오류 코드와 메시지를 반환하므로 오류 처리를 해주면 된다.
이런 요청과 응답 모두 AWS SDK 가 구성하므로 개발자는 어플리케이션 로직에만 집중하면 된다.
Pets Table 에서 특정 키의 Item 을 GetItem 으로 읽어오는 요청 예)
POST / HTTP/1.1 Host: dynamodb.<region>.<domain>; Accept-Encoding: identity Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.0 Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> X-Amz-Date: <Date> X-Amz-Target: DynamoDB_20120810.GetItem { "TableName": "Pets", "Key": { "AnimalType": {"S": "Dog"}, "Name": {"S": "Fido"} } } | cs |
Data Type Descriptors
요청/응답 JSON 데이터에는 각 Attribute 의 데이터 타입 서술자(Data Type Descriptors) 를 포함시켜야 한다.
String (S), Number (N), Binary (B), Boolean (BOOL), Null (NULL), Map (M), List (L), String Set (SS), Number Set (NS), Binary Set (BS)
특히, JSON 으로 요청할 때 int, long, double 같은 숫자 형식은 DynamoDB 의 데이터 타입에 정확히 매핑하기 위해 숫자값을 문자열로 변환해야 한다.
binary 데이터를 DynamoDB 로 보내려면 Base64 형식으로 인코딩해야 한다. (DynamoDB 는 요청을 받아 Base64 를 다시 binary 로 디코딩한다.)
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,