gpt4 book ai didi

node.js - aws DynamoDB 给出 "write EPROTO"

转载 作者:搜寻专家 更新时间:2023-10-31 23:37:53 27 4
gpt4 key购买 nike

我正在使用 dynamoDB 来保存网络服务生成的数据。我有时(不一致)收到“EPROTO”错误,我读到了它,这是一个协议(protocol)错误,但我使用 aws-sdk (javascript),我没有说明任何与协议(protocol)相关的细节。

这是我初始化它的方式:

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
}
});

参数如下:

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: '', ...}
}
}
};

我应该提一下,它甚至在同一个参数对象上都不一致(仅生成的 uid 不同)。

知道这个错误对我来说意味着什么以及为什么会发生吗?

最佳答案

https://github.com/aws/aws-sdk-js/issues/862 的讨论之后:

对于 DynamoDB 使用哪个版本的 TLS 在客户端进行通信,DynamoDB 方面似乎存在不一致。要解决此问题,您需要强制 SDK 使用 TLS v1:

const https = require('https');
const dynamodb = new AWS.DynamoDB({
region: 'us-east-1',
httpOptions: {
agent: new https.Agent({
ciphers: 'ALL',
secureProtocol: 'TLSv1_method'
})
}
});

const dynamodbDoc = new AWS.DynamoDB.DocumentClient({
region: 'us-east-1',
service: dynamodb
});

关于node.js - aws DynamoDB 给出 "write EPROTO",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com