3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon DataZone を構築してみた

Posted at

はじめに

Amazon DataZone が AWS re:Invent 2022 で発表されました。IT に携わる方のみならず、ビジネス側の方にとって、わかりやすいデータカタログが構成できます。日本語の説明を見ながら、社内に存在するデータを確認ができ、データ活用に活かすことができます。2023 年 7 月時点で Public Preview 中で本番環境では利用できませんが、誰でも検証作業などはできるようになっています。

DataZone が新しく出たものの、いまいち利用のイメージがついてなかったため、簡単に触ってみた内容の共有記事です。

余談ですが、「Data Zone」と間にスペースを入れるのは間違いなので、正式名称に注意しましょう :)

DataZone 概念図

DataZone 上の概念の理解が重要なので、個人的な理解を整理しました。まだ Publish Preview 中なので、今後のアップデートで色々進化はしていくとおもいますが、現時点での個人的なスナップショットということで、載せておきます。

image-20230709142153884.png

  • トップレベルドメイン
    • 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 はまだ提供されていません)

image-20230630112723637.png

Create domain を押します。

image-20230630115629803.png

トップレベルドメインの名前を入れます。

Corporate

image-20230630115803899.png

ここはデフォルトです。

image-20230630152024512.png

Identity Center が他のリージョンで有効化されていると、ワーニングが出るため注意しましょう。Identity Center は、1 AWS アカウントで 1 リージョンのみ有効にできます。既に東京リージョンで Identity Center を有効化していると、Public Preview が提供されているリージョンで Identity Center を利用できない制限が生れます。

image-20230630115829398.png

Create Domain を押します。

image-20230630115840082.png

Creation が走りました。

image-20230630115911292.png

Available に変わりました。名前をクリックしてみます。

image-20230630123835760.png

この Domain の詳細画面が見えます。

  • Data portal 用の専用 URL が見えます。
  • DataZone に紐づけされた AWS アカウント が見えます。

image-20230630133413947.png

Data Source のタブも見えます。

image-20230630133714179.png

DataPortal を開く

image-20230630133944601.png

Sign in with AWS IAM

image-20230630134053067.png

このような画面となっています。

image-20230630134301830.png

トップレベルドメイン配下に 2 つのドメインを作成します。

image-20230630140318696.png

Sales ドメインを作成します。

Sales

image-20230630140340611.png

Sales が作成されました。

image-20230630152405528.png

同様に Marketing も作成しました。

image-20230630152447610.png

マネージメントコンソール上にも、作成したドメインが反映されています。

image-20230630140650963.png

なお、Domain を作成したユーザーは、各 Domain の Data steward の Role も持っています。

image-20230630140945920.png

IAM Identity Center の有効化

N.Virginia リージョンで、IAM Identity Center を有効化します。

image-20230630152633487.png

IAM Identity Center には、Organizations が必須です。Create を押すと、自動的に Organizations が有効になります。

image-20230630152725589.png

Identity Center 上で、DataZone に紐づけるユーザーを作成します。

image-20230630153058921.png

以下の名前で適当に作成します。

sales01

image-20230630153303080.png

Add

image-20230630153317367.png

追加されました。

image-20230630153335736.png

同様に、以下のユーザーを作成します。

marketing01
steward01

image-20230630154259300.png

DataZone 側で Identity Center を有効化

DataZone 側で Identity Center を有効化します。

image-20230630160023961.png

Enable

image-20230630160045953.png

Enbaled になりました。

image-20230630160135345.png

Identity Center 経由で DataZone にアクセス

Data portal URL を開いて、SIGN IN WITH SSO を選択します。

image-20230630160617465.png

ユーザー名が求められたので、Identity Center 上のユーザー名を指定します。

image-20230630160726939.png

サインイン

image-20230630160738626.png

DataZone の管理者 : Project の作成

DataZone の全体管理者でプロジェクトを作成します。

Project の作成

My Project で Plus をおします。

image-20230630161717527.png

Project の名前をいれて、SELECT DOMAIN をおします。

image-20230630162108574.png

Sales ドメインに紐づけます。

image-20230630162140494.png

Create Project

image-20230630162250177.png

6 分くらいかかるっぽいです。

image-20230630162327961.png

作成されました。

image-20230630162809202.png

意識する必要はないですが、Project が作成された裏側で CloudFormation が実行され、Glue Database などが自動登録されていました。

image-20230630163611036.png

Glue DataCatalog 上では、Table はありません

image-20230630163630744.png

Project に Member の追加

プロジェクトにメンバーを追加します。

image-20230630164218284.png

