在JAVA中使用lambda AWS DynamoDB触发

编程入门 行业动态 更新时间:2024-10-24 20:16:51
本文介绍了在JAVA中使用lambda AWS DynamoDB触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图触发Java编写的AWS lambda表达式,在dynamodb流事件。亚马逊具有相同的指导,采用NodeJS这里 HTTP://docs.aws.amazon .COM /λ/最新/ DG / WT-DDB创建,测试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 docs.aws.amazon/lambda/latest/dg/wt-ddb-create-test-function.html

测试输入NodeJS(从上面的链接)看起来像一个SNS的事件,所以我试图用相应的SNSEvent类在Java中,作为给我的处理方法。

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

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

有一个相关的问题,但一个明确的答案没有给出: 设置DynamoDB触发使用lambda

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

推荐答案

这工作对我来说 - 案例DynamoDB流事件:

This worked for me - case DynamoDB stream events:

import com.amazonaws.services.lambda.runtime.RequestHandler; ... public class DynamoStreamHandler implements RequestHandler<Object, Void> { @Override public Void handleRequest(Object o, Context context) { LinkedHashMap lhm = (LinkedHashMap) o; ...etc. } }

看来他们使用自定义的JSON映射器,它利用地图和列表的对象。这是非常简单的(但繁琐),以验证这一点通过测试和打印郊游日志等事件类型。 (叹气)

It seems they use a customized JSON mapper which utilizes Map and List objects. It's quite straightforward (but tedious) to verify this for other event types by testing and print-outing logs. (sigh)

编辑::如果〜5 MB的开销就可以了,你可以使用 DynamodbEvent.DynamodbStreamRecord 按提供的AWS-拉姆达-java-事件库中的 AWS LAMBDA演练3:处理亚马逊DynamoDB活动(爪哇)的在AWS LAMBDA文档

If ~5 MB overhead is ok, you can use DynamodbEvent.DynamodbStreamRecord provided by aws-lambda-java-events library as described in AWS Lambda Walkthrough 3: Process Amazon DynamoDB Events (Java) in AWS Lambda Documentation.

更多推荐

在JAVA中使用lambda AWS DynamoDB触发

本文发布于:2023-11-28 07:47:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1641532.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:lambda   JAVA   DynamoDB   AWS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!