aws solutions architect
를 준비하며 공부한 s3에 대해 정리합니다.
공식문서 및 백서, 활용 아키텍처를 중심으로 천천히 살펴보았습니다.
스토리지 종류
1. Block Storage : 데이터를 고정된 크기의 블록으로 나누어 저장함.
주로 데이터베이스나 가상 머신에 사용되는 고성능 저장소. ex) Amazon EBS
2. File Storage : 디렉토리 구조로 데이터를 저장하고 NAS와 같은 방식으로 공유하여 사용함. ex) Amazon EFS
3. Object Storage : 데이터를 객체 단위로 저장함.
메타데이터와 함께 확장성이 뛰어나 비정형 데이터를 저장하는 데 적합함 ex) Amazon S3
ex)
s3://my-bucket/my_file.txt
s3://my-bucket/my_folder/another_folder/my_file.txt
-> The Key is composed of 'prefix' + 'object name'
즉,my_folder/another_folder
가 prefix,my_file.txt
가 object name.
User-Based
- IAM : IAM Policies를 통해 액세스 관리 가능. 최소권한 원칙 적용, MFA 활용 등 다양한 옵션
Resource-Based
- Bucket Polices : 버킷 단위로 적용되는 JSON 형식의 정책으로, 버킷 및 그 안의 객체에 대한 접근 권한을 정의하고 관리
- Object Access Control List (ACL) : 개별 객체에 대한 접근 권한을 제어하며, 각 객체마다 읽기/쓰기 권한을 사용자나 그룹별로 설정함
- Bucket Access Control List (ACL) : 버킷 전체에 대한 접근 권한을 제어하며, 버킷에 대한 읽기/쓰기 권한을 사용자나 그룹별로 설정함
Public Access 설정을 통해 버킷/객체에 대한 차단 설정이 가능하여, 실수로 인한 데이터 유출을 방지할 수 있음.
객체 수준에서의 SSE-S3
, SSE-KMS
, SSE-C
옵션
1. SSE-S3
- 활용 사례: 기본적인 보안 요구가 있을 때, 별도의 키 관리 없이 자동으로 데이터를 암호화하려는 경우.
- 사용 시점: 키 관리가 필요 없고 S3에서 모든 암호화 과정을 처리하도록 맡기고 싶을 때 사용하면 좋음
2. SSE-KMS
활용 사례: 엄격한 보안 요구가 있고, KMS를 통해 키의 생성, 관리, 권한 제어를 세밀하게 설정해야 할 때.
사용 시점: 규제 준수나 감사 요구 사항이 있고, 키 관리에 대한 제어가 필요한 상황에서 적합
3. SSE-C
활용 사례: 고객이 암호화 키를 직접 관리하고 싶고, AWS가 키를 저장하거나 관리하지 않기를 원할 때.
사용 시점: 데이터 보호를 위해 키를 스스로 관리하고 AWS가 해당 키를 저장하지 않도록 하려는 경우에 적합
스토리지 클래스 선택
- 데이터 액세스 빈도에 따라 적절한 스토리지 클래스를 선택하여 비용 최적화 수행
- 수명 주기 정책(life-cycle)을 통해 데이터 수명 주기에 따라 적절한 스토리지 클래스로 데이터를 이전 시켜, 비용 절감.
S3 Transfer Acceleration
- CloudFront의 엣지 로케이션을 이용하여 더 빠르고 효율적인 전송 -> 전송시간 단축 -> 전송 비용 절감.
- 즉, 데이터 전송 비용 절감
S3 Batch Operation
- 객체에 대한 일괄처리를(복사, 삭제, 태그지정 등) 수행하면 개별적으로 수행할 때보다 요청 비용이 줄어듬
- 즉, 데이터 요청 비용 절감
ex) standard class에서 객체 1000개에 대한 태그 지정 작업 시?
- > 개별 요청 : 1,000 0.005 (PUT Object 태그 지정 요청 비용) = $5
- > 배치 : 0.05 (batch api 1회 비용) + 1,000 0.0001 (PUT 태그 지정 비용) = $0.10
기타
- 버전 관리와 MFA 삭제 활성화를 통해 데이터 보호와 실수로 인한 삭제를 방지시켜 비용을 절감