Amazon Web Services ブログ
AWS Glue Data Catalog での Apache Iceberg テーブルのカタログフェデレーションの紹介
本記事は 2025 年 11 月 26 日 に公開された「Introducing catalog federation for Apache Iceberg tables in the AWS Glue Data Catalog | AWS Big Data Blog」を翻訳したものです。
Apache Iceberg は、大規模で堅牢かつ信頼性の高い分析を求める組織にとって、オープンテーブルフォーマットの標準的な選択肢となっています。しかし、企業は異なるカタログシステムを持つ複雑なマルチベンダー環境をますます多く扱うようになっています。マルチベンダー環境で運用する組織にとって、これらのシステム間でデータを管理することは大きな課題となっています。この断片化は、特にアクセス制御とガバナンスに関して、運用上の複雑さを大幅に増加させます。Amazon Redshift、Amazon EMR、Amazon Athena、Amazon SageMaker、AWS Glue などの AWS 分析サービスを使用して AWS Glue Data Catalog 内の Iceberg テーブルを分析しているお客様は、リモートカタログのワークロードでも同じ価格性能を得たいと考えています。これらのリモートカタログを単純に移行または置き換えることは現実的ではなく、チームはシステム間でメタデータを継続的に複製する同期プロセスを実装・維持する必要があり、運用上のオーバーヘッド、コストの増加、データの不整合のリスクが生じます。
AWS Glue は、Data Catalog でリモート Iceberg テーブルのカタログフェデレーションをサポートするようになりました。カタログフェデレーションを使用すると、Amazon Simple Storage Service (Amazon S3) に保存され、リモート Iceberg カタログでカタログ化されたリモート Iceberg テーブルを、テーブルを移動または複製することなく、AWS 分析エンジンを使用してクエリできます。リモートカタログが統合されると、AWS Glue は常にバックグラウンドで最新のメタデータを取得するため、お好みの AWS 分析サービスを通じて常に Iceberg メタデータにアクセスできます。この機能は、粗い粒度のアクセス制御と AWS Lake Formation によるきめ細かな粒度の権限の両方をサポートしており、リモート Iceberg テーブルをデータコンシューマーと共有する方法とタイミングを柔軟に選択できます。Snowflake Polaris Catalog、Databricks Unity Catalog、および Iceberg REST 仕様をサポートするその他のカスタムカタログとの統合により、リモートカタログにフェデレートし、データベースとテーブルを検出し、アクセス権限を設定し、リモート Iceberg データのクエリを開始できます。
この記事では、Data Catalog で Iceberg テーブルのカタログフェデレーションを開始する方法について説明します。
ソリューションの概要
カタログフェデレーションは、Data Catalog を使用してリモートカタログシステムと通信し、カタログオブジェクトを検出し、Lake Formation を使用して Amazon S3 内のデータへのアクセスを認可します。リモート Iceberg テーブルをクエリすると、Data Catalog はクエリ実行時にリモートカタログ内の最新のテーブル情報を検出し、テーブルの S3 ロケーション、現在のスキーマ、パーティション情報を取得します。分析エンジン (Athena、Amazon EMR、または Amazon Redshift) は、この情報を使用して Amazon S3 から直接 Iceberg データファイルにアクセスします。Lake Formation は、Amazon S3 に保存されているテーブルデータへのスコープ付き認証情報を発行することでテーブルへのアクセスを管理し、エンジンがフェデレーテッドテーブルにきめ細かな粒度の権限を適用できるようにします。このアプローチにより、メタデータとデータの重複を回避しながら、お好みの AWS 分析エンジンを通じてリモート Iceberg テーブルへのリアルタイムアクセスを提供します。
Data Catalog は、リモートカタログエンドポイントとの AWS Glue 接続を確立することで、Apache Iceberg をサポートするリモートカタログシステムへの接続を容易にします。OAuth2 またはアクセストークンを使用したカスタム認証メカニズムを使用して、Data Catalog をリモート Iceberg REST カタログに接続できます。統合中、管理者はリモートカタログ内のリソースにアクセスするための適切な権限を持つプリンシパル (サービスアカウントまたは ID) を設定します。AWS Glue 接続オブジェクトは、この設定されたプリンシパルの認証情報を使用して、リモートカタログサーバー内のメタデータを認証およびアクセスします。また、ネットワークアクセスを分離および制限するためにプライベートリンクまたはプロキシを使用するリモートカタログに Data Catalog を接続することもできます。接続後、この統合は標準化された Iceberg REST API 仕様を使用して、これらのリモートカタログから最新のテーブルメタデータ情報を取得します。AWS Glue は、これらのリモートカタログを独自のカタログインフラストラクチャ内のフェデレーテッドカタログとしてオンボードし、複数のカタログシステム間で統一されたメタデータアクセスを可能にします。
Lake Formation は、フェデレーテッドカタログリソースへのユーザーアクセスを管理するための一元化された認可レイヤーとして機能します。ユーザーがフェデレーテッドカタログ内のテーブルやデータベースにアクセスしようとすると、Lake Formation は権限を評価し、きめ細かな粒度のアクセス制御ポリシーを適用します。
メタデータの認可に加えて、カタログフェデレーションは実際の基盤となるデータファイルへの安全なアクセスも管理します。これは、一時的でスコープが制限された認証情報を発行する認証情報発行メカニズムによって実現されます。AWS Glue フェデレーテッドカタログは、お好みの AWS 分析エンジンやクエリサービスと連携し、分析ワークロード全体で一貫したメタデータアクセスと統一されたデータガバナンスを実現します。
以下のセクションでは、Data Catalog をリモートカタログサーバーと統合する手順を説明します。
- リモートカタログで統合プリンシパルを設定し、このプリンシパルにカタログリソースへの必要なアクセス権を付与します。統合プリンシパルの OAuth ベースの認証を有効にします。
- AWS Glue 接続を使用して Data Catalog にフェデレーテッドカタログを作成します。統合プリンシパル (ステップ 1) の認証情報を使用してリモートカタログの Iceberg REST エンドポイントに接続する AWS Glue 接続を作成します。リモートテーブルデータが存在する S3 ロケーションへの権限を持つ AWS Identity and Access Management (IAM) ロールを設定します。クロスアカウントシナリオでは、バケットポリシーがこの IAM ロールに必要なアクセス権を付与していることを確認してください。このフェデレーテッドカタログは、リモートカタログサーバー内のカタログオブジェクトをミラーリングします。
- Lake Formation または AWS Glue API を使用して、フェデレーテッドカタログ内の Iceberg テーブルを検出します。AWS 分析エンジンを使用して Iceberg テーブルをクエリします。クエリ操作中、Lake Formation はフェデレーテッドリソースに対するきめ細かな粒度の権限と、エンドユーザーへの基盤データへの認証情報発行を管理します。
前提条件
開始する前に、AWS で以下の設定が完了していることを確認してください。
- AWS アカウント
- AWS Command Line Interface (AWS CLI) バージョン 2.31.38 以降がインストールおよび設定されていること
- 以下のサービスへの適切な権限を持つ IAM 管理者ロールまたはユーザー
- IAM
- AWS Glue Data Catalog
- Amazon S3
- AWS Lake Formation
- AWS Secrets Manager
- Amazon Athena
- データレイク管理者を作成します。手順については、データレイク管理者の作成を参照してください。
リモート Iceberg カタログでの認証情報の設定
リモート Iceberg カタログへのカタログフェデレーションは、メタデータアクセス用に設定されたプリンシパルの OAuth2 認証情報を使用します。この認証メカニズムにより、AWS Glue Data Catalog は、プリンシパルに関連付けられた権限に基づいて、リモートカタログ内のさまざまなオブジェクト (データベース、テーブルなど) のメタデータにアクセスできます。適切な機能をサポートするには、これらのオブジェクトのメタデータを読み取るために必要な権限をプリンシパルに付与する必要があります。統合プリンシパルの OAuth ベースの認証を有効にするために、CLIENT_ID と CLIENT_SECRET を生成します。
リモート Iceberg カタログへの接続を使用した AWS Glue カタログフェデレーションの作成
リモート Iceberg カタログサーバー内のカタログオブジェクトをミラーリングするフェデレーテッドカタログを Data Catalog に作成します。これは、AWS Glue サービスが ListDatabases、ListTables、GetTable などのメタデータクエリをリモートカタログにフェデレートするために使用されます。データレイク管理者として、AWS Lake Formation に登録された AWS Glue 接続オブジェクトを使用して、Data Catalog にフェデレーテッドカタログを作成できます。
AWS Glue 接続のデータソース接続の設定
カタログフェデレーションは、リモートカタログで認証と Iceberg REST API エンドポイントの設定を提供する際に、メタデータアクセス用の AWS Glue 接続を使用します。AWS Glue 接続は、認証方法として OAuth2 またはカスタムをサポートしています。
OAuth2 認証を使用した接続
OAuth2 認証方法では、クライアントシークレットを直接入力として提供するか、AWS Secrets Manager に保存して認証時に AWS Glue 接続オブジェクトで使用できます。AWS Glue は、有効期限が切れるとトークンの更新を内部的に管理します。Secrets Manager にクライアントシークレットを保存するには、以下の手順を完了します。
- Secrets Manager コンソールで、ナビゲーションペインの Secrets を選択します。
- Store a new secret を選択します。
- Other type of secret を選択し、キー名として
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETを指定し、クライアントシークレットの値を入力します。 - Next を選択し、シークレットの名前を指定します。
- Next を選択し、Store を選択してシークレットを保存します。
カスタム認証を使用した接続
カスタム認証では、Secrets Manager を使用してアクセストークンを保存および取得します。このアクセストークンは、お客様のアプリケーションまたはシステムによって作成、更新、管理され、認証プロセスを適切に制御および管理できます。Secrets Manager にアクセストークンを保存するには、以下の手順を完了します。
- Secrets Manager コンソールで、ナビゲーションペインの Secrets を選択します。
- Store a new secret を選択します。
- Other type of secret を選択し、キー名として
BEARER_TOKENを指定し、統合プリンシパルのアクセストークンを値として入力します。 - Next を選択し、シークレットの名前を指定します。
- Next を選択し、Store を選択してシークレットを保存します。
AWS Glue 接続の Lake Formation への登録
Lake Formation が認証情報を発行するために使用できる IAM ロールを作成し、Iceberg テーブルが保存されている S3 バケットプレフィックスへの権限をアタッチします。オプションで、Secrets Manager を使用してクライアントシークレットを保存する場合やネットワーク設定を使用する場合は、これらのサービスへの権限をこのロールに追加できます。手順については、リモート Iceberg カタログへのカタログフェデレーションを参照してください。
接続を登録するには、以下の手順を完了します。
- Lake Formation コンソールで、ナビゲーションペインの Catalogs を選択します。
- Create catalog を選択し、データソースを選択します。
- フェデレーテッドカタログの詳細を入力します。
- フェデレーテッドカタログの名前
- リモートカタログサーバー内のカタログ名 (リモートカタログの正確なカタログ名と一致する必要があります)
- AWS Glue 接続の詳細を入力します。既存の接続を再利用するには、Select existing connection を選択し、再利用する接続を選択します。初回セットアップの場合は、Input new connection configuration を選択し、以下の情報を入力します。
- AWS Glue 接続名を入力します。
- リモートカタログの Iceberg REST API エンドポイントを入力します。
- カタログオブジェクトの大文字小文字のタイプを指定します。接続は、オブジェクト階層全体で大文字のオブジェクトまたは小文字のオブジェクトをサポートできます。
- 認証パラメータを設定します。
- OAuth2 の場合: クライアント ID とクライアントシークレットを直接入力するか、クライアントシークレットが保存されているシークレット、トークン認可 URL、および認証情報にマッピングされたスコープを選択します。
- カスタムの場合: アクセストークンが保存されている Secrets Manager で管理されるシークレットを指定します。
- ネットワーク設定: ネットワークやプロキシの設定がある場合は、この情報を入力できます。それ以外の場合は、このセクションをデフォルトのままにします。
- リモートテーブルのメタデータとデータが保存されているバケットへのアクセス権を持つ IAM ロールを使用して、接続を Lake Formation に登録します。
- Run test を選択して接続を確認します。
- テストが成功したら、カタログを作成します。
これで、フェデレーテッドカタログの下にあるリモートオブジェクトを検出できます。同じ外部カタログインスタンスに設定された既存の接続を再利用して、他のリモートカタログをオンボードできます。
AWS 分析エンジンを使用したフェデレーテッドカタログオブジェクトのクエリ
データレイク管理者として、AWS Lake Formation を使用してフェデレーテッドカタログ内のデータベースとテーブルのアクセス制御を管理できるようになりました。また、タグベースのアクセス制御を使用して、アクセス制御メカニズムに基づいてリソースにタグを付けることで、権限モデルをスケールすることもできます。
権限が付与されると、IAM プリンシパルまたは IAM ユーザーは、Athena、Amazon Redshift、Amazon EMR、Amazon SageMaker などの AWS 分析サービスを使用してフェデレーテッドテーブルにアクセスできます。以下の例に示すように、Athena を使用してフェデレーテッド Iceberg テーブルをクエリします。
クリーンアップ
継続的な料金の発生を避けるため、以下の手順を完了して、このウォークスルーで作成したリソースをクリーンアップします。
- Data Catalog のフェデレーテッドカタログを削除します。
- Lake Formation から AWS Glue 接続の登録を解除します。
- Lake Formation の権限を取り消します (付与されている場合)。
- AWS Glue 接続を削除します。
- Lake Formation と AWS Glue 接続に関連付けられた IAM ロールとポリシーを削除します。
- Secrets Manager のシークレットを削除します。
このクリーンアップガイドは、リモートカタログサーバー内の実際のメタデータや S3 バケット内のデータには影響しません。Data Catalog と Lake Formation のフェデレーション設定にのみ影響します。リモートカタログサーバー内の対応するサービスプリンシパルや設定は、別途対処する必要があります。
依存関係の競合を避けるため、指定された順序でクリーンアップ手順に従ってください。たとえば、AWS Glue カタログオブジェクトが関連付けられている場合、AWS Glue 接続オブジェクトは削除できません。
また、これらのリソースを削除するために必要な権限があることを確認してください。
まとめ
この記事では、カタログフェデレーションがマルチベンダーカタログ環境全体で Iceberg テーブルを管理するという増大する課題にどのように対処するかを探りました。Data Catalog が Snowflake Polaris Catalog、Databricks Unity Catalog、およびカスタム Iceberg REST 準拠カタログを含むリモートカタログシステムと通信し、安全なデータアクセスのための一元化された認可と認証情報発行を行うアーキテクチャを説明しました。認証プリンシパルの設定、AWS Glue 接続を使用したフェデレーテッドカタログの作成から、きめ細かな粒度のアクセス制御の実装、AWS 分析エンジンからのリモート Iceberg テーブルの直接クエリまで、セットアッププロセスを説明しました。
カタログフェデレーションには、いくつかの利点があります。
- AWS 分析サービスのセキュリティ、ガバナンス、価格性能の利点を維持しながら、Iceberg データが存在する場所でクエリできます
- 同期プロセスを維持するための運用上のオーバーヘッドとコストを削減できます
- データの重複と不整合を回避できます
- 既存のカタログを移行または置き換えることなく、最新のテーブルスキーマにリアルタイムでアクセスできます
詳細については、リモート Iceberg カタログへのカタログフェデレーションを参照してください。
著者について
Debika D は、Amazon SageMaker のシニアプロダクトマーケティングマネージャーで、レイクハウスアーキテクチャのメッセージングと市場投入戦略を専門としています。データと AI に関するあらゆることに情熱を持っています。
Srividya Parthasarathy は、AWS Lake Formation チームのシニアビッグデータアーキテクトです。プロダクトチームやお客様と協力して、分析データプラットフォーム向けの堅牢な機能とソリューションを構築しています。データメッシュソリューションの構築とコミュニティとの共有を楽しんでいます。
Pratik Das は、AWS Lake Formation のシニアプロダクトマネージャーです。データに関するあらゆることに情熱を持ち、お客様と協力して要件を理解し、素晴らしい体験を構築しています。データ駆動型ソリューションと機械学習システムの構築のバックグラウンドを持っています。
この記事は Kiro が翻訳を担当し、ソリューションアーキテクト の 松岡勝也 がレビューしました。