我尝试使用DynamoDB Streams和AWS Lambda创建DynamoDB触发器。我研究了很多,但我找不到任何方法来阅读和处理Java 8中的DynamoDB Stream事件。我对这两种技术都是全新的,所以不知道如何使用它。
基本上,我想要做的是在表A中创建记录时在表B中创建记录。
你们中的任何人都可以指点我用Java处理这个用例的代码或帖子吗?
谢谢:)
答案 0 :(得分:3)
这段代码对我有用。您可以使用它在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中的流添加为事件来源,然后您就可以了
答案 1 :(得分:0)
嗯,我似乎无法找到将Java Lambda函数与DynamoDB流集成的文档,但其概念与使用DDB流编写NodeJS Lambda函数相同,这在此处记录:http://docs.aws.amazon.com/lambda/latest/dg/wt-ddb.html。只需用Java函数替换NodeJS函数(有关创建Java Lambda函数的文档,请参见此处:http://docs.aws.amazon.com/lambda/latest/dg/java-lambda.html)。要将数据从表A复制到B,您可以使用AWS Java SDK DynamoDB客户端在Lambda函数中将流记录从A写入B。
答案 2 :(得分:0)
DynamoDB Streams会将JSON发送给处理程序。只需创建一个处理程序,它接受Java InputStream并从输入流反序列化JSON。我在类似的问题here上发布了一个示例。