メンバーの追加画面です。SSO は Identity Center のことを表しています。それ以外にも、IAM User を指定できます。

image-20230630164431774.png

Identity Center 上で sales01 で検索して、選択します。

image-20230630164534627.png

Add を押します。

image-20230630164559110.png

追加されました。

image-20230630164623997.png

Domain に Data Steward の追加

ドメインに Data Steward を追加します。Data Steward は、データの品質を管理を行うための役割です。各ドメインごとに Data Steward を用意できます。

image-20230630181340496.png

Data Steward に Add を押します。

image-20230630181510150.png

Identity User の steward01 を追加

image-20230630181540390.png

追加されました。

image-20230630181603621.png

Project で Publishing Agreements の作成

Publishing Agreements を作成します。データを Publish する際に、レビュー必須有無や、レビューする人を指定します。

image-20230630182327977.png

名前を指定します。

image-20230630182422430.png

以下のような選択肢がある。データの管理を誰がどのようにおこなうのかという事前定義です。

  • 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 を入力できそうだったが、よくわからなかった

image-20230630182603165.png

Edit

image-20230701142818532.png

True にして、Data Steward の承認を必要にする

image-20230701142834597.png

Subscription Approver を Edit する

image-20230701142925002.png

Data Steward に変更

image-20230701143205098.png

右上の Submit

image-20230701143228265.png

Approve

image-20230701143254664.png

Publishing Agreements が作成されました。

image-20230701143315919.png

ビジネスメタデータの設定

Business glossariesの設定

会社独自の用語を DataZone に定義できます。ここでは、情報の公開可能範囲を規定する「情報区分」と、「販売地域」を登録します。

Business Glossaries を選択

image-20230701145525621.png

Add

image-20230701145608941.png

「情報区分」を指定します。

image-20230701145641321.png

Create Child Term で、ビジネス用語を追加します。

image-20230701145752717.png

Create

image-20230701145908132.png

3 つ分定義しました。

image-20230701145958001.png

それぞれ、Enable にします。

image-20230701150017981.png

追加のビジネス用語として、販売地域も定義しました。

image-20230701150221259.png

Metadata forms の入力

ここでは、セールスに関するメタデータフォームを設定します
地域、区分を指定します。

Create

image-20230701150655816.png

メタデータ名を入れて、Create Form を押します。

image-20230701150729429.png

Create Field を押します。

image-20230701150757704.png

地域をフィールド名にして、Business Glosarry を選択します。

image-20230701150920771.png

販売地域を選択します。

image-20230701150953746.png

Create Field を押します。

image-20230701151017074.png

区分も作成します。

image-20230701151057800.png

Enable

image-20230701151136070.png

データのパブリッシュ

データをデータカタログに公開する手順を確認していきます。

データを S3 にアップロード

DataZone 上に作成した sales-project に紐づく S3 Bucket を確認します。

image-20230701162821535.png

S3 URI をメモります。

s3://datazone-proj-sr2ioyq4enf7a-1688109875871

image-20230701162850986.png

マネージメントコンソール上でも、S3 Bucket が確認できます。

image-20230701162949724.png

この S3 バケットに csv データを格納します。実際には、自動的に格納するために ETL フローなどを整理することになりそうです。Create Folder を押します。

image-20230701163036321.png

order フォルダー

image-20230701163058844.png

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

格納しました。

image-20230701163218415.png

Glue Crawler で S3 に格納したデータを読み取り

Create Crawler を作成します。

image-20230701171705834.png

sales-project01 という名前を付けます。

image-20230701171739883.png

Add a data source を押します。

image-20230701171805171.png

S3 Path を次のように指定します。

s3://datazone-proj-sr2ioyq4enf7a-1688109875871/order/

image-20230701171848691.png

Next

image-20230701171905502.png

IAM Role を付与して Next

image-20230701171942989.png

オンデマンドスケジュールで Next

image-20230701172026740.png

Create crawler を押します。

image-20230701172048051.png

手動で Crawler を実行します。

image-20230701172100284.png

この結果、Table order が認識されました。

image-20230701215839599.png

Option : Glue Crawler で Table が登録されなかったとき

Lake Formation の画面を開く

image-20230701172531061.png

マネージメントコンソールを操作してる IAM Role や User を紐づける

image-20230701172609570.png

追加されました。

image-20230701172627194.png

権限付与した後に、再度 Crawler の実行は不要で、そのまま画面に表示されました。

image-20230701172706831.png

sales01 ユーザー: DataZone にデータを Publish

