AWS/S3

[AWS] S3 개념과 버킷-권한 설정 방법

do_hyuk 2024. 8. 5. 21:46

S3 (Simple Storage Service) 개념

AWS S3는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 오브젝트(객체) 스토리지 서비스이다.

(참고로 앞글자가 S 3개라서 S3 라고 한다.)

 

쉽게 말하자면, 스토리지 즉 구글 드라이브처럼 파일 저장 서비스이며, 데이터를 온라인으로 오브젝트 형태로 저장하는 서비스라고 보면 된다.

앞에 온라인이라는 글자가 붙는 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문이다.

또한 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있어 개발자가 쉽게 웹 규모 컴퓨팅 작업을 수행할 수 있도록 한다.

 

S3는 저장하는 데이터 양에 대한 비용도 저렴하고, 저장할 수 있는 데이터 양이 무한에 가깝다.

 

또한 'elastic'한 성질 때문에 별도의 스토리지 확장, 축소에 신경쓰지 않아도 된다.

 

S3는 FTP 서버처럼 단순한 파일 저장 영역으로 사용할 수도 있으며, 다양한 AWS 서비스의 사용 로그 저장, 정적 웹 사이트 호스팅, EBS 스냅샷의 저장 영역 기능 등을 가지고 있다.

 

이외에도 빅 데이터 분석의 데이터 소스로 활용하거나 On-Premise 환경의 재난 복구 전용 데이터 백업, Auto Scaling을 활용한 EC2 인스턴스의 로그 저장 등으로 전 세계적으로 폭 넓게 활용되고 있다.

 

S3는 지역별 서비스로서 지역별 재난 상황에 대비하여 자동으로 반복 저장을 한다.


S3 객체 스토리지 특징

객체 스토리지란 객체로 된 파일을 다루는 저장소라는 말이다.

 

이의 반대말이 EC2를 배울 때 등장했던 EBS(Block storage Service)가 있다.(EBS는 일종의 SSD나 하드라고 보면 된다.)

 

보통 우리는 OS나 게임 프로그램을 본체에 꽂혀있는 하드라는 스토리지에 저장하고 구동시킨다. 이는 매우 자연스러우면서 당연한 동작이지만, S3의 객체 스토리지에서는 불가능하다. S3에 파일을 설치하는 행위는 할 수는 없고, 그냥 이미지나 동영상 파일 등만을 저장할 수 있다.

 

즉, 파일 업로드, 삭제, 업데이트만 가능하지, 프로그램을 설치해서 저장하는 기능은 없다고 보면 된다.

 

S3를 사용하는 이유

  • S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.

  • 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴하다.

  • S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.

  • 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고, HTTP 프로토콜(restful)로 파일 업로드/다운로드 처리가 가능하다.

  • S3 자체로 정적 웹서비스 가능 (html 파일을 스토리지에 저장하고, html 파일에 접근하면 그게 홈페이지)
  • 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감할 수 있다.

 

S3 사용 예

  • 클라우드 저장소 (개인 파일 보관, 구글 드라이브처럼 사용 가능)
  • 서비스의 대용량 파일 저장소 - 이미지, 동영상, 빅데이터 (ex: 넷플릭스)
  • 서비스 로그 저장 및 분석
  • AWS 아데나를 이용한 빅데이터 업로드 및 분석
  • 서비스 사용자의 데이터 업로드 서버 (이미지 서버, 동영상 서버)
  • 중요한 파일은 EC2의 SSD(EBS: Elastic Block Store)에 저장하지 말고 S3에 저장
  • glacier와의 연동으로 비용 절감 및 규정 준수 가능 (빙하라는 뜻으로 자주 쓰지 않는 데이터를 S3에서 자동으로 변환)

S3 버킷 / 객체 개념

S3에는 BucketObject라는 단위가 있다.

  • 객체(Object)는 데이터와 메타 데이터를 구성하고 있는 저장 단위이며
  • 버킷(Bucket)은 이러한 객체를 저장하고 관리하는 역할을 한다.

 

버킷은 그냥 디렉토리/폴더 개념으로 키는 파일명으로 이해해도 된다.

 

만약 User라는 이름의 버킷에 profile.png 객체 파일을 저장하면 http://User.s3.amazonaws.com/profile.png 라는 URL이 생성되게 된다.

S3을 구성할때, 버킷(Bucket)이라는 컨테이너를 놓을 리전을 선택하고, 해당 컨테이너 내부에 객체(Object)라는 형태로 데이터를 저장하는 형태로 스토리지를 구축한다.

한 계정 당 Bucket은 최대 100개까지 사용이 가능하고, 버킷 단위로 접근 제한을 설정할 수도 있다.

단, Bucket의 소유권은 이전할 수 없기 때문에 주의해야 한다.

 

S3에 저장되는 데이터는 모두 객체라고 부른다.

객체는 하나 당 1Byte에서 최대 5TB까지 저장이 가능하며 저장할 수 있는 객체의 수는 제한이 없다.

각 객체는 데이터와 메타데이터를 지니는데 S3 버킷에 올리는 객체가 바로 데이터이고 최종 수정일, 파일 타입 등의 데이터를 메타데이터라고 한다. (메타데이터는 네임-벨류 쌍으로 이우러져 있다.)

객체는 를 통해서 버킷에서 유일한 것으로 식별될 수 있으며, 버킷에 존재하는 모든 객체는 단 하나의 키를 지닌다.

따라서 S3 내에서 버킷, 키, 버전 ID를 통해 특정 객체를 파악할 수 있다.

 

REF) Inpa Dev