【发布时间】:2017-02-26 21:12:19
【问题描述】:
我在让 AWS 签名计算正常工作时遇到问题。目标是读取作为 URL 一部分传递的 4(key、dateStamp、regionName、serviceName)并将它们用于计算签名。我不是 Node.js 专家,非常感谢您的帮助和时间。
- URL 示例:http://localhost:3000/getSignature?key=ASIAJSLN6INQGFK7XX7Q&dateStamp=26072015®ionName=us-east-1&serviceName=IAM
- Java 脚本的 AWS 规范:http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-jscript
- 签名示例:Signature=265f004b995af67102af3c5ff84b0f34e091165a190ac62730c76e919d91b77a
我的 Node.js 代码...
var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
//Crypto
var Crypto = require('crypto-js');
// routes
app.get('/getSignature', function(req, res) {
var key = req.param('key');
var dateStamp = req.param('dateStamp');
var regionName = req.param('regionName');
var serviceName = req.param('serviceName');
var kDate = Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, {asBytes: true});
var kRegion = Crypto.HMAC(Crypto.SHA256, regionName, kDate, {asBytes: true});
var kService = Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, {asBytes: true});
var kSigning = Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, {asBytes: true});
res.send(key + ' ' + dateStamp + ' ' + regionName + ' ' + serviceName + ' ' + kSigning);
});
// start the server
app.listen(port);
console.log('Server started! At http://localhost:' + port);
我收到以下运行时错误:
TypeError: undefined is not a function at c:\Users\xxx\WebstormProjects\Unscriptd\app.js:34:24 at Layer.handle [as handle_request] (c:\Users\xxx\WebstormProjects\Unscriptd\node_modules\express\lib\router\layer.js:95:5) 接下来 (c:\Users\xxx\WebstormProjects\Unscriptd\node_modules\express\lib\router\route.js:131:13)
Crypto-js 库已导入。
【问题讨论】:
-
你能告诉我们 app.js 的第 34 行吗?它似乎不在这里。
标签: javascript node.js amazon-web-services