【AWS】Datazoneのプレビュー版が出たので概要を纏めてみました

## はじめに

こんにちは。
つい先日AWSでDatazoneのプレビュー版が開始されました。AWSが展開するデータカタログということで期待値も高いのではないでしょうか。
簡単なチュートリアルの実施とドキュメントをざっくり読んだだけですが、自分用に概要を纏めます。
チュートリアルを実施したのみで各種検証は実施しておりません。内容が間違っている可能性もございますのでご注意下さい。

## 全体イメージ

![datazone_fix.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3300248/699a1ee7-73fc-f4af-82de-f370f4eab857.jpeg)

## 各種詳細

### ①Datazone

- ビジネスデータカタログをコアサービスとしたデータ利用サービス
- ユーザーはDataportalという専用のIFから利用する。AWS管理コンソールとは別のIF
- ネイティブで対応しているデータアセットは以下2つ
  - Redshiftテーブル（ビュー）
  - Lakeformationで管理されているGlueテーブル
- プロジェクトという単位でデータカタログへデータアセットの登録•購読やデータ利用が行われる
  - プロジェクトで利用可能なデータアセットをデータカタログへパブリッシュすることで登録ができる
  - データカタログを検索してデータアセットをプロジェクトへサブスクライブすることで、利用出来なかったデータが利用可能となる
  - プロジェクトで利用可能なサービス（例えば、Athena）で、利用可能なデータアセット（例えば、Salesテーブル）を参照できる
- 複数アカウントのデータアセットを1つのデータカタログで統合できる
- データアクセス等のIAM権限管理は基本的にDatazoneが管理してくれるので楽に運用できると思う
- プロジェクトから利用できるデータ参照サービスはAthenaとRedshiftの為、データ利用まで含める場合SQLユーザー用のサービス
- ただしデータカタログのみの利用も可能なため、BIユーザーもデータカタログサービスとして利用は可能

### ②Domain

- Datazoneの各種リソースが含まれるトップレベルの名前空間のようなイメージ
- 最初に作成するドメインはルートドメインとなる
- ルートドメインに紐づいた子ドメインを作成することも可能
    - ドメインを分けることにどのような意味が生まれるのかは分かってない

### ③Datacatalog

- データアセットのメタ情報を管理するカタログ
- ユーザーはデータカタログで各種データアセットの検索が可能
- Glueデータカタログをビジネス用に拡張したイメージ
  - 裏ではGlueデータカタログ、Lakeformationも利用されている
- ネイティブで対応しているデータアセットは以下の2つ
  - Lakeformationで管理されているGlueテーブル
  - Redshiftテーブル
  - 上記以外（例えば、Lakeformationで管理されていないGlueテーブル）でもデータカタログへの登録はできそう
  - ただしデータアセットの利用権限をDatazoneでは管理できないという制限がある  
- ビジネス用にメタデータをリッチにすることも可能 

### ④Project

- Datazone内で各種アクションを実行するときの主体
    - データカタログの検索等はユーザー個人となるので一部例外はある
- ユーザーやロールをまとめたグループのようなイメージ
- 登録されたユーザー•ロールのみがプロジェクトを利用できる
- プロジェクト自体に各種ロールが付与されているため、Datazone内からの各種アクションは（ユーザー•ロール個人ではなく）プロジェクトの権限で実行される
- プロジェクトからデータカタログへデータアセットの登録•購読やデータ利用等を行う
- プロジェクト毎に利用可能なデータアセットが異なる（例えば、データベースAは利用可能だが、データベースBは利用不可）
- プロジェクト毎に利用可能なサービスが異なる（例えば、Athenaは利用可能だが、Redshiftは利用不可）
  - 基本的には以下2つのサービスでデータ参照が可能
    - Athena
    - Redshift

### ⑤Dataportal

- データ利用者用のポータル
- データポータルからプロジェクト等のDatazoneリソースにアクセスする
- 勿論、データカタログを利用したデータアセットの検索も可能
- AWS管理コンソールとは別のIF

### ⑥Accountの紐付け

- ドメインを所有しているAWSアカウント以外のAWSアカウントとドメインを紐付けることが可能
- アカウント紐づけを行うことでアカウント内のデータアセットをドメイン内のデータカタログに登録することが可能
    - つまり、複数のAWSアカウントのデータアセットを1つのデータカタログで管理することが可能
- ルートドメインを所有しているAWSアカウントと同じ組織内のAWSアカウントのみ紐付け可能
- 任意のドメインとAWSアカウントを紐付けると、紐付けたドメインとは別のルートドメイン（の子ドメイン）と紐づけることが不可能となる
    - 関連するドメインであれば紐付け可能（例えば、ルートドメインとその子ドメインと紐づける）

### ⑦Data sorcre登録

- ドメインと紐づいているAWSアカウントのデータアセットをプロジェクトから参照可能とするための機能
- データソース登録を行うことで、プロジェクトからデータアセットの参照が可能となる。それによって、プロジェクトからデータアセットをデータカタログへパブリッシュ（登録）することが可能となる。
- つまり、AWSアカウントの紐付けとデータソース登録を実施することで、任意のAWSアカウントのデータアセットをデータカタログに登録可能となる

### ⑧Publish

- プロジェクトから利用可能なデータアセットをデータカタログへ登録すること
- 登録されたデータアセットはデータカタログから検索可能となる
- パブリッシュにあたっては以下の作成も必要（デフォルトの利用も可能）　
  - publishing agreement
    - パブリッシュに関わる各種設定 
    - パブリッシュするデータアセットに対してサブスクライブを許可するかどうか等を設定する
  - publishing job
    - データアセットをデータカタログへパブリッシュするためのジョブ
    - ジョブはスケジュール実行も可能。恐らくそれによって、テーブルが新規追加されたとき自動的にパブリッシュされる
- パブリッシュされた際にメタデータをリッチにすることも可能
- パブリッシュ時にデータスチュワードによるレビューの実施も可能そう

### ⑨Subscribe

- データカタログを検索して必要なデータアセットがあった場合にプロジェクトが購読すること
- サブスクライブのリクエストが許可されることによってプロジェクトからリクエストしたデータアセットが利用可能となる

### ⑩データ参照

- プロジェクトが利用できるサービスを利用してデータを参照すること
- プロジェクトに紐づける権限によって利用できるサービスが異なる
  - 正確にはプロジェクト作成時に利用するproject profileにて設定する 
- 基本的にデータ参照には以下2つのサービスが利用可能
  - Athena
  - Redshift
- （当然ながら）プロジェクトが利用可能なデータアセットのみ参照可能
- 必要なデータアセットが利用できない場合、データカタログを検索してデータアセットのサブスクライブをリクエストする　 

### その他

- Data steward
  - メタデータ管理者
  - ドメイン毎に一人以上のデータスチュワードが存在する 
- Business glossaries
  - メタデータ属性の定義に使用されるビジネス用語集
  - データアセットのメタデータをよりリッチにするために利用する
  - いまいちよく分かってないが、ユーザーがデータを理解しやすくするためのメタ情報として利用するもの

## 終わりに

単純なデータカタログサービスかと思っていましたが、データ権限管理やデータ利用まで含まれるデータ活用全体をカバーするサービスでした。BIサービスのAmazon QuickSightとも相性が良さそうなので今後統合されていくのかもしれません。データレイク•DWHをAWSで構築している場合利用価値は高そうですね。