jQuery と Ajax 呼び出しを使用して JavaScript 経由で Amazon DynamoDB と対話しようとしましたが、失敗しました。2日間の調査の後、私はそれが不可能かもしれないと考え始めています. Java、PHP、および .Net で利用できる SDK があるようですが、JavaScript はまだありません。
Amazon は、このリンクで dynamo にコマンドを送信する方法を説明しています。
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 ではなく)。