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] を選択します。
  • 次の情報を指定します。
    1. [IAM role] で、ユーザーと [AWSGlueServiceRoleDefault] を選択します。
    2. [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 の機械学習サービスの使用に関するアーキテクチャのガイダンスを提供しています。余暇には、家族と一緒にコロラドでスキーやハイキング、マウンテンバイクを楽しんでいます。