从AWS Lambda向Kinesis Firehose推送数据

5
我有一个 apiGateway 端点,我正在向该端点发送一些 post 请求。apigateway 的集成类型是 Lambda 函数。我希望 Lambda 函数监听 apigateway 上发送的 post 数据,并将这些数据推送到 Kinesis Firehose。
请问是否有人能提供一个示例 node.js Lambda 代码,将接收到的数据推送到 Kinesis Firehose?我试图搜索相关内容,但没有找到任何信息。
谢谢。
2个回答

17

我懂了。

这是样例代码:

var AWS = require('aws-sdk');
var firehose = new AWS.Firehose();

exports.handler = function(event, context) {
    var params = {
        DeliveryStreamName: <STRING>,
        Record: { 
            Data: decodeURIComponent(event)
        }
    };
    firehose.putRecord(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response

        context.done();
    });
};

0
我在使用Lambda NodeJS 18.x上使用decodeURIComponent时遇到了"Cannot read properties of undefined (reading 'byteLength')"错误。这是我的工作示例,使用了AWS SDK for JavaScript v3和ES Modules。
import {
  FirehoseClient,
  PutRecordCommand,
} from '@aws-sdk/client-firehose';

const streamName = '<KINESIS_FIREHOSE_NAME>';
const client = new FirehoseClient();

export const handler = async (event) => {
  try {
    const input = {
      DeliveryStreamName: streamName,
      Record: {
        Data: Buffer.from(JSON.stringify(event)),
      },
    };
    const command = new PutRecordCommand(input);
    const response = await client.send(command);
    console.log('success %o', response);
  } catch (err) {
    console.error('error %s', err.message);
  }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接