메타데이터를 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를 포함합니다.
현재 다음 시스템 테이블이 지원됩니다.
| 시스템 테이블 | 포함 |
|---|---|
|
Data Catalog의 각 테이블에 대한 이름, 데이터베이스, 설명, 스토리지 위치, 형식과 같은 기술 및 비즈니스 메타데이터. |
|
각 열의 이름, 데이터 유형, 설명, 파티션 키 여부 등 각 카탈로그 테이블의 열. |
|
각 용어집의 이름, 설명, 상태를 포함하여 카탈로그의 비즈니스 용어집. |
|
각 용어의 이름, 설명, 상위 용어집, 상태를 포함하여 용어집에 정의된 용어. |
|
자산 식별자 및 용어집 용어 식별자를 포함하여 용어집 용어와 자산 간의 연결. |
|
양식 유형 및 첨부 파일 내용을 포함하여 자산 수준에서 연결된 사용자 지정 양식 메타데이터. |
|
반복 가능한 양식 이름, 항목 이름, 양식 유형, 첨부 파일 내용을 포함하여 개별 열과 같은 자산 내 항목에 연결된 사용자 지정 양식 메타데이터. |
각 테이블의 전체 열 수준 스키마는 카탈로그 시스템 테이블 참조 섹션을 참조하세요.
카탈로그 메타데이터 내보내기 작동 방식
내보내기를 활성화하면 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 키로 암호화하도록 선택한 경우 다음 단계를 수행하여 권한을 추가해야 합니다.
Data Catalog 내보내기 서비스 위탁자 및 S3 Tables 유지 관리 서비스 위탁자에 KMS 키(키 정책)를 사용할 수 있는 권한을 부여합니다.
내보내기를 실행하는 IAM 위탁자에게 KMS 키(자격 증명 정책)를 사용할 수 있는 권한을 부여합니다.
Data Catalog 내보내기 서비스 위탁자 및 S3 Tables 유지 관리 서비스 위탁자에게 KMS 키 권한 부여
AWS Glue가 암호화된 카탈로그 메타데이터를 내보내도록 허용하고 내보낸 테이블에서 압축, 참조되지 않은 파일 제거와 같은 자동 테이블 유지 관리를 허용하려면 다음 서비스 위탁자에게 KMS 키에 대한 액세스 권한을 부여해야 합니다.
systemtables---catalog.amazonaws.com.rproxy.govskope.ca- 암호화된 카탈로그 메타데이터를 S3 Tables로 내보냅니다.maintenance---s3tables.amazonaws.com.rproxy.govskope.ca- 내보낸 테이블에 대해 자동 테이블 유지 관리를 수행합니다.
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" } } } ] }
카탈로그 메타데이터 내보내기를 활성화하려면
-
내보내기를 활성화하려면 다음 명령을 실행합니다.
aws glue put-data-catalog-export-configuration \ --export-setting ENABLED -
다음 명령을 실행하여 구성을 확인합니다.
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 네임스페이스에 상주합니다. 모든 테이블에는 다음 시스템 열이 포함됩니다.
| 열 | 유형 | 설명 |
|---|---|---|
|
timestamp |
레코드가 시스템 테이블에 수집된 시간(UTC). |
|
문자열 |
테이블의 스키마 버전 식별자. |
테이블
카탈로그 테이블당 하나의 행을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 | 테이블의 고유 식별자. |
| 문자열 | 카탈로그 식별자. |
| 문자열 | 카탈로그 이름. |
| timestamp | 마지막 업데이트 타임스탬프. |
| timestamp | 생성 타임스탬프. |
| 문자열 | 테이블을 생성한 위탁자의 식별자. |
| 문자열 | 생성 위탁자의 유형. |
| 문자열 | 테이블 설명. |
| 문자열 | 테이블 이름. |
| 문자열 | 테이블의 네임스페이스. |
| 문자열 | AWS 리전. |
| map<string, string> | 리소스 태그. |
| 문자열 | 자산 유형. |
| 문자열 | 테이블을 마지막으로 업데이트한 위탁자의 식별자. |
| 문자열 | 업데이트 위탁자의 유형. |
| 문자열 | 테이블이 포함된 데이터베이스. |
| 문자열 | 입력 형식 클래스. |
| 문자열 | AWS Lake Formation 등록 상태. |
| 문자열 | 출력 형식 클래스. |
| 문자열 | 테이블 소유자. |
| int | 보존 기간. |
| 문자열 | 직렬화/역직렬화 라이브러리. |
| 문자열 | 데이터 형식. |
| 문자열 | 데이터 위치 URI. |
| 문자열 | 테이블 형식(예: Iceberg, Hudi). |
| 문자열 | 테이블 유형. |
table_columns
카탈로그 테이블의 열당 하나의 행을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 |
|
| 문자열 | 상위 테이블의 식별자. |
| 문자열 | 열 이름. |
| 문자열 | 열 설명. |
| 문자열 | 열 데이터 유형. |
| 부울 | 열이 파티션 키인지 여부입니다. |
attachments
자산 수준 사용자 지정 양식 연결(자산의 연결당 행 하나)을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 | 상위 자산의 식별자. |
| 문자열 | 첨부 파일 이름. |
| 문자열 | 내용의 등록된 양식 유형. |
| 문자열 | JSON 인코딩 문자열로 된 첨부 파일 내용. |
item_attachments
개별 열과 같이 반복 가능한 형식 내의 항목에 대한 첨부 파일을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 | 상위 자산의 식별자. |
| 문자열 | 반복 가능한 양식(예: 열)의 이름. |
| 문자열 | 항목(예: 열 이름)의 이름. |
| 문자열 | 첨부 파일 이름. |
| 문자열 | 내용의 등록된 양식 유형. |
| 문자열 | JSON 인코딩 문자열로 된 첨부 파일 내용. |
glossaries
용어집당 하나의 행을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 | 용어집의 고유 식별자. |
| 문자열 | 용어집 설명. |
| 문자열 | 용어집 이름. |
| 문자열 | 상태( |
glossary_terms
용어집 용어당 하나의 행을 포함합니다.
| 열 | 유형 | 설명 |
|---|---|---|
| 문자열 | 고유한 용어 식별자. |
| 문자열 | 상위 용어집의 식별자. |
| 문자열 | 자세한 용어 설명. |
| 문자열 | 용어 이름. |
| 문자열 | 간략한 용어 설명. |
| 문자열 | 상태( |
associated_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';