본문 바로가기

클라우드

AWS 5 : 스토리지 서비스 S3, 객체와 버킷 등

728x90

다섯번째 AWS 포스팅 범위

 Amazon S3(이하 S3), 스토리지 클래스, S3 사용 절차, 객체와 버킷, 버킷 정책과 사용자 정책(액세스 제한 설정), 웹 사이트 호스팅, 파일 업로드/다운로드, 액세스 로그/관리, 버전관리/수명주기정책/교차리전복제, 데이터 분석, Amazon CloudFront(콘텐츠 배포 서비스)

 

AWS 관련 가장 쉬운 책을 읽고 나중에 찾아볼 주요 용어들을 정리해 둡니다. "그림으로 이해하는 AWS 구조와 기술(오가사와라 시게타카 지음)" 을 읽고 중요하다고 생각하는 용어들을 정리합니다. 얇은 책이지만 모르는 용어가 많은 만큼 포스팅 양이 많아 몇 번에 걸쳐 업로드 예정입니다.

 


Amazon S3(이하 S3)

Amazon S3(Simple Storage Service)는 스마트한 객체 스토리지 서비스로, 스토리지 서비스 뿐아니라 설정으로 정적 웹 서버로 공개하거나 쿼리를 사용할 수 있는 등 편리한 기능을 제공한다. 객체 스토리지는 데이터를 객체 단위로 관리하는 형식을 말한다. 용량 제한이 없고 클라우드이기 때문에 필요시 확장, 축소가 가능하여 최소 용량만으로 시작 가능하다.

 

S3은 확장성(목적 맞는 스토리지 클래스와 수명 주기 정책), 가용성/내구성(최소 4개 가용영역에 복제되어 갖는 99.999999999%의 내구성), 신뢰성(접근 관리 도구와 규정 준수), 다양한 관리 기능(스토리지 클레스 복제, 리전간 복제), 스마트한 기능(S3 Select 데이터 쿼리 실행 기능과 서비스 등)의 특징을 갖는다.

 

S3 요금은 스토리지 클래스(종류)와 리전에 따라 다르지만 기본 계산식은 같다. 참고로 S3 Standard 스토리지의 저장용량 요금은 1GB당 0.025 US달러 정도이다.

S3 요금 = 저장 용량+ 전송량

*저장 용량 : 최소 용량 요금이 있고 30/90/180일 단위 등 기준 있음

*전송량 : 데이터 주고받은 전송량, 다운로드 명령 수신요청(GET) or 파일전송 위한 송신요청(PUT)에 대해 1GB 단위 부과

 

스토리지 클래스

S3에는 사용가능한 스토리지 종류가 다양하며, 스토리지 종류를 스토리지 클래스라고 한다. Standard 외에도 액세스 패턴 따라 계층(비용 다른 층) 이동가능한 클래스, 액세스 빈도 낮은 데이터 위한 클래스 등 목적에 맞춰 선택 가능하다. 또한, 버킷(객체 저장하는 컨테이너) 단위가 아니라 객체(파일) 단위로 선택 가능하다. 

 

종류는 다양하며 어떤 스토리지 클래스든 내구성은 99.999999999%다. Standard 클래스만 최소 저장 기간에 대한 요금 설정이 없고, Standard 클래스와 Intelligent-Tiering 외에는 최소 용량 요금 및 검색 요금이 설정되어 있다.

1) Standard

2) Intelligent-Tiering : 빈번/간헐적 액세스에 최적화된 두가지 계층에 객체(파일) 저장. 액세스 빈도 자주 바뀔때 비용 감소.

3) Infrequent Access

  - 액세스 빈도가 낮고 용량이 큰 데이터에 적합(Standard 보다 저장요금 싸지만 액세스 요금 비쌈)

  - 저장되는 AZ가 하나인 경우 One Zone-Infrquent Access 가 있다. (Standard 는 최소 3개 이상에 저장됨)

4) Reduced Redundancy Storage : 'Standard'에 비해 이중화 수준 낮춰 낮은 가격으로 제공함. 데이터 유실 가능

5) S3 Glacier / S3 Glacier Deep Archive : 데이터 아카이브와 장기간 백업을 고려한 스토리지 클래스

 

S3 사용 절차

S3 버킷 생성 이후엔 이름과 리전을 변경할 수 없기 때문에 생성 전에 고민하고 검토해야 한다. 반드시 정해야 할 것은 '어떤 용도로 사용할 것인가'이다. 웹 서버로 사용할 경우 버킷 공개여부, 도메인, 익명 접속 허가 여부 등 추가 고민을 해야한다.

S3 서비스 용어와 사용 절차, 출처 : 그림으로 이해하는 AWS 구조와 기술

객체와 버킷

객체는 파일과 같고, 버킷은 윈도우 드라이브(C나 D)와 같다. 버킷은 폴더가 아니기 때문에 버킷 내 버킷을 재 생성하는건 불가능하다. AWS 계정 하나당 100개까지 생성 가능하다(별도 신청시 1000개)

 

