在 JAVA 中使用 Lambda 的 AWS DynamoDB 触发器 [英] AWS DynamoDB trigger using Lambda in JAVA

查看:32
本文介绍了在 JAVA 中使用 Lambda 的 AWS DynamoDB 触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 dynamodb 流事件上触发用 Java 编写的 AWS lambda 函数.亚马逊有一个相同的指南,在这里使用 NodeJShttp://docs.aws.amazon.com/lambda/latest/dg/wt-ddb-create-test-function.html

I am trying to trigger an AWS lambda function written in Java, on dynamodb stream events. Amazon has a guide for the same, using NodeJS here http://docs.aws.amazon.com/lambda/latest/dg/wt-ddb-create-test-function.html

NodeJS 的测试输入(来自上面的链接)看起来像一个 SNS 事件,所以我尝试使用 Java 中相应的 SNSEvent 类作为我的处理程序方法的输入.

The testing input for NodeJS (from the above link) looks like an SNS event, so I tried to use the corresponding SNSEvent class in Java as an input to my handler method.

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.events.SNSEvent;
import com.amazonaws.services.lambda.runtime.events.SNSEvent.SNSRecord;
import java.util.List;

public class RecomFunction {

    public void handler(SNSEvent event, Context context) {

        LambdaLogger logger = context.getLogger();

        List<SNSRecord> records = event.getRecords();

        if (records != null) {
            for (SNSRecord record : records) {
                if (record != null) {
                    logger.log("SNS record: " + record.getSNS().getMessage());
                }
            }
        }
    }

}

不幸的是,record.getSNS() 返回 NULL 导致 NullPointer 异常

Unfortunately, record.getSNS() returns NULL resulting to a NullPointer exception

有一个相关的问题,但是没有给出具体的答案:使用 Lambda 设置 DynamoDB 触发器

There is a related question, however a specific answer was not given: Setup DynamoDB Trigger using Lambda

推荐答案

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

This code worked for me. You can use it to receive and process DynamoDB events in a Lambda function -

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
        }

        return null;
    }
}

同样,您可以使用 SNSEventSNSRecord 来处理 Amazon SNS 事件.

Similarly, you can use SNSEvent and SNSRecord to handle Amazon SNS events.

这篇关于在 JAVA 中使用 Lambda 的 AWS DynamoDB 触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