AWS 기술 블로그

Amazon S3 Metadata를 Amazon Athena와 Amazon Quicksight로 분석하기

이 글은 AWS Storage Blog에 게시된 Analyzing Amazon S3 Metadata with Amazon Athena and Amazon QuickSight by Lokesh AP, Tom Bailey, Huey Han, Lee Kear, Fabio Lattanzi, and Roohi Sood를 한국어 번역 및 편집하였습니다.

오브젝트 스토리지는 사실상 무제한의 확장성을 제공하지만 수십억 개, 심지어 수조 개의 오브젝트를 관리하는 데는 상당한 어려움이 따를 수 있습니다. 어떤 데이터가 있는지 어떻게 알 수 있을까요? 적시에 적절한 데이터 세트를 어떻게 찾을 수 있을까요?

강력한 메타데이터 관리 전략을 구현하면 이러한 문제를 해결하고, 방대한 데이터 레이크를 효율적으로 제어하고, 데이터 검색 가능성과 접근성을 개선하고, 데이터에서 더 많은 가치를 창출할 수 있습니다. AWS는 re:Invent 2024에서 준실시간으로 쿼리 가능한 개체 메타데이터를 제공하여 데이터를 정리하고 검색을 가속화할 수 있는 Amazon S3 메타데이터(Preview)를 소개했습니다. S3 메타데이터는 비즈니스 분석, 실시간 추론 애플리케이션 등을 위해 S3 데이터를 선별, 식별 그리고 사용할 수 있도록 도와줍니다.

이 블로그에서는 S3 메타데이터를 설정하고 사용하는 방법, Amazon Athena를 사용하여 간단한 SQL 쿼리를 실행 가능한 인사이트를 도출하는 방법, 그리고 Amazon QuickSight에서 데이터를 시각화하는 방법을 안내합니다. S3 메타데이터에 대한 인사이트와 시각화를 위해 만들 수 있는 몇 가지 예제 쿼리와 대시보드를 제공합니다. 이 예제 쿼리들을 사용하거나 직접 만들어서, 어떤 데이터가 있는지 파악하고 필요할 때 적절한 데이터 세트를 찾을 수 있습니다.

Amazon S3 Metadata (Preview)

S3 메타데이터는 쿼리 가능한 객체 메타데이터를 실시간에 가깝게 제공하여 데이터를 정리하고 데이터 검색을 가속화합니다. S3 메타데이터에는 현재 S3 인벤토리 보고서나 ListObjectsV2 API와 같은 다른 소스에서는 사용할 수 없는 새로운 필드가 포함되어 있습니다. 자세한 비교는 다음 표를 참조하세요.

메타데이터 S3 인벤토리에서 사용 가능 ListObjectsV2에서 사용 가능 S3 메타데이터에서 사용 가능
bucket Y Y Y
key Y Y Y
sequence_number N N Y
record_type N N Y
record_timestamp N N Y
version_id Y Y Y
is_delete_marker Y N Y
size Y Y Y
last_modified_date Y Y Y
e_tag Y Y Y
storage_class Y Y Y
is_multipart Y N Y
encryption_status Y Y Y
is_bucket_key_enabled Y N Y
kms_key_arn N N Y
checksum_algorithm Y Y Y
object_tags N N Y
user_metadata N N Y
requester N N Y
source_ip_address N N Y
request_id N N Y
object_lock_retain_until_date Y N N
object_lock_mode Y N N
object_lock_legal_hold_status Y N N
intelligent_tiering_access_tier Y N N
bucket_key_status Y N N
object_access_control_list Y N N
object_owner N Y N
replication_status Y N N
restore_status N Y N

메타데이터 테이블에는 객체 생성, 태그 업데이트와 같은 메타데이터 업데이트, 객체 삭제 등의 변경 이벤트가 포함되어 있습니다. 메타데이터 테이블에서 각 행은 변경 이벤트이고 각 열은 메타데이터 카테고리를 의미합니다. S3 메타데이터는 각 이벤트에 대하여 최소 하나 이상의 전송을 진행하기 때문에 중복 레코드가 있을 수 있습니다.

