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
總結
以上是生活随笔為你收集整理的aws dynamodb_AWS Lambda将数据保存在DynamoDB中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javafx 图标_JavaFX技巧32
- 下一篇: 核电站是核聚变还是核裂变(利用核裂变发电