【发布时间】:2016-02-27 19:46:12
【问题描述】:
我正在使用 dynamoDB 来保存 Web 服务生成的数据。 我有时(不一致)会收到“EPROTO”错误,我读过它,这是一个协议错误,但我使用 aws-sdk (javascript),我没有说明任何与协议相关的细节。
这是我初始化它的方式:
var aws = require('aws-sdk');
var dynamoDB = new aws.DynamoDB({
accessKeyId: config.DynamoDB.accessKeyId,
secretAccessKey: config.DynamoDB.secretAccessKey,
region: config.DynamoDB.region
});
我只是使用 put api:
dynamoDB.putItem(params, function(err, dat) {
if (err) {
console.log('ERROR: Putting to dynamo failed with error: ' + err.message);
}
else {
console.log('wipi');
//passing data
}
});
params如下:
var params = {
TableName: config.DynamoDB.tableNames.data, //this is the table name, a string
Item: {
id: {
S: id // this is a generated uid (also a string)
},
scheme: {
S: ivd.version // this is a string of structure 'X.X.X'
},
data: {
S: JSON.stringify(data.data) // data.data is a big object - {arg1: [1, 2, 3...], arg2: '', ...}
}
}
};
我应该提一下,它在同一个 params 对象上甚至不一致(仅在生成的 uid 上有所不同)。
任何想法在我的情况下这个错误意味着什么以及为什么会发生?
【问题讨论】:
-
你能提供一个例子
params吗? -
编辑了我的问题,但我认为它没有帮助:(
-
您的数据对象有多大?项目总大小不能超过 400KB。
-
@oshnaps:您是在本地运行代码,还是仅在 Elastic Beanstalk 中运行代码?我们看到了类似的错误,但仅在我们部署的代码中,有点像forums.aws.amazon.com/thread.jspa?messageID=689209。
-
其实我是从一个ec2调用api,node版本是5.2.0,所以不知道你给我的链接...我确实试过增加DB容量,同时好像看不懂了,以后继续更新。
标签: node.js amazon-web-services protocols amazon-dynamodb aws-sdk