aws dynamodb_AWS Lambda将数据保存在DynamoDB中 绝地灬酷狼 2023-02-25 03:56 51阅读 0赞 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中** ![format_png][] ## 1.在Dynamo数据库中创建一个名为Employee的表 ## **1.1**要在Dynamo DB中创建表,请登录AWS控制台并在服务中搜索Dynamo DB,或者您可以在Database下找到DynamoDB服务。单击Dynamo DB,您将看到以下屏幕。 ![format_png 1][] **1.2**要创建一个Employee表,单击“ Create table”按钮,您将看到以下屏幕。 输入表名称为“ Employee”,分区键为“ emp\_id”,然后单击“ Create”按钮。 ![format_png 2][] 如下面的屏幕快照所示,它将为您创建Employee表。 ![format_png 3][] 只需单击项目选项卡,您就可以看到带有empId列的表已创建。 ![format_png 4][] ## 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; @Override public 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。 单击“访问管理”下的“策略”,您将看到以下屏幕。 ![format_png 5][] 单击创建策略,您将看到以下屏幕: ![format_png 6][] 单击“选择服务”,然后在搜索框中键入DynamoDB。 ![format_png 7][] 选择Dynamo DB,然后在“访问级别”部分中选择GetItem和PutItem。 ![format_png 8][] 选择资源。 ![format_png 9][] 单击您的Dynamo Db表所在的“添加ARN.Fill区域”,然后输入表名,然后单击“添加”。 ![format_png 10][] 单击“查看策略”,然后输入要提供给策略的名称,并输入有关此策略的描述,然后单击“创建策略”。 ![format_png 11][] ## 4.创建一个角色并将策略附加到该角色 ## 转到IAM服务->角色,单击“创建角色”按钮,您将看到以下屏幕。 ![format_png 12][] 选择AWS服务作为受信任实体。 这是您要为其分配角色的实体,因为我们想将此角色分配给Lambda函数(仅AWS服务),因此我们选择了AWS服务。 同样在“选择用例”中,选择Lambda,然后单击“下一个权限”。 您将看到以下屏幕。 ![format_png 13][] 现在,在“筛选器策略”中,键入您刚在步骤2中创建的策略名称(DynamoDBEmployeeTblAccess) ![format_png 14][] 在下一个屏幕上,单击“下一步:标签”按钮,然后单击“下一个:审阅”按钮。在下一个屏幕上,在“角色名称”中输入名称“ DynamoDBEmployeeTblAccess”。 添加角色描述。 ![format_png 15][] 单击“创建角色”按钮,您将看到以下成功消息: ![format_png 16][] ## 5.在AWS Lambda控制台中以jar的形式上传AWS Lambda函数的代码 ## 本教程的所有代码都已放入我的Git存储库中。 链接在本教程的结尾给出。 因此,您可以将该代码导入您的工作区中,然后进行maven构建,这将为您创建jar,然后按照我之前的教程进行操作 [如何使用Java创建Aws Lambda函数][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][https_www.javacodegeeks.com_2020_03_aws-lambda-to-save-data-in-dynamodb.html] aws dynamodb [format_png]: /images/20230209/b06db19c13254e8eaa784a0258a2d0f7.png [format_png 1]: /images/20230209/e1ee648b3cb04db9b628829665edf724.png [format_png 2]: /images/20230209/32ba45dc39a849a6ac29070c628b7190.png [format_png 3]: /images/20230209/09f49fe2976447db821b7281e987b0a7.png [format_png 4]: /images/20230209/f496d1663ddc48ab99c5fcac16316114.png [format_png 5]: /images/20230209/7d8823bcea104bc7900887c70df90fc8.png [format_png 6]: /images/20230209/990d378306c647a3b571517487dcec5a.png [format_png 7]: /images/20230209/71ad6f26086f4582a502ae62151cb27a.png [format_png 8]: /images/20230209/3b78a1e0808e4d3995c89c972beab02a.png [format_png 9]: /images/20230209/1e9c03bad1774ca2bc70f2e96eb0d9d1.png [format_png 10]: /images/20230209/a1e5489c484a4bd7a3f2935f15b01758.png [format_png 11]: /images/20230209/0e1230a4de114fdca510c40478bd52f8.png [format_png 12]: /images/20230209/4b9a171f821d447e8cc9ede75d990348.png [format_png 13]: /images/20230209/efdb4f050254495e949c80188e2eab44.png [format_png 14]: /images/20230209/4284ef312a4042dfa952db28ca70caa3.png [format_png 15]: /images/20230209/ef75fa1fc68048e1a4940eef1709f0b4.png [format_png 16]: /images/20230209/1bd8bdb687c5463289f85c5a8a8c8a3b.png [Java_Aws Lambda]: https://javasolutionsguide.blogspot.com/2020/03/how-to-create-aws-lambda-function-with.html [https_www.javacodegeeks.com_2020_03_aws-lambda-to-save-data-in-dynamodb.html]: https://www.javacodegeeks.com/2020/03/aws-lambda-to-save-data-in-dynamodb.html
还没有评论,来说两句吧...