aws dynamodb_AWS Lambda将数据保存在DynamoDB中

aws dynamodb

在本教程中,我们将看到如何使用AWS Lambda将数据保存在Dynamo DB中。

这是必需的步骤:

在Dynamo数据库中创建一个名为Employee的表
–创建一个AWS Lambda函数,该函数可以使用Dynamo DB中的Employee POJO保存员工的名字和姓氏
–创建一个策略,该策略将仅对DynamoD B的Employee表提供读/写访问权限 –将策略附加到角色 –在AWS Lambda控制台中以jar的形式上载AWS Lambda函数的代码 –将在步骤4中创建的角色附加到AWS Lambda –运行测试事件以调用AWS Lambda以将Employee数据保存在Dynamo DB中

1.在Dynamo数据库中创建一个名为Employee的表

1.1要在Dynamo DB中创建表,请登录AWS控制台并在服务中搜索Dynamo DB,或者您可以在Database下找到DynamoDB服务。单击Dynamo DB,您将看到以下屏幕。

1.2要创建一个Employee表,单击“ Create table”按钮,您将看到以下屏幕。 输入表名称为“ Employee”,分区键为“ emp_id”,然后单击“ Create”按钮。

如下面的屏幕快照所示,它将为您创建Employee表。

只需单击项目选项卡,您就可以看到带有empId列的表已创建。

2.创建一个AWS Lambda函数,该函数可以使用Dynamo数据库中的Employee POJO保存雇员的名字和姓氏

Pom.xml中的依赖项:

<dependency><groupId>com.amazonaws</groupId><artifactId>aws-lambda-java-core</artifactId><version>1.1.0</version>
</dependency>
<dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-dynamodb</artifactId><version>1.11.0</version>
</dependency>

Java代码:

package com.blogspot.javasolutionsguide.handler;import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.PutItemOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.PutItemSpec;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.blogspot.javasolutionsguide.request.Employee;
import com.blogspot.javasolutionsguide.response.Response;public class SaveEmployeeHandler implements RequestHandler{private DynamoDB dynamoDb;private String DYNAMO_DB_TABLE_NAME = "Employee";private Regions REGION = Regions.US_EAST_1;@Overridepublic Response handleRequest(Employee personRequest, Context context) {this.initDynamoDbClient();persistData(personRequest);Response personResponse = new Response();personResponse.setMessage("Message Saved Successfully");return personResponse;}private void initDynamoDbClient() {AmazonDynamoDBClient client = new AmazonDynamoDBClient();client.setRegion(Region.getRegion(REGION));this.dynamoDb = new DynamoDB(client);}private PutItemOutcome persistData(Employee employee) {Table table = dynamoDb.getTable(DYNAMO_DB_TABLE_NAME);PutItemOutcome outcome = table.putItem(new PutItemSpec().withItem(new Item().withNumber("empId", employee.getEmpId()).withString("firstName", employee.getFirstName()).withString("lastName", employee.getLastName())));return outcome;}
}

3.创建一个策略,该策略将仅对DynamoDB的Employee表提供读/写访问权限,并附加一个Role

我们需要提供对AWS Lambda函数的访问权限以读取/写入Dynamo DB表。为此,我们将首先创建一个Polciy,然后将该策略附加到Role。

要创建新策略,请依次转到服务和IAM。

单击“访问管理”下的“策略”,您将看到以下屏幕。

单击创建策略,您将看到以下屏幕:

单击“选择服务”,然后在搜索框中键入DynamoDB。

选择Dynamo DB,然后在“访问级别”部分中选择GetItem和PutItem。

选择资源。

单击您的Dynamo Db表所在的“添加ARN.Fill区域”,然后输入表名,然后单击“添加”。

单击“查看策略”,然后输入要提供给策略的名称,并输入有关此策略的描述,然后单击“创建策略”。

4.创建一个角色并将策略附加到该角色

转到IAM服务->角色,单击“创建角色”按钮,您将看到以下屏幕。

选择AWS服务作为受信任实体。 这是您要为其分配角色的实体,因为我们想将此角色分配给Lambda函数(仅AWS服务),因此我们选择了AWS服务。 同样在“选择用例”中,选择Lambda,然后单击“下一个权限”。 您将看到以下屏幕。

现在,在“筛选器策略”中,键入您刚在步骤2中创建的策略名称(DynamoDBEmployeeTblAccess)

在下一个屏幕上,单击“下一步:标签”按钮,然后单击“下一个:审阅”按钮。在下一个屏幕上,在“角色名称”中输入名称“ DynamoDBEmployeeTblAccess”。 添加角色描述。

单击“创建角色”按钮,您将看到以下成功消息:

