Firehose не проталкивает данные в s3 через лямбду? - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь вызвать кинезис через мою лямбда-функцию. Вот мой код

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
}

Я не получаю никакой ошибки в лямбде. Это всегда показывает ответ как null. Я даже пытался включить логи, но не нашел странного поведения.

Я что-то упустил?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я могу решить мой вопрос. Все, что мне не хватает, это callback звонок. Кажется, putRecord происходит только тогда, когда он получает ответный обратный вызов. Вот рабочий код

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");
};
0 голосов
/ 05 ноября 2018

возвращается «ноль», потому что ваша лямбда-функция ничего не возвращает.

попробуйте это

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;
});
};
...