티스토리 뷰

5장 스토리지 서비스 Amazon S3

5.1 Amazon S3란: 사용하기 쉬우며 기능이 강력한 스토리지 서비스

- Amazon S3(Amazon Simple Storage Service)는 스마트한 객체 스토리지 서비스이다.

- S3의 특징

  • 확장성 : EC2와 마찬가지로 확장, 축소가 쉽다. 사용 목적에 맞게 다양한 스토리지 클래스가 준비되어 있고 수명주기 정책을 사용하여 자동으로 이동이 가능하다.
  • 가용성, 내구성 : 99.999999999%의 데이터 내구성을 가지고 있어 장애나 오류, 위협에 강하다. S3 객체는 최소 4개의 가용 영역에 자동으로 복제되어 보존되기 때문에 어느 한쪽에 장애가 발생하더라도 계속 사용할 수 있다.
  • 신뢰성 : 암호화 기능과 접근 관리 도구가 있어 공격으로부터 지키기 쉽다. 각종 규정을 준수하며 감사 기능을 갖추고 있다.
  • 다양한 관리 기능 : 스토리지 클래스 분석, 수명 주기 정책등을 시작으로 각종 관리 기능이 있다.
  • 스마트한 기능 : S3 Select라는 데이터에 쿼리를 실행하는 기능과 서비스가 있다. 그 외에 Amazon Athena, Amazon Redshift Spectrum 등의 분석 서비스와 호환되고, AWS Lambda와 연동할 수 있다.

- 요약

  • 서비스명 : Amazon S3(S4)
  • 사용빈도 : ★★★★
  • 요금 : 저장 용량 + 전송량
  • 매니지드 서비스 : O
  • 서울 리전 : O
  • VPC : X

 

5.2 스토리지 클래스: 다양한 종류의 스토리지

- S3 스토리지의 종류를 스토리지 클래스라고 한다.

- 버킷 단위가 아니고 객체(파일) 단위로 클래스를 서택할 수 있다.

- 스토리지 클래스 별 특징

Standard Standard - Infrequent Access Reduced Redundancy Storage
내구성이 높다
(99.999999999%)
가용성이 높다(99.99%)
내구성이 높다
(99.999999999%)
가용성이 조금 낮다(99.9%)
내구성이 낮다(99.99%)
가용성이 높다(99.99%)

- S3 Glacier/S3 Glacier Deep Archive : 데이터 아카이브와 장기간 백업을 고려하여 만든 스토리지 클래스이다. 저렴한 가격으로 보관할 수 있지만 데이터는 '볼트'라고 하는 컨테이너에 저장된다. 따라서 저장된 데이터를 읽는 경우 다른 S3 버킷으로 옮겨야 하는 작업이 필요하다.

- 스토리지 클래스 요약

  • 서비스명 : 스토리지 클래스
  • 사용빈도 : ★★
  • 요금 : 스토리지 클래스의 종류에 따라 다르다.
  • 매니지드 서비스 : O
  • 서울 리전 : O
  • VPC : X

- Glacier 요약

  • 서비스명 : S3 Glacier
  • 사용빈도 : ★★
  • 요금 : 스토리지 사용량 + 데이터 검색량 + 데이터 검색 요청 + 데이터 전송 + Glacier Select
  • 매니지드 서비스 : O
  • 서울 리전 : O
  • VPC : X

 

5.3 S3의 사용 절차: 스토리지 서비스를 사용하기까지

- S3의 조작은 관리 콘솔의 대시보드에서 수행한다. 또한, API와 SDK를 사용하여 업로드할 수 있어 편리하다.

- S3의 구성 요소로 버킷, 객체 키 등이 있다.

- S3는 생성한 후에는 이름과 리전을 변경할 수 없다.

 

5.4 객체와 버킷: 파일과 파일을 저장하는 장소

- S3에서는 드라이브를 버킷이라 한다.

- S3에서는 파일을 객체라 한다.

- 버킷을 생성하면 리전과 버킷명을 변경할 수 없기 때문에 신중하게 결졍해야 한다. 특히 버킷명은 S3 안에서 유일한 이름이어야 한다.

- 버킷에는 명명 규칙이 있다. (처음과 마지막에 알파벳이나 숫자를 사용해야 한다)

 

5.5 버킷 정책과 사용자 정책: 액세스 제한 설정

- S3 버킷에 대한 액세스 제한을 설정할 수 있다.