5.在AWS Lambda控制台中以jar的形式上传AWS Lambda函数的代码

本教程的所有代码都已放入我的Git存储库中。 链接在本教程的结尾给出。

因此,您可以将该代码导入您的工作区中,然后进行maven构建,这将为您创建jar,然后按照我之前的教程进行操作
如何使用Java创建Aws Lambda函数 ,您可以轻松地将jar上传到AWS lambda控制台。

6.将在步骤4中创建的角色附加到AWS Lambda

在Lambda的“权限”部分中,选择“附加现有角色”,然后从下拉列表中选择在步骤4中创建的角色,然后单击“保存”。

7.运行Test事件以调用AWS Lambda将Person数据保存在Dynamo DB中

成功上传罐子后,转到“选择测试事件”下拉菜单,然后单击“配置测试事件”。

您将看到包含以下数据的屏幕。输入事件名称为“ HelloWorldEvents”并替换以下数据

{
"key1": "value1",
"key2": "value2",
"key3": "value3"}with below Json :
{
"empId": 1,
"firstName": "Gaurav",
"lastName": " Bhardwaj"}
/pre>

Click on "save" button and then on "Test" button.

You should be able to see following screen.

现在转到您的Dynamo Db服务并打开Employee表,然后单击Start search按钮,您应该可以看到以下记录:

您可以在GitHub中找到本教程的所有代码。

总结和几点要点:

因此,在本教程中,我们看到了

-如何使用Lambda函数将数据保存在Dynamo DB中。

-我们仅创建了empId属性,并且在保存Employee对象时Dynamo Db会自动为我们创建其余属性,因为它具有firstName和surName属性,并且POJO的名称与表的名称匹配。 DynamoDB控制台也具有所有三个属性的表。

-如果我们再次尝试保存相同的对象(具有相同的ID),那么它将只是覆盖现有的对象,因此不会有任何异常。

翻译自: https://www.javacodegeeks.com/2020/03/aws-lambda-to-save-data-in-dynamodb.html

aws dynamodb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat处理一个HTTP请求的过程

一、Tomcat的组成 &#xff08;1&#xff09;Server服务器元素代表整个catalina servlet容器。是单例模式。 &#xff08;2&#xff09;ServiceService是这样一个集合&#xff1a;它由一个或者多个Connector组成&#xff0c;以及一个Engine&#xff0c;负责处理所有Connector所…

java安全——数字签名+代码签名

【0】README1&#xff09;本文文字描述转自 core java volume 2, 旨在学习 java安全——数字签名 的基础知识&#xff1b;2&#xff09;本文实践内容以及截图笔记均为原创&#xff1b;3&#xff09;如果要给予applet更多的信赖&#xff0c;你必须知道下面两件事&#xff1a; 3.…

//rest风格写_REST /使用提要发布事件

//rest风格写处理事件 当使用多个解耦的服务时&#xff08;例如&#xff0c;在微服务体系结构中 &#xff09;&#xff0c;很有可能需要一种方法来将某种域事件从一个服务发布到一个或多个其他服务。 许多广泛采用的解决方案依赖于单独的基础结构来解决此问题&#xff08;例如…

Java IO总结

一、IO的类型 面向字节的流&#xff0c;面向字符的流二、面向字节的流 &#xff08;1&#xff09;InputStream FileInputStream FilterInputStream -BufferedInputStream -DataInputStream -PushbackInputStream 回退流 unread() ObjectInputStream PipedInputSt…

java安全——加密

【0】README1&#xff09;本文文字描述转自 core java volume 2&#xff0c;旨在学习 java安全——加密 的基础知识&#xff1b;2&#xff09;java 安全性的第二个重要方面是加密。3&#xff09;认证对于代码签名已足够了-没必要将代码隐藏起来。但是&#xff0c;当applet或者应…

java 异常 最佳实践_处理Java异常的10种最佳实践

java 异常 最佳实践在本文中&#xff0c;我们将看到处理Java异常的最佳实践。 用Java处理异常不是一件容易的事&#xff0c;因为新手很难理解&#xff0c;甚至专业的开发人员也可能浪费时间讨论应该抛出或处理哪些Java异常。 因此&#xff0c;最大的开发公司对如何使用它们有一…

Java NIO总结

一、NIO NIO是new IO&#xff0c;也是非阻塞IO。有Channel、Selector、Buffer、Pipe、FileLock等类。 Buffer在java.nio包 Channel、Selector、Pipe、FileLock等在java.nio.channels包 二、Channel通道 设置非阻塞configureBlocking(false); 注册选择器register(selector,…

java 不可变map_如何用Java创建不可变的Map

