View a markdown version of this page

메타데이터를 S3 Tables로 내보내기(미리 보기) - AWS Glue

메타데이터를 S3 Tables로 내보내기(미리 보기)

참고

카탈로그 메타데이터 내보내기는 미리 보기 기능으로 사용할 수 있습니다. 이 기능은 정식 출시 전에 변경될 수 있습니다.

개요

AWS Glue Data Catalog 메타데이터를 Amazon S3 Tables에 저장된 관리형 카탈로그 시스템 테이블로 내보낼 수 있습니다. S3 Tables 내보내기를 활성화하면 기술 및 비즈니스 메타데이터가 AWS 관리형 aws-catalog 테이블 버킷의 읽기 전용 Apache Iceberg 테이블에 저장되므로 , Amazon Redshift, Amazon EMR과 같은 AWS 분석 서비스에서 SQL을 사용하여 쿼리할 수 있습니다.

aws-catalog 테이블 버킷 내에서 시스템 테이블은 다음 네임스페이스에 상주합니다.

  • glue - tables 및 table_columns를 포함합니다.

  • catalog_metadata - glossaries, glossary_terms, associated_glossary_terms, attachments, item_attachments를 포함합니다.

현재 다음 시스템 테이블이 지원됩니다.

시스템 테이블 포함

tables

Data Catalog의 각 테이블에 대한 이름, 데이터베이스, 설명, 스토리지 위치, 형식과 같은 기술 및 비즈니스 메타데이터.

table_columns

각 열의 이름, 데이터 유형, 설명, 파티션 키 여부 등 각 카탈로그 테이블의 열.

glossaries

각 용어집의 이름, 설명, 상태를 포함하여 카탈로그의 비즈니스 용어집.

glossary_terms

각 용어의 이름, 설명, 상위 용어집, 상태를 포함하여 용어집에 정의된 용어.

associated_glossary_terms

자산 식별자 및 용어집 용어 식별자를 포함하여 용어집 용어와 자산 간의 연결.

attachments

양식 유형 및 첨부 파일 내용을 포함하여 자산 수준에서 연결된 사용자 지정 양식 메타데이터.

item_attachments

반복 가능한 양식 이름, 항목 이름, 양식 유형, 첨부 파일 내용을 포함하여 개별 열과 같은 자산 내 항목에 연결된 사용자 지정 양식 메타데이터.

각 테이블의 전체 열 수준 스키마는 카탈로그 시스템 테이블 참조 섹션을 참조하세요.

카탈로그 메타데이터 내보내기 작동 방식

내보내기를 활성화하면 Data Catalog는 기존 카탈로그 메타데이터를 한 번 채우고 변경 시 시스템 테이블을 최신 상태로 유지합니다. 새로 작성되거나 업데이트된 메타데이터는 일반적으로 약 5분 이내에 시스템 테이블에 표시됩니다.

시스템 테이블은 aws-catalog 테이블 버킷 내의 glue 및 catalog_metadata 네임스페이스에 상주합니다. 지정된 시스템 테이블은 카탈로그에 해당 종류의 메타데이터가 처음 존재할 때 나타납니다. 예를 들어 내보내기를 활성화하고 카탈로그에 테이블과 데이터베이스만 포함된 경우 테이블 관련 시스템 테이블만 표시됩니다. 첫 번째 용어집을 생성한 후에는 용어집 시스템 테이블이 나타납니다.

AWS CLI를 사용하여 카탈로그 메타데이터 내보내기 활성화

카탈로그 메타데이터 내보내기는 계정 수준 설정입니다. AWS CLI를 사용하여 활성화하거나 비활성화합니다.

사전 조건

사용하는 IAM 자격 증명에는 내보내기 구성 작업 glue:PutDataCatalogExportConfiguration 및 glue:GetDataCatalogExportConfiguration 그리고 s3tables:CreateTable을 직접적으로 호출할 수 있는 권한이 있어야 합니다. S3 Tables 권한에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 S3 테이블 버킷에서 테이블 생성을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:PutDataCatalogExportConfiguration", "glue:GetDataCatalogExportConfiguration" ], "Resource": "*" } ] }

Data Catalog 메타데이터를 포함한 S3 Tables의 모든 데이터는 기본적으로 SSE-S3 암호화로 암호화됩니다. AWS KMS 키(SSE-KMS)를 사용하여 카탈로그 내보내기를 암호화하도록 선택할 수 있습니다. AWS KMS 키로 암호화하도록 선택한 경우 다음 단계를 수행하여 권한을 추가해야 합니다.

  1. Data Catalog 내보내기 서비스 위탁자 및 S3 Tables 유지 관리 서비스 위탁자에 KMS 키(키 정책)를 사용할 수 있는 권한을 부여합니다.

  2. 내보내기를 실행하는 IAM 위탁자에게 KMS 키(자격 증명 정책)를 사용할 수 있는 권한을 부여합니다.

