当前位置: 首页 > 知识库问答 >
问题:

AWS使用DynamoDB Lambda配置Kinesis Stream

漆雕升
2023-03-14

从这个问题开始,AWS DynamoDB流进入红移

DynamoDB--

如何配置我的Kinesis函数以获取Lambda函数源?

我创建了一个DynamoDB表(购销),并添加了DynamoDB流。然后,我配置Lambda函数来拾取DynamoDB流。我的问题是如何配置Kinesis以获取Lambda函数源?我知道如何配置Lambda转换,不过我想把它作为源代码。不确定如何配置下面的直接输入源。

共有1个答案

卢知
2023-03-14

在你的例子中,你会将Dynamodb流式传输到红移

<代码>发电机B--

首先,需要一个lambda函数来处理DynamoDBStream。对于每个DynamoDBStream事件,使用firehose PutRecord API将数据发送到firehose。从示例中

var firehose = new AWS.Firehose();
firehose.putRecord({
  DeliveryStreamName: 'STRING_VALUE', /* required */
  Record: { /* required */
    Data: new Buffer('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */ /* required */
  }
}, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

接下来,我们必须知道如何将数据插入红移。从firehose文档中,

为了将数据传递到Amazon Redshift,Kinesis Firehose首先以前面描述的格式将传入数据传递到S3存储桶。然后,Kinesis Firehose发出Amazon Redshift COPY命令,将数据从S3存储桶加载到Amazon Redshift集群。

所以,我们应该知道让COPY命令将数据映射到RedShift模式的数据格式。我们必须遵循redshift COPY命令的数据格式要求。

默认情况下,COPY命令期望源数据是字符分隔的UTF-8文本。默认分隔符是管道字符 ( | ).

因此,您可以对输入Dynamodb stream事件的lambda进行编程,将其转换为管道(|)分隔的行记录,并将其写入Fire hose。

var firehose = new AWS.Firehose();
firehose.putRecord({
  DeliveryStreamName: 'YOUR_FIREHOSE_NAME',
  Record: { /* required */
    Data: "RED_SHIFT_COLUMN_1_DATA|RED_SHIFT_COLUMN_2_DATA\n"
  }
}, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

请记住添加,因为消防软管不会为您添加新行。

 类似资料:
  • 我有一个生产者应用程序,它以每秒600条记录的速度写入Kinesis流。我编写了一个Apache flink应用程序来读取/处理和聚合这些流数据,并将聚合的输出写入AWS Redshift。 每条记录的平均大小为2KB。此应用程序将24*7运行。 我想知道我的AWS EMR集群的配置应该是什么。我需要多少个节点?我应该使用的EC2实例类型(R3/C3)应该是什么。 除了性能方面,成本对我们也很重要

  • 我们正在使用cloudfront为具有自定义域的图像提供服务。 我们希望能够使用SSL访问它们,例如

  • 公共子网中的堡垒主机 2个专用子网中的2个EC2实例 传出连接的NAT门 应用程序负载平衡器 我的问题是如何从localhost运行Ansible playbook来影响私有实例。我可以SSH转发剧本,还是剧本必须驻留在堡垒主机中,然后使用私有IP作为主机?

  • 我创建了一个AWS代码管道,它分四个阶段运行。1) 来自github的源代码,2)将后端部署到Elastic Beanstalk,3)使用Codebuild构建前端代码(使用下面的buildspec文件),以及4)将webpack的结果部署到S3。 到目前为止,除了第三阶段的结果外,一切都按预期进行。Codebuild似乎将工件设置为源文件,而不是webpack构建的结果。在bucket和文件夹中

  • NestJS的新手,遇到了一个问题。对于我们的部署,我们需要从AWS Parameter Store(Systems Manager)获取配置,包括数据库连接字符串。我有一个配置模块和配置服务,它基于参数存储路径检索我的环境的所有参数存储项: 这是我的配置服务: 下面是主要的应用模块声明块: 如您所见,我正在告诉TypeForm在ConfigService中调用getDatabase()方法,但问

  • 我试图遵循AWS Lambda Java示例:http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3示例部署pkgJava 创建了新的类以插入S3映像修改lambda代码。添加了aws-lambda-java-core1.0.0,aws-lambda-java-event1.0.