버킷명은 S3 내에서 유일한 이름이어야 하기때문에 명명 규칙에 따라 이름을 정해야 한다. 

대표적인 버킷 명명 규칙, 출처 : 그림으로 이해하는 AWS 구조와 기술

 

버킷 정책과 사용자 정책(액세스 제한 설정)

S3는 버킷/사용자 정책 따라 리소스 작업, 효과, 보안 주체에 대해 버킷 접속을 제한할 수 있다.

- 버킷 정책 : 버킷 단위 액세스 제한

- 사용자 정책 : IAM 사용자 단위 제한

- 관리정책 : ACL(액세스 제어 목록) 단위 제한

 

웹 사이트 호스팅

S3가 제공하는 가장 편리한 기능은 정적 웹 사이트(스크립트 처리안하는 html, javascript 등)를 호스팅할 수 있는 웹 사이트 호스팅 기능이다. 버킷을 웹 사이트로 사용하려면 버킷 생성 후 '정적 웹 호스팅 활성화/공용 액세스 차단 해제/버킷 정책 '모든 사용자' 설정/도메인명 지정/DNS 서비스 사용 등'을 적용한다.

웹 호스팅에 대한 각 서비스 비교, 출처 : 그림으로 이해하는 AWS 구조와 기술

 

Amazon Lightsail

필요 기능 선택시 웹사이트에 선택한 서비스 전체를 정해진 가격으로 구축가능한 패키지 서비스. CPU나 메모리 변경할 수 있는 유연성은 없음.

 

AWS Amplify

웹 개발 도구 전체를 제공하는 서비스로 자바스크립트로 시스템을 구축하며, HTML파일과 이미지를 S3을 통해 배포하거나 Lambda 기능으로 백엔드 프로그램을 실행한다. 

 

파일 업로드/다운로드

S3 버킷에 파일을 업로드, 다운로드 할때는 관리콘솔이나 CLI를 사용하고, 도구 및 프로그램에서 작업하려면 API와 SDK를 사용할 수 있다. API와 SDK, 멀티 파트 업로드, AWS Transfer for SFTP, AWS DataSync 방식으로 업로드 가능하다.

 

 

액세스 로그/관리

액세스 로그는 서버에 어떤 요청이 있었는지를 기록하는 기능이다. 로그에는 버킷 소유자, 버킷명, 요청자, 총 시간, 응답 시간, 작업, 응답 상태, 오류, 코드 등이 기록된다. 스토리지는 관리자가 아닌 사람이 액세스하는 경우가 많기에 S3는 스토리지의 액세스를 감시하기 위한 액세스 기록을 무료로 제공한다. 

 

액세스 로그 외에도 스토리지 클래스 분석(객체 액세스 빈도 분석), 객체 잠금, S3 인벤토리(객체 메타데이터 목록 생성 기능) 같은 방식으로 액세스 관리를 할 수도 있다. 

 

버전관리 / 수명 주기 정책 / 교차 리전 복제

버전 관리란 객체를 여러 버전으로 저장하는 기능으로, 버킷 단위로 설정한다. 버전 관리를 활성화하면 실수로 변경하거나 삭제한 파일을 복원할 수 있다. '미사용(기본), 활성화, 버전 일시 중지' 상태 중 하나로 설정한다.

 

S3은 수명 주기 정책(수명 주기 규칙)을 설정가능하다. 객체에 정기적으로 수행할 작업(Transition, Expiration, NoncurrentVersionTransition 등)을 설정하는 기능이다. 

 

교차 리전 복제(CRR, Cross-Region Replication)은 다른 리전 버킷에 객체를 비동기적으로 복사하는 것이다. 복사 대상의 버킷은 원본과 소유자가 동일하지 않아도 되지만 작업을 위해 IAM 역할(접근 권한)을 부여해야 한다. 다른 리전에 복제하는 거기 때문에 같은 리전 내 버킷은 복제 설정을 할 수 없다. 

 

데이터 분석

AWS는 데이터 분석 관련 서비스를 제공하며, 이를 통해 S3의 객체나 객체 내용(데이터)을 분석 할 수 있다. 

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

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

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

 

Amazon CloudFront(콘텐츠 배포 서비스)

Amazon CloudFront라는 고속 콘텐츠 전송 네트워크(CDN, Content Delivery Network) 서비스로, 웹 콘텐츠를 캐시하여 더 빨리 전송한다. 웹 서버의 내용을 캐시하는 엣지 서버를 사용한다. 데이터 송신과 캐시에 대한 요금을 부과하며, 엣지 서버가 원본 데이터를 캐시하기 위한 전송량은 부과되지 않는다. 

 

CloudFront는 TLS/SSL 암호화 통신을 지원한다. 서버 인증서로 AWS Certificate Manager 서버 이용해 무료로 생성할 수 있다.

 

끝.

728x90