- 제한을 설정하는 방법은 3가지가 있다.

  • 버킷 정책 : 해당 버킷에 접속할 수 있는 사용자를 지정한다. (사용자가 많은 경우 유리)
  • 사용자 정책 : 사용자가 접속 가능한 버킷을 지정한다. (버킷이 많은 경우 유리)
  • ACL(액세스 제어 목록)에 의한 관리 정책 : 다른 AWS 계정의 읽기/쓰기에 대해서 허가 혹은 거부를 설정

- 액세스 제한은 리소스, 작업, 효과, 보안 주체에 대해 설정할 수 있다. (누가, 무엇을, 어떤 것에 대해)

  • 리소스 : 제한 대상이 되는 버킷 및 객체이다. 아마존 리소스 이름을 사용하여 대상을 식별한다.
  • 작업 : 실제로 가능한 작업을 말하며, GET(취득), PUT(배치), DELETE(삭제)가 있다. 작업 키워드를 사용하여 지정한다.
  • 효과 : 설졍 여부를 말한다. 허가(allow), 거부(deny)를 설정한다.
  • 보안 주체 : 허가 혹은 거부할 사용자 및 계정, 서비스 등을 말한다.

- 요약

  • 서비스명 : 버킷 정책
  • 사용빈도 : ★★★
  • 요금 : 무료
  • 매니지드 서비스 : O
  • 서울 리전 : O
  • VPC : X

 

5.6 웹 사이트 호스팅: 웹 사이트 공개

- 웹 사이트 호스팅은 S3 버킷을 정적 웹 사이트로 공개하는 기능이다.

- Amazon Lightsail은 필요한 기능을 선택하면 웹 사이트에 필요한 서비스 전체를 정가제로 구축할 수 있다.

- AWS Amplify는 모바일 앱이나 웹 앱을 개발하기 위한 프레임워크이다.

 

5.7 파일 업로드와 다운로드: 다양한 파일 업로드 방법

- 멀티 파트 업로드는 객체를 여러 개로 분해하여 S3에 데이터를 업로드하는 기능이다. 100MB 이상의 파일은 이 기능을 사용할 것을 추천한다.

- AWS Transfer for SFTP는 SFTP 서버를 제공하는 서비스이다. 서드 파티 도구(API, SDK)를 사용해서 파일을 전송할 수 있다.

- AWS DataSync는 온프레미스 스토리지와 AWS 스토리지 서비스 간의 대용량 데이터를 이동할 수 있다.

 

5.8 액세스 관리 및 변조 방지: 부정한 액세스 감시

- 액세스 로그는 서버에 어떤 요청이 있었는지를 기록하는 기능이다.

- 스토리지 클래스 분석은 객체의 액세스 빈도를 분석하는 기능이다.

- 객체 잠금은 객체를 변경하지 못 하게 하는 기능이다.

- S3 인벤토리는 객체의 메타데이터의 목록을 생성하는 기능이다.

- S3 배치 작업은 객체에 대한 복사, 복원 등 다양한 작업을 실행할 수 있는 기능이다.

 

5.9 버전 관리, 수명 주기, 복제: 저장된 객체 관리

- 버전 관리는 객체를 여러 버전으로 저장하는 기능이다.

- 수명 주기 정책은 객체에 정기적으로 수행할 작업을 설정하는 기능이다.

- 교차 리전 복제는 객체를 다른 리전에 비동기로 복사하는 기능이다.

 

5.10 데이터 분석과 연계: 저장된 데이터의 분석

- S3 Select는 CSV와 같이 구조화된 텍스트 형식의 데이터에 대해 SELECT와 같은 SQL 문을 실행하는 기능이다.

- Athena는 CSV와 같이 구조화된 텍스트 형식의 데이터에 대해 SQL 문을 실행하는 기능이다.

- Redshifts는 S3의 데이터에 대해 SQL 문을 실행하는 기능이다. 대용량 데이터를 처리할 수 있다.

 

5.11 Amazon CloudFront: 콘텐츠 배포 서비스

- Amazon CloudFront란 고속 콘텐츠 전송 네트워크(CDN, Content Delivery Network) 서비스이다. 웹 콘텐츠를 빠르게 전송한다.

- 이러한 고속화는 웹 서버의 내용을 캐시하는 엣지 서버를 사용하여 이루어진다.

- 엣지 서버는 그 이름처럼 각 리전의 네트워크 말단에 위치해 있다. 클라이언트가 접속하는 네트워크의 거리가 가깝기 때문에 이에 따른 반응 속도도 빨라진다.

- 요금 계층에 따라 사용할 수 있는 엣지 서버가 다르다.

- 요약

  • 서비스명 : Amazon CloudFront
  • 사용빈도 : ★★★
  • 요금 : 데이터 전송량 + 요청 + 옵션
  • 매니지드 서비스 : O
  • 서울 리전 : O
  • VPC : X
댓글