티스토리 뷰
파일 저장소로 s3를 쓰는건 거스를수 없는 대세입니다. 아직도 안쓰고 계셨나요
비용도 저렴하고,
용량 가득 찰까봐 걱정할일도 없고,
cloudfront와 연결하여 전세계 어디든 빠른 속도로 리소스를 제공할수 있습니다
s3로 파일 업로드 어떻게 하고 계신가요
아마도 여러분의 어플리케이션 서버로 먼저 파일을 업로드하고,
aws sdk를 이용하여 어플리케이션 서버가 업로드된 파일을 s3로 다시 업로드하는 과정으로도 많이 구현하실거예요
업로드된 이미지의 썸네일을 만든다던가 그런코드도 있을수 있겠죠?
물론 이러한 방법을 사용하는것도 파일의 사용을 내가 직접 컨트롤한다는 점에서 좋습니다
그런데 업로드되는 파일의 크기가 크다면 여러모로 고민되는 부분들이 있습니다.
"용량이 큰파일을 s3로 곧바로 업로드하면 네트워크 비용을 좀 더 절감할수 있지 않을까?"
그리고 작은 파일은 상관이 없겠지만
큰 파일을 먼저 어플리케이션 서버에 업로드하고 그 어플리케이션 서버가 업로드된 파일을 다시 s3로 업로드한다면
실제로 걸리는 시간이 2배가 되겠죠?
(뭐 백그라운드에서 처리한다면 조금 더 효율적일수 있겠지만, s3로 다이렉트로 업로드하는것보다는 당연히 시간이 조금 더 걸리겠죠?)
aws는 미리 서명된 url(pre signed url)을 통해서 s3로 바로 업로드할수 있는 방법을 제공하고 있습니다
예제로 다양한 언어로 샘플 코드도 있습니다
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/PresignedUrlUploadObject.html
aws sdk를 이용하여 먼저 presignedurl을 생성합니다.
그리고 그렇게 생성된 url로 파일을 PUT method를 사용하여 업로드하시면 됩니다
그런데 저는 모처럼 다시 이 세팅을 하다가 엄청난 시간을 소비하며 삽질을 했는데요
presignedurl을 생성할때 content-type을 명시할수 있는데,
여기서의 content-type이 계속 적용이 안되는 현상이 발생했습니다
video/mp4 타입으로 presigned url을 생성해서 업로드를 했는데
실제로 s3에 업로드된 파일을 클릭해 보면 video/mp4 타입으로 저장이 되어있지가 않더라구요
그래서 해당 리소스에 접근하면 content-type이 video/mp4가 아니라 재생이 되지 않고
곧바로 다운이 되더라고요
왜그럴까 한참을 삽질을 했는데
PUT메소드를 사용하여 파일을 업로드할때 content-type이 명시가 되어야하더라구요
content-type 이 명시되어있지 않아 원하는 content-type이 설정되지 않았던것이었어요
'WEB2.0 > 프로그래밍' 카테고리의 다른 글
pm2 써봤니? (재실행 스크립트 만들기) (0) | 2020.05.09 |
---|---|
nodejs는 API를 처리할테니 nginx는 정적파일을 처리해라 (0) | 2020.05.08 |
iOS UISearchDisplayController를 이제는 놓아주세요 (0) | 2020.05.05 |
iOS 13에서 deviceToken description 의 결과값이 바뀌었다 (0) | 2020.05.04 |
iOS 앱스토어 심사에서 발견된 crash 파일(크래시 리포트) 분석하기 (0) | 2020.05.03 |
- Total
- Today
- Yesterday
- 벤처
- CSS
- php
- 애플
- 구글
- iPhone
- 앱스토어
- 안드로이드
- 스마트폰
- AWS
- 소프트웨어
- 네이버
- Apple
- 모바일
- 경진대회
- 트위터
- 자바스크립트
- 어플리케이션
- 게임
- android
- 아이디어
- 아이폰
- 창업
- JavaScript
- 앱
- 공모전
- 웹표준
- 대학생
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |