Amazon S3(Simple Storage Service)
Amazon Simple Storage Service는 일반 사용자, 애플리케이션 그리고 셀 수 없이 많은 AWS 서비스를 위한 데이터 저장소이다. 아카이브, 로그 파일 백업 관리용으로 사용할 수 있고 저장된 빅데이터의 분석 업무에 활용, 정적 웹사이트 호스팅 등으로 활용된다. S3는 저렴하면서도 신뢰할 수 있는 스토리지 서비스로서 AWS 내외부의 각종 리소스와 긴밀하게 통합해서 사용할 수 있다. S3는 다양한 용도로 활용할 수 있는 무제한 용량의 객체 스토리지이다. 객체 스토리지는 사용자가 가진 어떤 형식의 데이터라도 저장할 수 있는 공간을 의미한다. S3에 파일을 저장하면 메타데이터도 함께 저장되는데 이 메타데이터는 데이터 권한, 버킷 내 파일 시스템에서의 위치 등의 정보를 키 형식으로 제공한다.
버킷은 Amazon S3에 저장된 객체에 대한 컨테이너인데 S3 파일은 이 버킷에 저장한다. 사용자 최대 100개의 버킷을 생성할 수 있고 다른 AWS 서비스처럼 AWS 측에 가용 버킷 수 증가를 요청할 수 있다. S3 버킷 및 그 속에 저장된 콘텐츠는 단일 AWS Region에만 존재할 수 있으며 버킷의 이름은 전 세계 S3 시스템을 기준으로 유일해야 하며 버킷 이름에는 명명 규칙이 존재한다.
S3에 저장하는 데이터는 외부에 공개하는 데이터가 아니므로 기본적으로 암호화가 필요하다. 데이터를 저장할 때는 암호화 키를 이용할 수 있고, Amazon의 암호화된 API 엔드포인트를 이용해 S3에서 다른 서비스 또는 자원으로 전송되는 데이터를 암호화할 수 있다. 대기 상태의 데이터는 서버 측 암호화 및 클라이언트 측 암호화 기법으로 보호할 수 있다.
서버 측 암호화는 S3 플랫폼 내에서 진행되며, 디스크에 저장될 때 데이터 객체를 암호화하고, 적절한 권한 증빙을 통해 데이터 인출을 요청할 때 복호화해 전송한다. 사용자는 서버 측 암호화의 옵션 기업용 표준 키, 엔벌로프 키, 커스텀 키 3가지 중 하나를 선택하여 사용할 수 있다. 클라이언트 측 암호화는 S3에 전송하기 전에 데이터를 암호화할 수 있으며, 데이터 객체가 업로드 직전 데이터 키를 생성한다. 서버 측 암호화는 클라이언트 측 암호화에 비해 복잡성이 낮고, 대부분의 사용자들이 선호한다. 그러나 기업이나 기관에 따라 암호화 키를 직접 생성하고 관리하려는 경우가 있는데 이런 경우에는 클라이언트 측 암호화를 사용해야 한다.
S3는 실행 내용에 대해 로그 파일을 남기는 것은 기본적으로는 불가능하다. 이유는 S3 버킷의 작업이 대량이기 때문에 S3의 실행 내용을 모두 로그로 남기는 것은 효율이 떨어지기 때문이다. 그런데도 S3 로그 기능을 사용하려면 소스 버킷과 타깃 버킷을 설정하면 된다. S3 로그 생성에는 최소의 지연 시간이 발생하고 요청자의 계정 및 IP 주소, 소스 버킷 이름, 요청 작업, 요청 시간, 요청에 대한 응답 상태 등의 정보가 기록된다.
S3는 객체 저장을 위해 다양한 스토리지 클래스를 제공하며 내구성, 가용성, 비용효율성에 따라 클래스를 선택적으로 사용할 수 있다. S3의 내구성은 99.99999999%로 저장된 객체에 대한 연간 평균 손실 가능성은 0.000000001%로 사실상 표준 S3 플랫폼에 저장된 데이터의 손실 가능성은 거의 0에 가깝다. 0에 가까운 데이터 손실 가능성에도 불구하고, 중요한 데이터의 사본을 S3 버킷에만 저장하는 것은 권장하지 않는다. 그 이유는 저장된 데이터에 대한 접근이 차단될 수 있는 가능성은 얼마든지 있기 때문이다. 잘 못 입력된 환경설정, 계정 정보 분실, 예상치 못 한 외부 공격, 인프라 실패 등이 그러한 가능성이다. 그러므로 중요한 데이터는 항상 백업하여 보관해야 하고, 이때에도 서른 다른 서비스 및 미디어 타입을 이용하는 것을 추천한다. S3 객체의 가용성은 연간 객체에 대해 지속적인 요청을 처리할 수 있는 능력으로 Amazon S3 Standard 클래스는 99.99%의 응답 가능성을 보여준다. S3의 내구성과 가용성을 같이 얘기하면 사실상 손실 가능성이 0에 가까운 데이터들이 실세 문제가 발생하더라도 약간의 접속 지연이 나타나는 게 전부라는 의미이다.
S3 워크로드 중 상당수는 백업 아카이브 작업이 수반된다. 백업 아카이브 작업은 기존 아카이브 버전을 유지하는 일도 중요하지만, 스토리지 비용 및 공간 관리를 위해 구버전을 삭제하거나 폐쇄하는 작업도 필요하다 S3는 이를 위해 버전 관리 및 생애주기 관리 기법을 제공한다.
S3에서 데이터를 보관하는 일도 중요한 만큼 S3에 저장된 데이터를 인출하는 것도 중요하고, 이는 데이터 접근에 대한 권한을 통해 제어할 수 있다. 임의의 사용자가 생성한 S3 버킷과 객체에 마음대로 접속할 수 있지만, 다른 외부 사용자는 임의의 사용자가 생성한 S3 버킷과 데이터에 접근이 불가능하다. 여기서 다른 사용자에게 데이터에 대한 접근을 허용하려면 접근 제어 규칙과 S3 버킷 정책, IAM 정책을 통해 접근제어를 할 수 있다. Amazon은 이러한 정책 중 S3 버킷 정책과 IAM 정책으로 접근 제어를 수행할 것을 권장한다. S3 버킷 정책은 JSON 포맷으로 다수의 외부 계정 또는 유저가 하나의 S3 버킷에 접근을 위한 규칙 생성에 활용된다. IAM 정책의 경우에는 IAM 기반의 계정 레벨에서 접근을 제어하므로, 개별 유저 또는 롤리 S3를 포함한 다수의 리소스에 접근하기 위한 규칙 생성에 활용된다.
S3 버킷은 정적 웹사이트 HTML 파일 호스팅에도 사용할 수 있다. 정적 웹사이트는 클라이언트 측에서 렌더링 및 스크립트 실행을 하는 웹사이트로 간단하게 구성된 웹 문서를 클라이언트 브라우저에서 이용하도록 만든 것이다. 저렴하고 신뢰성 높은 S3 플랫폼은 이러한 정적 웹사이트 호스팅에 매우 적합하다.
'AWS 공부' 카테고리의 다른 글
AWS 데이터베이스_2 (0) | 2022.05.31 |
---|---|
AWS 데이터베이스 (0) | 2022.05.30 |
Amazon VPC (Virtural Private Cloud) (0) | 2022.05.27 |
AWS EC2 / EBS /S3 (0) | 2022.05.25 |
클라우드 컴퓨팅과 AWS (0) | 2022.05.24 |
댓글