【发布时间】:2018-06-01 08:47:05
【问题描述】:
我正在尝试使用 Curl 将项目插入到 DynamoDB 表中。我知道有 AWS SDK 和 AWS-CLI 但as per this document 似乎也可以通过简单的 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 的内部工作原理。有什么想法吗?
【问题讨论】:
-
我也想通过 HTTP 直接操作 DynamoDB。这在尝试调试其他客户端的问题时很有帮助。
标签: amazon-web-services curl amazon-dynamodb aws-sdk libcurl