DynamoDB DAX错误:测试lambda时的ValidationException

时间:2018-01-30 11:43:33

标签: node.js aws-lambda amazon-dynamodb-dax

我正在尝试将DAX示例getitem-test.js作为lambda运行。(doc link)。我修改了代码以从我创建的daxclient中读取。但是daxClient.get从lambda返回错误

  

START RequestId:bb657a02-05b1-11e8-804d-a1d27ac0e9f7版本:$ LATEST   2018-01-30T11:36:03.363Z bb657a02-05b1-11e8-804d-a1d27ac0e9f7无法读取项目。错误JSON:{     "时间":1517312163361,     "代码":" ValidationException",     "可重试":是的,     " requestId":" AVI5QK8LN9S41B64JTTJVECLR3VV4KQNSO5AEMVJF66Q9ASUAAJG",     " statusCode":" 400",     " _tubeInvalid":false,     " waitForRecoveryBeforeRetrying":false   }

我使用dynamodbclient设置了dynamo db表。设置VPC,子网等。但是我没有运气从DAX读取数据。知道可能是什么问题。

以下是我使用的代码:

var region = "eu-west-1";
AWS.config.update({
    region: region
});
var daxClient = null;
var dax = new AmazonDaxClient({ endpoints: ["mydax.e02jim.clustercfg.dax.euw1.cache.amazonaws.com:8111"], region: region })
daxClient = new AWS.DynamoDB.DocumentClient({ service: dax });
var tableName = "TryDaxTable";
var params = {
    TableName: tableName,
    Key: {
        "pk": 7,
        "sk": 1
    }
};
daxClient.get(params, function (err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", 
JSON.stringify(err, null, 2));
    } else {
        console.log("success");
    }
});

我可以使用var ddbClient = new AWS.DynamoDB.DocumentClient()获得结果 而不是daxClient

此外,我的lambda函数已超时

1 个答案:

答案 0 :(得分:0)

发现这是一个许可问题。我的集群的IAM角色没有DynamoDB表的权限。

关于lambda超时,我在google搜索后最后添加了以下代码

context.callbackWaitsForEmptyEventLoop = false
callback(null, "success");