본문 바로가기
Nodejs

[Nodejs] express js에서 AWS S3스토리지에 저장된 파일 존재하는지 확인하기

by teamnova 2023. 7. 27.

안녕하세요. expressjs 프레임워크를 사용하여 AWS S3스토리지에 저장한 파일이 존재하는지 여부를 확인해보도록 하겠습니다. 

 

이전 글을 참고하여 라우터경로설정까지 가능하게 만들어주세요. 

https://stickode.tistory.com/849

 

1. 응답값

파일이 존재할 때
파일이 존재하지 않을 때

 

2. 코드

const AWS = require('aws-sdk');
 
// AWS 접근키 설정
AWS.config.update({ // config파일 생성해여 불러오기
  region: config.region,
  accessKeyId: config.accessKeyId,
  secretAccessKey: config.secretAccessKey
});

const s3 = new AWS.S3(); // S3스토리지 인스턴스 생성


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

  if (eixst) {
    return res.send('exist~~~');
  } 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);
        }
      });
    })
  }
});

- headObject() : S3에 파일이 존재하는지 확인하는 메소드

 

 

해당 js파일을 실행시키면 위와같은 응답을 받을 수 있습니다. 

오늘도 읽어주셔서 감사합니다.