저희는 비디오 스트리밍 서비스를 개발하는만큼, 비디오/이미지 파일을 전달하는 일이 많았습니다. 그래서 보다 효율적인 처리가 중요했는데요, 동시에 파일 접근 권한에도 신경을 써야 했습니다.
이 문서에서 파일 처리에 대한 고민 과정을 공유해 드리려고 합니다! 😊
저희는 비디오 스트리밍 서비스를 개발하는만큼, 비디오/이미지 파일을 전달하는 일이 많았습니다. 그래서 보다 효율적인 처리가 중요했는데요, 동시에 파일 접근 권한에도 신경을 써야 했습니다.
저희는 비디오/이미지 파일을 모두 NCP Object Storage에 업로드하고, 조회하기 위해서는 다시 다운로드 하는 과정을 거칩니다.
NCP Object Storage는 AWS의 S3와 같은 서비스로, 모든 형식의 데이터를 업로드/다운로드 할 수 있습니다! Object Storage는 bucket
이 폴더 개념, object
가 파일 개념입니다.
각 object별로 공개 또는 비공개 설정을 할 수 있는데, 공개로 설정할 경우 bucket의 url만 있으면 누구나 자유롭게 object에 접근할 수 있습니다. 그런데 비공개로 설정한다면, 인증된 사용자만 object에 접근할 수 있게 됩니다.
그럼 인증된 사용자인지는 어떻게 구분할 수 있을까요?
비공개된 object에 접근하기 위해선 api 요청을 보낼 때 Authorization Header가 꼭 필요합니다.
PUT /example-bucket/queen-bee HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T183001Z
x-amz-content-sha256: UNSIGNED-PAYLOAD
Content-Type: text/plain; charset=utf-8
Host: kr.object.ncloudstorage.com
Content-Length: 533
The 'queen' bee is developed from larvae selected by worker bees and fed a
substance referred to as 'royal jelly'. After a short while the 'queen' is
the mother of nearly every bee in the hive, and the colony will fight
fiercely to protect her.
위에서 API 요청 예시를 확인할 수 있는데요, 저희가 Object Storage를 사용하면서 가장 많이 요청하는 API 중 하나인 PutObject API
입니다.
API 요청을 보내기 위해 Authorization
, x-amz-date
, x-amz-content-sha256
, Host
헤더 등이 필수로 필요하고, 그 중 Authorization
헤더로 요청을 보내는 사용자가 인증된 사용자인지 확인할 수 있습니다.
Authorization Header를 만드는 자세한 방법은 ‣ (작성예정) 를 참고해주세요!