본문 바로가기
Nodejs

[Nodejs] express js에서 AWS S3스토리지에 저장된 파일 삭제하기

by teamnova 2023. 8. 26.
728x90

안녕하세요. 지난 번에 expressjs 프레임워크를 사용하여 AWS S3스토리지에 저장한 파일이 존재하는지 여부를 확인해보았는데요, 오늘은 존재하는 파일을 삭제해보도록 하겠습니다. 

 

이 글을 참고해서 셋팅해주시기 바랍니다. 

https://stickode.tistory.com/876

 

// 스틱코드
router.get('/stickode', async (req, res) => {
  bucket = { Bucket: '버킷명', Key: `경로` }
  const eixst = await checkExist(s3);
  console.log('eixst', eixst);

    if (eixst) {
        const deleteSuccess = deleteFiles(bucket);
        if (deleteSuccess) {
            return res.send('delete~~~');
        } else {
            return res.send('not delete~~~');
        }
  } else {
    return res.send('not exist~~~');
  }

  function checkExist(s3, list) {
    console.log('checkExists()');

    // 파일 존재하는지 조회
    return new Promise((resolve, reject) => {
      s3.headObject(bucket, function (err, exists_data) { // 1개씩 확인가능
        console.log('headObject() bucket: %o', bucket);
        if (err) {
          console.log(`File ${bucket.Key} does not exist.`);
          return resolve(false);
        } else {
          console.log(`File ${bucket.Key} exists. checking...`);
          return resolve(true);
        }
      });
    })
    }
    

  // 오브젝트 삭제
  function deleteFiles(bucket) {
    console.log('deleteFiles() 입장 Bucket:', bucket);
    
    params = {
      Bucket: bucket.Bucket, 
      Delete: {
       Objects: [
        {
          Key: bucket.Key
        }
       ], 
       Quiet: false // (참고) Delete API 요청에 대한 응답에 삭제 작업의 성공/실패 여부와 관련된 정보
      }
    };

    return new Promise((resolve, reject) => {
      Promise.all([
        s3.deleteObjects(params).promise()
      ]).then(delete_data => {
        console.log(`File deleted successfully.`, delete_data);  // 조회O 삭제O
        resolve(true);
      }).catch(err => {
        console.log('err:', err.stack);
        reject(err); // catch문으로 이동
      });
    });
    }
    
});
 

headObject()로 파일을 존재하는지 확인했다면, 
deleteObjects()로 파일을 삭제합니다. 

오늘도 읽어주셔서 감사합니다. 좋은 하루 보내세요