
Amazon S3 - Moving between Storage Classes
- 스토리지 클래스 간에 객체를 이동시킬 수 있다
- 단, 자신보다 아래에 있는 모든 수준으로 이동 가능
- 객체는 수동으로 옮기거나 Lifecycle rule을 통해 자동화 할 수 있다
Amazon S3 - Lifecycle Rules
- Transition Actions (전환 작업)
- 다른 스토리지 클래스로 객체를 전환하도록 구성
- ex) 생성 60일 이후에 Standard IA로 이동하도록 설정
- Expiration Actions (만료 작업)
- 일정 시간이 지나면 객체가 삭제 또는 만료
- ex) 365일 후에 액세스 로그 파일을 삭제
- ex ) Versioning을 활성화한 경우 이전 버전의 파일을 삭제하도록 설정할 수 있다
- Rule은 특정 접두사를 사용하여 전체 버킷이나 버킷의 일부 경로에만 적용할 수 있으며 특정 객체 태그에만 지정할 수도 있다
Amazon S3 Analytics - Storage Class Analysis
- 한 클래스에서 다른 클래스로 객체를 전환하는 데에 있어 최적의 기간을 설정할 때 사용
- Standard와 Standard IA용 권장 사항을 제공한다
- One-Zone IA나 Glacier은 해당되지 않는다
- 버킷에 관한 권장 사항과 통계를 CSV 파일로 제공하며 매일 업데이트된다
- 해당 데이터 분석 결과까지 24시간에서 48시간이 소요된다
Amazon S3 Lifecycle 생성하기
- 버킷의 Management → create lifecycle rule
Amazon S3 - Requester Pays
- 일반적으로는 버킷 소유자가 버킷과 관련된 모든 S3 스토리지 및 데이터 전송 비용을 지불한다
- 그러나 수많은 대형 파일이 있고 일부 고객이 이를 다운로드 하려면 Requester Pays를 활성화 해야한다
- 이 경우 버킷 소유자가 아니라 요청자가 객체 데이터 다운로드 비용을 지불한다
- 요청자가 AWS에서 인증을 받아야 하고 익명이여서는 안된다
Amazon S3 Event Notifications
- 객체가 생성된 경우, 삭제되거나 복원된 경우, 복제가 발생한 경우를 이벤트라 부름
- 또한 이벤트를 필터링 할 수 있다
- 특정 이벤트에 자동으로 반응할 수 있게 할 수 있다
- ex) S3에 업로드되는 사진의 thumbnails를 생성하려고 하면 이에 대한 이벤트 알림을 만들어서 수신지로 보낼 수 있다 (SNS, SQS 대기열, Lambda)
- 원하는 만큼 이벤트를 생성할 수 있고 원하는 대상으로 보낼 수 있다
S3 Event Notifications with Amazon EventBridge
- 이벤트가 Amazon S3 버킷으로 이동하면 이벤트 종류와 상관없이 모든 이벤트는 EventBridge로 모인다
- 규칙을 설정할 수 있고 규칙을 통해 AWS 서비스에 이벤트 알림을 보낼 수 있다
- 메타데이터, 객체 크기, 이름 등으로 필터링 할 수 있다
- 버킷에서 Properties → Event notifications or Amazon EventBride를 통해 설정 가능하다
- 기본적으로 Amazon S3는 요청이 아주 많을 때 자동으로 확장
- S3로부터 첫 번째 바이트를 수신하는 데 지연 시간은 100-200 밀리초 사이이다
- 버킷 내에서 접두사 수에 제한은 없다
- 접두사 별로 초당 3,500개의 PUT 요청 및 5,500개의 GET 요청
- file이라는 이름을 가진 네 개의 객체가 있다고 가정
- 첫 번째 객체의 위치는 bucket/folder1/sub1/file
- 이 때 접두사는 bucket과 file 사이에 있는 /folder1/sub1/이 된다
- Multi-Part upload
- 100MB가 넘는 파일은 멀티파트 업로드를 사용하는 것을 권장하고 5GB를 넘으면 반드시 사용
- 업로드를 병렬화하므로 전송 속도를 높여 대역폭을 최대화할 수 있다
- S3 Transfer Acceleration (S3 전송 가속화)
- 파일을 AWS 엣지 로케이션으로 전송해서 전송 속도를 높이고 데이터를 대상 리전에 있는 S3 버킷으로 전달
- 엣지 로케이션은 리전보다 수가 많다
- 퍼블릭 인터넷의 사용량을 최소화하고 프라이빗 AWS 네트워크의 사용량을 최대화
- 파일을 수신하고 파일을 읽는 가장 효율적인 방법 = S3 바이트 범위 가져오기
- 파일에서 특정 바이트 범위를 가져와서 GET 요청을 병렬화
- 실패의 경우에도 복원력이 높다
- 다운로드 속도를 높일 때 사용한다
- 파일 일부만 검색할 때도 사용한다
S3 Select & Glacier Select
- S3에서 파일을 검색할 때 서버 측 필터링을 수행하면 SQL문에서 간단히 행과 열을 사용해 필터링할 수 있다
- 네트워크 전송이 줄어들기 때문에 데이터 검색과 필터링에 드는 클라이언트 측의 CPU 비용도 줄어든다
S3 Batch Operations
- 단일 요청으로 기존 S3 객체에서 대량 작업을 수행하는 서비스
- 한 번에 많은 S3 객체의 메타데이터와 Properties를 수정할 수 있고 배치 작업으로 S3 버킷 간에 객체를 복사 할 수 있다
- S3 버킷 내 암호화되지 않은 모든 객체를 암호화 할 수 있다
- ACL이나 태그를 수정할 수 있다
- S3 Glacier에서 한 번에 많은 객체를 복원할 수 있다
- Lambda 함수를 호출해 S3 Batch Operations의 모든 객체에서 사용자 지정 작업을 수행할 수 있다
- S3 Batch Operations를 사용하면 재시도를 관리할 수 있고 진행 상황을 추적하고 작업 완료 알림을 보내고 보고서 생성 등을 할 수있다
- S3 배치에 전달할 객체 목록은 S3 Inventory라는 기능을 사용해 객체 목록을 가져오고 S3 Select를 사용해 객체를 필터링한다
- S3 Inventory를 사용해 암호화되지 않은 모든 객체를 찾은 다음 S3 Batch Operations를 사용해 한 번에 암호화 하는 사례