저장을 습관화
S3 버킷 사용하여 이미지 저장하기 + access key 받아오기(IAM) 본문
S3만으로는 서버에서 이미지 업로드하고 불러오고 하는건 안됨
S3 bucket은 진짜 단순히 저장소일 뿐이고
자신의 서버에서 저장소에 업로드하는건 multer 라이브러리 사용해야 됨
- 작업 환경
Windows 10, VSC, sequelize, MySQL, AWS RDS, S3, IAM
지 업로드 및 출력하기
[참고]
[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;
이 다음 내용은 다음에 이어서..
'공부 > node.js' 카테고리의 다른 글
Nest.js 입문 기록 2 - 프로젝트 생성과 코드 분석 (0) | 2023.08.04 |
---|---|
Nest.js 입문 기록 (0) | 2023.08.04 |
에러 기록 - SequelizeForeignKeyConstraintError (0) | 2023.07.14 |
MySQL sequelize 연습 기록 3 (0) | 2023.07.13 |
에러 기록 - TypeError: Router.use() requires a middleware function but got a Object (0) | 2023.07.09 |