我正在使用Amazon nodejs / javascript客户端进行dax,每次发送查询时,都会收到此响应(我必须通过插入日志语句来挖掘代码):
{
"time": 1517618635321,
"code": null,
"retryable": false,
"requestId": null,
"statusCode": -1,
"_tubeInvalid": true,
"waitForRecoveryBeforeRetrying": false,
"codeSeq": [ 4, 23, 31, 34 ]
}
显然返回的代码序列甚至不是节点模块似乎理解的代码序列,所以我完全迷失了。
我怀疑是VPC网络配置问题或IAM问题,但是我已经用精细的牙齿梳子进行了检查,但是我仍然看不到它。
如何解码此错误消息,在dax群集服务器上查找日志,或以其他方式找出如何了解导致此错误的错误?
答案 0 :(得分:0)
[4, 23, 31, 34]
是PermissionDenied
,因此您的预感是权限问题是正确的(我会做一个注释来修复映射,以便更清楚)。
凭据可以作为AWS.Credentials
object提供,但建议的方法是从EC2实例元数据中获取凭据,AWS SDK和DAX客户端将自动执行这些元数据。这要求您的EC2实例具有服务角色,授予他们访问DAX的权限。最简单的方法是在控制台中创建一个新角色,以便在EC2中使用,并将AmazonDynamoDBFullAccess策略附加到该角色。然后,您使用该角色启动的任何EC2实例都将能够访问您的DAX群集。
(至于为什么错误是NoRouteException
,发布的版本有一个过于宽泛的异常处理程序需要清理。)