AWS S3의 기본적인 기능
Aug 25, 2019
AWS의 스토리지 서비스인 S3을 알아본다.
S3는
- 웹에서 원하는 데이터를 저장하고 검색할 수 있다.
- 단순하고 견고하다.
- 데이터를 직접 다운로드하거나 다른 사람이 다운로드하도록 허용할 수 있다.
- REST, SOAP 등 표준 인터페이스를 사용한다.
- 최종 일관성 모델을 사용
- 기존 키에 대해 Put 요청이 있으면 이전 객체 혹은 업데이트 된 객체가 반환될 수 있다.
아래에서 Bucket, Object, Key, Region에 대해서 알아본다.
Bucket
버킷은
- S3에 저장된 객체(데이터)에 대한 컨테이너이다.
- 모든 객체는 특정 버킷에 포함된다.
- 버킷은 가장 높은 수준의 S3 네임스페이스를 구성한다.
- 버킷 단위로 엑세스 제어가 가능하다.
- 사용량 집계가 가능하다.
- 특정 리전에서 버킷을 구성할 수 있다.
Object
Object는
- S3에 저장되는 기본 개체
- 객체 데이터와 메타 데이터로 구성
- 객체 데이터는 S3에서 볼 수 없음
- 메타 데이터는 Key-Value 페어의 집합
- 표준 HTTP 메타 데이터가 포함: 최종수정날짜, 컨텐츠 타입 등…
- 객체 업로드 시 커스텀 메타데이터 지정 가능
- 객체는 키와 버전 ID를 통해 버킷 내에서 식별 가능
Key
- 버킷 내 객체의 고유식별자
- 모든 객체는 하나의 키를 가짐
- 버킷 + 키 + 버전 ID 조합은 객체를 고유하게 식별하게 한다.
Region
- 버킷의 리전을 선택가능함
- 특정 리전에 저ddddd장된 객체는 해당 리전을 벗어나지 않음
미리 서명된 URL (PreSigned URL)
미리 서명된 URL은 버킷에 대해 권한을 가진 사용자가 인증메시지가 포함된 URL을 생성하여 특정 객체에 대한 엑세스 권한을 부여한다. PUT/GET 요청이 가능하며 비공개 버킷에 대한 접근을 가능하게 한다. URL에 대한 만료 시간 (expiration time)을 부여할 수 있으며 이 시간이 지나면 URL은 사용할 수 없다. (CLI에선 GET 요청만 생성할 수 있고, Java SDK에선 GET/PUT 모두 생성 가능하다.)
이 포스트에 작성된 S3 API에 대한 내용은 Github에서 Java SDK로 작성된 코드를 확인할 수 있다. 다음엔 S3를 이용한 웹 호스팅 방법과 S3 Select에 대해 확인해봐야겠다.