如何从 nodejs 应用程序生成数据到 firehose

how to produce data from nodejs app to firehose

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

如果有任何反馈,我将不胜感激

本例中的问题是使用的 class,在本例中是 kinesis,而不是 firehouse。 下面附上了应该如何编写的代码,以防其他人遇到应用程序需要在消防站流中生成数据的情况。 在 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});
    }
});
}