java 不可变map你好朋友&#xff0c; 在本教程中&#xff0c;我们将看到如何在Java中创建不可变的Map。 –不可变的类或对象是什么意思&#xff1f; –什么是不可变地图&#xff1f; –如何在Java中创建不可变的Map&#xff1f; 不变的类或对象是什么意思&#xff1f; 不可…

ToolProvider.getSystemJavaCompiler() return null 的解决方法

【1】利用java 编译器API 编译 普通的java文件 1.1&#xff09;代码如下&#xff1a; package com.corejava.chapter10_2;import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream;import javax.tools.JavaCompiler; import jav…

脚本错误和安全警报怎么解决_适用于应用程序错误的AWS警报

脚本错误和安全警报怎么解决监视对于任何实际应用都是关键的。 您必须知道正在发生的事情&#xff0c;并在发生问题时实时得到警报。 AWS为此提供了CloudWatch&#xff0c;并自动为您提供了许多指标。 但是&#xff0c;您必须定义一些自己的东西。 然后&#xff0c;您需要定义适…

java平台脚本+java编译器API

【0】README 0.1&#xff09;本文文字描述转自 core java volume 2&#xff0c; 旨在学习 java平台脚本java编译器API 的 基础知识&#xff1b; ------------------------------------------------------------------------------ 【1】java平台的脚本 1&#xff09;脚本语…

Java 多线程总结

一、多线程实现方式 &#xff08;1&#xff09;继承Thread类&#xff0c;覆盖run方法 &#xff08;2&#xff09;实现Runnable接口&#xff0c;覆盖run方法&#xff0c;将对象传人Thread对象中实现Runnable接口比继承Thread类所具有的优势&#xff1a; 1&#xff09;适合多个相…

古巴比伦乘法_古巴:为生产做准备

古巴比伦乘法“它可以在我的本地机器上运行&#xff01;” 如今&#xff0c;它听起来像模因&#xff0c;但是“开发环境与生产环境”的问题仍然存在。 作为开发人员&#xff0c;您应始终牢记&#xff0c;您的应用程序有一天将在生产环境中开始运行。 在本文中&#xff0c;我们将…

java编译器API——使用编译工具

【0】README 0.1&#xff09;以下内容转自&#xff1a; http://suntips.iteye.com/blog/69002 0.2&#xff09;for basic java compiler API, please visit http://blog.csdn.net/pacosonswjtu/article/details/50718494 1&#xff09;当你需要更好的处理这些结果时,你可以使…

Java 线程同步总结

一、synchronized&#xff08;1&#xff09;synchronized方法 &#xff08;2&#xff09;synchronized块 二、Lock 注意&#xff1a;及时释放Lock锁&#xff0c;否则会出现死锁&#xff0c;通常在finally代码释放锁 &#xff08;1&#xff09;ReentrantLock 实现…

aws es方案_AWS Elasticsearch后模式

aws es方案碰巧我们在SaaS版本的LogSentinel上遇到了生产问题–我们的Elasticsearch停止了对新数据编制索引。 由于Elasticsearch只是辅助存储&#xff0c;因此没有数据丢失&#xff0c;但这给我们的客户带来了一些问题&#xff08;他们无法在其仪表板上看到实时数据&#xff0…

java注解总结

【0】README 0.1&#xff09;本文主要对 java 注解做总结&#xff1b; 【1】处理注解的级别 level1&#xff09; 在运行期级别处理注解&#xff1a; http://blog.csdn.net/pacosonswjtu/article/details/50719361level2&#xff09;在源码级别处理注解&#xff1a; http://b…

Java 类加载总结

一、类加载过程 装载链接验证准备解析初始化二、类初始化情况 1&#xff09;创建类的实例&#xff0c;也就是new一个对象 2&#xff09;访问某个类或接口的静态变量&#xff0c;或者对该静态变量赋值 3&#xff09;调用类的静态方法 4&#xff09;反射&#xff08;Class.…

maven依赖管理_依赖管理和Maven

maven依赖管理Maven伟大而成熟。 几乎所有事物都总有解决方案。 您可能在组织项目上遇到的主要情况是依赖管理。 而不是每个项目都具有自己的依赖关系&#xff0c;您需要一种集中的方式来继承那些依赖关系。 在这种情况下&#xff0c;您可以在父舞会上声明托管依赖项。 在我的…

JavaBean 持久化

【0】README 0.1&#xff09;本文文字描述转自 core java volume 2&#xff0c;旨在学习 JavaBean 持久化 的基础知识&#xff1b; 0.2&#xff09;本文所有源代码荔枝均为原创&#xff1b; 0.3&#xff09; for complete souce code, please visit https://github.com/pa…