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中
![](https://i-blog.csdnimg.cn/blog_migrate/684264b9a75db63407f556e5d8668ab5.png)
1.在Dynamo数据库中创建一个名为Employee的表
1.1要在Dynamo DB中创建表,请登录AWS控制台并在服务中搜索Dynamo DB,或者您可以在Database下找到DynamoDB服务。单击Dynamo DB,您将看到以下屏幕。
![](https://i-blog.csdnimg.cn/blog_migrate/738b2e818a822c8ef2cf816a677acbca.png)
1.2要创建一个Employee表,单击“ Create table”按钮,您将看到以下屏幕。 输入表名称为“ Employee”,分区键为“ emp_id”,然后单击“ Create”按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/bdcb6113c14ddf8688c223e130eab889.png)
如下面的屏幕快照所示,它将为您创建Employee表。
![](https://i-blog.csdnimg.cn/blog_migrate/35de2c0190d1213bdd420a80d54217d9.png)
只需单击项目选项卡,您就可以看到带有empId列的表已创建。
![](https://i-blog.csdnimg.cn/blog_migrate/a3ea50296c60509c6f2e4956159a5316.png)
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。
单击“访问管理”下的“策略”,您将看到以下屏幕。
![](https://i-blog.csdnimg.cn/blog_migrate/864115dff37be5e7be71808c2728ae4f.png)
单击创建策略,您将看到以下屏幕:
![](https://i-blog.csdnimg.cn/blog_migrate/53ce0c55527d2572e8f0512ac94d6890.png)
单击“选择服务”,然后在搜索框中键入DynamoDB。
![](https://i-blog.csdnimg.cn/blog_migrate/4f042ff6ef0c12ee3b9018bcadc9709c.png)
选择Dynamo DB,然后在“访问级别”部分中选择GetItem和PutItem。
![](https://i-blog.csdnimg.cn/blog_migrate/89f3146badbc82770e580ec299db3c7d.png)
选择资源。
![](https://i-blog.csdnimg.cn/blog_migrate/a662f426ffd227d7d64681b917628436.png)
单击您的Dynamo Db表所在的“添加ARN.Fill区域”,然后输入表名,然后单击“添加”。
![](https://i-blog.csdnimg.cn/blog_migrate/1574b4e7bd0c5ade6591ecaeb0eb81bc.png)
单击“查看策略”,然后输入要提供给策略的名称,并输入有关此策略的描述,然后单击“创建策略”。
![](https://i-blog.csdnimg.cn/blog_migrate/c2cb0dd2147aaeaa9718b9e3cda84b8a.png)
4.创建一个角色并将策略附加到该角色
转到IAM服务->角色,单击“创建角色”按钮,您将看到以下屏幕。
![](https://i-blog.csdnimg.cn/blog_migrate/45dc0a1e81acdd3bab3117058a51d902.png)
选择AWS服务作为受信任实体。 这是您要为其分配角色的实体,因为我们想将此角色分配给Lambda函数(仅AWS服务),因此我们选择了AWS服务。 同样在“选择用例”中,选择Lambda,然后单击“下一个权限”。 您将看到以下屏幕。
![](https://i-blog.csdnimg.cn/blog_migrate/4f17b610fb963abec888cf94ffadbe21.png)
现在,在“筛选器策略”中,键入您刚在步骤2中创建的策略名称(DynamoDBEmployeeTblAccess)
![](https://i-blog.csdnimg.cn/blog_migrate/11db898e05fe72fef6e9b838ff4387b1.png)
在下一个屏幕上,单击“下一步:标签”按钮,然后单击“下一个:审阅”按钮。在下一个屏幕上,在“角色名称”中输入名称“ DynamoDBEmployeeTblAccess”。 添加角色描述。
![](https://i-blog.csdnimg.cn/blog_migrate/d3bafe6dba089932972e7fe1d22c69dc.png)
单击“创建角色”按钮,您将看到以下成功消息:
![](https://i-blog.csdnimg.cn/blog_migrate/010930c923337f683bbabdbafc6453ec.png)
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