sales01 ユーザーで実行します。DataZone にデータを Publish して、データカタログに登録してみます。

image-20230701210304854.png

Project の中で、Publish Data を押します。

image-20230701210435251.png

データを Publish するときに、Publishing Aggrement を選択します。

image-20230701210525482.png

Data source に、Glue を選択します。そして、Database name に、 Glue 上のデータベース名の「salesproject_pub_db」を指定します。Glue の Data Catalog に自動生成されている Database の名前です。

image-20230701210844067.png

Create を押します。

image-20230701210858404.png

REQUESTED となる。数分後、RUNNING となり、

image-20230701210954374.png

数分後、SUCCESS で、Asset: Added が 1 となっていることが確認できます。

image-20230701215552347.png

Publishing Job の結果、Order テーブルが見えています。無事に、Glue DataCatalog 上にある Table が認識されました。

image-20230701215654919.png

sales01 ユーザー : データカタログの編集と申請

認識された order テーブルにわかりやすい日本語の説明を付与して、データカタログに公開します。

image-20230701215752840.png

Edit name and description を押します。

image-20230701220124576.png

このテーブルの日本語名「注文情報」と説明「セールス部門が管理する注文情報」を入れます。

image-20230701220236228.png

名前が変わっています。Add metadata form を押します。

image-20230701220436833.png

ビジネス上の専用用語として、事前に登録したセールスを指定します。

image-20230701220953514.png

Edit を押します。

image-20230701221026138.png

クリック

image-20230701221055426.png

地域に事前定義したアジアを指定します。

image-20230701221112607.png

アジア 1 つのみ選択可能

image-20230701221137556.png

同様に区分も指定します。

image-20230701221207025.png

テーブル上のスキーマにも、日本語の説明を入力できます。

image-20230701221249610.png

注文番号

image-20230701221329126.png

指定できました。

image-20230701221401449.png

Submit for review で、レビュー申請ができます。

image-20230701221737420.png

data steward からのレビュー待ちになりました。

image-20230701221811090.png

steward01 ユーザー : Data Publish のレビュー

Data Steward でログインしたら、トップページにレビュー依頼が来ています。

image-20230701222726832.png

レビューの中で見えるものは以下の情報です。 ※ このテーブルに含まれている実際のデータを確認するには、Athena など直接触らないといけない。DataZone 画面内では確認できない。

  • テーブル名
  • カラム名

Approve を押します

image-20230701224016048.png

公開されました

image-20230701224104656.png

sales01 ユーザー : Publish されたことを確認

Published になっています。

image-20230701224221667.png

DataZone の Data Catalog 上でも、登録した注文情報が登録されていることがわかります。

image-20230701224334891.png

sales01 ユーザー : データカタログを検索

DataZone にログインできる全ユーザーでデータカタログを検索できます。画面上の検索ボックスで、注文を入れると、注文情報が表示されました。

image-20230701224455049.png

データカタログ上では、次の情報が確認できます。

  • 日本語のテーブルのタイトル
  • 日本語のテーブルの説明
  • メタデータ
  • スキーマ

image-20230701224513075.png

データのサブスクライブ

データのサブスクライブを行い、SQL クエリーを実行できるようにします。

コンシューマープロジェクトの作成

コンシューマー用のプロジェクトを作成します。

image-20230701230716803.png

プロジェクトが作成されました。

image-20230701231233765.png

メンバーに、market01 ユーザーを追加しました。

image-20230701231741945.png

markeing01 ユーザー : データのサブスクライブ

marketing01 ユーザーでログインし、上の検索ボックスで「注文」と検索します。

image-20230701233223457.png

注文情報の内容を確認し、サブスクライブを押します。

image-20230701233340140.png

Subscriebe 先の Project と理由を記載します。

image-20230701233434912.png

Pending : レビュー待ちになりました。

image-20230701233456352.png

steward01 ユーザー : Subscribe の承認

Data Steward 側でサブスクライブのリクエストが来ています。

image-20230701233743687.png

view request で確認します。

image-20230701234730489.png

Approve を押します。

image-20230701234759741.png

Approved になりました。

image-20230701234826339.png

marketing01 ユーザー : データの確認

サブスクライブ申請元では、承認されており、注文情報が見えます。

image-20230701235046644.png

サブスクライブが承認されたことにより、Athena 上で SQL クエリーが発行できるようになりました。画面右側にある Query data を押します。

image-20230701235201969.png

Athena 上で SQL クエリーが実行可能です。

image-20230701235313099.png

このように検索が可能です。

image-20230701235319498.png

検証を通じてわかったこと

  • 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

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?