我们配置了一个firehose数据传输流,它应该作为Nodejs应用产生的不同类型事件的缓冲区。
显然,看起来应用程序无法将数据流传输到firehose流,并出现以下错误信息。
couldn't stream ResourceNotFoundException: Stream my-stream under account not found.
我生成数据和使用kinesis obj的方式如下。
function streamKinesis(req, res){
var params = {
Records: [],
StreamName: "stream_name"
};
params.Records.push({
Data: JSON.stringify(req.body),
PartitionKey: 'bla'
});
var kinesis = new AWS.Kinesis({ region: 'eu-west-1' });
kinesis.listStreams(function (err, data) {
if (err){
console.log(err, err.stack);
}
});
kinesis.putRecords(params, function (err, data) {
if (err) {
console.error("couldn't stream", err.stack);
}
else {
console.log("INFO - successfully send stream");
res.send({success: true});
}
});
}
我很感激任何反馈
在这种情况下,问题在于使用的类,在这种情况下是kinesis,而不是firehouse。下面附上了它应该如何写的代码,以防止有人面临这样的情况,即应用程序需要在firehouse流上产生数据.在AWS文档中,所有它重定向到kinesis api文档。
代码片段最多.在AWS文档中,所有它重定向给你的是kinesis api文档:
function streamKinesis(req, res){
var params = {
Record: {Data: JSON.stringify(req.body)},
DeliveryStreamName: "[stream_name]"
};
var firehouse = new AWS.Firehose();
firehouse.putRecord(params, function (err, data) {
if (err) {
console.error("couldn't stream", err.stack);
}
else {
console.log("INFO - successfully send stream");
res.send({success: true});
}
});
}