PJT
aws s3
- simple storage service
- 무한대 용량을 가진 인터넷 클라우드 외장하드
- ec2 가 지금 서버 = 컴퓨터 본체라고 하면 여기에 파일을 저장하면 (하드 디스크) 컴퓨터가 고장 나거나 껐다 켜면 데이터가 날아갈 위험이 있음
- 그래서 s3 = 저장소 = 본체하고 분리된 안전한 창고임 여기에 파일을 저장하면 고유한 주소 url을 줌
- 파일(이미지)를 s3한테 던지고
- s3가 주는 영수증 (파일 경로/ key)만 챙기면 됨
그래서 전체 흐름은
- FE: 내 아바타 만들어줘 → 요청 → spring
- spring → fast api : 아바타 하나 만들어서 s3에 올리고 나한테는 위치만 알려줘
- fast api(ai) → aws s3 → spring
- 이미지를 생성해서 메모리에 byte[] 형태로 들고 있음
- 이걸 들고 바로 aws s3로 upload
- s3가 ack 응답을 받으면, 파일 경로를 spring에게 응답
- spring: 받은 경로만 db에 저장하면 끝남
이때 base64로 주고 받으면 안되나?
- base 64로 변환하면 용량이 33% 늘어남
- byte[] 바이너리 상태 그대로 s3에 꽂는 게 나음