S3 Amazon S3는 AWS의 핵심 서비스 중 하나로, 제한 없이 스케일할 수 있는 스토리지를 제공합니다. 많은 웹 서비스와 AWS의 다양한 서비스가 S3에 의존하며, 파일 저장, 백업, 재해 복구, 데이터 아카이브, 정적 웹사이트 호스팅, 데이터 레이크, 소프트웨어 업데이트 등 다양한 유스케이스가 있습니다.
S3 버킷 (Bucket) - S3는 데이터를 버킷이라는 컨테이너에 저장합니다. 버킷은 AWS 리전 내에서 생성되며, 전역적으로 고유한 이름을 가져야 합니다. 즉, 같은 이름의 버킷을 다른 계정이나 리전에서 사용할 수 없습니다.
오브젝트 (Object)
- S3에 저장된 파일을 오브젝트라고 합니다. - 오브젝트는 키(Key)와 콘텐츠로 구성됩니다. 키는 파일의 경로와 이름을 나타내며, S3는 키를 기반으로 오브젝트를 관리합니다. 디렉토리 구조는 실제로 존재하지 않으며, 키를 통해 파일 경로를 관리하는 방식입니다.
- 오브젝트 크기: 최대 5TB까지 업로드 가능하며, 5GB 이상의 파일은 멀티파트 업로드 방식으로 나누어 업로드해야 합니다.
S3 버킷 정책
S3 버킷 정책은 리소스에 기반한 보안 설정으로, 버킷 단위로 정책을 적용하여 특정 사용자가 접근할 수 있는 API를 제어합니다.
S3 버킷 정책은 JSON 형식으로 작성되며, 버킷에 적용되는 규칙을 정의합니다. 주요 구성 요소는 다음과 같습니다:
Resource: 정책이 적용되는 버킷 또는 오브젝트를 명시합니다. Effect: 허용(Allow) 또는 거부(Deny)를 설정합니다. Action: 허용 또는 거부할 API 액션을 명시합니다. 예: GetObject 액션을 허용. Principal: 정책이 적용되는 계정이나 사용자를 지정합니다. 모든 사용자를 허용하려면 별표(*)를 사용합니다.
액세스 컨트롤 리스트 (ACL)
ACL은 개별 오브젝트 및 버킷에 대한 세부적인 접근 권한을 관리합니다. ACL을 통해 사용자 또는 그룹 단위로 읽기, 쓰기 권한을 설정할 수 있습니다.
ACL은 기본적으로 비활성화할 수 있으며, 버킷 단위에서 관리가 가능합니다.
IAM 사용자와 EC2 인스턴스 역할
IAM 사용자가 S3 버킷에 접근하려면, 해당 사용자에게 적합한 권한을 부여하는 IAM 정책을 적용해야 합니다.
EC2 인스턴스가 S3 버킷에 접근하려면, IAM 사용자가 아닌 IAM 역할을 생성하고, 그 역할에 필요한 권한을 부여해야 합니다. 이를 통해 EC2 인스턴스는 해당 역할을 통해 S3에 접근할 수 있습니다.
S3 버전 관리
Amazon S3의 버전 관리 기능은 파일의 버전을 추적하고 관리할 수 있게 해주는 중요한 기능입니다. 이를 통해 실수로 파일을 삭제하거나 덮어쓴 경우에도 이전 버전으로 쉽게 복구할 수 있습니다.
버전 관리란?
Amazon S3 버전 관리 기능은 버킷 단위로 활성화됩니다.
버전 관리가 활성화된 버킷에 파일을 업로드할 때마다 해당 파일의 새로운 버전이 생성됩니다.
동일한 키(파일명)로 다시 파일을 업로드하면, 새로운 버전이 할당됩니다. 예를 들어, 같은 파일을 여러 번 업로드하면 버전 번호는 1, 2, 3... 이렇게 증가하게 됩니다.
버전 관리의 주요 기능
- 파일 복구: 실수로 파일을 삭제하거나 덮어쓴 경우, 이전 버전으로 쉽게 롤백할 수 있습니다. - 삭제방지: 파일을 삭제해도 실제 파일이 즉시 삭제되는 것이 아니라, "삭제된" 상태로 표시될 뿐입니다. 따라서 삭제된 파일도 이전 버전으로 복구할 수 있습니다. - 버전롤백: 특정 시점으로 파일을 되돌리고 싶을 때, 해당 시점의 파일 버전으로 쉽게 복구할 수 있습니다.
Amazon S3의복제 기능은 데이터를 복제해 여러 버킷 간에 동기화하는 기능입니다. Amazon S3의 복제 기능을 통해 다중 리전에 데이터를 안전하게 보관하거나, 같은 리전 내에서 데이터를 동기화하여 여러 활용 사례에 맞는 복제 솔루션을 적용할 수 있습니다.
1. 리전 간 복제(CRR: Cross-Region Replication)
CRR은 다른 리전에 위치한 두 버킷 간에 데이터를 복제하는 기능입니다.
서로 다른 리전에 위치한 버킷 사이에서 비동기 복제가 이루어지며, 데이터를 다중 리전에 분산시켜 저장함으로써 재해 복구나 컴플라이언스 목적에 활용할 수 있습니다.
CRR을 사용하기 위해서는 소스 버킷과 대상 버킷에 각각 버전 관리가 활성화되어 있어야 합니다.
복제는 백그라운드에서 비동기적으로 수행되며, 복제가 완료되기까지 일정 시간이 소요될 수 있습니다.
2. 동일 리전 복제(SRR: Same-Region Replication)
SRR은 같은 리전 내에 위치한 두 버킷 간에 데이터를 복제하는 기능입니다.
복제를 통해 같은 리전 내에서 데이터 백업이나 다중 버킷에 걸친 로그 집계 등의 목적으로 활용할 수 있습니다.
SRR 역시 버전 관리가 활성화된 상태에서 동작하며, 복제는 비동기적으로 진행됩니다.
3. 복제를 위한 권한 설정
복제 작업을 수행하려면 S3 서비스에 적합한 IAM 권한이 필요합니다.
소스 버킷에 대한 읽기 권한과 대상 버킷에 대한 쓰기 권한이 있어야 복제가 정상적으로 작동합니다.
4. 복제의 주요 특징
복제는 비동기적으로 진행되므로, 데이터 복사가 즉시 완료되지 않고 시간이 소요될 수 있습니다.
버전 관리가 활성화된 버킷에서만 복제가 가능하므로, 복제를 설정하기 전 버전 관리를 활성화해야 합니다.
복제는 같은 계정 간에도, 다른 계정 간에도 가능하며, 복제에 필요한 권한을 정확하게 설정해야 합니다.
마지막으로 Amazon S3에서 객체를 생성할 때 클래스를 선택할 수 있습니다. 스토리지 클래스를 수동으로 수정할 수도 있고, Amazon S3 수명 주기 구성을 이용해서 모든 스토리지 클래스 간에 객체를 자동으로 이동시킬 수도 있습니다.
★스토리지 클래스 ★
1. Amazon S3 Standard (일반 목적)
가용성: 99.99%
내구성: 99.999999999% (11 9s)
사용 목적: 자주 액세스하는 데이터용.
특징: 빠른 지연 시간과 높은 처리량을 제공, 빅 데이터 분석, 모바일 및 게임 애플리케이션, 콘텐츠 배포에 적합.
2. Amazon S3 Standard Infrequent Access (IA)
가용성: 99.9%
내구성: 99.999999999% (11 9s)
사용 목적: 자주 액세스하지 않지만 필요 시 빠른 액세스가 필요한 데이터.
특징: 저장 비용은 저렴하지만, 검색 요금이 발생. 백업 및 재해 복구에 이상적.
3. Amazon S3 One Zone Infrequent Access (One Zone IA)
가용성: 99.5%
내구성: 99.999999999% (11 9s)
사용 목적: 다시 생성할 수 있는 데이터의 보조 백업 용도로 사용.
특징: 단일 AZ(가용 영역)에서만 저장되므로, AZ가 손실되면 데이터도 손실될 수 있음. 저비용 대안.
4. Amazon S3 Glacier Instant Retrieval
가용성: 동일 스토리지 클래스와 동일
내구성: 99.999999999% (11 9s)
사용 목적: 저비용 콜드 스토리지로, 분기당 한 번 정도 액세스하는 데이터.
특징: 밀리초 내에 데이터 검색 가능. 90일 최소 스토리지 기간.
5. Amazon S3 Glacier Flexible Retrieval
가용성: 동일 스토리지 클래스와 동일
내구성: 99.999999999% (11 9s)
사용 목적: 장기 보관이 필요하고 다양한 검색 시간이 허용되는 데이터.
특징: 1~5분 빠른 검색, 3~5시간 표준 검색, 5~12시간 대량 검색 옵션 제공. 90일 최소 스토리지 기간.
6. Amazon S3 Glacier Deep Archive
가용성: 동일 스토리지 클래스와 동일
내구성: 99.999999999% (11 9s)
사용 목적: 가장 저렴한 비용 및 효율적인 옵션으로 장기 보관해야 하는 데이터.
특징: 12시간 표준 검색과 48시간 대량 검색 제공. 180일 최소 스토리지 기간.
7. Amazon S3 Intelligent Tiering
가용성: 동일 스토리지 클래스와 동일
내구성: 99.999999999% (11 9s)
사용 목적: 데이터 액세스 패턴이 불규칙한 경우 자동으로 최적화된 비용 제공.
특징: 사용 빈도에 따라 자동으로 계층 이동. 검색 요금 없음, 모니터링과 자동화 요금 발생.
스토리지 클래스 비교
내구성: 모든 클래스는 동일 (99.999999999%).
가용성: S3 Standard가 가장 높고, One Zone IA와 Glacier 계열이 낮음.
최소 스토리지 기간: IA는 90일, Glacier Deep Archive는 180일로 기간이 다름.