Nodejs

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

teamnova 2023. 7. 27. 12:00
728x90

안녕하세요. 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파일을 실행시키면 위와같은 응답을 받을 수 있습니다. 

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