LoginSignup
8
6

More than 3 years have passed since last update.

【備忘録・まとめ】AWS Lake Formation

Last updated at Posted at 2019-09-10

出典

AWS Lake Formation - Developer Guide

まとめ

  • WebコンソールないしシンプルなAPIから操作、管理できるGlueおよびIAMのラッパー
  • Lake Formationからできること
    • DataCatalogのDatabaseおよびTableの作成と管理
    • BlueprintによるGlueのWorkflow作成および管理と実行
    • IAM UserまたはRoleに対するDataCatalogへの各種権限のGrant及びRevoke
  • S3 / Glue / Athena (Redshift Spectrum) のスタックで構成される集計環境が、RDBMSの様な操作感で使える

要点

Lake Formation用語

  • Data Lake
    • Data Catalogを用いてLake Formationにより管理されているS3のデータ
  • Blueprint
    • Workflowを作るためのテンプレート
    • 典型的な各種データソースおよび出力データタイプについてテンプレートが用意されている
  • Workflow
    • ETL処理のひとまとまり
      • Glue crowlers / jobs / triggers
    • Workflowに必要なRoleを割り当てて、ETL処理を走らせることになる
    • 以下を引数にとる
      • Data source / Data target / schedule
  • Data Catalog
    • Glue Data Catalogのそれ
    • Hiveメタストア
  • Principal
    • IAM User / Role
    • DataCatalogへのアクセス権をGrant / Revokeする対象

LakeFormationにおけるユーザ・権限管理

LakeFormationでは、IAM Userに対して各種ポリシーをアタッチしてDataLakeAdministratorとし、そのIAM UserでDataLakeの管理をしていく事になる。一般のRDBMSで言うところのroot権限の様なものと考えれば分かりやすい。具体的な手順はこのへんを参照。

Administratorへアタッチする権限は主に4つ。
LakeFormationから呼び出す関連サービス(Glue/Athena、必要な場合はCloudTrailなど)の全権限もアタッチしておく。

  • AWSGlueConsoleFullAccess (AWS managed)
  • AmazonAthenaFullAccess (AWS managed)
  • LakeFormationおよび関連リソースの各種操作権限
  • 新設したWorkflowにRoleを設定する権限

これらの権限をアタッチしたユーザを、LakeFormationにAdministrator登録することで、LakeFormationからの全操作が可能になる。

同様に、データ分析者相当のIAM Userには相応の権限を付与することになる。具体的な手順はこのへん

利用者毎に適宜IAM Userを払い出し、Policyを付与しておく。

ざっくり使い方

  1. WorkflowにアタッチするPolicyを用意する
  2. DataLake用S3バケット(ETL処理後の集計可能なデータを入れておく場所)を用意する
    • このバケットをLakeFormationに設定すると、この後DataCatalogに作成するDatabaseのデフォルトのバケットになる
    • このバケットに対してWorkflowがDatabaseやTableを作るのに使う権限を設定する
  3. DataCatalogにDatabaseを作成する
  4. 作成したDatabaseのデータに対する、各ユーザの権限を設定する
  5. Blueprintを使って、Workflowを作成する
    • ここで、以下のパラメータを指定する
      • DataCatalogのDatabaseおよびテーブル(Prefix)名
      • DataLakeとなるS3バケット
      • 出力データフォーマット
      • Workflowが用いるIAM Role
      • 実行スケジュール(常時手動実行も可)
  6. Workflowを実行する
  7. Workflowによって作成されたTableにGrant Selectする
  8. めでたくAthenaでクエリが叩けるようになる

所感

  • 最初の諸々権限設定が結構めんどくさい
  • CDKでコード管理したい
  • 管理のベストプラクティスなんかが出揃うまで、もう少し時間がかかりそう
    • あるいは、研究すべし
  • ETLの処理、権限管理、およびデータソース、整形後データベースが一元管理できるので、上手く使えるとかなり強力そう
  • Workflowのリトライやアラート処理、進捗の可視化なんかを考えると、Workflowは全部OnDemand実行にして、StepFunctionに寄せたりしたい気持ちが出てくる
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6