翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lake Formation でのオープンテーブルストレージフォーマットのアクセス許可の設定
AWS Lake Formation は、Apache Iceberg
注記
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
データレイク管理者を作成するには
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) に管理者ユーザーとしてサインインします。このチュートリアルでは、米国東部 (バージニア北部) リージョンにリソースを作成します。 -
ナビゲーションペインの Lake Formation コンソールの [許可] で [管理ロールとタスク] を選択します。
-
[データレイク管理者] で [管理者を選択] を選択します。
-
ポップアップウィンドウの [データレイク管理者の管理] の [IAM ユーザーとロール] で、[IAM 管理者ユーザー] を選択します。
-
[保存] を選択します。
データレイク設定を有効にするには
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) を開きます。ナビゲーションペインの [Data catalog] で [Settings] (設定) を選択します。次のチェックを外します。 新しいデータベースには IAM アクセスコントロールのみを使用する。
-
新しいデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する。
-
[クロスアカウントバージョン設定] で、クロスアカウントバージョンとして [バージョン 3] を選択します。
-
[保存] を選択します。
Amazon Athena エンジンをバージョン 3 にアップグレードするには
-
https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 -
[ワークグループ] を選択し、プライマリワークグループを選択します。
-
ワークグループのバージョンが 3 以上であることを確認してください。そうでない場合は、ワークグループを編集し、[クエリエンジンのアップグレード] で [手動] を選択し、バージョン 3 を選択します。
[Save changes] (変更の保存) をクリックします。
ステップ 1: リソースをプロビジョニングする
このセクションでは、CloudFormation テンプレートを使用して AWS リソースをセットアップする方法を説明します。
CloudFormation テンプレートを使用したリソースの作成するには
米国東部 (バージニア北部) リージョンの IAM 管理者として、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation
) にサインインします。 [スタックの起動]
を選択します。 [Create Stack] (スタックの作成) 画面で、[Next] (次へ) を選択します。
[Stack name] (スタック名) を入力します。
[次へ] を選択します。
次のページで、[Next] (次へ) を選択します。
最終ページで詳細を確認し、[I acknowledge that AWS CloudFormation might create IAM resources] (CloudFormation によって IAM リソースが作成される場合があることを承認します) を選択します。
[作成] を選択します。
スタックの作成には、最大 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 – データアナリストユーザーのパスワード
パスワード値を取得するには:
Secrets Manager コンソールに移動して、
lf-consumer-analystuser-credentials値を選択します。[シークレット値] セクションで、[シークレット値の取得] を選択します。
パスワードのシークレット値を書き留めておきます。
ステップ 2: Iceberg テーブルのアクセス許可をセットアップする
このセクションでは、AWS Glue Data Catalog で Iceberg テーブルを作成する方法、AWS Lake Formation でデータアクセス許可を設定する方法、Amazon Athena を使用してデータをクエリする方法を学びます。
Iceberg テーブルを作成するには
このステップでは、Data Catalog に Iceberg トランザクションテーブルを作成する AWS Glue ジョブを実行します。
-
データレイク管理者ユーザーとして、米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/glue/
で AWS Glue コンソールを開きます。 -
左側のナビゲーションペインで、[ジョブ] を選択します。
-
native-iceberg-createを選択します。
-
[アクション] で [ジョブの編集] を選択します。
-
[ジョブの詳細] で [詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。
[保存] を選択します。
-
[Run (実行)] を選択します。実行中、ジョブのステータスを表示できます。
AWS Glue ジョブの実行についての詳細は、「AWS Glue デベロッパーガイド」の「AWS Glue コンソールでのジョブの使用」を参照してください。
このジョブは、
lficebergdbデータベースにproductという名前を付けた Iceberg テーブルを作成します。Lake Formation コンソールの製品テーブルを確認してください。
データロケーションを Lake Formation に登録するには
次に、Amazon S3 パスをデータレイクのロケーションとして登録します。
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) をデータレイク管理者ユーザーとして開きます。 ナビゲーションペインの [登録および取り込み] で [データレイクのロケーション] を選択します。
コンソールの右上で、[ロケーションを登録] を選択します。
[ロケーションを登録] ページで、次のように入力します。
-
[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 へ登録する方法の詳細については、「データレイクへの Amazon S3 ロケーションの追加」を参照してください。
-
Iceberg テーブルで Lake Formation の権限を付与するには
このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。
[データレイクのアクセス許可] で、[付与] を選択します。
[データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。
-
ドロップダウンリストから [
lf-consumer-analystuser] を選択します。
[名前付きの Data Catalog リソース] を選択します。
[データベース] には
lficebergdbを選択します。[Tables] (テーブル) には
productを選択します。
次に、列を指定して列ベースのアクセスを許可できます。
[テーブル許可] には [選択] を選択します。
[データのアクセス許可] で [列ベースのアクセス] を選択し、[列を含める] を選択します。
product_name、price、category列を選択します。[Grant] (付与) を選択します。
Athena を使用して Iceberg テーブルをクエリするには
ここで Athena を使用し、作成した Iceberg テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてサインアウトし、以前に CloudFormation の出力から書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョンで
lf-consumer-analystuserとしてログインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
[クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] を選択します。次のクエリを実行して、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 ジョブを実行します。
-
米国東部 (バージニア北部) リージョンで AWS Glue コンソール (https://console.aws.amazon.com/glue/
) にサインインします。 データレイク管理ユーザーとして開きます。
-
左側のナビゲーションペインで、[ジョブ] を選択します。
-
native-hudi-createを選択します。 -
[アクション] で [ジョブの編集] を選択します。
-
[ジョブの詳細] で [詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。
[保存] を選択します。
-
[Run (実行)] を選択します。実行中、ジョブのステータスを表示できます。
AWS Glue ジョブの実行についての詳細は、「AWS Glue デベロッパーガイド」の「AWS Glue コンソールでのジョブの使用」を参照してください。
このジョブは、データベース:lfhudidb に Hudi(cow) テーブルを作成します。Lake Formation コンソールの
productテーブルを確認してください。
データロケーションを Lake Formation に登録するには
次に、Amazon S3 パスをデータレイクのルートロケーションとして登録します。
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) にデータレイク管理者ユーザーとしてサインインします。 ナビゲーションペインの [登録および取り込み] で [データレイクのロケーション] を選択します。
コンソールの右上で、[ロケーションを登録] を選択します。
[ロケーションを登録] ページで、次のように入力します。
-
[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 テーブルでデータレイクのアクセス許可を付与するには
このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。
[データレイクのアクセス許可] で、[付与] を選択します。
[データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。
-
ドロップダウンから
lf-consumer-analystuser。 [名前付きのデータカタログリソース] を選択します。
[データベース] には
lfhudidbを選択します。[Tables] (テーブル) には
productを選択します。次に、列を指定して列ベースのアクセスを許可できます。
[テーブル許可] には [選択] を選択します。
[データのアクセス許可] で [列ベースのアクセス] を選択し、[列を含める] を選択します。
product_name、price、category列を選択します。[Grant] (付与) を選択します。
Athena を使用して Hudi テーブルをクエリするには
ここで Athena を使用し、作成した Hudi テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてサインアウトし、以前に CloudFormation の出力から書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョンで
lf-consumer-analystuserとしてログインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
[クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] します。次のクエリを実行して、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 ジョブを実行します。
-
米国東部 (バージニア北部) リージョンで AWS Glue コンソール (https://console.aws.amazon.com/glue/
) にサインインします。 データレイク管理ユーザーとして開きます。
-
左側のナビゲーションペインで、[ジョブ] を選択します。
-
native-delta-createを選択します。 -
[アクション] で [ジョブの編集] を選択します。
-
[ジョブの詳細] で [詳細プロパティ] を展開し、[Hive メタストアとして AWS Glue Data Catalog を使用] の横にあるチェックボックスをオンにして、テーブルメタデータを AWS Glue Data Catalog に追加します。これにより、ジョブで使用される Data Catalog リソースのメタストアとして AWS Glue Data Catalog が指定され、Lake Formation のアクセス許可を後で Data Catalog に適用できるようになります。
[保存] を選択します。
-
[アクション] で [実行] を選択します。
このジョブは、
lfdeltadbデータベースにproductという名前を付けた Delta Lake テーブルを作成します。Lake Formation コンソールのproductテーブルを確認してください。
データロケーションを Lake Formation に登録するには
次に、Amazon S3 パスをデータレイクのルートロケーションとして登録します。
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) をデータレイク管理者ユーザーとして開きます。 ナビゲーションペインの [登録および取り込み] で [データレイクのロケーション] を選択します。
コンソールの右上で、[ロケーションを登録] を選択します。
[ロケーションを登録] ページで、次のように入力します。
-
[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 テーブルでデータレイクのアクセス許可を付与するには
このステップでは、ビジネスアナリストユーザーにデータレイクのアクセス許可を付与します。
[データレイクのアクセス許可] で、[付与] を選択します。
[データのアクセス許可の付与] 画面で、[IAM ユーザーとロール] を選択します。
-
ドロップダウンから
lf-consumer-analystuser。 [名前付きのデータカタログリソース] を選択します。
[データベース] には
lfdeltadbを選択します。[Tables] (テーブル) には
productを選択します。次に、列を指定して列ベースのアクセスを許可できます。
[テーブル許可] には [選択] を選択します。
[データのアクセス許可] で [列ベースのアクセス] を選択し、[列を含める] を選択します。
product_name、price、category列を選択します。[Grant] (付与) を選択します。
Athena を使用した Delta Lake テーブルをクエリするには
ここで Athena を使用し、作成した Delta Lake テーブルに対するクエリを開始します。初めて Athena でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてログアウトし、CloudFormation 出力で前述したパスワードを使用して米国東部 (バージニア北部) リージョンで
BusinessAnalystUserとしてログインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
[クエリ結果のロケーション] ボックスで、CloudFormation 出力に作成したバケットへのパスを入力します。
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] します。次のクエリを実行して、Delta Lake テーブルに保存されている 10 個のレコードをプレビューします。
select * from lfdeltadb.product limit 10;Delta Lake テーブルをクエリする方法の詳細については、「Amazon Athena ユーザーガイド」の「Delta Lake テーブルのクエリ」を参照してください。
ステップ 5: AWS のリソースをクリーンアップする
リソースをクリーンアップするには
AWS アカウントへの不要な請求が発生しないように、このチュートリアルで使用した AWS リソースを削除します。
-
CloudFormation コンソール (https://console.aws.amazon.com/cloudformation
) に IAM 管理者としてサインインします。 -
CloudFormation スタックを削除します。作成したテーブルは、スタックと共に自動的に削除されます。