사전 준비사항

시작하기 전에 몇 가지 사전 준비사항이 있습니다:

  1. S3, Glue, Lake Formation, Athena 및 QuickSight와 함께 사용할 IAM 역할을 보유하거나 생성합니다. 자세한 내용은 IAM 역할을 참조하세요.
  2. 계정에서 Athena에 대한 액세스 권한이 있는지 확인합니다.
  3. 트래픽이 있는 S3 범용 버킷을 보유하거나 생성합니다. S3 메타데이터는 변경 사항을 수집하므로 PUT 및/또는 DELETE 트래픽이 있는 S3 버킷이 필요합니다.

단계별 안내

전체적으로 다음과 같은 단계로 진행됩니다:

  1. S3 범용 버킷에서 S3 메타데이터를 활성화합니다.
  2. Athena에서 SQL 쿼리를 실행하여 S3 메타데이터에 대한 인사이트를 얻습니다.
  3. QuickSight를 구성하여 S3 메타데이터를 시각화합니다.

1. S3 범용 버킷에서 S3 메타데이터를 활성화합니다.

이 섹션에서는 다음 과정을 안내합니다:

1.1. 메타데이터 저장용 S3 메타데이터 Iceberg 테이블을 보관할 S3 테이블 버킷을 생성하고 Glue 및 Lake Formation과의 통합을 활성화합니다.

1.2. S3 범용 버킷에서 데이터를 수집하도록 S3 메타데이터를 구성합니다.

1.1. 테이블 버킷 생성 및 AWS 분석 서비스와의 통합 활성화

S3 메타데이터는 S3 테이블을 사용하여 출력 테이블을 저장합니다. S3 테이블은 대규모 표 형식 데이터 저장을 위해 특별히 설계되었습니다. S3 테이블의 AWS Glue Data Catalog와의 미리보기 통합을 통해 Athena 및 QuickSight와 같은 AWS 분석 서비스를 사용하여 데이터를 쿼리하고 시각화할 수 있습니다. 지금부터 메타데이터 테이블을 저장할 테이블 버킷을 생성해 보겠습니다.

시작하려면 AWS Management Console 에서 S3로 이동하세요. 왼쪽 탐색 메뉴에서 ‘테이블 버킷’을 선택한 다음 ‘테이블 버킷 생성’을 클릭하세요.

테이블 버킷의 이름을 입력하고, AWS 분석 서비스와의 통합을 위해 ‘통합 활성화’ 체크박스가 선택되어 있는지 확인하세요. ‘테이블 버킷 생성’ 버튼을 선택하여 테이블 버킷 생성을 완료하세요.

S3 테이블 버킷 생성이 완료되고 나면 다음과 같은 화면이 보입니다.

1.2. S3 메타데이터 구성

메타데이터 테이블을 저장할 테이블 버킷을 생성했으면, 이제 S3 범용 버킷으로 이동하여 S3 메타데이터를 구성하고 메타데이터 테이블 생성을 시작할 수 있습니다. 이 버킷은 S3 메타데이터가 객체 메타데이터를 자동으로 추출하는 버킷입니다. S3 콘솔에서 해당 버킷으로 이동한 후, ‘메타데이터’ 탭을 클릭하세요. 그런 다음 ‘메타데이터 구성 생성’을 클릭하세요.

‘S3 찾아보기’ 를 선택하고, 이전 단계에서 생성한 S3 테이블 버킷을 선택한 다음 ‘선택’을 클릭하세요.

메타데이터 테이블 이름은 기본 테이블 이름을 그대로 사용하거나 원하는 다른 이름을 입력하세요. ‘메타데이터 구성 생성’을 클릭하세요.

2. Amazon Athena에서 SQL 쿼리를 실행하여 S3 메타데이터에 대한 인사이트 얻기

이 섹션에서는 다음과 같은 내용을 설명합니다:

