저번 포스팅에 이에 이번에는 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형식의 프로토콜 기반으로 외부망과 연결하도록 하겠다.








+ Recent posts