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

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

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

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

注記

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

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

対象者

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

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

前提条件

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

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

このチュートリアルを完了するには、次の AWS リソースを設定する必要があります。

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

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

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

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

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

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

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

  5. [Save] を選択します。

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

    • 新しいデータベースのIAMアクセスコントロールのみを使用してください。

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

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

  3. [Save] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

  7. 最終ページの詳細を確認し、 がIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。

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

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

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

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

    注記

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

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

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

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

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

  • native-iceberg-create – データカタログで Iceberg テーブルを作成する AWS Glue ジョブ

  • native-hudi-create – データカタログで Hudi テーブルを作成する AWS Glue ジョブ

  • native-delta-create – データカタログに Delta テーブルを作成する AWS Glue ジョブ

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

  • Lake Formation に Amazon S3 の場所を登録する LFOTF-- RegisterRole 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 テーブルのアクセス許可をセットアップする

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

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

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

  1. を開く AWS Glue データレイク管理者ユーザーとして、米国東部 (バージニア北部) リージョンhttps://console.aws.amazon.com/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 のアクセス許可を後でカタログリソースに適用できるようになります。

  6. [Save] を選択します。

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

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

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

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

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

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

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

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

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

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

    • IAM role – 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. データレイク管理者ユーザーとしてサインアウトし、 AWS CloudFormation 出力から前に説明したパスワードを使用して、米国東部 (バージニア北部) リージョンlf-consumer-analystuserの としてサインインします。

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

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

  4. クエリ結果の場所 ボックスに、 AWS 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 テーブルのアクセス許可をセットアップする

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

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

このステップでは、データカタログに 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 のアクセス許可を後でカタログリソースに適用できるようになります。

  6. [Save] を選択します。

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

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

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

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

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

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

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

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

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

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

    • IAM role – 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. データレイク管理者ユーザーとしてサインアウトし、 AWS CloudFormation 出力から前に説明したパスワードを使用して、米国東部 (バージニア北部) リージョンlf-consumer-analystuserの としてサインインします。

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

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

  4. クエリ結果の場所 ボックスに、 AWS 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 テーブルのアクセス許可をセットアップする

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

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

このステップでは、データカタログに 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 のアクセス許可を後でカタログリソースに適用できるようになります。

  6. [Save] を選択します。

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

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

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

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

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

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

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

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

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

    • IAM role – 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. データレイク管理者ユーザーとしてログアウトし、 AWS CloudFormation 出力から前に説明したパスワードを使用して、米国東部 (バージニア北部) リージョンBusinessAnalystUserの としてログインします。

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

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

  4. クエリ結果の場所 ボックスに、 AWS 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. IAM 管理者として https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールにサインインします。

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