Я пытаюсь вставить элемент в таблицу DynamoDB, используя Curl.Я знаю, что есть AWS SDK и AWS-CLI, но согласно этому документу кажется, что возможно также вставить элемент через простой HTTP API или только Curl
.
В любом случаеЯ пытался это некоторое время, но я продолжаю получать эту ошибку в ответ:
{"__type":"com.amazon.coral.service#SerializationException"}
Может кто-нибудь сказать мне, что я делаю неправильно?
Вот мой сценарий:
$date = date('r');
$priv_key = getenv('AWS_SECRET_ACCESS_KEY');
$access_key = getenv('AWS_ACCESS_KEY_ID');
$length = strlen($value);
$signature = base64_encode(hash_hmac('sha256', $date, $priv_key, TRUE));
$cmd = "curl -d @test.json -H \"Host: dynamodb.us-east-1.amazonaws.com;\" -H \"Accept-Encoding: identity\" -H \"Content-Length: $length\" -H \"User-Agent: Curl\" -H \"Content-Type: application/x-amz-json-1.0\" -H \"Authorization: $access_key:$signature\" -H \"X-Amz-Date: $date\" -H \"X-Amz-Target: DynamoDB_20120810.PutItem\" https://dynamodb.us-east-1.amazonaws.com\"";
print ($cmd);
print system($cmd);
А вот содержимое test.json
(файл, отправляемый Curl)
{
"TableName": "cache",
"Key": {
"id": {"S": "1"},
"data": {"S": "test"}
}
}
Опять язнаете, я могу очень легко сделать это через SDK, но я просто хочу знать, почему это не работает?Я делаю все в соответствии с документами, чтобы понять внутреннюю работу SDK.Есть идеи?