Lake Formation でのオープンテーブルストレージフォーマットのアクセス許可の設定 - AWS Lake Formation

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lake Formation でのオープンテーブルストレージフォーマットのアクセス許可の設定

AWS Lake Formation は、Apache IcebergApache HudiLinux 基盤の Delta Lake などのオープンテーブルフォーマット (OTF) のアクセス許可管理をサポートします。このチュートリアルでは、AWS Glue を使用して AWS Glue Data Catalog にシンボリックリンクマニフェストテーブルを持つ Iceberg、Hudi、Delta Lake を作成し、Lake Formation を使用してきめ細かいアクセス許可を設定し、Amazon Athena を使用してデータをクエリする方法を学びます。

注記

AWS 分析サービスは、すべてのトランザクションテーブル形式をサポートしているわけではありません。詳細については、「他の AWS サービスでの使用」を参照してください。このチュートリアルでは、AWS Glue ジョブのみを使用して、データカタログに新しいデータベースとテーブルを手動で作成する方法について説明します。

このチュートリアルには、クイックセットアップ用の AWS CloudFormation テンプレートが含まれています。このテンプレートを参照し、ニーズに合わせてカスタマイズできます。

対象者

このチュートリアルは、IAM 管理者、データレイク管理者、ビジネスアナリストを対象としています。次の表は、このチュートリアルで Lake Formation による管理対象テーブルの作成に使用するロールのリストです。

ロール 説明
IAM 管理者 IAM ユーザーおよびロール、Amazon S3 バケットを作成できるユーザー。AWS マネージドポリシーとして AdministratorAccess を持っています。
データレイク管理者 Data Catalog へのアクセス、データベースの作成、および他のユーザーへの Lake Formation 許可の付与を実行できるユーザー。IAM 許可の数は IAM 管理者よりも少ないですが、データレイクを管理するには十分な許可を持っています。
ビジネスアナリスト データレイクに対してクエリを実行できるユーザー。クエリを実行するためのアクセス許可を持っています。

前提条件

このチュートリアルを開始する前に、適切なアクセス許可を持つユーザーとしてサインインできる AWS アカウントが必要です。詳細については、「にサインアップする AWS アカウント」および「管理アクセスを持つユーザーを作成する」を参照してください。

このチュートリアルでは、ユーザーが IAM のロールおよびポリシーに精通していることを前提としています。IAM については、「IAM ユーザーガイド」を参照してください。

このチュートリアルを完了するには、以下の AWS リソースをセットアップする必要があります。

  • データレイク管理ユーザー

  • Lake Formation データレイクの設定

  • Amazon Athena エンジンバージョン 3

データレイク管理者を作成するには
  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) に管理者ユーザーとしてサインインします。このチュートリアルでは、米国東部 (バージニア北部) リージョンにリソースを作成します。

  2. ナビゲーションペインの Lake Formation コンソールの [許可][管理ロールとタスク] を選択します。

  3. [データレイク管理者][管理者を選択] を選択します。

  4. ポップアップウィンドウの [データレイク管理者の管理][IAM ユーザーとロール] で、[IAM 管理者ユーザー] を選択します。

  5. [保存] を選択します。

データレイク設定を有効にするには
  1. Lake Formation コンソール (‭‬https://console.aws.amazon.com/lakeformation/‬) を開きます。ナビゲーションペインの [Data catalog][Settings] (設定) を選択します。次のチェックを外します。

    • 新しいデータベースには IAM アクセスコントロールのみを使用する。

    • 新しいデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する。

  2. [クロスアカウントバージョン設定] で、クロスアカウントバージョンとして [バージョン 3] を選択します。

  3. [保存] を選択します。

Amazon Athena エンジンをバージョン 3 にアップグレードするには
  1. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  2. [ワークグループ] を選択し、プライマリワークグループを選択します。

  3. ワークグループのバージョンが 3 以上であることを確認してください。そうでない場合は、ワークグループを編集し、[クエリエンジンのアップグレード][手動] を選択し、バージョン 3 を選択します。

  4. [Save changes] (変更の保存) をクリックします。

ステップ 1: リソースをプロビジョニングする

このセクションでは、CloudFormation テンプレートを使用して AWS リソースをセットアップする方法を説明します。

CloudFormation テンプレートを使用したリソースの作成するには
  1. 米国東部 (バージニア北部) リージョンの IAM 管理者として、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) にサインインします。

  2. [スタックの起動] を選択します。

  3. [Create Stack] (スタックの作成) 画面で、[Next] (次へ) を選択します。

  4. [Stack name] (スタック名) を入力します。

  5. [次へ] を選択します。

  6. 次のページで、[Next] (次へ) を選択します。

  7. 最終ページで詳細を確認し、[I acknowledge that AWS CloudFormation might create IAM resources] (CloudFormation によって IAM リソースが作成される場合があることを承認します) を選択します。

  8. [作成] を選択します。

    スタックの作成には、最大 2 分かかる場合があります。

