Node.js

[Node.js/AWS] node.js로 S3 버킷 파일 목록 조회, 업로드, 다운로드

a-몬드 2022. 11. 21. 08:45
반응형

1. S3 파일 업로드 

const AWS                 = require('aws-sdk');
const Fs                  = require('fs');


// S3 객체 생성
const s3 = new AWS.S3({
  "accessKeyId"     : "S3 ACCESS KEY 정보",
  "secretAccessKey" : "S3 SECRET ACCESS KEY 정보",
  "region"          : "REGION정보"
});

// load Form module
const form = new Formidable.IncomingForm();

// get form-data
form.parse(req, async (e, fields, files) => {

  const fileData = files["file"];
  //파일 가져오는 작업
  const uploadFile = Fs.readFileSync(fileData["path"]);

  // S3 Parameter
  const uploadParam           = {
    "Bucket"      : "서버 DNS + BucketName"                                            ,
    "Key"         : "저장하고 싶은 폴더 path"                                           ,
    "Body"        : uploadFile                                                         ,
    "ACL"         : "public-read" //Public-read를 해야 url 이용하여 파일을 다운로드 받을 수 있다.
  }
  
  //업로드 작업
  await s3.putObject(uploadParam).promise()
}

 

2. S3 파일 다운로드받을 수 있는 URL 생성

const AWS                 = require('aws-sdk');

// S3 객체 생성
const s3 = new AWS.S3({
  "accessKeyId"     : "S3 ACCESS KEY 정보",
  "secretAccessKey" : "S3 SECRET ACCESS KEY 정보",
  "region"          : "REGION정보"
});

const downloadParams        =   {
    "Bucket"       :   "서버 DNS + BucketName"                        ,
    "Key"          :   "다운로드 받고 싶은 S3 폴더 경로 + 파일이름 + 확장자"
  };

// 파일 다운로드 URL가져오는 작업
let url = await s3.getSignedUrl('getObject', downloadParams);
  
// 물음표 뒤에 부분은 잘라야 바로 파일 다운로드
return url.substring(0, url.indexOf('?'));

 

3.S3 파일 다운로드

const AWS                 = require('aws-sdk');


// S3 객체 생성
const s3 = new AWS.S3({
  "accessKeyId"     : "S3 ACCESS KEY 정보",
  "secretAccessKey" : "S3 SECRET ACCESS KEY 정보",
  "region"          : "REGION정보"
});

// S3 Parameter
  const downloadParam       = {
    "Bucket"     :   "서버 DNS + BucketName"                        ,
    "Key"        :   "다운로드 받고 싶은 S3 폴더 경로 + 파일이름 + 확장자"
  }

  const {downloadFile} = await s3.getObject(downloadParam).promise();

4.S3 파일 목록 조회

const AWS                 = require('aws-sdk');

// S3 객체 생성
const s3 = new AWS.S3({
  "accessKeyId"     : "S3 ACCESS KEY 정보",
  "secretAccessKey" : "S3 SECRET ACCESS KEY 정보",
  "region"          : "REGION정보"
});

const listParams = {
  Bucket       : "BucketName"                       ,
  Prefix       : "목록 조회 하고 싶은 파일 경로"
}

const listedObject = await s3.listObjectsV2(listParams).promise();

let awsLists = [];
let contents = listedObject.Contents;
contents.forEach((content) =>{
  let temp = content.Key;
  awsLists.push(temp.replace(path, ''));
});

console.log(awsLists);
반응형