저장을 습관화

S3 버킷 사용하여 이미지 저장하기 + access key 받아오기(IAM) 본문

공부/node.js

S3 버킷 사용하여 이미지 저장하기 + access key 받아오기(IAM)

ctrs 2023. 7. 26. 22:47

S3만으로는 서버에서 이미지 업로드하고 불러오고 하는건 안됨

S3 bucket은 진짜 단순히 저장소일 뿐이고

자신의 서버에서 저장소에 업로드하는건 multer 라이브러리 사용해야 됨

 

- 작업 환경

Windows 10, VSC, sequelize, MySQL, AWS RDS, S3, IAM

지 업로드 및 출력하기

 

[참고]

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-S3-%EB%B2%84%ED%82%B7-%EC%83%9D%EC%84%B1-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%8B%A4%EC%A0%84-%EA%B5%AC%EC%B6%95

 

[AWS] 📚 S3 개념 & 버킷 · 권한 설정 방법

S3 (Simple Storage Service) 개념 AWS S3는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 오브젝트(객체) 스토리지 서비스이다. (참고로 S 앞글자가 3개라서 S3 이라고 한다.) 쉽

inpa.tistory.com

https://www.youtube.com/watch?v=LRsC8_tvLcA 

 

1. AWS S3 접속

2. 버킷 -> 버킷 만들기

 

3. 버킷 환경설정 선택

버킷이름에 대문자는 입력이 불가능함

객체 소유권 설정

테스트를 위해 다른 계정에서도 소유할 수 있도록 설정

퍼블릭 액세스 차단 설정

테스트를 위해 일단 전부 열어둠

솔직히 말해서 아직 이 권한의 영향력을 이해하지 못했음

하다보면 알겠지

 

그외에는 건들지 않음

버킷 만들기 클릭으로 완료

 

 

4. IAM 접속

 

5. 액세스 관리 -> 사용자

사용자 추가 선택

 

6. 사용자 설정

사용자 이름을 입력하고 다음

권한 옵션은 직접 정책 연결

권한 정책의 검색 창에서 s3를 검색

'AmazonS3FullAcess'를 선택 후 다음

입력한 내용이 맞는지 확인하고, 사용자 생성 클릭

 

7. 액세스 키 발급

사용자 화면으로 돌아올텐데, 방금 만든 사용자 클릭

보안 자격 증명 -> 액세스 키 -> 액세스 키 만들기 클릭

사용 사례는 CLI를 선택하고, 

권장 상황 이해했음에 체크, 다음 클릭

 

적당히 태그 입력하고 액세스 키 만들기 클릭

 

다음 화면에서 액세스 키와 비밀 액세스 키를 확인하고,

 

그 내용을 아래처럼 작성해서 쓰면 됨

// /midlewares/ImgUploadMiddleware.js

const multer = require('multer');
const { S3Client } = require('@aws-sdk/client-s3');
const multerS3 = require('multer-s3');
const path = require('path');

const s3Client = new S3Client({
  region: 'ap-northeast-2',
  credentials: {
    accessKeyId: '액세스 키',
    secretAccessKey: '비밀 액세스 키',
  },
});

const upload = multer({
  storage: multerS3({
    s3: s3Client,
    bucket: '생성한 버킷 이름',
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    key: function (req, file, cb) {
      cb(null, `${Date.now()}_${path.basename(file.originalname)}`);
    },
  }),
});

module.exports = upload;

 

이 다음 내용은 다음에 이어서..