Sri*_*hsa 5 amazon-web-services node.js aws-sdk
Node.js 版本 0.10.25
AWS 开发工具包版本 latest - 2.0.23
我有一个持续侦听队列 (SQS) 的应用程序,如果该队列中发布了消息,该应用程序将读取消息并处理它并将一些数据保存到 S3。当我在大约 20 分钟后启动应用程序时,我不断收到以下错误。
Potentially unhandled rejection [160] SignatureDoesNotMatch: Signature expired: 20141104T062952Z is now earlier than 20141104T062952Z (20141104T064452Z - 15 min.)
at Request.extractError (/myproject/node_modules/aws-sdk/lib/protocol/query.js:39:29)
at Request.callListeners (/myproject/node_modules/aws-sdk/lib/sequential_executor.js:100:18)
at Request.emit (/myproject/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
at Request.emit (/myproject/node_modules/aws-sdk/lib/request.js:604:14)
at Request.transition (/myproject/node_modules/aws-sdk/lib/request.js:21:12)
at AcceptorStateMachine.runTo (/myproject/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /myproject/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/myproject/node_modules/aws-sdk/lib/request.js:22:9)
at Request.<anonymous> (/myproject/node_modules/aws-sdk/lib/request.js:606:12)
at Request.callListeners (/myproject/node_modules/aws-sdk/lib/sequential_executor.js:104:18)
Run Code Online (Sandbox Code Playgroud)
这不是我的系统时间问题。我的系统时间与我的 EC2 实例的时间同步。为什么我收到这个错误?它与SQS或S3有关吗?
我知道这是一个老问题,但我今天亲身经历过。
幸运的是,AWS NodeJS SDK 现在有一个名为 的配置选项correctClockSkew
,一旦发生错误,它将修复系统时钟偏移:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html# CorrectClockSkew-property
感谢 Loren Segal(亚马逊)的快速回复。有关更多详细信息,请参阅https://github.com/aws/aws-sdk-js/issues/401 。简而言之,SDK 不会重试签名错误,解决方法是
AWS.events.on('retry', function(resp) {
if (resp.error.code === 'SignatureDoesNotMatch') {
resp.error.retryable = true;
}
});
Run Code Online (Sandbox Code Playgroud)
这不是回归,即,这不是引入的错误2.0.23
归档时间: |
|
查看次数: |
1969 次 |
最近记录: |