lakeFS와 AWS Glue Data Catalog 함께 사용하기
lakeFS Enterprise에서 사용할 수 있어요. 무료 평가판을 시작하세요.
팁
이 연동에는 lakeFS Iceberg REST 카탈로그가 활성화되어 있어야 해요. 시작하려면 문의하세요!
출처: 문서
본문
개요
AWS Glue Catalog Federation을 사용하면 lakeFS가 관리하는 Apache Iceberg 테이블을 Glue Data Catalog에서 읽는 모든 AWS 서비스에 노출할 수 있어요 — Amazon Athena, Redshift Spectrum, EMR 등이 포함돼요.
lakefs-glue CLI 도구는 lakeFS Iceberg REST 카탈로그에 직접 연결되는 페더레이티드 Glue 카탈로그 생성을 자동화해요. 테이블 메타데이터는 lakeFS를 통해 실시간으로 탐색돼요 — 데이터 복사나 메타데이터 동기화가 필요 없어요.
동작 방식
-
쿼리 엔진(예: Athena)이 페더레이티드 Glue Data Catalog의 테이블을 참조하는 SQL 쿼리를 제출해요.
-
Glue는 REST API 연결을 통해 lakeFS Iceberg REST Catalog에 연결해 테이블 메타데이터를 검색해요.
-
Lake Formation이 쿼리 엔진에게 임시이고 범위가 지정된 S3 자격 증명을 발급해요.
-
쿼리 엔진은 Iceberg 데이터 파일을 S3에서 직접 읽어요.
사전 준비물
-
Iceberg REST 카탈로그가 활성화된 lakeFS 인스턴스.
-
lakeFS 서비스 계정(액세스 키와 시크릿 키).
-
Python 3.11+ (
lakefs-glueCLI 실행용). -
IAM, Glue, Lake Formation, Secrets Manager를 관리할 권한이 있는 AWS 자격 증명.
페더레이티드 카탈로그 설정하기
CLI 설치
uv (권장)
도구를 실행하는 가장 쉬운 방법은 uv예요 — 설치가 필요 없어요:
uvx lakefs-glue federate --help
pip
pip install lakefs-glue
lakefs-glue federate --help
페더레이티드 카탈로그 만들기
federate 명령을 실행해 lakeFS 저장소와 ref를 가리키는 Glue 페더레이티드 카탈로그를 만들어요:
uv
uvx lakefs-glue federate \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-repo my-repo \
--lakefs-access-key-id «redacted:AKIA…» \
--lakefs-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
pip
lakefs-glue federate \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-repo my-repo \
--lakefs-access-key-id «redacted:AKIA…» \
--lakefs-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
이 명령은 main 브랜치를 가리키는 lakefs-catalog(기본값)이라는 이름의 페더레이티드 카탈로그를 만들어요.
설정 옵션
| 옵션 | 필수 | 기본값 | 설명 |
|---|---|---|---|
| --lakefs-url | Yes | lakeFS 서버 URL | |
| --lakefs-repo | Yes | 저장소 이름 | |
| --lakefs-ref | No | main | 노출할 브랜치, 태그, 또는 커밋 ID |
| --lakefs-access-key-id | Yes | 서비스 계정 액세스 키 | |
| --lakefs-secret-access-key | Yes | 서비스 계정 시크릿 키 | |
| --catalog-name | No | lakefs-catalog | Glue 페더레이티드 카탈로그 이름 |
| --region | No | us-east-1 | AWS 리전 |
| --grant-to | No | 카탈로그 접근을 부여할 IAM ARN (반복 가능) |
생성되는 리소스
federate 명령은 다음 AWS 리소스들을 만들어요:
-
Secrets Manager 시크릿 (
<catalog-name>-secret) — OAuth2 인증용 lakeFS 자격 증명을 저장해요. -
IAM 역할 (
<catalog-name>-GlueConnectionRole) — Glue와 Lake Formation이 assume해요. -
Glue Connection (
<catalog-name>-connection) — lakeFS로의 REST API 브리지예요. -
Lake Formation 리소스 — S3 자격 증명 벤딩을 활성화해요.
-
Glue Catalog (
<catalog-name>) — Athena와 다른 AWS 서비스에 보이는 페더레이티드 카탈로그예요. -
Lake Formation 권한 부여 —
--grant-to로 지정한 주체들에 대한 권한이에요.
이 명령은 멱등(idempotent)해요: 다른 파라미터로 다시 실행하면 기존 리소스를 업데이트해요.
여러 브랜치와 ref 다루기
각 페더레이티드 카탈로그는 하나의 lakeFS ref를 가리켜요. 여러 브랜치, 태그, 커밋을 쿼리하려면 각각 별도 카탈로그를 만드세요:
uv
# Main branch
uvx lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref main \
--catalog-name my-repo-main \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
# Development branch
uvx lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref dev \
--catalog-name my-repo-dev \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
# A specific tag
uvx lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref v1.0 \
--catalog-name my-repo-v1 \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
pip
# Main branch
lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref main \
--catalog-name my-repo-main \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
# Development branch
lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref dev \
--catalog-name my-repo-dev \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
# A specific tag
lakefs-glue federate \
--lakefs-repo my-repo \
--lakefs-ref v1.0 \
--catalog-name my-repo-v1 \
--lakefs-url https://my-org.us-east-1.lakefscloud.io \
--lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \
--lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY
각 카탈로그는 Athena와 Lake Formation에 독립적으로 나타나요.
페더레이티드 카탈로그 쿼리하기
설정이 끝나면 Glue Data Catalog와 통합되는 어떤 AWS 서비스에서든 lakeFS 테이블을 쿼리할 수 있어요. 쿼리 예시가 포함된 자세한 가이드는 Using lakeFS with AWS Glue & Amazon Athena를 참고하세요.
페더레이티드 카탈로그 제거하기
페더레이티드 카탈로그와 관련 AWS 리소스를 정리하려면:
uv
# Remove a specific catalog
uvx lakefs-glue rm my-catalog
# Remove all federated catalogs
uvx lakefs-glue rm --all
# Skip confirmation prompt
uvx lakefs-glue rm my-catalog --yes
# Target a specific region
uvx lakefs-glue rm my-catalog --region us-west-2
pip
# Remove a specific catalog
lakefs-glue rm my-catalog
# Remove all federated catalogs
lakefs-glue rm --all
# Skip confirmation prompt
lakefs-glue rm my-catalog --yes
# Target a specific region
lakefs-glue rm my-catalog --region us-west-2
제한
-
읽기 전용: AWS Glue Catalog Federation은 읽기 쿼리만 지원해요.
INSERT,CREATE TABLE등 다른 쓰기 작업은 지원되지 않아요. -
카탈로그당 단일 ref: 각 페더레이티드 카탈로그는 하나의 lakeFS ref를 가리켜요. 여러 브랜치나 태그를 쿼리하려면 카탈로그를 여러 개 만드세요.
-
플랫 네임스페이스만 지원: AWS Glue Catalog Federation은 플랫한
catalog.namespace.table구조만 지원해요 — 중첩 네임스페이스는 지원되지 않아요.