137. S3 수명 주기 규칙
Amazon S3 - Moving between Storage Classes
- 스토리지 클래스 간에 객체를 이동 시킬 수 있다.
- 자주 사용하지 않는 객체는 standard에서 standard-IA 로 옮기거나
- 빠른 접근이 필요 없는 경우 Glacier 또는 Glacier Deep Archive 로 옮긴다.
- 객체는 수동으로 옮기거나 수명주기를 이용해 자동으로 옮길 수 있다. (Life Cycle)
Amazon S3 - Lifecycle Rules
전환 작업 Transition Actions
다른 스토리지 클래스로 객체를 전환하도록 구성한다.
생성 60일 이후 standard ia로 옮기거나
6개월 후 Glacier 로 옮기는 등
만료 작업 Expiration actions
일정 시간이 지난 후 객체가 삭제 또는 만료되게 한다.(만료시 하는 작업)
365일 후 액세스 로그 파일을 삭제하도록 하거나
버저닝을 활성화 했다면 이전 버전을 삭제하거나
완료되지 않은 멀티파트 업로드는 삭제하도록 구성할 수 있다.
규칙에는 특정 접두사를 사용하여 전체 버킷이나 버킷의 일부 경로에만 적용할 수 있고
s3://mybucket/mp3/*
특정 객체 태그에만 지정할 수도 있다.
Department:Finance
Amazon S3 - Lifecycle Rules (Scenario 1)
EC2에 애플리케이션이 있고 s3에 업로드되는 프로필 사진의 이미지 섬네일을 생성하려고 한다.
섬네일은 원본 사진에서 재생성하기 쉬우므로 60일 동안만 보관한다.
소스 이미지는 60일 동안은 바로 검색할 수 있어야 하고 이후에는 사용자가 6시간까지 기다릴 수 있다.
=>
S3 소스 이미지를 standard 로 두고 60일 이후에는 glacier로 보낸다.
S3 썸네일 이미지는 one-zone IA에 두고 60일 이후에 만료 또는 삭제 시킨다. (썸네일 사진은 잃어버려도 재생성이 쉬우니까)
Amazon S3 - Lifecycle Rules (Scenario 2)
S3 객체 삭제 후 30일 이내에는 즉시 복구가 가능해야하고 그로부터 365일 이내에는 해당 객체를 48시간 내에 복구할 수 있어야한다.
=>
S3 버저닝을 활성화하여 객체 버전을 유지 및 보유하고 있어야 삭제 마커 뒤에 숨어 있는 삭제된 객체를 복구할 수 있따.
객체의 이전 버전을 standard ia 로 이동 시키는 전환 규칙도 생성해야한다.
그런 다음 이전 버전은 glacier deep archive 로 보내는 규칙도 생성한다.
Amazon S3 Analytics - Storage Class Analysis
한 클래스에서 다른 클래스로 객체를 전환하는 데에 있어 최적의 기간은 어떻게 정할 수 있을까?
Amazon S3 Analytics 를 이용하면 된다.
Standard 와 Standard IA 용 권장 사항을 제공하고 One-Zone IA 나 glacier은 해당되지 않는다 .
S3 버킷에서 S3 Analytics를 실행하면 버킷에 관한 권장 사항과 통계를 CSV 파일로 제공한다.
이 보고서는 매일 업데이트 되고 해당 데이터 분석 결과까지 24시간에서 48시간이 소요된다.
csv 보고서로 수명 주기 규칙을 알아보고 개선할 수 있다.
138. S3 수명 주기 규칙 - 실습
버킷 -> management로 이동 -> Lifecycle rule actions
'버킷의 모든 객체에 적용'을 선택하고 동의합니다
다섯 가지의 '규칙 작업'이 있는데요
'스토리지 클래스 간 최신 버전의 객체 이동'
'스토리지 클래스 간 이전 버전 객체 이동'
'객체의 최신 버전 만료' '최신 버전이 아닌 객체 영구 삭제'
'만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제'가 있습니다
스토리지 수명 주기 관리 - Amazon Simple Storage Service
139. S3 요청자 지불
S3 - Requester Pays
일반적으로 버킷 소유자가 버킷과 관련된 모든 s3 스토리지 및 데이터 전송 비용을 지불한다.
버킷 셋이 있고 그안에 객체를 보관한다.
요청자, 사용자가 버킷으로부터 파일을 다운로드한다.
네트워킹 비용 역시 버킷 사용자가 부담한다.
만약 파일 다운로드가 많아지면 버킷 소유자는 어마무시한 비용을 지불할 것이다.
대신 요청자가 객체 데이터 다운로드 비용을 지불하게 하자
소유자가 여전히 버킷을 객체 스토리지 비용을 부담하겠지만 요청자가 객체를 다운로드하면 요청자가 다운로드 관련된 비용을 지불하게 된다.
요청자는 익명이여서는 안된다.aws 인증을 받아야함.
the requester must be authenticated in AWS
140. S3 이벤트 알림
S3 Evenet Notifications
이벤트란
객체가 생성, 삭제, 복원 ,복제 인 경우
해당 이벤트를 필터링 할 수도 있다. (ex .jpg로 끝나는 객체를 필터링)
S3에선 특정 이벤트에 대해 자동으로 반응하게 할 수 있다.
s3에 업로드되는 사진의 섬네일을 만들려고 하면 이에 대한 이벤트 알림을 만들어서 몇 가지 수신지로 보낼 수 있다.
sns,sqs,람다로 보낼 수 있다.
원하는 만큼 S3 이벤트를 생성하고 원하는 대상으로 보낼 수 있다.
이벤트가 대상에 전달되는 시간은 몇 초밖에 안 걸리지만 가끔 1분 이상 걸릴 수도 있다. \
S3 Event Notifications with Amazon EventBridge
이벤트 알림의 새로운 기능으로 Amazon EventBridge와 통합 되었다.
이벤트 종류와 상관없이 모든 이벤트는 amazon eventBridge 로 모인다.
18개가 넘는 aws 서비스에 이벤트를 보낼 수 있다.
Eventbridge는 고급 필터링을 지원한다. ( 메타 데이터, 객체 크기, 이름 등으로 필터링 가능)
multiple Destinations - 동시에 여러 수신지에 보낼 수도 있다.
kinesis Streams 혹은 firehose에도 보낼 수 있다.
eventBridge 기능 - 아카이빙, 재생, 안정적인 전송 기능을 지원한다.
141. S3 이벤트 알림 - 실습
버킷 생성
프로퍼티
이벤트 알림 생성 + eventBridge 통합 활성화 하기
이벤트 생성 ,
이벤트 종류 선택
대상 선택하기
sqs 선택 ( 먼저 sqs 만들어야함. )
Sqs 대기열이 S3 버킷의 메시지를 수락하지 않은 상태
액세스 정책을 변경해야한다.
142. S3 퍼포먼스
S3 - Baseline Performance
S3 의 기준 성능
기본적으로 S3 는 요청이 아주 많을때 자동으로 확장된다.
지연 시간도 100~200 밀리초 사이로 아주 짧다.
S3 버킷 내에서 접두사당 초다 3,500개의 PUT/COPY/POST/DELETE 초당 5,500 개의 GET/HEAD 요청을 지원한다.
버킷 내에 접두사 수에는 제한이 없다.
file이라는 이름의 객체가 4개가 있다고 가정하자
object path | prefix |
bucket/folder1/sub1/file | /folder1/sub1/ |
bucket/folder1/sub2/file | /folder1/sub2/ |
bucket/1/file | /1/ |
bucket/2/file | /2/ |
네 개의 접두사에 읽기 요청을 균등하게 분산하면 초당 22,000개의 GET/HEAD 요청을 처리할 수 있다.
S3 성능과 최적화 방법을 알아보자
Multi-Part upload
100mb 넘어가면 권장
5gb 넘어가면 무조건
업로드를 병렬화 한다. (parallelize)
전송 속도를 높여 대역폭을 최대화할 수 있다.
S3에 큰 파일을 업로드 할 때 여러 파트로 나눠서 업로드하고 S3에서 모든 파트가 합쳐진다.
S3 Transfer Acceleration
AWS 엣지 로케이션에 파일을 전송 하고 데이터를 대상 리전에 있는 S3 버킷으로 전달한다.
미국에 있는 파일을 호주에 있는 S3 버킷에 업로드 하고 싶을 때
usa의 엣지 로케이션에 파일을 업로드하고
엣지 로케이션에서 S3 버킷으로 전송한다.
퍼블릭 인터넷의 사용량을 최소화 하고 프라이빗 AWS 네트워크의 사용량을 최대화 한다.
전송 가속화는 멀티파트 업로드와 같이 사용될 수 있다.
S3 Performance - S3 Byte-Range Fetches
파일을 수신하고 파일을 읽는 가장 효율적인 방법은
S3 바이트 범위 가져오기
파일에서 특정 바이트 범위를 가져와서 GET 요청을 병렬화 한다.
특정 바이트 범위를 가져오는 데 실패한 경우에도 더 작은 바이트 범위에서 재시도하므로
실패의 경우에도 복원력이 높다.
다운로드 속도를 높일 때 사용된다.
S3에 이렇게 큰 파일이 있다고 가정한다.
첫 번째 파트를 요청한다. 파일 앞 부분의 몇 바이트
두 번째 파트부터 N 번째 파트까지 요청하여 모든 파트 부분을 특정 바이트 범위로 가져오기로 요청한다.
모든 요청은 병렬화 된다.
파일의 일부만 검색하기
S3에 있는 파일의 첫 50바이트가 헤더라는 것을 알고 파일에 대한 정보를 안다면
첫 50바이트를 사용해서 원하는 정보만 빠르게 수신할 수 있다.
143. S3 셀렉트 & Glacier Select
S3 Select & Glacier Select
S3에서 파일을 검색할 때 검색한 다음에 필터링하면 너무 많은 데이터를 검색하게 된다.
서버 측 필터링을 수행하면 어떨까?
retrieve less data using SQL by performing server-side filtering
SQL 문에서 간단히 행과 열을 사용해 필터링할 수 있다.
네트워크 전송 비용과 cpu 비용도 줄일 수 있다.
S3 Select 를 사용하면 s3 가 대신 파일을 필터링 해 주고 필요한 데이터만 검색할 수 있다.
속도는 400% 빨라지고 비용은 80% 줄어든다.
S3 select, Glacier Select
144. S3 Batch Operations
단일 요청으로 기존 S3 객체에서 대량 작업을 수행하는 서비스
사용 사례가 많다.
- S3 객체의 메타이터와 프로퍼티 수정
- 배치 작업으로 s3 버킷 간에 객체를 복사할 수 있다.
- S3 버킷 내 암호화되지 않은 모든 객체를 암화화할 수 있다. ( 시험)
- ACL , 태그 수정
- S3 Glacier 에서 한 번에 많은 객체 복원 가능
- 람다 함수 호출해 S3 batch operations 의 모든 객체에서 사용자 지정 작업을 수행 가능
- 객체 목록에서 원하는 작업은 무엇이든지 수행 가능
작업은 객체의 목록, 수행할 작업 옵션 매개변수로 구성
직접 스크립팅 하지 않고 S3 Batch operations를 사용하는 이유
재시도를 관리할 수 있고 진행 상황을 추적하고 작업 완료 알림을 보내고 보고서 생성 등을 할 수 있음.
S3 Inventory -> S3 Select -> S3 Batch Operations
객체 목록 가져오기 | 객체를 필터링 | 수행할 작업, 매개 변수와 함께 객체 목록을 전달 , 작업을 수행
주요 사용 사례로
S3 Inventory를 사용해 암호화되지 않은 모든 객체를 찾은 다음
S3 Batch Operations를 사용해 한 번에 모두 암호화화는 것이다 .
Quiz 11 : Amazon S3 고급 & Athena 퀴즈
1. 버전 관리를 활성화한 상태에서, S3 버킷 상의 파일을 삭제에 각별한 주의를 기울이려 합니다. 실수로 영구 삭제를 하는 일이 없도록 하려면 어떻게 해야 할까요?
MFA 삭제는 사용자들이 S3 객체를 삭제하기 전에 MFA 코드를 사용하도록 강제합니다. 이는 실수로 영구 삭제를 하는 일이 없도록 보안을 한 층 더 더해 줍니다.
2. S3 버킷에 있는 모든 파일이 기본으로 암호화 되었으면 합니다. 이를 위한 최적의 방법은 무엇인가요?
3. 일부 직원들이 액세스 권한이 없는 S3 버킷 내에 있는 파일에 액세스를 시도한 것으로 의심되는 상황입니다. 직원들 모르게 이를 확인하기 위해서는 어떤 방법을 사용해야 할까요?
S3 액세스 로그는 S3 버킷에 대해 이루어진 모든 요청을 로깅하며, Amazon Athena는 로그 파일 및 서버리스 분석 실행에 사용됩니다
4. S3 버킷의 콘텐츠를 다른 AWS 리전에서도 아무 제한 없이 사용할 수 있었으면 합니다. 이는 팀이 최소 비용 및 최소 지연 시간으로 데이터 분석을 수행할 수 있게 해줄 것입니다. 이 경우, 다음 중 어떤 S3 기능을 사용해야 할까요?
Amazon CloudFront는 전 세계의 여러 엣지 로케이션으로 데이터를 캐시하지만, 다른 AWS 리전으로 S3 버킷의 컨텐츠를 복사해주지는 않습니다.
S3 복제를 사용하면 S3 버킷에서 동일한/다른 AWS 리전의 다른 버킷으로 데이터를 복제할 수 있습니다.
5. 3개의 S3 버킷이 있습니다. 소스 버킷 A, 그리고 다른 AWS 리전에 있는 두 개의 목적지 버킷인 B와 C가 그것입니다. 버킷 A에서 버킷 B와 C 양측 모두로 객체를 복제하려면 어떤 방법을 사용해야 할까요?
6. 다음 중 Glacier 딥 아카이브 회수 모드에 해당하지 "않는" 것을 고르세요.
7. 어떤 방법을 사용해야 S3 버킷으로 객체가 업로드되었음을 알 수 있을까요?
8. 점점 늘어나고 있는 연결된 사용자들의 목록에 임시 URL을 제공하여, 이들이 특정 로케이션에서 S3 버킷으로 파일 업로드를 수행할 수 있도록 허가하려 합니다. 무엇을 사용해야 할까요?
9. S3 버전 관리가 활성화된 S3 버킷이 있습니다. 이 S3 버킷은 여러 객체를 지니고 있으며, 비용 절감을 위해 오래된 버전을 삭제하려 합니다. 오래된 객체 버전의 삭제를 자동화하기 위해서 사용할 수 있는 최선의 방법은 무엇인가요?
왜 만료조치가 아니지...?
10. 서로 다른 티어 간의 S3 객체 전환을 자동화하기 위해서는 어떻게 해야 할까요?
11. 다음 중 Glacier Flexible 검색 옵션이 아닌 것은 무엇인가요?
12. 멀티파트 업로드를 사용해 S3 버킷으로 크기가 큰 파일을 업로드하던 도중, 네트워크 문제로 인해 완료되지 않은 부분의 상당량이 S3 버킷에 저장되었습니다. 완료되지 않은 부분은 불필요하며, 여러분의 비용을 소모합니다. 완료되지 않은 부분을 삭제하기 위해 사용할 수 있는 최적의 접근법은 무엇인가요?
13. 다음의 서버리스 데이터 분석 서비스들 중, S3에 있는 데이터를 쿼리하는 데에 사용할 수 있는 것은 무엇인가요?
14. S3 수명 주기 규칙에 대한 추천 사항을 찾고 있습니다. 서로 다른 스토리지 계층 간의 객체 이동에 필요한 최적의 일수는 어떻게 분석할 수 있을까요?
15. Amazon RDS PostgreSQL을 사용하여 S3에 파일의 인덱스를 구축하려 합니다. 인덱스 구축을 위해서는 파일 콘텐츠 자체의 메타데이터를 포함하고 있는 S3에 있는 각 객체의 첫 250바이트를 읽는 작업이 필수적입니다. S3 버킷에는 총 50TB에 달하는 100,000개 이상의 파일이 포함되어 있습니다. 이 경우 인덱스를 구축하기 위한 효율적인 방법은 무엇일까요?
16. 여러분의 기업은 규정 준수를 위해 데이터베이스의 백업을 4년 동안 보관해야 한다는 정책을 가지고 있습니다. 이를 제거하는 것은 불가능해야 합니다. 어떤 방법을 추천할 수 있을까요?
17. S3 버킷으로 업로드하려는 대규모의 데이터셋이 온프레미스로 저장되어 있습니다. 이 데이터셋은 10GB 파일로 분할되어 있습니다. 대역폭은 좋으나, 인터넷 연결은 불안정합니다. 이 경우, 데이터셋을 S3에 업로드하는 프로세스를 빠르게, 그리고 인터넷 연결 문제 없이 처리하려면 어떤 방법을 사용해야 할까요?
18. S3에 저장된 데이터셋의 서브셋을 CSV 형식으로 회수하려 합니다. 컴퓨팅 및 네트워크 비용 최소화를 위해 한 달 분의 데이터와 10개 열 중 3개의 열만 회수하려고 합니다. 무엇을 사용해야 할까요?