사용하지 않는 객체는 저렴하게 저장
s3는 비용과 가용성이 다른 여러 스토리지 클래스를 제공합니다.
스토리지 클래스 | 특징 | 저장 AZ | 가용성 |
S3 Standard (표준) | 기본 스토리지 클래스 | 3개 이상 | 99.99% |
S3-Intelligent-Tiering | 접근 빈도에 따라 4개의 접근 계층으로 자동으로 나눠 비용 절감 | 3개 이상 | 99.90% |
S3 Standard-IA | 표준보다 저렴하지만 데이터 검색 용량에 대한 요금 부과 | 3개 이상 | 99.90% |
S3 One Zone-IA | 1AZ에만 데이터를 저장, 데이터 검색에 요금 발생 | 1개 | 99.50% |
S3 Glacier Instant Retrieval |
보존은 One-Zone-lA보다 저렵하지만 꺼내는 비용이 많이 든다. | 3개 이상 | 99.90% |
S3 Glacier Flexible Retrieval |
보존은 S3 Glacier Instant Retrieval 보다 저렴하지만 꺼내는 비용이 발생하고 시간이 걸린다. | 3개 이상 | 99.99% |
S3 Glacier Deep Archive |
S3 Glacier 보다도 저렴하지만 꺼내는 데 많은 시간(반나절 이상)이 걸린다. | 3개 이상 | 99.99% |
가용성이란?
가용성은 S3에 데이터를 업로드하거나 내려받는 등 사용할 수 있는가 하는 관점의 수치입니다.
위의 수치는 책의 내용으로 가용성은 설계상의 값이므로 실제로 이를 보장하지는 않습니다.
위에 스토리지 클래스는 모두 내구성이 99.999999%입니다.
거의 사용하지 않지만 만약을 위해 보존하고 싶은 데이터가 있다면 S3 Glacier Deep Archive를 사용해 저렴하게 저장할 수 있습니다.
S3 수명 주기 설정
자동으로 스토리지 클래스 변경 가능합니다.
예를 들어 생성한지 1년이 경과한 객체는 S3 Glacier Flexible 객체로 마이그레이션할 수 있습니다. 객체 삭제도 가능합니다. 하지만 저비용 스토리지 클래스로 마이그레이션하면 표준 클래스로 돌아갈 수 없습니다. 이렇게 하면 이용 요금이 저렴하게 오래 보관할 수 있습니다.
참고로 S3를 선택할 때, S3용 액세스 분석기라는 기능으로 얼마나 접근이 있었는지 등 데이터의 접근 상황을 확인해 참고하면 어떤 S3 클래스를 사용할지 알 수 있습니다.
버전 관리 및 다른 리전으로 복사
- S3상의 데이터는 3곳 이상으로 복사되므로 AWS로 인해 데이터가 손실되는 경우는 거의 없습니다. 하지만 사용자가 데이터를 삭제하거나 의도하지 않은 데이터 변경이 존재할 수 있습니다. 이럴 때 S3에는 버전 관리 기능이 있어 이 기능을 활성화해 데이터를 복구할 수 있습니다.
- S3의 버전 관리 기능을 활성화 하면 모든 세대의 객체에 대한 이력 정보가 보존됩니다. 객체 갱신 시(PUT)에는 기존 객체와 다른 새로운 버전의 ID가 부여됩니다. 버전 관리 설정은 S3 버킷 단위로 할 수 있고 객체 단위의 설정은 불가능 합니다.
- Delete를 했을 경우 객체가 실제로 삭제되는 것이 아니라 삭제 마커가 부여됩니다. 해당 객체의 과거 버전은 유지됩니다. 삭제 마커가 부여된 객체에 Get 요청을 보내면 404에러가 반환됩니다.
- 편리한 기능이지만 요금이 더 발생합니다.
교차 리전 복제(CRR-Cross Region Replication)
S3에는 해외 리전에 데이터를 복사하는 기능이 있습니다. 이를 이용해 데이터의 내구성을 더욱 높일 수 있습니다.
시스템을 구축할 때 가용성을 위해 하나의 리전 전체가 재해를 당할 경우를 가정해 설계하는 경우가 있습니다. 이런한 재해에 대비하는 것을 재해복구라고 부르고 S3 교차 리전 복제를 통해 대응이 가능합니다.
S3 데이터를 안전하게 공개
S3에는 개인 정보와 같은 중요한 정보를 저장할 수 있습니다. 그러므로 허가받은 사람이 허가받은 객체에 올바르게 접근할 수 있도록 접근 제어를 하는 것이 중요합니다.
S3 버킷의 접근 제어
- 사용자 정책 (IAM 정책)
- 데이터를 조작하는 쪽을 제어하는 설정입니다.
- S3 버킷의 데이터 검색만 가능하고 업로드는 불가라는 식으로 사용자에 대한 권한을 설정할 수 있습니다.
- 접근 제어 목록(ACL)
- 객체 또는 버킷 단위로 설정할 수 있는 접근 제어입니다.
- 데이터 A는 AWS 계정 X에 접근 허용, 데이터 B는 모든 사용자에게 접근 허용과 같이 데이터별로 설정할 수 있습니다.
- 버킷 설정
- 버킷 단위로 설정하는 접근 제어입니다.
- 예를 들어 파일 이름이 logs로 시작하는 데이터에 접근 허용 등 복잡한 설정을 할 수 있습니다.
- JSON 형식으로 기재합니다.
이렇게 ACL이나 버킷 설정에서 잘 못 설정해 퍼블릭 상태가 되면 모든 곳에서 접근이 가능해집니다. 이걸 방지하기 위해 퍼블릭 액세스 차단이라는 기능이 존재 합니다.
S3를 이용해 웹 사이트 구축
S3의 웹 사이트 호스팅 기능을 활성화하면 "http://버킷이름.s3-website-리전이름.amazon.com"이라는 URL이 만들어지고, 브라우저에 해당 URL로 접속할 수 있습니다.
단점은 S3는 암호화된 통신인 HTTPS를 지원하지 않습니다. 그러므로 민감한 정보가 포함된 사이트를 운영해야 하는 경우 콘텐츠 전송 네트워크 서비스인 Amazon CloudFront를 함께 사용해 HTTPS 통신을 할 수 있게 구성해야 합니다.
이 부분을 활성화 하면
데이터 암호화
데이터 암호화를 실시하면 데이터와 키 데이터를 조합해 데이터 내용을 타인이 볼 수 없게 합니다. 키 데이터가 없으면 데이터를 읽을 수 없게 되고 키 데이터가 유출되면 타인이 데이터를 읽을 수 있게 되므로 키 데이터를 안전하게 관리해 데이터를 보호해야 합니다.
S3에서는 버킷의 기본 암호화 기능을 활성화하면 객체를 저장할 때 AWS에서 자동으로 암호화를 수행합니다. 암호화용 키는 AWS에서 제공하는 키 관리 기능인 AWS Key Management Service (KMS)에서 생성한 키와 사용자가 관리하는 키가 있습니다.
암호화는 S3 관리 콘솔에서 간단하게 설정할 수 있습니다.
현재 S3 암호화 지원입니다. S3 관리형 키와 서버 측 암호화 모두 있는 것을 확인할 수 있습니다.
저는 S3 관리형 키를 사용하여 Spring Boot로 S3에 접근하고 있습니다.
출처
https://product.kyobobook.co.kr/detail/S000200882352
AWS 구조와 서비스 | 우에노 후미아키 - 교보문고
AWS 구조와 서비스 | 풍부한 그림과 알기 쉬운 설명으로 핵심 AWS 서비스를 한눈에 이해한다!전 세계적으로 클라우드 서비스의 이용이 활발해지고 있어 클라우드의 활용은 이제 비즈니스에서 빼
product.kyobobook.co.kr
'클라우드&인프라 > AWS 구조와 서비스' 카테고리의 다른 글
네트워크 기초 지식 (1) | 2023.12.23 |
---|---|
가상 서버 데이터 저장을 위한 EBS (0) | 2023.12.18 |
Amazon S3에 대해 (1) (1) | 2023.10.12 |
컨테이너의 구조와 특성 (1) | 2023.10.10 |
AWS Lambda에 대해 (1) | 2023.10.03 |