Data Catalog 내보내기 서비스 위탁자 및 S3 Tables 유지 관리 서비스 위탁자에게 KMS 키 권한 부여

AWS Glue가 암호화된 카탈로그 메타데이터를 내보내도록 허용하고 내보낸 테이블에서 압축, 참조되지 않은 파일 제거와 같은 자동 테이블 유지 관리를 허용하려면 다음 서비스 위탁자에게 KMS 키에 대한 액세스 권한을 부여해야 합니다.

  • systemtables.catalog.amazonaws.com - 암호화된 카탈로그 메타데이터를 S3 Tables로 내보냅니다.

  • maintenance.s3tables.amazonaws.com - 내보낸 테이블에 대해 자동 테이블 유지 관리를 수행합니다.

AWS Glue는 aws-catalog라는 AWS 관리형 테이블 버킷에 데이터를 씁니다. S3 Tables 내보내기를 암호화하는 데 사용되는 KMS 키는 저장 시 Data Catalog를 암호화하는 데 사용되는 키와 같을 필요가 없습니다. AWS Glue는 대칭 KMS 키만 지원합니다. 이러한 서비스 위탁자에게 액세스 권한을 부여하려면 다음 예제 키 정책을 사용할 수 있습니다. 이 정책에서는 maintenance.s3tables.amazonaws.com 서비스 위탁자에게 aws-catalog 테이블 버킷의 테이블 암호화 및 복호화에 특정 KMS 키를 사용할 수 있는 권한이 부여되어 있습니다. S3 Tables 유지 관리 서비스 위탁자에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 S3 Tables SSE-KMS 암호화에 대한 권한 요구 사항을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSystemTablesDescribeKey", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowSystemTablesEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/table/*", "kms:ViaService": "s3.us-east-1.amazonaws.com" } } }, { "Sid": "AllowS3TablesMaintenanceEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/*" } } } ] }

위탁자가 내보내는 데 필요한 IAM 권한

내보내기를 실행하는 위탁자에 다음 권한을 부여합니다. 다음 정책은 IAM 위탁자에게 glue_catalog_id 암호화 컨텍스트로 범위가 지정된 특정 AWS Glue Data Catalog를 해독할 수 있는 액세스 권한을 부여합니다(값은 사용자의 catalogId).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowExportOfGlueDataCatalogByCatalogId", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "kms:EncryptionContext:glue_catalog_id": "123456789012" } } } ] }

카탈로그 메타데이터 내보내기를 활성화하려면

  1. 내보내기를 활성화하려면 다음 명령을 실행합니다.

    aws glue put-data-catalog-export-configuration \ --export-setting ENABLED
  2. 다음 명령을 실행하여 구성을 확인합니다.

    aws glue get-data-catalog-export-configuration

    응답 예제:

    { "ExportSetting": "ENABLED", "Status": "ENABLED", "S3TableBucketArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-catalog" }

    Status 필드는 초기 백필이 진행됨에 따라 ENABLING에서 ENABLED로 전환됩니다.

카탈로그 메타데이터 내보내기를 비활성화하려면

다음 명령을 실행합니다.

aws glue put-data-catalog-export-configuration \ --export-setting DISABLED

카탈로그 시스템 테이블 참조

모든 시스템 테이블은 aws-catalog 테이블 버킷 내의 glue 또는 catalog_metadata 네임스페이스에 상주합니다. 모든 테이블에는 다음 시스템 열이 포함됩니다.

열 유형 설명

ingestion_time

timestamp

레코드가 시스템 테이블에 수집된 시간(UTC).

schema_version

문자열

테이블의 스키마 버전 식별자.

테이블

카탈로그 테이블당 하나의 행을 포함합니다.

열 유형 설명

id

문자열

테이블의 고유 식별자.

catalog_id

문자열

카탈로그 식별자.

catalog_name

문자열

카탈로그 이름.

update_time

timestamp

마지막 업데이트 타임스탬프.

created_time

timestamp

생성 타임스탬프.

created_by_id

문자열

테이블을 생성한 위탁자의 식별자.

created_by_type

문자열

생성 위탁자의 유형.

description

문자열

테이블 설명.

name

문자열

테이블 이름.

namespace

문자열

테이블의 네임스페이스.

region_name

문자열

AWS 리전.

tags

map<string, string>

리소스 태그.

type

문자열

자산 유형.

updated_by_id

문자열

테이블을 마지막으로 업데이트한 위탁자의 식별자.

updated_by_type

문자열

업데이트 위탁자의 유형.

database_name

문자열

테이블이 포함된 데이터베이스.

input_format

문자열

입력 형식 클래스.

lake_formation_registration

문자열

AWS Lake Formation 등록 상태.

output_format

문자열

출력 형식 클래스.

owner

문자열

테이블 소유자.

retention

int

보존 기간.

serde_library

문자열

직렬화/역직렬화 라이브러리.

table_data_format

문자열

데이터 형식.

table_data_location

문자열

데이터 위치 URI.

table_format

문자열

테이블 형식(예: Iceberg, Hudi).