クラウドフォーメーションスタックを起動すると、以下のリソースが作成されます。

  • lf-otf-datalake-123456789012 – データを保存する Amazon S3 バケット

    注記

    Amazon S3 バケット名に追加されたアカウント ID は、アカウント ID に置き換えられます。

  • lf-otf-tutorial-123456789012 – クエリ結果と AWS Glue ジョブスクリプトを保存する Amazon S3 バケット

  • licebergdb – AWS Glue Iceberg データベース

  • lfhudidb – AWS Glue Hudi データベース

  • lfdeltadb – AWS Glue Delta データベース

  • native-iceberg-create – Data Catalog に Iceberg テーブルを作成する AWS Glue ジョブ

  • native-hudi-create – Data Catalog に Hudi テーブルを作成する AWS Glue ジョブ

  • native-delta-create – Data Catalog に Delta テーブルを作成する AWS Glue ジョブ

  • LF-OTF-GlueServiceRole – AWS Glue ジョブを実行するために渡す IAM ロール。このロールには、Data Catalog、Amazon S3 バケットなどのリソースにアクセスするために必要なポリシーがアタッチされています。

  • LF-OTF-RegisterRole – Amazon S3 ロケーションを Lake Formation に登録するための IAM ロール。このロールには、LF-Data-Lake-Storage-Policy が関連付けられています。

  • lf-consumer-analystuser – Athena を使用してデータをクエリする IAM ユーザー

  • lf-consumer-analystuser-credentials – AWS Secrets Manager に保存されているデータアナリストユーザーのパスワード

スタックの作成が完了したら、出力タブに移動して、次の値を書き留めます。

  • AthenaQueryResultLocation – Athena クエリ出力の Amazon S3 ロケーション

  • BusinessAnalystUserCredentials – データアナリストユーザーのパスワード

    パスワード値を取得するには:

    1. Secrets Manager コンソールに移動して、lf-consumer-analystuser-credentials 値を選択します。

    2. [シークレット値] セクションで、[シークレット値の取得] を選択します。

    3. パスワードのシークレット値を書き留めておきます。

ステップ 2: Iceberg テーブルのアクセス許可をセットアップする

このセクションでは、AWS Glue Data Catalog で Iceberg テーブルを作成する方法、AWS Lake Formation でデータアクセス許可を設定する方法、Amazon Athena を使用してデータをクエリする方法を学びます。

Iceberg テーブルを作成するには

このステップでは、Data Catalog に Iceberg トランザクションテーブルを作成する AWS Glue ジョブを実行します。

  1. データレイク管理者ユーザーとして、米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/glue/ で AWS Glue コンソールを開きます。

  2. 左側のナビゲーションペインで、[ジョブ] を選択します。

  3. native-iceberg-create を選択します。

    この画像は、コンソールの AWS Glue ジョブページのスクリーンショットです。
  4. [アクション][ジョブの編集] を選択します。

  5. [ジョブの詳細][詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。

  6. [保存] を選択します。

  7. [Run (実行)] を選択します。実行中、ジョブのステータスを表示できます。

    AWS Glue ジョブの実行についての詳細は、「AWS Glue デベロッパーガイド」の「AWS Glue コンソールでのジョブの使用」を参照してください。

    このジョブは、lficebergdb データベースに product という名前を付けた Iceberg テーブルを作成します。Lake Formation コンソールの製品テーブルを確認してください。

データロケーションを Lake Formation に登録するには

次に、Amazon S3 パスをデータレイクのロケーションとして登録します。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) をデータレイク管理者ユーザーとして開きます。

  2. ナビゲーションペインの [登録および取り込み][データレイクのロケーション] を選択します。

  3. コンソールの右上で、[ロケーションを登録] を選択します。

  4. [ロケーションを登録] ページで、次のように入力します。

    • [Amazon S3 パス][ブラウズ] を選択して lf-otf-datalake-123456789012 を選択します。Amazon S3 ルートロケーションの横にある右矢印 (>) をクリックして、s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-iceberg ロケーションに移動します。

    • [IAM ロール] – IAM ロールとして LF-OTF-RegisterRole を選択します。

    • [Register location] (ロケーションを登録) を選択します。

    コンソールの Lake Formation Register ロケーションページのスクリーンショットです。

    データロケーションを Lake Formation へ登録する方法の詳細については、「データレイクへの Amazon S3 ロケーションの追加」を参照してください。

