从nodejs应用生成数据到消防站

时间:2019-01-28 17:39:16

标签: node.js amazon-web-services stream amazon-kinesis

我们已配置了Firehouse数据传递流,该流应用作Nodejs应用程序生成的不同类型事件的缓冲区。

显然,该应用无法将数据流传输到Firehouse流,并显示以下错误消息:

  

无法流式传输ResourceNotFoundException:在未找到帐户下流式传输我的流。

我生成数据和使用运动学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});
        }
    });
}

我会很感激

1 个答案:

答案 0 :(得分:0)

在这种情况下,问题是使用的类(在本例中是运动学)而不是消防站。 下面附有代码的代码,以防万一其他人遇到应用程序需要在消防站流中生成数据的情况。 在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});
    }
});
}