AWS HTTP 프로토콜과 연동되는 스토리지 S3

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

S3 객체 메타데이터 설정하기

S3 객체에 다양한 기능을 하는 메타데이터를 설정할 수 있습니다. 메타데이터는 HTTP 1.1 표준에 정의된 메타데이터와 S3 전용 메타데이터로 나뉩니다. S3 객체 목록에서 파일을 선택한 뒤 위쪽 Properties 버튼을 클릭합니다. 그리고 Metadata 탭을 클릭합니다.

S3 객체에 HTTP 헤더Header를 설정할 수 있습니다. 이 헤더는 HTTP 1.1에 정의된 것입니다.

  • Cache-Control: 브라우저 캐시 정책을 설정합니다. Value에 max-age=3600과 같은 식으로 데이터 만기 시간을 초 단위로 지정할 수 있습니다. 만기 시간이 지나기 전에 다시 요청을 할 경우 브라우저에서는 서버에서 데이터를 가져오지 않고 로컬에 있는 데이터를 사용합니다. 이 설정은 AWS의 CDN 서비스인 CloudFront와도 연계됩니다. Cache-Control에 대한 내용은 상당히 방대하므로 인터넷을 참조하기 바랍니다.
  • Content-Disposition: Value에 attachment로 설정하면 JPG 파일 같은 경우 웹 브라우저에서 그림 파일을 보여주지 않고 바로 다운로드합니다. 그림 파일 뿐만 아니라 다른 형식의 파일에도 지정할 수 있습니다.
  • Content-Type: 웹 브라우저에서 파일을 어떻게 처리해야 하는지 알려주는 메타데이터 입니다. 보통 확장자에 따라 자동으로 설정됩니다. 확장자가 없는 파일은 이 메타데이터를 통해 강제로 형식을 지정해 줄 수 있습니다. 예를 들면 HTML을 담고 있는 hello라는 파일을 올리고, 웹 브라우저에서 열면 내용이 보이지 않고 바로 다운로드가 되어버립니다. 그래서 hello라는 파일의 Content-Type을 text/html로 설정해주면 웹 브라우저에서 HTML 파일로 인식해서 내용을 보여주게 됩니다.
  • Content-Language: 텍스트로 된 파일(HTML 등)의 언어를 지정합니다. en, ko, jp 혹은 en-us, ko-kr, ja-jp 등으로 지정합니다.
  • Expires: Cache-Control과 같은 동작을 하지만 초 단위가 아닌 특정 날짜와 시간을 지정하여 만기 시간을 설정합니다. Tue, 22 Apr 2014 20:00:00 GMT와 같은 형식으로 지정해야 합니다.
  • Content-Encoding: 데이터 인코딩 방식입니다. Value에 gzip을 지정할 수 있으며 이때에는 데이터를 압축하여 전송한 뒤 웹 브라우저에서는 압축을 해제하여 사용하게 됩니다. 텍스트 데이터가 많고 용량이 큰 경우 이 메타데이터를 사용하면 데이터 전송 비용을 절감할 수 있습니다(JPG나 PNG 등의 그림 파일은 이미 포맷 자체가 압축 데이터이므로 gzip을 설정하더라도 용량이 크게 줄어들지 않습니다. 따라서 그림 파일에는 이 메타데이터를 설정하지 않는 것이 좋습니다). gzip을 가장 많이 사용하며 deflate도 지정할 수 있습니다.

다음은 그림 11-53과 같은 S3 전용 메타데이터입니다.

  • Website Redirect Location: 웹 브라우저로 해당 파일에 접속했을 때 다른 파일이나 URL로 리다이렉션하는 기능입니다. /hello.html 처럼 S3에 올라가 있는 파일명을 지정할 수 있습니다.(이 때에는 /로 시작해야 합니다.) 또는 http://www.example.com처럼 외부 도메인 또는 URL을 지정할 수도 있습니다. 이 설정은 버킷을 정적 웹사이트 호스팅으로 설정한 뒤 S3 Website Endpoint로 접속해야 동작합니다(x-amz-website-redirect-location).
  • 사용자 정의 메타데이터
  • x-amz-meta-: 사용자 마음대로 사용할 수 있는 메타데이터입니다. 객체에 추가적인 설명을 넣고 싶을 때 사용합니다. x-amz-meta- 뒤에 임의로 이름을 붙여 x-amz-meta-user-id와 같이 사용하면 됩니다.
  • S3 시스템 정의 메타데이터. 일부 S3 세부 설정들을 이 메타데이터로 대신할 수 있습니다. 그리고 S3 콘솔에서 설정한 세부 설정들은 HTTP Response Header에 아래 키로 표현됩니다.
  • x-amz-server-side-encryption: 데이터 암호화 옵션입니다. Properties의 Details에서 Server Side Encryption 설정을 대신할 수 있으며 AES256을 값으로 가집니다.
  • x-amz-version-id: S3 버킷에 버저닝 기능을 켰을 때, 파일의 버전을 표시합니다(사용자가 편집할 수 없는 메타데이터).
  • x-amz-delete-marker: S3 버킷에 버저닝 기능을 켜고, 파일을 삭제하면 파일이 완전히 삭제되지 않고 삭제 표시(delete-marker) 설정이 됩니다. true를 값으로 가집니다 (사용자가 편집할 수 없는 메타데이터).
  • x-amz-storage-class: 스토리지 클래스 옵션입니다. Properties의 Details에서 스토리지 클래스(Storage Class) 설정을 대신할 수 있으며 STANDARD와 REDUCED_REDUNDANCY를 값으로 가집니다.


그림 11-53 S3 객체 메타데이터 설정

Object Key and Metadata
메타데이터에 대한 자세한 내용은 다음 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.