Amazon S3 Advanced
이번 장에서는 SysOps Administrator를 준비하며 S3 심화 기능에 대해서 알아보도록 한다.
S3 Lifecycle Rules
- 스토리지 클래스 간에 객체를 전환할 수 있다.
- 자주 액세스하지 않는 객체의 경우 Standard IA로 이동한다.
- 빠른 액세스가 필요하지 않은 아카이브 객체의 경우 Glacier 또는 Glacier Deep Archive로 이동시킬 수 있다.
- 수명 주기 규칙을 사용하여 객체 이동을 자동화할 수 있다.
- Transition Actions: 객체를 다른 스토리지 클래스로 전환하도록 구성한다.
- 생성 60일 후에 객체를 Standard IA 클래스로 이동한다.
- 6개월 후 아카이빙을 위해 Glacier로 이동한다.
- Expiration Actions: 일정 시간이 지나면 객체가 만료(삭제)되도록 구성한다.
- 액세스 로그 파일은 365일 후에 삭제되도록 설정할 수 있다.
- 이전 버전의 파일을 삭제하는 데 사용할 수 있다. (버전 관리가 활성화된 경우)
- 불완전환 Multi-Part 업로드를 삭제하는 데 사용할 수 있다.
- 특정 접두사에 대한 규칙을 생성할 수 있다. (예.
s3://mybucket/mp3/*
) - 특정 객체 태그에 대한 규칙을 생성할 수 있다. (예. Department: Finance )
예시
- 시나리오 1
- EC2의 애플리케이션은 프로필 사진이 S3에 업로드된 후 이미지 썸네일을 생성한다.
이러한 썸네일은 쉽게 다시 생성할 수 있으며 60일 동안만 보관하면 된다.
소스 이미지는 60일 동안 즉시 검색할 수 있어야 하며, 그 후 사용자는 최대 6시간까지 기다릴 수 있다. - S3 소스 이미지는 60일 후에 Glacier로 전환하기 위한 수명주기 구성을 갖춘 Standard 버전일 수 있다.
- S3 썸네일은 60일 후에 만료(삭제)되도록 수명 주기 구성을 사용하여 One-Zone IA에 있을 수 있다.
- 시나리오 2
- 회사의 규칙에 따르면 삭제된 S3 객체를 30일 동안 즉시 복구할 수 있어야 하지만 이러한 일은 거의 발생하지 않는다.
이 시간 이후 최대 365일 동안 삭제된 객체는 48시간 이내에 복구할 수 있다. - 객체 버전을 보유하려면 S3 버전 관리를 활성화하여 "삭제된 객체"가 실제로 "삭제 마커"로 숨겨지고 복구될 수 있도록 한다.
- 객체의 "이전 버전"을 Standard IA로 전환한다.
- 이후 "이전 버전"을 Glacier Deep Archive로 전환한다.
Storage Class Analysis
- 객체를 올바른 스토리지 클래스로 전환할 시기를 결정하는 데 도움이 된다.
- Standard 및 Standard IA에 대한 권장 사항이다.
- One-Zone IA 또는 Glacier에서는 작동하지 않는다.
- 보고서는 매일 업데이트된다.
- 데이터 분석을 보기 시작하는 데 24 ~ 48시간이 소요된다.
- 수명주기 규칙을 통합(또는 개선)하기 위한 좋은 첫 번째 단계다.
S3 Event Notification
- S3:ObjectCreated, S3:ObjectRemoved, S3:ObjectRestore, S3:Replication...
- S3에 업로드된 이미지의 썸네일을 생성하는 것 같은 작업에 사용된다.
- 원하는 만큼 S3 이벤트를 생성할 수 있다.
- S3 이벤트 알림은 일반적으로 몇 초 안에 이벤트를 전달하지만 경우에 따라 1분 이상 걸릴 수도 있다.
IAM Permission
- 이벤트 알림을 위해서 IAM Permission이 필요하다.
- S3 서비스는 SNS Topic로 데이터를 보내고 있다.
- 이러한 작업을 가능하게 하려면 SNS 리소스 액세스 정책을 첨부해야 한다.
- 유사하게 SQS를 이용하려면 SQS 리소스 액세스 정책을 생성하고 첨부해야 한다.
- Lambda Function 또한 Lambda 리소스 정책을 첨부해야 S3가 Function을 호출할 권한이 생긴다.
- S3에서는 IAM 역할을 사용하지 않고, 대신 SNS Topic, SQS, Lambda에 리소스 액세스 정책을 정의해야 한다.
Amazon EventBridge
- Amazon EventBridge를 사용하면 18개가 넘는 AWS 서비스를 목적지로 이벤트를 전송할 수 있다.
- 결과적으로 S3 Event Notification 기능을 향상시킬 수 있다.
- JSON 규칙을 사용한 고급 필터링(메타데이터, 객체 크기, 이름 등)을 제공한다.
- 다중 목적지(Step Function, Kinesis Streams / Firehose)를 제공한다.
- 보관, 재생 이벤트, 안정적인 전달을 제공한다.
Baseline Performance
- Amazon S3는 높은 요청 속도, 지연 시간 100~200ms에 맞춰 자동으로 확장된다.
- 애플리케이션은 버킷의 접두사당 초당 최소 3,500개의 PUT/COPY/POST/DELETE 또는 5,500개의 GET/HEAD 요청을 달성할 수 있다.
- 버킷의 접두사 수에는 제한이 없다.
- 예(객체 경로 => 접두사)
bucket/folder1/sub1/file
=>/folder1/sub1/
bucket/folder1/sub2/file
=>/folder1/sub2/
bucket/1/file
=>/1/
bucket/2/file
=>/2/
- 4개의 접두사 모두에 균등하게 읽기를 분산하면 GET 및 HEAD에 대해 초당 22,000개의 요청을 달성할 수 있다.
Multi-Part upload
- 100MB를 초과하는 파일에 권장되며 5GB를 초과하는 파일에는 필수로 사용해야 한다.
- 업로드 병렬화에 도움이 될 수 있다. (전송 속도 향상)
S3 Transfer Acceleration
- 대상 지역의 S3 버킷으로 데이터를 전달하는 AWS 엣지 로케이션으로 파일을 전송하여 전송 속도를 높인다.
- Multi-Part 업로드와 호환하여 사용할 수 있다.
Byte-Range Fetches
- 특정 바이트 범위를 요청하여 GET 요청을 병렬화한다.
- 장애 발생 시 복원력을 향상시킨다.
- 다운로드 속도를 높이는 데 사용할 수 있다.
- 부분 데이터(예. 파일 헤드)만 검색하는 데 사용할 수 있다.
Select & Glacier Select
- 서버 측 필터링을 수행하여 SQL을 사용하여 더 적은 데이터를 검색할 수 있다.
- 간단한 SQL을 사용하여 행 및 열 기준으로 필터링이 가능하다.
- 네트워크 전송량이 적고 클라이언트측 CPU 비용도 적다.
- S3가 파일을 필터링하여 필요한 데이터만 검색할 수 있다.
- S3 Select를 사용하면 400% 빨리지며 80% 저렴하게 사용할 수 있다.
- S3가 서버 측에서 CSV 파일을 찾아 필터링하고, 필터링되어 축소된 데이터 세트를 내보낸다.
- Glacier Select도 동일하게 작동한다.
S3 Batch Operation
- 단일 요청으로 기존 S3 객체에 대한 대량 작업을 수행한다.
- 객체 메타데이터 및 속성 수정
- S3 버킷 간 객체 복사를 제공한다.
- 암호화되지 않은 객체를 암호화한다.
- ACL, 태그를 수정한다.
- S3 Glacier에서 객체를 복원한다.
- Lambda 함수를 호출하여 각 객체에 대해 사용자 지정 작업을 수행한다.
- Lambda 함수를 호출하여 각 객체에 대해 사용자 지정 작업을 수행한다.
- S3 배치 작업은 재시도를 관리하고, 진행 상황을 추적하고, 완료 알림을 보내고, 보고서를 생성한다.
- S3 Inventory를 사용하여 객체 목록을 가져오고 S3 Select를 사용하여 객체를 필터링할 수 있다.
S3 Inventory
- 모든 객체를 나열할 수 있고 S3 버킷에서 그에 대응하는 메타데이터도 나열할 수 있다.
- S3 List API를 이용해 모든 객체를 나열하고 모든 관련 메타데이터를 얻는 것보다 좋은 방법이다.
- 대표적인 사용 예시는 아래와 같다.
- 객체의 복제 및 암호화 상태에 대한 감사 및 보고를 생성한다.
- S3 버킷의 객체 수를 가져올 때 사용할 수 있다.
- 이전 객체 버전의 총 스토리지를 식별할 수 있다.
- 일일 또는 주간 보고서를 생성할 수 있다.
- CSV, ORC, Apache Parquet 형태로 데이터를 추출할 수 있다.
- Amazon Athena, Redshift, Presto, Hive, Spark 등을 사용하여 모든 데이터를 쿼리할 수 있다.
- S3 Select를 사용하여 생성된 보고서를 필터링할 수 있다.
- 비즈니스, 규정 준수, 규제 요구 사항 등에 사용될 수 있다.
S3 Glacier
- 아카이빙/백업을 위한 저렴한 객체 스토리지다.
- 데이터가 장기간(10년) 보존된다.
- 온-프레미스 Magnetic Tape 스토리지의 대안이다.
- 연평균 내구성은 99.999999999%이다.
- 월별 스토리지당 비용($0.004/GB - Standard | $0.00099 / GB Deep Archive)
- Glacier의 각 항목을 "아카이브"라고 한다. (최대 40TB)
- 아카이브는 "Vaults"에 저장된다.
- 기본적으로 AES-256(AWS에서 관리하는 키로 암호화)을 사용하여 저장 데이터를 암호화한다.
Operations
- Vault Operations
- Create & Delete: 아카이브가 없을 때만 삭제한다.
- Retrieving Metadata: 생성 날짜, 아카이브 수, 모든 아카이브의 총 크기 등을 검색한다.
- Download Inventory: Vault에 있는 아카이브 목록(아카이브 ID, 생성 날짜, 크기)를 다운로드한다.
- Glacier Operations
- Upload: 대규모 아카이브의 경우 단일 작업 또는 부분별(Multi-Part upload) 작업
- Download: 먼저 아카이브에 대한 검색 작업을 시작한 다음 Glacier가 아카이브 다운로드를 준비한다.
그러면 사용자는 스테이징 서버에서 데이터를 다운로드하는 데 제한된 시간을 갖게 된다. (선택적으로 검색할 바이트 범위 또는 부분을 지정한다.) - Delete: 아카이브 ID를 지정하여 Glacier Rest API 또는 AWS SDK를 사용한다.
- 복원 링크에는 만료일이 있다.
- 아래와 같은 검색 옵션이 있다.
- Expedited (1 ~ 5 minutes): $0.03 per GB, $10 per 1000 requests
- Standard (3 ~ 5 hours): $0.01 per GB, $0.03 per 1000 requests
- Bulk (5 ~ 12 hours): $0.0025 per GB, $0.025 per 1000 requests
Vault Policy & Vault Lock
- 각 Vault에는 아래의 항목이 포함된다.
- 1개의 Vault Access 정책
- 1개의 Vault Lock 정책
- "Vault 정책"은 JSON으로 작성된다.
- "Vault Access 정책"은 S3 버킷 정책과 유사하다. (사용자 제한/계정 권한)
- "Vault Lock 정책"은 규제 및 규정 준수 요구 사항에 대해 잠그는 정책이다.
- 정책은 불변(Immutable)이며 절대 변경할 수 없다.
- 예시 1: 1년 미만의 아카이브 삭제 금지
- 예시 2: WORM 정책 구현
복원 작업에 대한 알림
- Vault Notification Configuration
- 작업이 완료되면 메시지가 SNS로 전송되도록 Valut를 구성할 수 있다.
- 선택적으로 작업을 시작할 때, SNS Topic을 지정한다.
- S3 Event Notification
- S3는 S3 Glacier 스토리지 클래스에 아카이브된 객체의 복원을 지원한다.
s3:ObjectRestore:Post
=> 객체 복원이 시작되면 알림을 제공한다.s3:ObjectRestore:Completed
=> 객체 복원이 완료되면 알림을 제공한다.
Multi Part Upload
- 큰 객체를 순서 상관없이 부분적으로 업로드한다.
- 100MB를 초과하는 파일에는 권장되며, 5GB를 초과하는 파일은 필수로 사용해야 한다.
- 업로드 병렬화를 통하여 전송 속도 향상에 도움이 될 수 있다.
- 최대 Part의 수는 10,000이다.
- 실패하는 경우 실패한 부분만 다시 업로드하므로 성능을 향상시킬 수 있다.
- 네트워크 중단과 같은 이유로 업로드에 문제가 발생하였을 때, 수명 주기 정책을 사용하여 N일 후 완료되지 않은 업로드의 오래된 Part를 자동으로 삭제할 수 있다.
- AWS CLI 또는 AWS SDK를 사용하여 업로드한다.
Amazon Athena
- S3에 저장된 데이터를 분석하는 서버리스 쿼리 서비스다.
- Presto 기반의 표준 SQL을 사용하여 파일을 쿼리한다.
- CSV, JSON, ORC, Avro 및 Parquet를 지원한다.
- 검색된 데이터 1TB당 $5.00을 지불해야 한다.
- 보고서/대시보드를 위해 Amazon Quicksight와 함께 일반적으로 사용된다.
- Business Intelligent/분석/보고, 분석 및 VPC Flow Logs 쿼리, ELB Logs, CloudTrail trails 등에 사용된다.
성능 향상
- 비용 절감을 위해 열 형식 데이터를 사용하여 스캔 횟수를 감소시킬 수 있다.
- Apache Parquet 또는 ORC가 권장된다.
- 큰 성능 개선을 기대할 수 있다.
- Glue를 사용하여 데이터를 Parquet 또는 ORC로 변환할 수 있다.
- 소규모 검색을 위한 데이터 압축(bzip2, gzip, lz4, snappy, zlip, zstd 등)을 지원한다.
- 가상 열에 대한 간편한 쿼리를 위한 S3의 데이터 세트 파티션을 제공한다.
- 더 큰 파일을 사용하여 오버헤드를 최소화한다.
Federated Query
- 관계형, 비관계형, 객체 및 사용자 지정 데이터 소스(AWS 또는 On-Premise)에 저장된 데이터에 대해 SQL 쿼리를 실행할 수 있다.
- AWS Lambda에서 실행되는 데이터 소스 커넥터를 사용하여 통합 쿼리(예: CloudWatch Logs, DynamoDB, RDS 등)를 실행한다.
- 결과를 Amazon S3에 다시 저장한다.
'Infrastructure > Certificate' 카테고리의 다른 글
[SOA] Advanced Storage (0) | 2023.11.10 |
---|---|
[SOA] S3 Security (0) | 2023.11.10 |
[SOA] Amazon S3 (0) | 2023.11.05 |
[SOA] EC2 Storage Data Management (0) | 2023.11.05 |
[SOA] Lambda (0) | 2023.11.01 |