2.1. Lake Formation 권한을 구성합니다. 여기서는 S3 메타데이터 테이블에 액세스할 수 있는 콘솔 역할에 대한 액세스 권한을 제공합니다.

2.2. Athena에서 S3 메타데이터에 대한 액세스를 확인합니다. S3 메타데이터 구성 페이지에서 카탈로그와 데이터베이스를 찾을 수 있습니다.

2.3. Athena로 S3 메타데이터 탐색하기. 어떤 종류의 인사이트가 가능한지 더 잘 이해하기 위해 몇 가지 샘플 쿼리를 실습합니다.

2.4. Lake Formation 사용 권한 구성

메타데이터 테이블을 설정한 후에는 사용자가 Athena 및 QuickSight와 같은 AWS 서비스에서 테이블을 쿼리할 수 있도록 하려면 사용자에게 테이블에 액세스할 수 있는 권한을 부여해야 합니다. 권한은 Lake Formation을 사용하여 부여합니다.

AWS 관리 콘솔에서 Lake Formation으로 이동합니다. Lake Formation을 처음 사용하는 경우, 시작 창이 표시됩니다. 본인 추가를 선택하고 선택적으로 Data Lake 관리자가 되어야 하는 다른 사용자나 역할을 추가합니다. 그런 다음 시작을 클릭합니다.

로딩이 완료되면 왼쪽 메뉴에서 카탈로그를 선택한 다음 s3tablescatalog를 선택합니다. 이는 테이블 버킷을 포함하는 federated 카탈로그입니다. 데이터 연동과 통합에 대한 자세한 내용은 AWS 분석 서비스와의 통합에 대한 S3 테이블 설명서를 참조하세요.

이전 단계에서 만든 S3 테이블 버킷 옆의 라디오 버튼을 선택하고 작업을 선택한 다음 Grant를 선택합니다.

주체(Principals) 섹션에서, 액세스 권한을 부여하고자 하는 IAM 사용자 및 역할을 선택하십시오.

참고: Lake Formation은 IAM Identity Center SAML(Security Assertion Markup Language) 사용자 및 그룹, 외부 계정과도 통합됩니다. 이러한 옵션의 구성은 이 블로그에서는 다루지 않습니다.

LF-Tags 또는 카탈로그 리소스 섹션에서 방금 만든 메타데이터 테이블에 대한 액세스 권한을 부여합니다. 이 화면에서 명명된 데이터 카탈로그 리소스는 이미 선택되어 있어야 하며, 카탈로그는 s3tablescatalog/<<사용 중인 s3 테이블 버킷>>이 선택되어 있어야 합니다.

s3tablescatalog/<<사용 중인 s3 테이블 버킷>>이 선택되어 있지 않다면 드롭다운 메뉴에서 선택하고 다른 카탈로그는 선택 취소합니다. 데이터베이스 섹션의 드롭다운 메뉴에서 aws_s3_metadata를 선택합니다. 테이블에서 방금 만든 s3 메타데이터 테이블을 선택하여 액세스 권한을 부여하거나, 동일한 S3 테이블 버킷에 더 많은 S3 메타데이터 테이블을 만들려면 모든 테이블을 선택합니다.

테이블 권한 섹션에서는 테이블에 대해 어떤 권한을 가질지 구성하며, 여기서는 테이블에서 선택(Select) 설명(Describe)과 부여 가능한 권한에 체크합니다. 데이터 권한의 경우 기본값인 모든 데이터 액세스를 그대로 유지하고 부여를 클릭하여 완료합니다.

2.2. Athena에서 S3 메타데이터 접근 확인

Lake Formation 권한이 추가되면 Athena 콘솔로 이동합니다. Athena를 처음 사용하는 경우 이 가이드를 참고하여 Athena를 시작해보세요. 7단계까지 가이드를 따라 진행하면 됩니다.

Editor 왼쪽에서 S3 메타데이터 구성을 위한 카탈로그 데이터베이스를 선택합니다.

