在一个项目中,我需要直接从浏览器访问Amazon的DynamoDB。 node.js有aws-sdk-js,而浏览器端JS没有aws-sdk-js,因此我尝试使用Amazon的HTTP API进行访问。有什么实现方法吗?

签名过程有可用的实现吗? (http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

最佳答案

看一下我博客上的series of postsPart 3的代码几乎涵盖了您想要的内容,尽管对于不同的AWS API。但这包括签署请求:

function computeSignature(params, secretAccessKey){
      var stringToSign = 'GET\nwebservices.amazon.com\n/onca/xml\n' +
                         createQueryString(params);
      var key = sjcl.codec.utf8String.toBits(secretAccessKey);
      var hmac = new sjcl.misc.hmac(key, sjcl.hash.sha256);
      var signature = hmac.encrypt(stringToSign);
      signature = sjcl.codec.base64.fromBits(signature);

      return signature;
   }


该帖子包括上面使用的createQueryString代码。加密功能由Stanford JavaScript Cryptography Library(上面的sjcl对象)提供。

博客系列中的All the code也在Github上,因此您不必逐个复制和粘贴博客中的内容。

10-07 14:09