table_type

문자열

테이블 유형.

table_columns

카탈로그 테이블의 열당 하나의 행을 포함합니다.

열 유형 설명

id

문자열

assetId#columnName 형식의 복합 식별자.

asset_id

문자열

상위 테이블의 식별자.

column_name

문자열

열 이름.

description

문자열

열 설명.

type

문자열

열 데이터 유형.

is_partition_key

부울

열이 파티션 키인지 여부입니다.

attachments

자산 수준 사용자 지정 양식 연결(자산의 연결당 행 하나)을 포함합니다.

열 유형 설명

asset_id

문자열

상위 자산의 식별자.

attachment_name

문자열

첨부 파일 이름.

form_type_id

문자열

내용의 등록된 양식 유형.

content_json

문자열

JSON 인코딩 문자열로 된 첨부 파일 내용.

item_attachments

개별 열과 같이 반복 가능한 형식 내의 항목에 대한 첨부 파일을 포함합니다.

열 유형 설명

asset_id

문자열

상위 자산의 식별자.

iterable_form_name

문자열

반복 가능한 양식(예: 열)의 이름.

item_name

문자열

항목(예: 열 이름)의 이름.

attachment_name

문자열

첨부 파일 이름.

form_type_id

문자열

내용의 등록된 양식 유형.

content_json

문자열

JSON 인코딩 문자열로 된 첨부 파일 내용.

glossaries

용어집당 하나의 행을 포함합니다.

열 유형 설명

id

문자열

용어집의 고유 식별자.

description

문자열

용어집 설명.

name

문자열

용어집 이름.

status

문자열

상태(ENABLED 또는 DISABLED).

glossary_terms

용어집 용어당 하나의 행을 포함합니다.

열 유형 설명

id

문자열

고유한 용어 식별자.

glossary_id

문자열

상위 용어집의 식별자.

long_description

문자열

자세한 용어 설명.

name

문자열

용어 이름.

short_description

문자열

간략한 용어 설명.

status

문자열

상태(ENABLED 또는 DISABLED).

associated_glossary_terms

용어집 용어와 자산 간의 연결당 하나의 행을 포함합니다.

열 유형 설명

asset_id

문자열

용어집 용어와 연결된 자산의 식별자.

glossary_term_id

문자열

자산과 연결된 용어집 용어의 식별자. glossary_terms 테이블에 조인합니다.

카탈로그 시스템 테이블 쿼리

Amazon EMR과 같은 AWS 분석 서비스를 사용하여 S3 Tables로 내보낸 카탈로그 메타데이터를 쿼리하려면 먼저 AWS 관리형 aws-catalog 테이블 버킷에서 분석 통합을 활성화하고 AWS Lake Formation 권한을 구성해야 합니다.

사전 조건

  • 카탈로그 메타데이터 내보내기가 활성화되고 상태가 ENABLED임

  • 또는 기타 분석 서비스에 대한 액세스 권한

  • 내보내기를 활성화한 후 데이터를 사용할 수 있도록 5분이 경과

통합 개요

사전 조건, IAM 역할 구성 및 단계별 절차를 포함하여 S3 Tables를 AWS 분석 서비스와 통합하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 Tables를 AWS 분석 서비스와 통합을 참조하세요.

S3 Tables 내보내기를 활성화하고 분석 통합을 설정한 후 Amazon Redshift, Amazon EMR과 같은 AWS 분석 서비스를 사용하여 Data Catalog 메타데이터를 쿼리할 수 있습니다. 이를 통해 표준 SQL을 사용하여 메타데이터 감사 및 분석을 수행할 수 있습니다.

예제 쿼리

모든 카탈로그 테이블을 해당 데이터베이스 및 형식과 함께 나열

SELECT id, name, database_name, table_format FROM aws_catalog.glue.tables;
특정 테이블에 대한 설명이 있는 열 찾기

SELECT column_name, type, description FROM aws_catalog.glue.table_columns WHERE asset_id = 'table-id';
용어집 용어를 상위 용어집에 조인

SELECT g.name AS glossary_name, t.name AS term_name, t.short_description FROM aws_catalog.catalog_metadata.glossary_terms t JOIN aws_catalog.catalog_metadata.glossaries g ON t.glossary_id = g.id WHERE g.status = 'ENABLED';
특정 용어집 용어와 연결된 테이블 찾기

SELECT t.name, t.database_name, gt.name AS term_name FROM aws_catalog.glue.tables t JOIN aws_catalog.catalog_metadata.associated_glossary_terms agt ON agt.asset_id = t.id JOIN aws_catalog.catalog_metadata.glossary_terms gt ON gt.id = agt.glossary_term_id WHERE gt.name = 'term-name';
사용자 지정 양식 첨부 파일에서 필드 추출

SELECT asset_id, attachment_name, json_extract_scalar(content_json, '$.owner') AS data_owner FROM aws_catalog.catalog_metadata.attachments WHERE form_type_id = 'your-form-type-id';