Firehose 没有通过 Lambda 将数据推送到 s3?

Firehose not pushing data into s3 through Lambda?

我正在尝试通过我的 lambda 函数调用 kinesis。这是我的代码

const AWS = require( 'aws-sdk' );
AWS.config.update({ region: 'us-east-1' });
var firehose = new AWS.Firehose();
exports.handler = async (event,context,callback) => {
    // TODO implement
    const response = {
        statusCode:200,
        Name:event.Name,
        Value:event.Value
    };
const params = {
  DeliveryStreamName: 'kinesis-fh-pika', 
  Record: { Data: new Buffer(JSON.stringify(response)) }
};

firehose.putRecord(params, (err, data) => {
if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);
});
};

这是我的活动

{
  "Name": "sara",
  "Value": 10
}

我在 lambda 中没有收到任何错误。它始终将响应显示为 null。我什至尝试启用日志,但没有发现任何奇怪的行为。

我错过了什么吗?

谢谢

它正在返回 'null' 因为您的 Lambda 函数没有返回任何东西。

试试这个

const AWS = require( 'aws-sdk' );
AWS.config.update({ region: 'us-east-1' });
var firehose = new AWS.Firehose();
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode:200,
        Name:event.Name,
        Value:event.Value
    };
const params = {
  DeliveryStreamName: 'kinesis-fh-pika', 
  Record: { Data: new Buffer(JSON.stringify(response)) }
};

firehose.putRecord(params, (err, data) => {
if (err) {
    console.log(err, err.stack);
  } // an error occurred
  else {
    console.log(data);
  }
 return response;
});
};

我可以解决我的问题。我只缺少一个 callback 电话。 putRecord 似乎只有在得到一些响应时才会发生 callback.Here 是工作代码

const AWS = require( 'aws-sdk' );
AWS.config.update({ region: 'us-east-1' });
var firehose = new AWS.Firehose();
exports.handler = async (event,context,callback) => {
    // TODO implement
    const response = {
        statusCode:200,
        Name:event.Name,
        Value:event.Value
    };
const params = {
  DeliveryStreamName: 'kinesis-fh-pika', 
  Record: { Data: new Buffer(JSON.stringify(response)) }
};

firehose.putRecord(params, (err, data) => {
if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);
});
callback(null,"success");
};