【问题标题】:DynamoDB DAX errors: ValidationException while testing lambdaDynamoDB DAX 错误:测试 lambda 时出现 ValidationException
【发布时间】:2018-02-02 12:02:47
【问题描述】:

我正在尝试将 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, “代码”:“验证异常”, “可重试”:是的, "requestId": "AVI5QK8LN9S41B64JTTJVECLR3VV4KQNSO5AEMVJF66Q9ASUAAJG", “状态代码”:“400”, “_tube无效”:假, “waitForRecoveryBeforeRetrying”:假 }

我已经使用 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 函数也超时了

【问题讨论】:

  • 你能分享你正在使用的确切代码吗? ValidationException 通常意味着请求在某些方面不正确。

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


【解决方案1】:

发现是权限问题。我的集群的 IAM 角色无权访问 DynamoDB 表。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-08
    • 2021-07-06
    • 2017-04-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 2021-07-29
    • 2018-06-16
    相关资源
    最近更新 更多