AWS(Amazon Web Service)

[AWS] Amazon S3 - Select & Glacier Select / S3 Batch Operations

yunseohhe 2024. 11. 3. 09:30

Select & Glacier Select

  • S3에서 파일을 검색할 때, 검색한 다음에 필터링하면 너무 많은 데이터를 검색하게 된다. 대신 서버 측 필터링을 수행하면 어떻게 될까?
      - SQL 문에서 간단히 행과 열을 사용해 필터링할 수 있다.
      - 네트워크 전송이 줄어들기 때문에 데이터 검색과 필터링에 드는 클라이언트 측의 CPU 비용도 줄어든다.
  • S3 Select 이전에는 모든 데이터를 검색한 다음 애플리케이션 측에서 필터링을 통해 필요한 것을 찾아, 많은 데이터를 가져와서 약간의 데이터만 사용하는 것이다.
  • S3 Select를 사용하면 S3가 대신 파일을 필터링해 주고 필요한 데이터만 검색할 수 있다. 그리고 속도는 400% 빨라지고 비용은 80% 줄어든다.

  • 오른쪽 도식을 살펴보자.
      - Amazon S3 Select로 CSV 파일을 가져오는데, S3는 이 CSV파일을 찾아서 자체 서비스인 서버 측에서 필터링해서 우리에게 필터링된 데이터 세트를 보낸다. 데이터 크기가 훨씬 작어 저렴해지게된다.
  • 그래서 간단한 필터링에는 S3 Select나 Glacier Select를 추천한다.

 

S3 Batch Operations

  • 단일 요청으로 기존 S3 객체에서 대량 작업을 수행하는 서비스이다.
  • 사용 사례
      - 한 번에 많은 S3 객체의 메타데이터와 프로퍼티를 수정할 수 있다.
      - 배치 작업으로 S3 버킷 간에 객체를 복사할 수 있다.
      - S3 버킷 내 암호화되지 않은 모든 객체를 암호화할 수 있다.
      - ACL이나 태그를 수정할 수 있다.
      - S3 Glacier에서 한 번에 많은 객체를 복원할 수 있다.
      - Lambda 함수를 호출해 S3 Batch Operations의 모든 객체에서 사용자 지정 작업을 수행할 수도 있다.
  • 객체 목록에서 원하는 작업은 무엇이든지 수행할 수 있다.
      - 작업은 객체의 목록, 수행할 작업 옵션 매개 변수로 구성된다. 
  • 왜 직접 스크립팅하지 않고 S3 Batch Operations 사용할까?
      - 왜냐면 S3 Batch Operations를 사용하면 재시도를 관리할 수 있고, 진행 상황을 추적하고 작업 완료 알림을 보내고 보고서 생성 등을 할 수 있기 때문이다.
  • S3 배치에 전달할 객체 목록은 어떻게 생성하는지는 밑의 이미지를 살펴보자.

  • S3 Inventory라는 기능을 사용해 객체 목록을 가져오고, S3 Select를 사용해 객체를 필터링한다.
  • S3 Inventory와 S3 Select를 사용해서 배치 작업에 포함하려는 필터링된 객체 목록을 얻은 다음 S3 Batch Operations에 수행할 작업, 매개 변수와 함께 객체 목록을 전달한다. 그러면 S3 배치가 작업을 수행하고 객체를 처리한다.
  • 주요 사용 사례는 S3 Inventory를 사용해 암호화되지 않은 모든 객체를 찾은 다음 S3 Batch Operations를 사용해 한 번에 모두 암호화하는 것이다.