카탈로그 데이터베이스의 값은 버킷의 S3 메타데이터 구성 페이지에서 찾을 수 있습니다.

Athena 설정이 완료되면 다음 쿼리를 실행하여 모든 것이 올바르게 작동하는지 확인할 수 있습니다.

SQL
SELECT * FROM <<table name>> LIMIT 10;
SQL

2.3. Athena로 S3 메타데이터 살펴보기

Athena는 표준 SQL을 사용하여 S3의 데이터를 쉽게 분석할 수 있는 대화형 쿼리 서비스입니다. 다음은 Athena에서 S3 메타데이터를 분석하는 데 사용할 수 있는 일련의 샘플 쿼리입니다. 아래 예제에서는 테이블 이름으로 s3_metadata_primary를 사용했습니다. 이를 고유한 S3 메타데이터 테이블 이름으로 바꾸어 사용하세요.

패턴과 일치하는 객체 찾기

SELECT key FROM s3_metadata_primary where key LIKE '%.jpg' SQL
SQL

현재 테이블은 얼마나 최신 상태인가요(GMT 기준)?

SELECT MAX(last_modified_date) FROM s3_metadata_primary;
SQL

지난 24시간 동안 어떤 객체가 삭제되었나요?

SELECT bucket, key, version_id, last_modified_date from s3_metadata_primary where last_mod
SQL

지난 7일 동안 S3 수명 주기가 만료된 객체는 몇 개인가요?

SELECT bucket, key, version_id, last_modified_date, record_timestamp from s3_metadata_primary where requester = 's3.amazonaws.com' and record_type = 'DELETE' and record_timestamp > (current_date - interval '7' day);
SQL

최근 요청이 들어온 IP 주소는 어디인가요?

SELECT source_ip_address, count(source_ip_address) from s3_metadata_primary group by source_ip_address;
SQL

지난 7일 동안 Key Management Service(AWS KMS)의 어떤 키가 PUT에 사용되었나요?

SELECT DISTINCT kms_key_arn FROM s3_metadata_primary where record_timestamp > (current_date - interval '7' day);
SQL

KMS로 암호화되지 않는 객체는 무엇인가요?

SELECT key, encryption_status FROM s3_metadata_primary WHERE encryption_status != 'SSE-KMS';
SQL

객체 태그의 Distribution를 만듭니다.

SELECT object_tags, count(object_tags)
FROM s3_metadata_primary group by object_tags;
SQL

태그가 없는 객체가 있나요?

SELECT key, last_modified_date, object_tags FROM s3_metadata_primary
WHERE cardinality(object_tags) = 0 ORDER BY last_modified_date DESC;
SQL

S3 Glacier Deep Archive 스토리지 클래스에서 지정된 접두사로 된 객체를 찾아 해당 객체를 복원하는 일괄 작업에 사용할 수 있는 CSV 파일을 만듭니다.

SELECT bucket, key, version_id FROM s3_metadata_primary where key LIKE ‘legal/%' and storage_class = ‘DEEP_ARCHIVE’;
SQL

3. QuickSight에서 S3 메타데이터 시각화하기

Amazon QuickSight는 모든 규모의 조직이 데이터의 가치를 실현할 수 있도록 지원하는 강력한 클라우드 기반 비즈니스 인텔리전스(BI) 서비스입니다. QuickSight를 사용하여 S3 메타데이터 테이블에 저장된 데이터를 사용하여 대시보드 및 시각화를 만들 수 있습니다. 다음은 만들 수 있는 대시보드의 몇 가지 예입니다:

  • 스토리지 데이터 중 큰 객체와 작은 객체의 비율은 어떻게 되나요?
  • 객체의 삭제 대비 업로드의 비율은 얼마인가요?
  • 내 버킷에 있는 이미지 파일의 비율은 몇 퍼센트인가요?

이 섹션에서는 다음과 같은 내용을 설명합니다:

