저번 포스팅에 이에 이번에는 DynamoDB에 write하는 람다 펑션을 만듭니다.
"use strict"; const AWS = require('aws-sdk'); const docClient = new AWS.DynamoDB.DocumentClient({region: "eu-west-1"}); var params; exports.handler = (event, context, callback) => { var table_name = event.body.table_name; switch(event.body.instruction){ case "scan": params = { TableName: table_name, Limit: 100 }; docClient.scan(params, function(err, data){ if(err) callback(err, null); else callback(null, data); }); break; case "get": params = { TableName: table_name, Key:{ "name" : event.body.user_name } }; docClient.get(params, function(err, data){ if(err) callback(err, null); else callback(null, data); }); break; case "put": params = { TableName: table_name, Item:{ "name": event.body.user_name, "age": event.body.user_age } }; docClient.put(params, function(err, data){ if(err) callback(err, null); else callback(null, "put success"); }); break; case "delete": params = { TableName: table_name, Key:{ "name": event.body.user_name } }; docClient.delete(params, function(err, data){ if(err) callback(err, null); else callback(null, "delete success"); }); break; case "deleteAll": params = { TableName: table_name, Limit: 100 }; docClient.scan(params, function(err, data){ if(err) callback(err, null); else{ data.Items.forEach(function(item){ params = { TableName: table_name, Key:{ "name": item.user_name } }; docClient.delete(params, function(err, data){ if(err) callback(err, null); else console.log("delete" + item.user_name); }); }); } }); break; default: var errMessage = "ERR : " + event.body.instruction + " is not exist instruction"; callback(errMessage, null); } };
이전과 다른 점
입력 시 body에 명령어를 입력하는 부분이 생긴 것
user_name은 불필요한 명령어가 있으므로 전역 선언 안 함.
put, delete, deleteAll 명령어가 추가 된 것이다.
코드 자체가 쉬워서 따라 읽으면 충분히 이해가 될 것이다.
입력 ( put )
삭제 ( delete )
다음은 람다 펑션을 AWS API Gateway와 연결해서, RESTful API형식의 프로토콜 기반으로 외부망과 연결하도록 하겠다.
'AWS' 카테고리의 다른 글
[API Gateway + DynamoDB + Lambda] 외부에서 RESTful API 형식으로 Lambda 펑션 호출 (0) | 2017.04.12 |
---|---|
[Lambda + DynamoDB] Read DynamoDB using Lambda (0) | 2017.04.10 |
[Lambda] AWS Lambda + DynamoDB 알맹이 채우기 (0) | 2017.04.10 |
[IAM] Role (0) | 2017.04.10 |
[IAM] Policy (0) | 2017.04.10 |