Nodejs
[Nodejs] express js에서 AWS S3스토리지에 저장된 파일 삭제하기
teamnova
2023. 8. 26. 12:00
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()로 파일을 삭제합니다.
오늘도 읽어주셔서 감사합니다. 좋은 하루 보내세요