如何从nodejs应用中产生数据到firehose上

问题描述 投票:0回答:1

我们配置了一个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});
        }
    });
}

我很感激任何反馈

node.js amazon-web-services stream amazon-kinesis
1个回答
0
投票

在这种情况下,问题在于使用的类,在这种情况下是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});
    }
});
}
© www.soinside.com 2019 - 2024. All rights reserved.