aws dynamodb_AWS Lambda将数据保存在DynamoDB中
aws dynamodb
在本教程中,我們將看到如何使用AWS Lambda將數(shù)據(jù)保存在Dynamo DB中。
這是必需的步驟:
– 在Dynamo數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為Employee的表
–創(chuàng)建一個(gè)AWS Lambda函數(shù),該函數(shù)可以使用Dynamo DB中的Employee POJO保存員工的名字和姓氏
–創(chuàng)建一個(gè)策略,該策略將僅對(duì)DynamoD B的Employee表提供讀/寫訪問權(quán)限 –將策略附加到角色 –在AWS Lambda控制臺(tái)中以jar的形式上載AWS Lambda函數(shù)的代碼 –將在步驟4中創(chuàng)建的角色附加到AWS Lambda –運(yùn)行測(cè)試事件以調(diào)用AWS Lambda以將Employee數(shù)據(jù)保存在Dynamo DB中
1.在Dynamo數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為Employee的表
1.1要在Dynamo DB中創(chuàng)建表,請(qǐng)登錄AWS控制臺(tái)并在服務(wù)中搜索Dynamo DB,或者您可以在Database下找到DynamoDB服務(wù)。單擊Dynamo DB,您將看到以下屏幕。
1.2要?jiǎng)?chuàng)建一個(gè)Employee表,單擊“ Create table”按鈕,您將看到以下屏幕。 輸入表名稱為“ Employee”,分區(qū)鍵為“ emp_id”,然后單擊“ Create”按鈕。
如下面的屏幕快照所示,它將為您創(chuàng)建Employee表。
只需單擊項(xiàng)目選項(xiàng)卡,您就可以看到帶有empId列的表已創(chuàng)建。
2.創(chuàng)建一個(gè)AWS Lambda函數(shù),該函數(shù)可以使用Dynamo數(shù)據(jù)庫(kù)中的Employee POJO保存雇員的名字和姓氏
Pom.xml中的依賴項(xiàng):
<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.創(chuàng)建一個(gè)策略,該策略將僅對(duì)DynamoDB的Employee表提供讀/寫訪問權(quán)限,并附加一個(gè)Role
我們需要提供對(duì)AWS Lambda函數(shù)的訪問權(quán)限以讀取/寫入Dynamo DB表。為此,我們將首先創(chuàng)建一個(gè)Polciy,然后將該策略附加到Role。
要?jiǎng)?chuàng)建新策略,請(qǐng)依次轉(zhuǎn)到服務(wù)和IAM。
單擊“訪問管理”下的“策略”,您將看到以下屏幕。
單擊創(chuàng)建策略,您將看到以下屏幕:
單擊“選擇服務(wù)”,然后在搜索框中鍵入DynamoDB。
選擇Dynamo DB,然后在“訪問級(jí)別”部分中選擇GetItem和PutItem。
選擇資源。
單擊您的Dynamo Db表所在的“添加ARN.Fill區(qū)域”,然后輸入表名,然后單擊“添加”。
單擊“查看策略”,然后輸入要提供給策略的名稱,并輸入有關(guān)此策略的描述,然后單擊“創(chuàng)建策略”。
4.創(chuàng)建一個(gè)角色并將策略附加到該角色
轉(zhuǎn)到IAM服務(wù)->角色,單擊“創(chuàng)建角色”按鈕,您將看到以下屏幕。
選擇AWS服務(wù)作為受信任實(shí)體。 這是您要為其分配角色的實(shí)體,因?yàn)槲覀兿雽⒋私巧峙浣oLambda函數(shù)(僅AWS服務(wù)),因此我們選擇了AWS服務(wù)。 同樣在“選擇用例”中,選擇Lambda,然后單擊“下一個(gè)權(quán)限”。 您將看到以下屏幕。
現(xiàn)在,在“篩選器策略”中,鍵入您剛在步驟2中創(chuàng)建的策略名稱(DynamoDBEmployeeTblAccess)
在下一個(gè)屏幕上,單擊“下一步:標(biāo)簽”按鈕,然后單擊“下一個(gè):審閱”按鈕。在下一個(gè)屏幕上,在“角色名稱”中輸入名稱“ DynamoDBEmployeeTblAccess”。 添加角色描述。
單擊“創(chuàng)建角色”按鈕,您將看到以下成功消息:
5.在AWS Lambda控制臺(tái)中以jar的形式上傳AWS Lambda函數(shù)的代碼
本教程的所有代碼都已放入我的Git存儲(chǔ)庫(kù)中。 鏈接在本教程的結(jié)尾給出。
因此,您可以將該代碼導(dǎo)入您的工作區(qū)中,然后進(jìn)行maven構(gòu)建,這將為您創(chuàng)建jar,然后按照我之前的教程進(jìn)行操作
如何使用Java創(chuàng)建Aws Lambda函數(shù) ,您可以輕松地將jar上傳到AWS lambda控制臺(tái)。
6.將在步驟4中創(chuàng)建的角色附加到AWS Lambda
在Lambda的“權(quán)限”部分中,選擇“附加現(xiàn)有角色”,然后從下拉列表中選擇在步驟4中創(chuàng)建的角色,然后單擊“保存”。
7.運(yùn)行Test事件以調(diào)用AWS Lambda將Person數(shù)據(jù)保存在Dynamo DB中
成功上傳罐子后,轉(zhuǎn)到“選擇測(cè)試事件”下拉菜單,然后單擊“配置測(cè)試事件”。
您將看到包含以下數(shù)據(jù)的屏幕。輸入事件名稱為“ HelloWorldEvents”并替換以下數(shù)據(jù)
{ "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.
現(xiàn)在轉(zhuǎn)到您的Dynamo Db服務(wù)并打開Employee表,然后單擊Start search按鈕,您應(yīng)該可以看到以下記錄:
您可以在GitHub中找到本教程的所有代碼。
總結(jié)和幾點(diǎn)要點(diǎn):
因此,在本教程中,我們看到了
-如何使用Lambda函數(shù)將數(shù)據(jù)保存在Dynamo DB中。
-我們僅創(chuàng)建了empId屬性,并且在保存Employee對(duì)象時(shí)Dynamo Db會(huì)自動(dòng)為我們創(chuàng)建其余屬性,因?yàn)樗哂衒irstName和surName屬性,并且POJO的名稱與表的名稱匹配。 DynamoDB控制臺(tái)也具有所有三個(gè)屬性的表。
-如果我們?cè)俅螄L試保存相同的對(duì)象(具有相同的ID),那么它將只是覆蓋現(xiàn)有的對(duì)象,因此不會(huì)有任何異常。
翻譯自: https://www.javacodegeeks.com/2020/03/aws-lambda-to-save-data-in-dynamodb.html
aws dynamodb
總結(jié)
以上是生活随笔為你收集整理的aws dynamodb_AWS Lambda将数据保存在DynamoDB中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javafx 图标_JavaFX技巧32
- 下一篇: //rest风格写_REST /使用提要