Amazon Web Services ブログ
AWS Lake Formation の開始方法
AWS Lake Formation を使用すると、安全なデータレイクをセットアップすることができます。データレイクとは、すべての構造化データと非構造化データを任意の規模で保存する、一元化され、キュレーションされた安全なリポジトリです。データは現状のままで保存でき、事前に構造化しておく必要はありません。また、ダッシュボードや視覚化から、ビッグデータ処理、リアルタイム分析、機械学習にいたるまで、さまざまな種類の分析を実行できるので、意思決定の向上につながります。
データレイクの課題
データレイク管理における主要な課題は、内容を監視せずに raw データを保存することに起因しています。レイクのデータを使用可能にするには、そのデータのカタログ化とセキュア化を行う、定義済みのメカニズムが必要です。
Lake Formation は、ガバナンス、意味的一貫性、アクセスコントロールをデータレイクに実装するためのメカニズムを提供します。Lake Formation を使うことで、データを分析や機械学習に使用しやすくなり、ビジネスにより優れた価値をもたらすことができます。
また、Lake Formation を使えば、データレイクのアクセスを制御したり、データにアクセスする人を監査したりすることができます。AWS Glue データカタログは、データアクセスのポリシーを統合して、データの送信元にかかわらずコンプライアンスを確保します。
チュートリアル
このチュートリアルでは、データレイクの構築方法と使用方法について説明します。
- データレイクの管理者を作成します。
- Amazon S3 のパスを登録します。
- データベースを作成します。
- アクセス許可を付与します。
- AWS Glue を使ってデータをクロールし、メタデータとテーブルを作成します。
- テーブルデータへのアクセス権限を付与します。
- Amazon Athena を使ってデータをクエリします。
- アクセスが制限されている新規ユーザーを追加し、結果を検証します。
前提条件
このチュートリアルを行うには以下のリソースが必要です。
- AWS アカウント。
- AWSLakeFormationDataAdmin を持つ IAM ユーザー。詳細は IAM アクセスポリシーについてのドキュメントを参照してください。
- 米国東部 (バージニア北部) の
datalake-yourname-region
という名前の S3 バケット。 - 新しい S3 バケット内にある
zipcode
という名前のフォルダ。
また、サンプルデータセットをダウンロードする必要があります。このチュートリアルではニューヨーク市の統計のテーブルを使用します。データは、DATA.GOV サイトにある、ニューヨーク市の Demographics Statistics by Zip のテーブルから入手できます。このファイルを、/zipcode フォルダにある S3 バケットにアップロードします。
これで、S3 バケットがセットアップされ、データセットが所定の位置に配置されます。さっそく Lake Formation を使ってデータレイクをセットアップしていきましょう。
ステップ 1: データレイクの管理者を作成する
まず、ご自分をデータレイクの管理者として指定し、Lake Formation のすべてのリソースにアクセスできるようにします。
ステップ 2: Amazon S3 のパスを登録する
次に、Amazon S3 のパスを登録して、データをデータレイクに追加します。
ステップ 3: データベースを作成する
次に、AWS Glue データカタログでデータベースを作成し、zipcode テーブルの定義を追加します。
- [Database] に zipcode-db と入力します。
- [Location] に、自分の S3 バケット/zipcode を入力します。
- [New tables in this database] では、[Grant All to Everyone] を選択しません。
ステップ 4: アクセス許可を付与する
次に、AWS Glue に zipcode-db データベースを使用するためのアクセス許可を付与します。[IAM role] で、ユーザーと [AWSGlueServiceRoleDefault] を選択します。
ユーザーと AWSServiceRoleForLakeFormationDataAccess に、データロケーションを使ってデータレイクを使用するためのアクセス許可を付与します。
- [IAM role] で、ユーザーと [AWSServiceRoleForLakeFormationDataAccess ] を選択します。
- [Storage locations] に、
s3://datalake-yourname-location
と入力します。
ステップ 5: AWS Glue を使ってデータをクロールし、メタデータとテーブルを作成する
このステップでは、クローラがデータストアに接続し、データのスキーマを決定するための優先付けされた分類子の一覧を通過したのち、メタデータのテーブルを AWS Glue データカタログに作成します。
AWS Glue クローラを使ってテーブルを作成します。次の設定を使用します。
- [クローラの名前]:
zipcodecrawler
。 - [Data stores]: このフィールドを選択します。
- [Choose a data store]: [S3] を選択します。
- [指定されたパス]: このフィールドを選択します。
- [インクルードパス]:
S3://datalake-yourname-location/zipcode
。 - [別のデータストアの追加]: [いいえ] を選択します。
- [既存の IAM ロールを選択]: このフィールドを選択します。
- [IAM ロール]: [AWSGlueServiceRoleDefault] を選択します。
- [オンデマンドで実行]: このフィールドを選択します。
- [データベース]: [zipcode-db] を選択します。
[Run it now?] を選択します。 クローラが停止するまで待機した後、次のステップに進みます。
ステップ 6: テーブルデータへのアクセスを付与する
他の人にデータの管理を許可するための、AWS Glue データカタログのアクセス許可を設定します。Lake Formation のコンソールを使用して、データベースにあるテーブルへのアクセスの付与および取り消しを行います。
- ナビゲーションペインで [Tables] を選択します。
- [Grant] を選択します。
- 次の情報を指定します。
- [IAM role] で、ユーザーと [AWSGlueServiceRoleDefault] を選択します。
- [Table permissions] で、[Select all] を選択します。
ステップ 7: Athena を使ってデータをクエリする
次に、Athena を使ってデータレイク内のデータをクエリします。
- Athena のコンソールで [クエリエディタ] を選択し、[zipcode-db] を選択します。
- [テーブル] を選択し、[zipcode] テーブルを選択します。
- [テーブルオプション] (テーブル名の右側にある縦に並んだ 3 つの点) を選択します。
- [テーブルのプレビュー] を選択します。
Athena が次のクエリを発行します。
SELECT * FROM “zipcode”.”zipcode” limit 10;
次のスクリーンショットを見るとわかるように、datalakeadmin ユーザーはすべてのデータを閲覧できます。
ステップ 8: アクセスが制限されている新規ユーザーを追加し、結果を検証する
このステップでは、データレイクの管理者として、特定の列へのアクセスが制限されたユーザーを設定する方法について説明します。
IAM コンソールで、user1 という管理者権限を持つ IAM ユーザーを作成し、AWSLakeFormationDataAdmin ポリシーを追加します。詳細は、「IAM ID のアクセス許可の追加および削除」を参照してください。
Lake Formation のコンソールで、user1 にアクセス許可を付与し、次の設定を行います。
- [Database]: [zipcode-db] を選択します。
- [Table]: [zipcode] を選択します。
- [Columns]: [The include columns] を選択します。
- [The include columns]: [Jurisdiction name] と [Count participants] を選択します。
- [Table permissions]: [Select]。
- [Grantable permissions]: [Select]。
制限付きアクセス許可の結果を検証するには、user1 としてログインし、ステップ 7 の手順を繰り返します。次のスクリーンショットのように、user1 は、datalakeadmin ユーザーが閲覧を許可した列のみ、閲覧することができます。
まとめ
今回の記事では、Lake Formation を使って安全なデータレイクを構築する方法についてご紹介しました。Lake Formation は、ガバナンス、意味的一貫性、アクセスコントロールを実装するためのメカニズムを提供し、データを分析や機械学習に対してより使用しやすくします。
詳細については、以下の記事を参照してください。
著者について
Gordon Heinrich は、グローバルシステムインテグレータと協力しているソリューションアーキテクトです。AWS のパートナーやお客様と連携して、データレイクの構築や AWS の機械学習サービスの使用に関するアーキテクチャのガイダンスを提供しています。余暇には、家族と一緒にコロラドでスキーやハイキング、マウンテンバイクを楽しんでいます。