はじめに
Amazon DataZone が AWS re:Invent 2022 で発表されました。IT に携わる方のみならず、ビジネス側の方にとって、わかりやすいデータカタログが構成できます。日本語の説明を見ながら、社内に存在するデータを確認ができ、データ活用に活かすことができます。2023 年 7 月時点で Public Preview 中で本番環境では利用できませんが、誰でも検証作業などはできるようになっています。
DataZone が新しく出たものの、いまいち利用のイメージがついてなかったため、簡単に触ってみた内容の共有記事です。
余談ですが、「Data Zone」と間にスペースを入れるのは間違いなので、正式名称に注意しましょう :)
DataZone 概念図
DataZone 上の概念の理解が重要なので、個人的な理解を整理しました。まだ Publish Preview 中なので、今後のアップデートで色々進化はしていくとおもいますが、現時点での個人的なスナップショットということで、載せておきます。
- トップレベルドメイン
- DataZone を作成する際にトップレベルドメインを指定して作成します。大きな論理的な枠組みと捉えて大丈夫だと思います。
- データカタログ
- DataZone にログインできる全ユーザーを対象に、登録 (Publish) された全データを検索できるデータカタログです。登録 (Publish) する人が、わかりやすい日本語を付与できるため、人にやさしいデータカタログを作成する仕組みがあります。
- ドメイン
- トップレベルドメイン配下に、事業部単位といったドメインを複数作成できます。
- プロジェクト
- ドメインに複数のプロジェクトを作成できます。プロジェクト単位にメンバーを登録して、データの登録 (Publish) やサブスクライブを提供します。
- データの登録 (Publish)
- データカタログに登録する作業を Publish と言います。Glue 上のデータカタログや Redshift 上のテーブルデータを Publish できます。
- Subscribe
- DataZone 上でサブスクライブを行うと、Athena を使った SQL クエリーが発行できます。気がついた点としては、SQL クエリーを発行しない人にとっては、現時点でサブスクライブするメリットはないです。サブスクライブはあくまで、Athena や Redshift クエリーエディターをつかって SQL を発行できる権限を取得できる、と理解するとスムーズでしょう。
- 表現を変えると、QuickSight を使うユーザーは、サブスクライブせずにデータカタログだけ参照して利用する事も考えられます。ただし、DataZone のデータカタログには、直接 QuickSight 上のデータセットを登録することは出来ない点は留意しておきましょう。QuickSight 上に Athena を使ったデータセットを登録したのちに、同様に DataZone 上に Glue DataCatalog 上の Athena テーブルを登録する方法が考えられます。
それでは、DataZone をいくつか触ってみましょう。
ドメインの作成
DataZone の画面を開きます。Region は N. Virginia(us-east-1)を選択します。(Public Preview では、Tokyo や Osaka はまだ提供されていません)
Create domain を押します。
トップレベルドメインの名前を入れます。
Corporate
ここはデフォルトです。
Identity Center が他のリージョンで有効化されていると、ワーニングが出るため注意しましょう。Identity Center は、1 AWS アカウントで 1 リージョンのみ有効にできます。既に東京リージョンで Identity Center を有効化していると、Public Preview が提供されているリージョンで Identity Center を利用できない制限が生れます。
Create Domain を押します。
Creation が走りました。
Available に変わりました。名前をクリックしてみます。
この Domain の詳細画面が見えます。
- Data portal 用の専用 URL が見えます。
- DataZone に紐づけされた AWS アカウント が見えます。
Data Source のタブも見えます。
DataPortal を開く
Sign in with AWS IAM
このような画面となっています。
トップレベルドメイン配下に 2 つのドメインを作成します。
Sales ドメインを作成します。
Sales
Sales が作成されました。
同様に Marketing も作成しました。
マネージメントコンソール上にも、作成したドメインが反映されています。
なお、Domain を作成したユーザーは、各 Domain の Data steward の Role も持っています。
IAM Identity Center の有効化
N.Virginia リージョンで、IAM Identity Center を有効化します。
IAM Identity Center には、Organizations が必須です。Create を押すと、自動的に Organizations が有効になります。
Identity Center 上で、DataZone に紐づけるユーザーを作成します。
以下の名前で適当に作成します。
sales01
Add
追加されました。
同様に、以下のユーザーを作成します。
marketing01
steward01
DataZone 側で Identity Center を有効化
DataZone 側で Identity Center を有効化します。
Enable
Enbaled になりました。
Identity Center 経由で DataZone にアクセス
Data portal URL を開いて、SIGN IN WITH SSO を選択します。
ユーザー名が求められたので、Identity Center 上のユーザー名を指定します。
サインイン
DataZone の管理者 : Project の作成
DataZone の全体管理者でプロジェクトを作成します。
Project の作成
My Project で Plus をおします。
Project の名前をいれて、SELECT DOMAIN をおします。
Sales ドメインに紐づけます。
Create Project
6 分くらいかかるっぽいです。
作成されました。
意識する必要はないですが、Project が作成された裏側で CloudFormation が実行され、Glue Database などが自動登録されていました。
Glue DataCatalog 上では、Table はありません
Project に Member の追加
プロジェクトにメンバーを追加します。
メンバーの追加画面です。SSO は Identity Center のことを表しています。それ以外にも、IAM User を指定できます。
Identity Center 上で sales01 で検索して、選択します。
Add を押します。
追加されました。
Domain に Data Steward の追加
ドメインに Data Steward を追加します。Data Steward は、データの品質を管理を行うための役割です。各ドメインごとに Data Steward を用意できます。
Data Steward に Add を押します。
Identity User の steward01 を追加
追加されました。
Project で Publishing Agreements の作成
Publishing Agreements を作成します。データを Publish する際に、レビュー必須有無や、レビューする人を指定します。
名前を指定します。
以下のような選択肢がある。データの管理を誰がどのようにおこなうのかという事前定義です。
- REQUIRE DOMAIN PUBLISHING APPROVAL
- True : データを Publish する際に、Data Steward のレビューを必須にする
- False : Publisher は、データのレビューを Data Steward に依頼することもできるし、レビューせずに公開することも出来る
- ALLOW SUBSCRIPTIONS :
- All data assets : すべてのデータへの Subscription を有効にする
- None : Publisher は、Publish したデータの Subscription を有効にできない
- REQUIRE SUBSCRIPTION APPROVAL
- True : Subscription をするためには、Subscription Approver から承認が必要
- False : Subscription に、Subscription Approver から承認は不要
- SUBSCRIPTION APPROVER: Publisher
- Publisher : Subscription Approver を Publisher にする
- Data Steward : Subscription Approver を Data Steward にする
- TERM : No term
- URL を入力できそうだったが、よくわからなかった
Edit
True にして、Data Steward の承認を必要にする
Subscription Approver を Edit する
Data Steward に変更
右上の Submit
Approve
Publishing Agreements が作成されました。
ビジネスメタデータの設定
Business glossariesの設定
会社独自の用語を DataZone に定義できます。ここでは、情報の公開可能範囲を規定する「情報区分」と、「販売地域」を登録します。
Business Glossaries を選択
Add
「情報区分」を指定します。
Create Child Term で、ビジネス用語を追加します。
Create
3 つ分定義しました。
それぞれ、Enable にします。
追加のビジネス用語として、販売地域も定義しました。
Metadata forms の入力
ここでは、セールスに関するメタデータフォームを設定します
地域、区分を指定します。
Create
メタデータ名を入れて、Create Form を押します。
Create Field を押します。
地域をフィールド名にして、Business Glosarry を選択します。
販売地域を選択します。
Create Field を押します。
区分も作成します。
Enable
データのパブリッシュ
データをデータカタログに公開する手順を確認していきます。
データを S3 にアップロード
DataZone 上に作成した sales-project に紐づく S3 Bucket を確認します。
S3 URI をメモります。
s3://datazone-proj-sr2ioyq4enf7a-1688109875871
マネージメントコンソール上でも、S3 Bucket が確認できます。
この S3 バケットに csv データを格納します。実際には、自動的に格納するために ETL フローなどを整理することになりそうです。Create Folder を押します。
order フォルダー
order.csv を格納します。中身はこんな感じです。
order_number,customer_id,customer_name,age,category,store_id,stora_name,loc,product_id,product_name,quontity,price,date
111222333,1,customer1,30,standard,1,store1,loc1,1,product1,78,7800,2023/02/01
111222334,2,customer2,40,standard,1,store1,loc1,2,product2,55,11000,2023/02/01
111222335,3,customer3,20,premium,1,store1,loc1,3,product3,48,14400,2023/02/01
111222336,1,customer1,30,standard,1,store1,loc1,4,product4,56,22400,2023/02/01
111222337,2,customer2,40,standard,2,store2,loc2,1,product1,200,20000,2023/02/01
111222338,3,customer3,20,premium,2,store2,loc2,2,product2,104,20800,2023/02/01
111222339,1,customer1,30,standard,2,store2,loc2,3,product3,144,43200,2023/02/01
111222340,2,customer2,40,standard,2,store2,loc2,4,product4,99,39600,2023/02/01
111222341,3,customer3,20,premium,3,store3,loc1,1,product1,80,8000,2023/02/01
111222342,1,customer1,30,standard,3,store3,loc1,2,product2,96,19200,2023/02/01
111222343,2,customer2,40,standard,3,store3,loc1,3,product3,140,42000,2023/02/01
111222344,3,customer3,20,premium,3,store3,loc1,4,product4,108,43200,2023/02/01
111222345,1,customer1,30,standard,3,store3,loc1,4,product4,162,64800,2023/02/01
111222346,2,customer2,40,standard,1,store1,loc1,1,product1,19,1900,2023/02/02
111222347,3,customer3,20,premium,1,store1,loc1,2,product2,99,19800,2023/02/02
111222348,1,customer1,30,standard,1,store1,loc1,3,product3,52,15600,2023/02/02
111222349,2,customer2,40,standard,1,store1,loc1,4,product4,91,36400,2023/02/02
111222350,3,customer3,20,premium,2,store2,loc2,1,product1,119,11900,2023/02/02
格納しました。
Glue Crawler で S3 に格納したデータを読み取り
Create Crawler を作成します。
sales-project01 という名前を付けます。
Add a data source を押します。
S3 Path を次のように指定します。
s3://datazone-proj-sr2ioyq4enf7a-1688109875871/order/
Next
IAM Role を付与して Next
オンデマンドスケジュールで Next
Create crawler を押します。
手動で Crawler を実行します。
この結果、Table order
が認識されました。
Option : Glue Crawler で Table が登録されなかったとき
Lake Formation の画面を開く
マネージメントコンソールを操作してる IAM Role や User を紐づける
追加されました。
権限付与した後に、再度 Crawler の実行は不要で、そのまま画面に表示されました。
sales01 ユーザー: DataZone にデータを Publish
sales01 ユーザーで実行します。DataZone にデータを Publish して、データカタログに登録してみます。
Project の中で、Publish Data を押します。
データを Publish するときに、Publishing Aggrement を選択します。
Data source に、Glue を選択します。そして、Database name に、 Glue 上のデータベース名の「salesproject_pub_db」を指定します。Glue の Data Catalog に自動生成されている Database の名前です。
Create を押します。
REQUESTED となる。数分後、RUNNING となり、
数分後、SUCCESS で、Asset: Added が 1 となっていることが確認できます。
Publishing Job の結果、Order テーブルが見えています。無事に、Glue DataCatalog 上にある Table が認識されました。
sales01 ユーザー : データカタログの編集と申請
認識された order テーブルにわかりやすい日本語の説明を付与して、データカタログに公開します。
Edit name and description を押します。
このテーブルの日本語名「注文情報」と説明「セールス部門が管理する注文情報」を入れます。
名前が変わっています。Add metadata form を押します。
ビジネス上の専用用語として、事前に登録したセールスを指定します。
Edit を押します。
クリック
地域に事前定義したアジアを指定します。
アジア 1 つのみ選択可能
同様に区分も指定します。
テーブル上のスキーマにも、日本語の説明を入力できます。
注文番号
指定できました。
Submit for review で、レビュー申請ができます。
data steward からのレビュー待ちになりました。
steward01 ユーザー : Data Publish のレビュー
Data Steward でログインしたら、トップページにレビュー依頼が来ています。
レビューの中で見えるものは以下の情報です。 ※ このテーブルに含まれている実際のデータを確認するには、Athena など直接触らないといけない。DataZone 画面内では確認できない。
- テーブル名
- カラム名
Approve を押します
公開されました
sales01 ユーザー : Publish されたことを確認
Published になっています。
DataZone の Data Catalog 上でも、登録した注文情報が登録されていることがわかります。
sales01 ユーザー : データカタログを検索
DataZone にログインできる全ユーザーでデータカタログを検索できます。画面上の検索ボックスで、注文を入れると、注文情報が表示されました。
データカタログ上では、次の情報が確認できます。
- 日本語のテーブルのタイトル
- 日本語のテーブルの説明
- メタデータ
- スキーマ
データのサブスクライブ
データのサブスクライブを行い、SQL クエリーを実行できるようにします。
コンシューマープロジェクトの作成
コンシューマー用のプロジェクトを作成します。
プロジェクトが作成されました。
メンバーに、market01 ユーザーを追加しました。
markeing01 ユーザー : データのサブスクライブ
marketing01 ユーザーでログインし、上の検索ボックスで「注文」と検索します。
注文情報の内容を確認し、サブスクライブを押します。
Subscriebe 先の Project と理由を記載します。
Pending : レビュー待ちになりました。
steward01 ユーザー : Subscribe の承認
Data Steward 側でサブスクライブのリクエストが来ています。
view request で確認します。
Approve を押します。
Approved になりました。
marketing01 ユーザー : データの確認
サブスクライブ申請元では、承認されており、注文情報が見えます。
サブスクライブが承認されたことにより、Athena 上で SQL クエリーが発行できるようになりました。画面右側にある Query data を押します。
Athena 上で SQL クエリーが実行可能です。
このように検索が可能です。
検証を通じてわかったこと
- 1 個の DataZone に複数の AWS アカウントを紐づけることが可能。ただし、同じ Organizations に所属している AWS アカウントである必要があるため、全く関係ない AWS アカウントは紐づけができない。
- DataZone の DataPortal 画面の認証機能は、「AWS IAM 連携」と「IAM Identity Center 連携」の 2 種類となる。
- IAM Identity Center は、1 個の AWS アカウントで 1 リージョンのみ有効化できる。Tokyo Region で有効化していたら、他のリージョンで使えないため注意
- Business Glossary で、社内用語を定義可能。日本語も利用可能。
- データを Publish すると、DataZone にログインできる人全員に対して DataCatalog が公開される。Domain や Project によって制限されない。
- ユーザーがメンバーとして参加していない Project についても、Web UI 上で存在だけは確認できる出来る。
- データのサブスクライブの申請が承認されると、申請元 Project に所属している人全員が Athena で SQL クエリーが発行できるようになる。申請した人ではなく、申請元 Project に紐づく。
参考 URL