gony-dev 님의 블로그

Section 13. Amazon S3 고급 본문

AWS

Section 13. Amazon S3 고급

minarinamu 2024. 10. 2. 23:52

S3

1. Moving between Storage Classes

  • 스토리지 클래스 간에 객체를 이동할 수 있는 방법이 있다! 이를 알아보자.
  • 객체에 자주 액세스하지 않을 것을 알고 있다면 표준-IA로 이동하고, 객체를 아카이브(보관)할 예정임을 알고 있다면 Glacier 계층이나 Deep Archive 계층으로 이동해야한다.
    • 이러한 객체를 수동으로 이동할 수도 있지만 수명 주기 규칙을 사용해 자동화할 수도 있다.

s3 객체의 클래스 간 이동

2. Lifecycle Rules

수명 주기 규칙은 다양한 요소로 이루어져 있다. 이는 다음과 같다.

  1. 전환 작업(Transition Actions) | 객체를 구성하여 또 다른 스토리지 클래스로 전환한다.
    1. 예시로 생성한지 60일 후에는 표준 클래스로 이동하고, 6개월 후에는 아카이빙을 위해 Glacier로 이동한다.
  2. 만료 작업(Expiration Actions) | 객체를 구성하여 일정 기간이 지나면 객체를 만료 또는 삭제시킨다.
    1. 예시로 액세스 로그 파일의 경우 365일 후 삭제할 수도 있고, 버전 관리를 활성화했다면 만료 작업을 통해 모든 파일을 삭제할 수도 있다.
    2. 완료되지 않은 멀티파트 업로드를 삭제하는 데에 사용될 수도 있다.
  3. 특정 접두사에 규칙을 지정하여 전체 버킷이나 버킷 내의 특정 경로에 적용되도록 설정할 수도 있다.
  4. 또한 특정 객체 태그에 지정할 수도 있다.

3. Storage Class Analysis

  • 객체의 클래스를 전환하는 데 가장 적합한 일 수를 결정하려면 S3 분석을 사용하면 된다!
  • 표준이나 표준 IA를 권장하며 One Zone-IA나 Glacier에서는 사용할 수 없다.
  • S3 분석에서는 권장 사항과 통계를 제공하는 csv 보고서가 생성된다.

S3 Event Notifications

  • S3 이벤트란 객체가 생성, 삭제, 복원, 복제 등 다양한 작업이 일어나는 것을 말한다.

1. IAM Permissions

  • 이벤트 알림이 작동하기 위해서는 IAM 권한이 필요하다.
  • S3 서비스에서 SNS 주제로 데이터를 보낸다고 가정하자. 그렇게 하기 위해 SNS 리소스 접근 정책이라는 것을 첨부해야 한다.
    • 이를 통해 S3 버킷에서 SNS 주제로 바로 메시지를 보낼 수가 있다.
    • 다른 서비스 이용도 마찬가지이다.

2. Amazon EventBridge

  • 과정을 설명하면 이벤트는 모두 S3 버킷으로 가서 Amazon EventBridge로 간다.
    • EventBridge에서 설정한 규칙들을 통해 18 종류의 AWS 서비스를 목적지로 하여 이벤트를 보낼 수 있다!
  • EventBridge 사용 시, 고급 필터링 옵션들을 사용할 수 있고, 많은 목적지를 가질 수 있으며, EventBridge의 용량을 늘릴 수 있다.

EventBridge 과정


Baseline Performance

  • 기본적으로 Amazon S3는 매우 높은 요청 수로 자동 스케일링되며 100~200 ms의 매우 짧은 지연 시간을 갖는다.
  • 애플리케이션에서는 적어도 prefix당 초당 3500 개의 PUT, COPY, POST, DELETE를 하거나 5500 개의 GET, HEAD 요청을 갖는다.
    • 위의 4개 접두사 모두에 균등하게 읽기를 분산한다면 GET, HEAD에 초당 22000개의 요청을 가질 수 있다.
  • 버킷의 접두사 수에는 제한이 없다!

1. S3 Performance

s3의 성능을 최적화하는 방법을 알아보자.

  1. 멀티파트 업로드
    1. 100MB가 넘는 파일은 멀티파트 업로드를 하는 것이 좋다.
    2. 5GB가 넘는 파일에는 반드시 사용해야 한다.
    3. 멀티파트 업로드는 업로드를 병렬화하므로 전송 속도를 높여 대역폭을 최대화하는 데 도움이 된다.
  2. S3 전송 가속화
    1. 파일을 AWS 엣지 위치로 전송하여 전송 속도를 높이면 해당 데이터가 대상 지역의 S3 버킷으로 전달된다.
    2. 전송 가속화는 멀티파트 업로드와 호환된다.

2. S3 Performance - S3 Byte-Range Fetches

  • 범위 가져오기는 파일의 특정 바이트 범위를 가져와 가져오기를 병렬화하는 것이다.
    • 따라서 특정 바이트 범위를 가져오는 데 실패한 경우라도 더 작은 바이트 범위를 다시 시도할 수 있다.
  • 다운로드 속도를 높이는 데 사용될 수 있다.
  • 요지는 가져오기를 병합하고 다운로드 속도를 높이는 것이다.
  • 또한 부분적인 데이터만 가져올 수도 있다!

S3 Select & Glacier Select

S3에서 파일을 검색하려는 점은 알고 있으나, 검색 후 필터링을 해야하기 때문에 데이터를 너무 많이 검색해야한다.
하지만 SQL를 이용해 서버 측에서 필터링을 수행할 수 있다면 어떨까?
  • 간단한 SQL 명령문으로 행이나 열을 기준으로 필터링하여 네트워크 전송과 실제로 데이터를 거치고 필터링하는 클라이언트 측의 CPU를 줄일 수 있다.
  • S3 Select를 사용하면 S3가 파일을 필터링하게하여 필요한 데이터만 검색할 수 있다.
    • 최대 400% 빠르고 비용이 80% 저렴하다고 한다.


S3 User-Defined Object Metadata & S3 Object Tags

1. 사용자 기반 객체 메타데이터
객체를 만들고 업로드 할 때 메타데이터도 할당할 수 있다.
메타데이터는 객체에 연결된 키 값 쌍에 대한 이름이다.
사용자 정의 메타데이터를 업로드하면 x-amz-meta로 시작하는 이름을 부여해야 하는데 AWS에서 생성한 메타데이터가 있기 때문이다.

메타데이터는 객체를 검색할 때 검색할 수 있고, 객체 자체에 대한 정보를 제공한다.

2. S3 객체 태그
이 객체 태그는 S3 객체에 대한 키 값 쌍이 있다.
태그와 메타데이터를 분리한 이유는 실제로 태그를 사용해 권한 등을 세분화하거나 AWS 내의 특정 태그가 있는 특정 객체에 액세스를 부여할 수 있기 때문이다.

중요한 점은 객체 메타데이터나 객체 태그를 검색할 수 없다는 것이다.
그렇다면 이것이 왜 필요할까?
  • 모든 메타데이터와 모든 태그를 DynamoDB의 검색할 수 있는 인덱스에 넣은 다음, 검색을 수행하면 검색 결과는 S3의 객체로 추출된다.

'AWS' 카테고리의 다른 글

Section 16. ECS, ECR 및 Fargate - AWS의 도커  (2) 2024.10.13
Section 14. S3 보안  (3) 2024.10.03
Section 7. ELB+ASG  (0) 2024.10.02
Section 12. AWS CLI, SDK, IAM 역할 및 정책  (1) 2024.09.26
Section 11. Amazon S3  (0) 2024.09.26