이미지, 파일 업로드를 위한 클라우드 스토리지 활용
파이어베이스 storage, aws s3 등의 클라우드 스토리지를 활용하여 이미지 및 파일 관리를 하는 방식에 대해 알아봅시다.
서버에 바로 이미지 파일을 보내는 것이 아닌, 파이어베이스 storage / aws s3 등의 이미지, 파일 등록 전용 스토리지를 거친 후 보내야한다.
서버에 이미지 파일을 바로 보내게 되면 서버의 용량에 굉장한 부하가 생기기때문에, 이미지(파일)을 전담해서 저장해주는 외부 서버를 이용해야한다.
구체적인 로직은 파이어베이스/s3 등의 이미지 등록 전용 서버에 파일을 올리면 거기서 파일을 저장시키고, 저장된 url을 반환해준다. 이 url을 서버에 전달주는 것이다.
결과적으로 서버는 실제 이미지 파일을 저장하는 것이 아닌 이미지 주소만 저장하고, 나중에 이 주소를 가지고 데이터를 보여주는 것.
참고자료 : aws-sdk
// aws-sdk를 활용한 이미지 업로드 예시
AWS.config.update({
region: REGION,
accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY,
});
const myBucket = new AWS.S3({
params: { Bucket: ITEM_UPLOAD_S3_BUCKET },
region: REGION,
});
const s3ImgUpload = async (file, index, length) => {
const params = {
ACL: 'public-read',
Body: file,
Bucket: ITEM_UPLOAD_S3_BUCKET,
Key: file.name,
ContentType: 'image/jpeg',
};
myBucket
.putObject(params)
.on('httpUploadProgress', evt => {
console.log(evt);
})
.on('complete', evt => {
console.log(evt.request.httpRequest.endpoint.host + evt.request.httpRequest.path);
.send(err => {
if (err) console.log(err);
});
};
Last updated