S3 Inventory를 사용하여 버킷에 저장되에 있는 오브젝트 메타데이터 추출하기

2023.03.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드의 서은우입니다.

S3 Inventory라는 기능에 대해 새롭게 알게되어 그 내용을 공유하고자 본 블로그를 작성합니다.

S3 Inventory란

S3 버킷에 저장되어 있는 오브젝트 정보를 추출할 수 있는 S3 기능 중 하나입니다. S3 Inventory는 매일 혹은 매주 간격으로 오브젝트에 대한 메타데이터를 CSV나 Apache ORC 와 같은 형태의 보고서를 생성합니다. 해당 보고서는 Amazon Athena와 같은 서비스에 쿼리할 수 있습니다.

가격

서울 리전의 S3 Inventory 의 가격은 다음과 같습니다.

  • 표시된 객체 1백만 개당 0.0028 USD
  • 보고서 저장을 위한 스토리지 이용료

S3 Inventory의 가격이 어느 정도인지 확인하기 위해 S3의 LIST 요청의 가격과 비교해보도록 하겠습니다. S3의 LIST 요청가격은 요청 1,000개당 0.0045 USD 입니다. 한 번의 LIST 요청으로 최대 1000개의 객체 정보를 가져올 수 있으므로 0.0045 USD로 최대 100만개의 객체 리스트를 가져올 수 있게 됩니다.

단순하게 100만 객체에 대해서만 계산해보면 S3 Inventory는 LIST 요청보다 대략 절반에 가까운 가격으로 이용할 수 있습니다.

직접 해보기

사전 준비

S3 Inventory를 설정하기 위해서는 Inventory를 설정할 소스 버킷과 생성된 S3 Inventory 파일들을 저장하는 대상 버킷이 필요합니다.

소스 버킷과 대상 버킷은 동일한 리전에 존재해야하며 다른 계정이 소유하는 것도 가능합니다. 별도의 대상 버킷을 생성하지 않고 소스 버킷에 S3 Inventory 파일들을 저장하여 소스 버킷을 대상 버킷으로 사용하는 것도 가능합니다.

  • 소스 버킷
  • 대상 버킷(소스 버킷과 같은 리전, 소스 버킷이 대상 버킷이 되는 것도 가능)

S3 Inventory 설정하기

1. 소스 버킷의 Management 설정 화면으로 이동

AWS 콘솔 상에서 S3 Inventory를 설정할 소스 버킷의 Management 설정 화면으로 이동합니다.

2. Inventory 구성 생성하기

Management 항목의 제일 마지막 부분의 Inventory configurations에서 Inventory와 관련된 설정을 진행할 수 있습니다.

3. Inventory 구성을 설정하기

Inventory 구성 이름과 범위

  • Inventory configuration name: Inventory 구성의 이름을 입력합니다.
  • Inventory scope: 추출할 오브젝트 범위를 설정합니다.
    • Prefix: 입력한 값에 해당하는 접두어를 가진 오브젝트를 Inventory 생성 대상으로 합니다. 아무것도 입력하지 않을 경우 모든 오브젝트가 대상이 됩니다.
    • Obeject versions: 오브젝트의 버전 범위를 지정합니다.

대상 버킷 지정

  • Destination bucket: 대상 버킷의 소유 계정을 설정합니다.
  • Destination: 대상 버킷을 설정합니다. 소스 버킷과 같은 리전에 위치한 버킷만 선택할 수 있습니다.
  • Destination bucket permission: 보고서 생성을 위한 권한을 설정합니다.

Inventory 보고서 상세 설정

  • Frequency: 보고서 생성 주기를 설정합니다. 첫 보고서 생성까지는 최대 48시간이 소요됩니다.
  • Output format: 보고서 형식을 설정합니다.
  • Status: Inventory 구성의 활성화 여부를 설정합니다.

Inventory 보고서 암호화 설정

  • 생성되는 Inventory 보고서에 대한 서버사이드 암호화 유무를 설정합니다.

추가 설정

이외에 추가적으로 추출하고 싶은 오브젝트 메타데이터를 설정할 수 있습니다.

4. 생성된 Inventroy 보고서 확인하기

최초 보고서 생성까지는 최대 48시간이 소요될 수 있습니다.

대상 버킷으로 이동

대상 버킷의 다음과 같은 경로에서 생성된 Inventroy 보고서를 다운로드할 수 있습니다.

  • [소스 버킷명] - [Inventory 구성명] - [data] - 보고서명.csv.gz
    • (destination-prefix/source-bucket/config-ID/data/example-file-name.csv.gz)

생성된 보고서 확인

  • csv.gz로 생성된 보고서를 다운 받고 확인합니다.

Mac OS의 경우 터미널을 열어 아래의 명령어를 입력하여 압축을 해제할 수 있습니다.

gzip -d 다운받은보고서.csv.gz

csv파일에는 다음과 같은 내용이 포함되어있습니다.

# Bucket, Key
"sample-inventory-bucket","test-user/upload_test.csv"

끝으로

S3 Inventory 기능을 사용하여 S3 버킷에 저장된 오브젝트 메타데이터 정보를 추출해보았습니다.

CLI의 경우 오브젝트 리스트를 간단하고 빠르게 얻을 수 있다는 장점이 있습니다. 하지만 오브젝트에 관한 구체적인 메타데이터 정보를 얻어 분석이 필요한 경우나 보다 낮은 비용이 우선시 되는 경우, 시간이 조금 걸릴지라도 S3 Inventory 가 좋은 선택지가 될 것 같다고 생각합니다.