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

使用Lambda设置DynamoDB触发器

张俊茂
2023-03-14

我正在尝试使用DynamoDB流和AWS Lambda创建DynamoDB触发器。我做了很多研究,但在Java 8中找不到任何读取和处理DynamoDB流事件的方法。我对这两种技术都是新手,所以不知道如何使用它。

本质上,我想做的是每当在表A中创建记录时,都在表B中创建一条记录。

你们谁能给我指出一个在Java中处理这个用例的代码或帖子吗?

谢谢:)

共有3个答案

郎成弘
2023-03-14

DynamoDB Streams会将JSON发送到处理程序。只需创建一个处理程序,它接受JavaInputStream并从inputstream反序列化JSON。我在这里发布了一个类似问题的示例。

尉迟栋
2023-03-14

嗯,我似乎找不到将JavaLambda函数与DynamoDB流集成的留档,但其概念与使用DDB流编写NodeJS Lambda函数相同,此处记录了这一点:http://docs.aws.amazon.com/lambda/latest/dg/wt-ddb.html.只需将NodeJS函数替换为Java函数(请参阅此处的文档以创建JavaLambda函数:http://docs.aws.amazon.com/lambda/latest/dg/java-lambda.html)。要将数据从表A复制到B,您可以使用AWSJavaSDK DynamoClient DB在Lambda函数中将流记录从A写入B。

孟英锐
2023-03-14

这段代码对我很有用。你可以用它在Lambda函数中接收和处理DynamoDB事件-

public class Handler implements RequestHandler<DynamodbEvent, Void> {

    @Override
    public Void handleRequest(DynamodbEvent dynamodbEvent, Context context) {

        for (DynamodbStreamRecord record : dynamodbEvent.getRecords()) {

            if (record == null) {
                continue;
            }

            // Your code here
            // Write to Table B using DynamoDB Java API
        }

        return null;
    }
}

创建Lambda时,将表A中的流添加为事件源,就可以开始了

 类似资料:
  • 我正在试验Dynamo db和lambda,并且在以下流程中遇到问题: Lambda A由put to S3事件触发。它获取对象(一个音频文件),计算其持续时间,并在dynamoDB中为每30秒的段写入一条记录。 Lambda B由DynamoDB触发,从S3下载文件并对Dynamo行中定义的30秒记录进行操作。 我的问题是,当我运行这个流时,函数A通过函数B写入Dynamo所需的所有行 似乎没有

  • 我已经启用了我的表的DynamoDB Streaming,并且有两个lambda与之关联。每当DynamoDB表中发生变化时,这两个触发器都通过Dynamo触发器。 问题:两个Lambda相应地将数据插入到两个RDS表中。就像λ1插入表1和λ2插入表2一样。表1主键是表2中的外键。 因此,每当两个lambda都触发lambda two首先完成执行时,它会显示外键约束错误,因为lambda two试

  • 我正在使用AWS Dynamo Streams触发AWS Lambda函数。如果lambda函数成功调用,我希望通过Lambda提供的异步调用目标功能调用子lambda函数。 尽管我已使用目标子Lambda函数配置了异步调用,但当父Lambda函数成功时,不会触发子函数,子Lambda函数的关联CloudWatch日志组为空。 我的父lambda有这样的策略:(提供对DynamoDB Stream

  • 我有一个lambda到一个私有子网(为了发出一个外部post-https请求),我需要从dynambodb表触发它。然后我必须把项目放到dynamodb上的另一个表中。如果我将lambda放入私有子网,则触发器不起作用,如果我将其放入公共子网并调用位于同一专有网络但位于私有子网的lambda,则调用超时。如何将lambda从私有子网连接到公共子网,以完成来自dynamo的触发器任务,发布外部api

  • 假设: 让我们假设数据插入DynamoDB的速率是巨大的。 上下文: 在DynamoDB表上启用流,这将触发lambda。lambda读取流记录,并在弹性搜索中对记录进行索引。 问题陈述: 在将记录插入DynamoDB的时间和通过流式记录触发lambda的时间之间存在延迟。这种延迟或滞后不断增加,并且与插入DynamoDB的数据量成正比。 如何找到滞后的位置?是流没有立即触发lambda吗?还是因

  • 我目前有一个AWS DynamoDB流触发一个Lambda函数。 Lambda函数由DynamoDB中的插入和更新事件触发。是否有办法更改配置,使Lambda函数仅由“insert”触发?