Aws lambda 消防软管未通过Lambda将数据推入s3?
我正试图通过lambda函数调用kinesis。这是我的密码Aws lambda 消防软管未通过Lambda将数据推入s3?,aws-lambda,amazon-kinesis-firehose,Aws Lambda,Amazon Kinesis Firehose,我正试图通过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 = {
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;
});
};
我能解决我的问题。我所缺少的只是一个
回调
调用。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");
};
谢谢查德·埃利亚斯。通常,当您将记录放入消防软管时,它会给您一个
记录ID
。我希望它显示在我的lambda输出中,而不是null,因为一旦我收到它,就意味着数据被推送到S3.Sry,当我使用您的代码时,它不适合我。但我投了更高的票。未定义Thankscalback。此=>exports.handler=async(事件)需要=>exports.handler=async(事件、上下文、回调)谢谢@ChadElias指出这一点。这是一个坏的复制粘贴。