3.1. QuickSight 서비스 역할에 대한 권한을 구성합니다. QuickSight 서비스 역할에 Glue:GetCatalog 권한을 부여해야 합니다.

3.2. QuickSight 관리 사용자에게 Lake Formation 권한을 구성합니다. 데이터베이스 및 데이터베이스 내의 테이블에 대한 권한을 QuickSight 사용자에게 부여합니다.

3.3. QuickSight 대시보드를 만듭니다. 사용자 지정 SQL을 사용하여 S3 메타데이터 테이블을 QuickSight에 로드합니다. 이렇게 하면 고객 Amazon QuickSight 대시보드에서 S3 메타데이터를 시각화할 수 있습니다.

3.1. QuickSight 서비스 역할에 대한 권한 구성

  1. AWS 관리 콘솔에서 Identity and Access Management(IAM)로 이동합니다.
  2. 역할에서 QuickSight 서비스 역할(예: aws-quicksight-service-role-v0)을 확인하고 클릭합니다.
  3. 권한 탭에서 QuickSight에서 S3 테이블 카탈로그에 액세스할 수 있는 Glue GetCatalog 권한에 대한 인라인 정책을 추가합니다. 다음 JSON을 사용하여 인라인 정책을 추가합니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "glue:GetCatalog",
            "Resource": ""
        }
    ]
}
JSON

3.2. QuickSight 관리자 사용자에 대한 권한 구성하기

S3 테이블 카탈로그에 액세스할 수 있는 Lake Formation 권한을 부여하기 위해 QuickSight 관리자 사용자와 해당 Amazon 리소스 이름(ARN)을 식별합니다. AWS CloudShell(또는 원하는 터미널)에서 다음 CLI 명령을 실행하고 QuickSight 관리 사용자의 ARN을 기록해 둡니다.

$aws quicksight list-users —aws-account-id <AWS Account ID> —namespace default —region <AWS Region>

AWS 관리 콘솔에서 Lake Formation 서비스로 이동합니다. 데이터 권한 > 부여를 선택합니다.

권한 섹션에서 SAML 사용자 및 그룹을 선택하고 QuickSight 관리자 사용자의 ARN을 추가합니다. 그런 다음 다음 그림과 같이 명명된 데이터 카탈로그 리소스를 선택하고 데이터베이스 권한과 테이블 권한을 각각 별도로 부여합니다.

먼저 데이터베이스 수준에서 권한을 추가합니다.

명명된 데이터 카탈로그 리소스를 선택하고 S3 테이블 카탈로그 및 데이터베이스를 선택합니다.

데이터베이스 권한을 선택합니다.

이제 동일한 작업을 수행해야 하지만 이번에는 테이블 수준에서 수행해야 합니다. Lake Formation 콘솔에서 데이터 사용 권한 > 부여를 다시 선택합니다.

명명된 데이터 카탈로그 리소스를 선택하고 S3 테이블 카탈로그, 데이터베이스 및 테이블을 선택합니다.

테이블 권한을 선택합니다.

AWS 관리 콘솔에서 AWS Lake Formation 서비스로 이동합니다. 데이터 권한을 선택하고 데이터베이스, 테이블 및 열 리소스에 대한 권한이 있는지 확인합니다.

3.3. QuickSight 대시보드 만들기

대시보드를 만들려면 다음 단계를 따르세요:

1. QuickSight 콘솔에 로그인합니다. QuickSight 콘솔의 오른쪽 상단에 있는 사용자 프로필에서 S3 테이블 버킷을 생성한 것과 동일한 AWS 리전을 선택합니다. 예를 들어, 오하이오(us-east-2) 리전에서 S3 테이블 버킷을 생성한 경우, QuickSight에서 동일한 리전을 선택합니다.

2. QuickSight 대시보드에서 새 분석을 클릭합니다. 새 분석 페이지에서 새 데이터 집합을 클릭합니다.
3. 데이터 집합 만들기 모달에서 데이터 소스로 Athena를 선택하고 데이터 집합의 이름을 입력한 다음 데이터 소스 만들기를 클릭합니다.

