翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Lake Formation は、Apache Iceberg
注記
AWS 分析サービスは、すべてのトランザクションテーブル形式をサポートしているわけではありません。詳細については、「他の AWS サービスの使用」を参照してください。このチュートリアルでは、 AWS Glue ジョブのみを使用して、データカタログに新しいデータベースとテーブルを手動で作成する方法について説明します。
このチュートリアルには、クイックセットアップ用の 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
データレイク管理者を作成するには
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) に管理者ユーザーとしてサインインします。このチュートリアルでは、米国東部 (バージニア北部) リージョンにリソースを作成します。 -
ナビゲーションペインの Lake Formation コンソールの [許可] で [管理ロールとタスク] を選択します。
-
[データレイク管理者] で [管理者を選択] を選択します。
-
ポップアップウィンドウの [データレイク管理者の管理] の [IAM ユーザーとロール] で、[IAM 管理者ユーザー] を選択します。
-
[Save] を選択します。
データレイク設定を有効にするには
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) を開きます。ナビゲーションペインの [Data catalog] で [Settings] (設定) を選択します。次のチェックを外します。 新しいデータベースには IAM アクセスコントロールのみを使用する。
-
新しいデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する。
-
[クロスアカウントバージョン設定] で、クロスアカウントバージョンとして [バージョン 3] を選択します。
-
[Save] を選択します。
Amazon Athena エンジンをバージョン 3 にアップグレードするには
-
https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 -
[ワークグループ] を選択し、プライマリワークグループを選択します。
-
ワークグループのバージョンが 3 以上であることを確認してください。そうでない場合は、ワークグループを編集し、[クエリエンジンのアップグレード] で [手動] を選択し、バージョン 3 を選択します。
[Save changes] (変更の保存) をクリックします。
ステップ 1: リソースをプロビジョニングする
このセクションでは、 AWS CloudFormation テンプレートを使用して AWS リソースを設定する方法を示します。
AWS CloudFormation テンプレートを使用して リソースを作成するには
米国東部 (バージニア北部) AWS CloudFormation リージョンの IAM 管理者として https://console.aws.amazon.com/cloudformation
://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://http [スタックの起動]
を選択します。 [Create Stack] (スタックの作成) 画面で、[Next] (次へ) を選択します。
[Stack name] (スタック名) を入力します。
[Next (次へ)] を選択します。
次のページで、[Next] (次へ) を選択します。
最終ページの詳細を確認し、IAM リソースを作成する AWS CloudFormation 可能性があることを確認します。
[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 バケットなどのリソースにアクセスするために必要なポリシーがアタッチされています。
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 テーブルのアクセス許可をセットアップする
このセクションでは、 で Iceberg テーブルを作成し AWS Glue Data Catalog、 でデータアクセス許可を設定し AWS Lake Formation、Amazon Athena を使用してデータをクエリする方法について説明します。
Iceberg テーブルを作成するには
このステップでは、データカタログに 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 のアクセス許可をカタログリソースに適用できるようにします。
[Save] を選択します。
-
[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 でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてサインアウトし、 AWS CloudFormation 出力から前に書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョン
lf-consumer-analystuser
で としてサインインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
クエリ結果の場所 ボックスに、 AWS CloudFormation 出力で作成したバケットへのパスを入力します。
AthenaQueryResultLocation
(s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] を選択します。次のクエリを実行して、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 ジョブを実行します。
-
米国東部 (バージニア北部) リージョンで 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 のアクセス許可をカタログリソースに適用できるようにします。
[Save] を選択します。
-
[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 でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてサインアウトし、 AWS CloudFormation 出力から前に書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョン
lf-consumer-analystuser
で としてサインインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
クエリ結果の場所 ボックスに、 AWS CloudFormation 出力で作成したバケットへのパスを入力します。
AthenaQueryResultLocation
(s3://lf-otf-tutorial-123456789012/athena-results/) の値をコピーして、[保存] します。次のクエリを実行して、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 ジョブを実行します。
-
米国東部 (バージニア北部) リージョンで 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 のアクセス許可をカタログリソースに適用できるようにします。
[Save] を選択します。
-
[アクション] で [実行] を選択します。
このジョブは、
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 でクエリを実行する場合は、クエリ結果の場所を設定する必要があります。詳細については、「クエリ結果の場所の指定」を参照してください。
データレイク管理者ユーザーとしてログアウトし、 AWS CloudFormation 出力から前に書き留めたパスワードを使用して、米国東部 (バージニア北部) リージョン
BusinessAnalystUser
で としてログインします。https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 [設定] を選択し、[管理] を選択します。
クエリ結果の場所 ボックスに、 AWS 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 リソースを削除します。
-
IAM 管理者として AWS CloudFormation https://console.aws.amazon.com/cloudformation
://https://https://https://https://https://https://https://https://https://https://https://https:// -
CloudFormation スタックを削除します。作成したテーブルは、スタックと共に自動的に削除されます。