본문 바로가기
WIKI 기술 지식 베이스

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-glue CLI 실행용).

  • 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 구조만 지원해요 — 중첩 네임스페이스는 지원되지 않아요.

더 알아보기 (Learn more)

공식 문서: lakeFS AWS Glue Data Catalog 연동