4. 테이블 세션 선택에서 사용자 지정 SQL 사용을 선택합니다. 드롭다운 목록에서 테이블을 볼 수 없다는 점에 유의하세요.

5. 시각화하려는 열을 기반으로 사용자 지정 SQL 쿼리를 입력한 다음 Confirm Query를 선택합니다. 이 예시에서는 아래 쿼리를 입력하여 모든 열을 선택합니다. s3-metadata-table-bucket을 S3 테이블 버킷으로 바꾸고 s3_metadata_primary를 S3 메타데이터 테이블로 바꿉니다.

<i>SELECT </i> FROM "s3tablescatalog/s3-metadata-table-bucket"."aws_s3_metadata"."s3_metadata_primary"
SQL

6. Visualize를 클릭하여 데이터를 분석하고 대시보드를 만듭니다. ‘s3tablecatalog’ 및 ‘aws_s3_metadata’가 데이터베이스로 표시되지 않는다는 점에 유의하세요. (* 향후 QuickSight 서비스 개선이 이루어질 예정입니다) 데이터 소스는 3단계에서 지정한 것과 동일한 이름이 됩니다.

7. 시작하려면 QuickSight에서 Create를 선택합니다. 대시보드를 분석하고 만들려면 QuickSight 사용 안내서데이터 시각화대시보드 탐색 섹션을 참조하세요.

8. 분석하려는 열 또는 필드를 선택하고 대시보드를 만듭니다.

QuickSight dashboards 예시 :

정리하기

Athena 및 QuickSight에서 작업이 완료되면 S3 메타데이터 구성을 비활성화하고 테이블을 삭제하여 비용이 계속 발생하지 않도록 하세요. S3 메타데이터 구성을 삭제하려면 구성을 만든 버킷의 S3 메타데이터 테이블로 이동하여 삭제를 클릭합니다.

결론

이 블로그에서는 S3 메타데이터를 구성하고 Athena 및 QuickSight와의 통합을 활성화하기 위한 단계별 과정을 안내했습니다. 또한 S3 데이터에 대한 데이터 인사이트를 찾는 데 사용할 수 있는 SQL 쿼리의 예시도 함께 제공했습니다.

Amazon S3는 아카이브, 분석, 데이터 레이크와 같은 사용 사례를 위해 하나의 버킷에 사실상 무제한의 객체를 저장할 수 있는 기능을 제공합니다. 따라서 데이터 저장을 위한 강력한 도구이지만, 비즈니스 목표를 달성하기 위해 보고 및 자동화를 위해 개별 파일을 지능적으로 관리해야 하는 상황도 있습니다. 일반적인 비즈니스 목표는 사용량 파악, 보안 확인, 효율성 증대, 비용 절감, 또는 데이터를 다른 환경으로 선택적으로 마이그레이션하는 것입니다. AWS 분석 서비스를 도입하면 객체 메타데이터를 분석하는 데 도움이 되며, 데이터를 관리하고 비즈니스 목표를 달성할 수 있습니다.

S3 메타데이터(Preview)에 대해 자세히 알아보려면 AWS 뉴스 블로그를 참조하세요.

이 게시물을 읽어주셔서 감사합니다. 질문이나 의견이 있으시면 언제든 편히 원문 글의 댓글 섹션에 남겨주세요.

East Kim

East Kim

김익수 솔루션즈 아키텍트는 인프라 마이그레이션에서 AI/ML까지 다양한 분야에서, 항공, 물류, 제조 고객들의 성공적인 AWS Cloud 여정을 위한 최적의 아키텍트를 구성하고 지원하는 역할을 수행하고 있습니다.

Ion Kim

Ion Kim

김이온 Technical Account Manager는 클라우드 엔지니어 경험을 바탕으로 Enterprise On-Ramp 고객이 AWS 워크로드를 안정적으로 운영할 수 있도록 기술 지원을 포함한 다양한 정보와 서비스를 제공하고 있습니다.