얼음꽃의 일지

[Node] Dynamo DB 사용법 본문

잡다한 지식

[Node] Dynamo DB 사용법

얼음꽃 2024. 6. 20. 15:33
728x90

Dynamo DB 코드 사용법

 

[설치]

 

npm i @aws-sdk/client-dynamodb

npm i @aws-sdk/lib-dynamodb

 

[코드]

const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
const {
  DynamoDBDocumentClient,
  PutCommand,
  QueryCommand,
  GetCommand,
  DeleteCommand,
} = require('@aws-sdk/lib-dynamodb');

const client = new DynamoDBClient({
  region: '사용하는 지역',
  credentials: {
    accessKeyId: process.env.DYNAMODB_ACCESS_KEY,
    secretAccessKey: process.env.DYNAMODB_SECRET_ACCESS_KEY,
  },
});

const dynamoDB = DynamoDBDocumentClient.from(client);

// DynamoDB 테이블 이름
const tableName = '테이블이름';

//저장 함수
async function saveDynamoInfo(information) {
  const params = {
    TableName: tableName,
    Item: {
      key : Value,
      key : Value,
      key : Value,
      key : Value,
    },
  };

  await dynamoDB.send(new PutCommand(params));
  
  return true;
}

// primary 키로 확인 함수
// GSI는 불가능
async function checkDynamoInfo(value) {
  const params = {
    TableName: tableName,
    Key: {
      primary Key: value,
    },
  };

  const result = await dynamoDB.send(new GetCommand(params));
  return result;
}

// 데이터 확인 함수 query (GSI 이용)
async function queryDynamoInfo(type, value) {
  const params = {
    TableName: tableName,
    IndexName: type, // GSI 이름
    KeyConditionExpression: '#name = :value', // userId 속성을 키 조건으로 사용
    ExpressionAttributeNames: {
      '#name': type, // 속성 이름 설정
    },
    ExpressionAttributeValues: {
      ':value': value, // 검색할 userId 값
    },
  };

  const result = await dynamoDB.send(new QueryCommand(params));
  return result;
}

// 데이터 삭제 함수
// 마찬가지로 GSI 사용 불가능
// primary 키로만 가능
async function deleteDynamoInfo(value) {
  const params = {
    TableName: tableName,
    Key: {
      name: value,
    },
  };

  const result = await dynamoDB.send(new DeleteCommand(params));
  return result.Item;
}

module.exports = {
  saveDynamoInfo,
  queryDynamoInfo,
  checkDynamoInfo,
  deleteDynamoInfo,
};

 

 

 

728x90