使用Lambda设置DynamoDB触发器

时间:2015-07-23 13:52:59

标签: java amazon-web-services amazon-dynamodb aws-lambda

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

基本上,我想要做的是在表A中创建记录时在表B中创建记录。

你们中的任何人都可以指点我用Java处理这个用例的代码或帖子吗?

谢谢:)

3 个答案:

答案 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上发布了一个示例。