Iceberg テーブルで Lake Formation の権限を付与するには

このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。

  1. [データレイクのアクセス許可] で、[付与] を選択します。

  2. [データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。

  3. ドロップダウンリストから [lf-consumer-analystuser] を選択します。

    この画像は、コンソールの Lake Formation アクセス許可ページのスクリーンショットです。
  4. [名前付きの Data Catalog リソース] を選択します。

  5. [データベース] には lficebergdb を選択します。

  6. [Tables] (テーブル) には product を選択します。

    この画像は、コンソールの Lake Formation アクセス許可ページのスクリーンショットです。
  7. 次に、列を指定して列ベースのアクセスを許可できます。

    1. [テーブル許可] には [選択] を選択します。

    2. [データのアクセス許可][列ベースのアクセス] を選択し、[列を含める] を選択します。

    3. product_namepricecategory 列を選択します。

    4. [Grant] (付与) を選択します。

      この画像は、コンソールの Lake Formation アクセス許可ページのスクリーンショットです。
Athena を使用して Iceberg テーブルをクエリするには

ここで Athena を使用し、作成した Iceberg テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。

  1. データレイク管理者ユーザーとしてサインアウトし、以前に CloudFormation の出力から書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョンで lf-consumer-analystuser としてログインします。

  2. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  3. [設定] を選択し、[管理] を選択します。

  4. [クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] を選択します。

  5. 次のクエリを実行して、Iceberg テーブルに保存されている 10 個のレコードをプレビューします。

    select * from lficebergdb.product limit 10;

    Athena を使用して Iceberg テーブルをクエリする方法の詳細については、「Amazon Athena ユーザーガイド」の「Iceberg テーブルへのクエリ」を参照してください。

ステップ 3: Hudi テーブルのアクセス許可をセットアップする

このセクションでは、AWS Glue Data Catalog で Hudi テーブルを作成する方法、AWS Lake Formation でデータのアクセス許可を設定する方法、Amazon Athena を使用してデータをクエリする方法を学びます。

Hudi テーブルを作成するには

このステップでは、Data Catalog に Hudi トランザクションテーブルを作成する AWS Glue ジョブを実行します。

  1. 米国東部 (バージニア北部) リージョンで AWS Glue コンソール (https://console.aws.amazon.com/glue/) にサインインします。

    データレイク管理ユーザーとして開きます。

  2. 左側のナビゲーションペインで、[ジョブ] を選択します。

  3. native-hudi-create を選択します。

  4. [アクション][ジョブの編集] を選択します。

  5. [ジョブの詳細][詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。

  6. [保存] を選択します。

  7. [Run (実行)] を選択します。実行中、ジョブのステータスを表示できます。

    AWS Glue ジョブの実行についての詳細は、「AWS Glue デベロッパーガイド」の「AWS Glue コンソールでのジョブの使用」を参照してください。

    このジョブは、データベース:lfhudidb に Hudi(cow) テーブルを作成します。Lake Formation コンソールの product テーブルを確認してください。

データロケーションを Lake Formation に登録するには

次に、Amazon S3 パスをデータレイクのルートロケーションとして登録します。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) にデータレイク管理者ユーザーとしてサインインします。

  2. ナビゲーションペインの [登録および取り込み][データレイクのロケーション] を選択します。

  3. コンソールの右上で、[ロケーションを登録] を選択します。

  4. [ロケーションを登録] ページで、次のように入力します。

    • [Amazon S3 パス][ブラウズ] を選択して lf-otf-datalake-123456789012 を選択します。Amazon S3 ルートロケーションの横にある右矢印 (>) をクリックして、s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-hudi ロケーションに移動します。

    • [IAM ロール] – IAM ロールとして LF-OTF-RegisterRole を選択します。

    • [Register location] (ロケーションを登録) を選択します。

Hudi テーブルでデータレイクのアクセス許可を付与するには

このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。

  1. [データレイクのアクセス許可] で、[付与] を選択します。

  2. [データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。

  3. ドロップダウンから lf-consumer-analystuser

  4. [名前付きのデータカタログリソース] を選択します。

  5. [データベース] には lfhudidb を選択します。

  6. [Tables] (テーブル) には product を選択します。

  7. 次に、列を指定して列ベースのアクセスを許可できます。

    1. [テーブル許可] には [選択] を選択します。

    2. [データのアクセス許可][列ベースのアクセス] を選択し、[列を含める] を選択します。

    3. product_namepricecategory 列を選択します。

    4. [Grant] (付与) を選択します。

Athena を使用して Hudi テーブルをクエリするには

ここで Athena を使用し、作成した Hudi テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。

  1. データレイク管理者ユーザーとしてサインアウトし、以前に CloudFormation の出力から書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョンで lf-consumer-analystuser としてログインします。

  2. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  3. [設定] を選択し、[管理] を選択します。

  4. [クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] します。

  5. 次のクエリを実行して、Hudi テーブルに保存されている 10 個のレコードをプレビューします。

    select * from lfhudidb.product limit 10;

    Hudi テーブルをクエリする方法の詳細については、「Amazon Athena ユーザーガイド」の「Hudi テーブルのクエリ」を参照してください。

ステップ 4: Delta Lake テーブルのアクセス許可をセットアップする

このセクションでは、AWS Glue Data Catalog でシンボリックリンクマニフェストファイルによる Delta Lake テーブルを作成する方法、AWS Lake Formation でデータのアクセス許可を設定する方法、Amazon Athena を使用してデータをクエリする方法を学びます。

Delta Lake テーブルを作成するには

このステップでは、Data Catalog に Delta Lake トランザクションテーブルを作成する AWS Glue ジョブを実行します。

  1. 米国東部 (バージニア北部) リージョンで AWS Glue コンソール (https://console.aws.amazon.com/glue/) にサインインします。

    データレイク管理ユーザーとして開きます。

  2. 左側のナビゲーションペインで、[ジョブ] を選択します。

  3. native-delta-create を選択します。

  4. [アクション][ジョブの編集] を選択します。

  5. [ジョブの詳細][詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。

  6. [保存] を選択します。

  7. [アクション][実行] を選択します。

    このジョブは、lfdeltadb データベースに product という名前を付けた Delta Lake テーブルを作成します。Lake Formation コンソールの product テーブルを確認してください。

データロケーションを Lake Formation に登録するには

次に、Amazon S3 パスをデータレイクのルートロケーションとして登録します。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) をデータレイク管理者ユーザーとして開きます。

  2. ナビゲーションペインの [登録および取り込み][データレイクのロケーション] を選択します。

  3. コンソールの右上で、[ロケーションを登録] を選択します。

  4. [ロケーションを登録] ページで、次のように入力します。

    • [Amazon S3 パス][ブラウズ] を選択して lf-otf-datalake-123456789012 を選択します。Amazon S3 ルートロケーションの横にある右矢印 (>) をクリックして、s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-delta ロケーションに移動します。

    • [IAM ロール] – IAM ロールとして LF-OTF-RegisterRole を選択します。

    • [Register location] (ロケーションを登録) を選択します。

Delta Lake テーブルでデータレイクのアクセス許可を付与するには

このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。

  1. [データレイクのアクセス許可] で、[付与] を選択します。

  2. [データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。

  3. ドロップダウンから lf-consumer-analystuser

  4. [名前付きのデータカタログリソース] を選択します。

  5. [データベース] には lfdeltadb を選択します。

  6. [Tables] (テーブル) には product を選択します。

  7. 次に、列を指定して列ベースのアクセスを許可できます。

    1. [テーブル許可] には [選択] を選択します。

    2. [データのアクセス許可][列ベースのアクセス] を選択し、[列を含める] を選択します。

    3. product_namepricecategory 列を選択します。

    4. [Grant] (付与) を選択します。

Athena を使用した Delta Lake テーブルをクエリするには

ここで Athena を使用し、作成した Delta Lake テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。

  1. データレイク管理者ユーザーとしてログアウトし、CloudFormation 出力で前述したパスワードを使用して米国東部 (バージニア北部) リージョンで BusinessAnalystUser としてログインします。

  2. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  3. [設定] を選択し、[管理] を選択します。

  4. [クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] します。

  5. 次のクエリを実行して、Delta Lake テーブルに保存されている 10 個のレコードをプレビューします。

    select * from lfdeltadb.product limit 10;

    Delta Lake テーブルをクエリする方法の詳細については、「Amazon Athena ユーザーガイド」の「Delta Lake テーブルのクエリ」を参照してください。

ステップ 5: AWS のリソースをクリーンアップする

リソースをクリーンアップするには

AWS アカウントへの不要な請求が発生しないように、このチュートリアルで使用した AWS リソースを削除します。

  1. CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) に IAM 管理者としてサインインします。

  2. CloudFormation スタックを削除します。作成したテーブルは、スタックと共に自動的に削除されます。