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