본문 바로가기

서버관련/아마존 서버 (배포 관련)

아마존 S3 사용법

1. S3이란?

파일을 올리고 다운받을 수 있는 곳이다.

 

2. S3에 유저들이 사진을 올리고, 다운받아서 사진을 볼 수 있다.

 

3. 서비스 사용 방법

일단 기본적으로 플랫폼 서비스를 하기위해서는 해당 S3는 퍼블릭(누구나 접근 가능하게) 되어야 한다.

인터넷에 찾아보면 다른 방법도 있지만 (정책 사용), 내가 세팅한 방법은 아래와 같다.

위와 같이 설정하면 최종적으로 아래와 같이 엑세스 퍼블릭으로 떠야 한다.

 

나의 백엔드 앱에 shared 폴더를 보면 아래와 같이 설정해두었는데, aws cli 를 통해 내 계정의 bucket네 파일을 업로드 및 삭제하는 방법이다.

 

import AWS from "aws-sdk";

AWS.config.update({
  credentials: {
    accessKeyId: process.env.AWS_KEY,
    secretAccessKey: process.env.AWS_SECRET,
  },
});

export const uploadToS3 = async (file, userId, folderName) => {
  const { filename, createReadStream } = await file;
  const readStream = createReadStream();
  const objectName = `${folderName}/${userId}-${Date.now()}-${filename}`;
  const data = await new AWS.S3()
    .upload({
      Bucket: "vinaarbabucket",
      Key: objectName,
      ACL: "public-read",
      Body: readStream,
    })
    .promise();
  return data;
};

export const deleteFile = async (key) => {
  await new AWS.S3()
    .deleteObject({
      Bucket: "vinaarbabucket",
      Key: key,
    })
    .promise();
  return;
};