AWS안에 DynamoDB안에 여러개의 json파일을 한꺼번에 넣어야하는 경우가 있다.

node.jsAWS package 그리고 AWS IAM에서 발급해주는 key값을 이용해서 넣는 코드이다.

 

#1. 먼저 aws-sdk module을 설치

 

https://www.npmjs.com/package/aws-sdk

 

aws-sdk

AWS SDK for JavaScript

www.npmjs.com

npm install aws-sdk

 

#2. 그 다음 AWS 정보가 담겨있는 config 파일을 하나 만든다.

module.exports = {
  aws_table_name: "table_name",
  aws_local_config: {
    region: "your_region",
    endpoint: "endpoint"
  },
  aws_remote_config: {
    accessKeyId: "your_id",
    secretAccessKey: "your_key",
    region: "your_region"
  }  
}

 

위의 accessKeyIdsecretAccessKeyAWS IAM에서 발급이 가능하다.

또한 regionendpoint 또한 자신의 region에 맞게 넣어주면 된다.

(검색 해보면 자세히 나와있다.)

 

https://aws.amazon.com/ko/premiumsupport/knowledge-center/create-access-key/

 

AWS 액세스 키 생성

프로그램, 스크립트 또는 개발자가 사용자의 AWS 계정에 있는 리소스에 프로그램 방식으로 액세스하도록 허용하려면 AWS 액세스 키가 있어야 합니다. 새 액세스 키를 생성하려면 어떻게 해야 하

aws.amazon.com

region

 

 

#3. 그다음 아래와 같이 js file 생성

const AWS = require("aws-sdk");
const fs = require("fs");
const config = require('./config/config.js');
const fileName = require('./fileName');

AWS.config.update(config.aws_remote_config);

let docClient = new AWS.DynamoDB.DocumentClient();
console.log("Connect DynamoDB");

fileName.forEach((fileName, idx) => {
  setTimeout(() => {
    console.log(fileName, idx);
    insertFileNameJson(fileName);
  }, 3000 * idx);
});

const insertFileNameJson = (fileName) => {
  let insertData = [];
  fs.stat(`${fileName}.json`, (err, stats) =>{
    if (err.code === "ENOENT") {
      console.log("File is not exist");
    } else {
      insertData.push(JSON.parse(fs.readFileSync(`${fileName}.json`, "utf8")));
      insertData.forEach((data) => {  
        let params = {
          TableName: "table_name",
          Item: {
            uuid: uuid,
            name: name,
            ... your_data
          }
        };
        docClient.put(params, function(err, category) {
          if (err) {
            console.log("Failed", JSON.stringify(err, null, 2));
          } else {
            console.log("Succeed");
          }
        });
      });
    }
  });
}

 

fs module도 사용했다.

https://nodejs.org/api/fs.html

 

File system | Node.js v16.11.0 Documentation

 

nodejs.org

 

aws-sdk module과 접속정보를 통해서 AWS DynamoDB와 연결후에

넣을 목록과 데이터(json file)을 준비하고

넣을 목록에 있는 파일명을 기준으로 map함수를 통해서 돌아가면서 insert 하는 방식이다.