Amazon Kinesis NodeJS – putRecord操作到期

我使用NodeJS和Express作为代理来处理HTTP GET请求,做一些小的数据适配,并将数据提交给Amazone Kinesis。 这里是我的代码摘录:

var express = require('express'); var app = express(); app.get('/proxy-test', function(req, res){ var data = req.query; // perform some light data processing // send results to kinesis kinesis.putRecord({ StreamName : MY_STREAM_NAME, Data : data, PartitionKey : MY_PARTITION_KEY }, function(err, data) { if (err) { console.log(err, err.stack); // an error occurred } else { console.log(data); } }); res.send(200); }); 

运行JMetertesting200个并发用户(循环100次),5分钟后,我得到这个错误:

'[Signature expired:20140409T152855Z现在比20140409T153211Z早20140409T153211Z(20140409T153711Z – 5分钟)'',代码:'InvalidSignatureException',时间:20140409T152855Z现在早于20140409T153211Z(20140409T153711Z – 5分钟) Wed Apr 09 2014 17:37:11 GMT + 0200(CEST),statusCode:400,retryable:false,_willRetry:false}'InvalidSignatureException:Signature expired:20140409T152855Z is now at than 20140409T153211Z(20140409T153711Z – 5 min。)\ n at Request.callListeners(/ Users / me / proxy / node_modules / aws-sdk / lib)中的Request.extractError(/Users/me/proxy/node_modules/aws-sdk/lib/service_interface/json.js:43:33)\n /sequential_executor.js:114:20)\n在Request.emit(/用户/我/proxy/node_modules/aws-sdk/lib/request.js:578:14)\n在Request.transition(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:12:12)\在AcceptorStateMachine.runTo(/ Users / me / proxy / node_modules / aws-sdk / lib / state_machine.js:14:12)\ n at /Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:26:10\n at请求。 (/Users/me/proxy/node_modules/aws-sdk/lib/request.js:28:9)\n在请求。 (/Users/me/proxy/node_modules/aws-sdk/lib/request.js:580:12)\n在Request.callListeners(/Users/me/proxy/node_modules/aws-sdk/lib/sequential_executor.js: 90:20)”

有什么我可以做的(configuration或代码更改),以确保所有Kinesislogging发送和保存?

有可能你的Kinesis生产者实例(你正在运行NodeJS的实例)正在经历时钟漂移。 当查询各种服务的AWS API(而不仅仅是Kinesis)时,我们经常会看到这种情况。

安装和configurationntp以在NTP池中使用AWS节点是相当常见的:

 sudo apt-get -qy install ntp sudo sed -i -r 's/^(server\s[0-3]\.)ubuntu([az\.]+)/\1amazon\2 iburst/' /etc/ntp.conf sudo sed -i -r 's/^(server\sntp\.ubuntu\.com)/#\1\nserver time.nist.gov/' /etc/ntp.conf sudo service ntp restart 

如果您有兴趣,可以通过以下链接获取更多文档:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

Interesting Posts