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

DataZone(プレビュー)に既存のGlueデータカタログを取り込みパブリッシュ/サブスクライブする

Posted at

はじめに

DataZone(プレビュー)を少し触ってみたので、備忘録的に記事にします。
現在、AWSでデータレイクを構築している場合、既存のGlueデータカタログが存在していると思います。それをDataZoneの管理下に置くというユースケースを想定し、実施してみました。

こちらのドキュメントを参考に実施しました。

前提条件

  • 2023年7月22日に、DataZone(プレビュー)を利用して検証しています。GA時にはUIや挙動が変わる可能性があります。
  • 米国東部 (バージニア北部)リージョン(us-east-1)を利用します。
  • 既にドメインやプロジェクトは作成しています。
  • 既にクローラーを実行し、取り込むGlueデータカタログは作成しています。
  • 今回は、全てAdminユーザーで実行します。

やってみる

既存のデータカタログを確認する

データベース test-dz-db が作成されています。
image.png

そのデータベースに、2つのテーブル test_1 test_2 が作成されています。
image.png

それぞれのテーブルにAthenaからクエリできます。
image.png
image.png

DataZoneでデータソースを作成する

DataZoneのコンソール画面から、自身のドメインをクリックします。
image.png

データソースタブをクリックします。
image.png

ドメインをフィルタリングをクリックします。
image.png

データを取り込みたい対象のサブドメインを選択し、ドメインを選択をクリックします。
image.png

データソースを作成をクリックします。
image.png

ここからは、データソースを作成の項目を埋めていきます。一部注意が必要なものだけ記載します。
image.png

AWS Glue データカタログのロールを読み取る:既存のロールはないので、新規に作成します。
アクセスロールを管理:こちらも同じく、新規に作成します。
image.png

プロジェクト:データソースを追加したいプロジェクトを選択します。このプロジェクト内で、このGlueデータカタログのデータがパブリッシュできるようになります。
データベース:今回用意した test-dz-db を選択します。

全て入力したら、データソースを作成をクリックします。
image.png

データソースが作成されています。
image.png

Lake Formationで権限設定する

パブリッシュする前に、先ほどデータソースを作成した際に新規作成したIAM Roleに、Lake Formationで権限を付与します。
具体的には、以下のドキュメントに記載された作業を実施していきます。

Lake FormationのData Lake locationsで、Register locationをクリックします。
image.png

Amazon S3 path:Glueデータカタログの元データが保存されているS3バケットを入力します。
それ以外は特にいじらず、Register locationをクリックします。
image.png

Data lake permissionsをクリックして、検索欄に IAMAllowedPrincipals を入力し、エンターを押します。
image.png

さらに検索欄に今回追加するデータベース test-dz-db を入力し、エンターを押します。
image.png

3つのPrincipalに対してRevokeを実施します。
image.png

IAMAllowedPrincipals のpermissionsが残っていると、Lake Formationでの権限管理ではなくIAMでの管理となってしまいます。DataZoneはLake Formationの権限管理を使うため、このpermissionsはRevokeします。

次は、先ほどデータソースを作成した時に新規作成した2つのロールに権限を付与します。
これをしないと、DataZoneが既存のGlueデータカタログを読み取れません。
Grantをクリックします。
image.png

1つ目のDataSourceのロールは、以下のようにデータベースとテーブルを選択し、Table permissionsはDescribeのみを許可します。その後、Grantをクリックします。
image.png
image.png

2つ目のPublisherManagedのロールは、以下のようにデータベースとテーブルを選択し、Table permissionsはSelectとDescribe、Grantable permissionsもSelectとDescribeを許可します。その後、Grantをクリックします。
image.png
image.png
image.png

以上で、権限設定は完了です。

DataZoneでパブリッシュする

ここからは、DataZoneのデータポータル上で操作します。

自身のProjectをクリックし、PUBLISH DATAをクリックします。
image.png

Publishデータに関する情報を入力していきます。
image.png

Publishing agreement:今回は、defaultを選択します。
Data source:今回作成したデータソースである test-data-catalog を選択します。
image.png

Database name:今回作成したデータソースの元のデータベース名を入力します。
image.png

Data Asset publishing:今回はActiveを選択します。Activeはパブリッシュの承認処理を挟まず、いきなりパブリッシュします。本番運用ではDraftを選択して、承認処理を挟んだ方が良いかと思います。
全て入力したら、CREATE PUBLISHING JOBをクリックします。
image.png

ジョブが実行されます。3分で成功となりました。
image.png

2つのテーブルが無事にパブリッシュされています。
image.png

DataZoneでサブスクライブする

パブリッシュされたうちの1つの test_1 をクリックして、詳細ページを開きます。
その後、SUBSCRIBEをクリックします。
image.png

Project:サブスクライブしたいプロジェクトを選択します。
その下にはサブスクライブの理由を入力しますが、今回はtestとします。
その後、SUBSCRIBEをクリックします。
image.png

少し経つと、右上のチェックマークにオレンジ色の●が表示されるのでクリックし、Subscription Requestをクリックします。
image.png

View requestをクリックします。
image.png

APPROVEをクリックします。
これで、サブスクライブが承認されたことになります。
image.png

左のメニューから、サブスクライブしたプロジェクトをクリックすると、test_1がサブスクライブされています!
image.png
image.png

クエリ発行する

先ほどサブスクライブしたプロジェクトの右側にあるQuery dataをクリックします。
image.png

Athenaの画面に飛ぶので、データベース名に _sub_db がつくデータベースを選択すると、今回サブスクライブしたテーブルがあるので、それにクエリを発行します。
見事に見えていますね。
image.png

注意点

①実運用の際の作業ユーザーについて

今回は、全ての作業をAdminユーザーで実行しました。
しかし、実運用の際はそれぞれのプロジェクトのユーザーやデータスチュワードが操作する場合があるのでご注意ください。

②Lake Formationで権限設定し忘れた場合について

その場合でも、パブリッシュ/サブスクライブまでは出来ちゃいます。
ただ、サブスクライブしたデータを見ると、以下のように Not granted と表示され、クエリできない状態になります。
これは、データソースを作成した際に新規作成したロールが、データカタログを見に行けなかったためです。忘れないようにしましょう。
image.png

おわりに

DataZoneは権限管理が楽になるサービスですが、AWS上に存在しているリソースをDataZoneの世界に乗せてあげる必要があります。今回はロールなどを新規に作成した、かつAdminで作業したので簡単にいきましたが、既存のロール、ユーザー、VPC・・・など使うと躓くところが増えそうです。早くGAして実際の環境で試してみたいですね!!

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