我一直在尝试使用 jQuery 和 Ajax 调用通过 JavaScript 与 Amazon DynamoDB 进行交互,但没有成功。经过两天的研究,我开始认为这可能是不可能的。我看到他们有适用于 Java、PHP 和 .Net 的 SDK,但还没有适用于 JavaScript 的 SDK。
亚马逊在此链接中解释了如何向发电机发送命令:
我已经能够使用 PHP sdk 和 node.js (https://github.com/xiepeng/dynamoDB) 做到这一点,但是使用常规的 javascript ajax 调用或 xmlHttpRequest 调用没有运气。
我已经能够获得有效的 aws 签名、秘密 ID 和会话令牌,因此我已将它们硬编码到标头中。
这是我的代码:
$.ajax({
beforeSend: function(xhr) {
console.log("getting built");
xhr.setRequestHeader('host', 'dynamodb.us-east-1.amazonaws.com');
xhr.setRequestHeader('x-amz-date', 'Fri, 10 Feb 2012 20:44:00 GMT');
xhr.setRequestHeader('date', 'Fri, 10 Feb 2012 20:44:00 GMT');
xhr.setRequestHeader('x-amz-security-token', '**MYSECURITY TOKEN**');
xhr.setRequestHeader('x-amz-target', 'DynamoDB_20111205.PutItem');
xhr.setRequestHeader('content-type', 'application/x-amz-json-1.0');
xhr.setRequestHeader('content-length', 103);
xhr.setRequestHeader('x-amzn-authorization', 'AWS3 AWSAccessKeyId=**MY ACCESS KEY**,Algorithm=HmacSHA256,SignedHeaders=host;x-amz-date;x-amz-security-token;x-amz-target,Signature=**MY SIGNATIURE**=');
},
type: "POST",
url: "http://dynamodb.us-east-1.amazonaws.com",
dataType: "json",
data: '{"TableName":"Sample","Item":{"RecordId":{"S":"white"},"Square":{"S":"teess"},"circle":{"S":"eeerer"}}}',
error: function(XHR,textStatus,errorThrown) {
// alert ("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
console.log(XHR);
console.log(textStatus);
console.log(errorThrown);
},
success: function(data) {
console.log("success");
}
});
当我运行它时,我得到一个 404 Not found 错误,方法显示为“OPTIONS”(而不是 POST 或 GET)