Amazon DataZoneがパブリックプレビューになりました

2023.03.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どーも、データアナリティクス事業本部コンサルティングチームのsutoです。

re invent2022で発表されたAmazon DataZoneのパブリックプレビューが開始されました。

Amazon DataZoneについて

Amazon Data Zoneとは、お客様が AWS、オンプレミス、およびサードパーティのソースに保存されているデータのカタログ化、発見、共有、および管理をより迅速かつ簡単にする新しいデータ管理サービスです。

Amazon DataZone を使用すると AWS やオンプレミス、サードパーティのソースに保存されているデータのカタログ化、発見、共有、および管理が簡単に行えるようになります。

関連リンクはこちら

まずはアクセスしてみる

AWSマネジメントコンソールから検索欄に『AWS DataZone』のように入力し、AWS DataZoneを選択します。(今回、リージョンはバージニアを選択しています)

DataZoneのトップ画面に遷移したら「ドメインの作成」をクリックします。ドメイン名を入力し、その他は暗号化のカスタマイズくらいしか選べるところがなかったので、すべてデフォルトで作成してみます。

ドメインは1つのAWSアカウントに1つしか作成できません。リージョンをオレゴンに変えてみると以下の画面のようにドメインの作成をクリックできないようになりました。

数分経って自分が作成したドメインをクリックして詳細画面を開きます。

「データポータルURL」をクリックしてポータル画面を開きます。

以下画面のようにポータル画面が表示されました。

チュートリアルをやってみた

ここからはUserguideのGetting StartedにしたがってDatazoneカタログの公開まで操作してみます

次に「MY PROJECTS」右側の+から新しいプロジェクトを作成します。任意のプロジェクト名を入力し、「SELECT DOMAIN」をクリックしすると作成したドメインが表示されるので選択します。

すると「Project profile」が自動で生成されます。デフォルトのプロジェクトプロファイルが生成されたので今回はこのままの設定で「CREATE PROJECT」をクリックします。

プロジェクト作成に数分かかった後、プロジェクト画面に遷移しました。

次にDatZoneで公開するデータを生成します。Amazon Athenaの画面を開き、Datazoneで作成したプロジェクト名のついたワークグループが生成されているのでそれに切り替えます。

するとデータベースに”プロジェクト名_pub_db”と”プロジェクト名_sub_db”が生成されています。

”プロジェクト名_pub_db”は、自身の所属するプロジェクトにパブリッシュするデータ格納するデータベースです。

一方で”プロジェクト名_sub_db”は別のプロジェクトから自身のプロジェクトにサブスクライブされたデータを参照することができます。

よって、ここではtestproject_pub_dbを選択し、以下のクエリを実行してテーブル(catalog_sales)を作成します。これでカタログに発行できるデータができました。

CREATE TABLE catalog_sales AS 
SELECT 146776932 AS order_number, 23 AS quantity, 23.4 AS wholesale_cost, 45.0 as list_price, 43.0 as sales_price, 2.0 as discount, 12 as ship_mode_sk,13 as warehouse_sk, 23 as item_sk, 34 as catalog_page_sk, 232 as ship_customer_sk, 4556 as bill_customer_sk
UNION ALL SELECT 46776931, 24, 24.4, 46, 44, 1, 14, 15, 24, 35, 222, 4551
UNION ALL SELECT 46777394, 42, 43.4, 60, 50, 10, 30, 20, 27, 43, 241, 4565
UNION ALL SELECT 46777831, 33, 40.4, 51, 46, 15, 16, 26, 33, 40, 234, 4563
UNION ALL SELECT 46779160, 29, 26.4, 50, 61, 8, 31, 15, 36, 40, 242, 4562
UNION ALL SELECT 46778595, 43, 28.4, 49, 47, 7, 28, 22, 27, 43, 224, 4555
UNION ALL SELECT 46779482, 34, 33.4, 64, 44, 10, 17, 27, 43, 52, 222, 4556
UNION ALL SELECT 46779650, 39, 37.4, 51, 62, 13, 31, 25, 31, 52, 224, 4551
UNION ALL SELECT 46780524, 33, 40.4, 60, 53, 18, 32, 31, 31, 39, 232, 4563
UNION ALL SELECT 46780634, 39, 35.4, 46, 44, 16, 33, 19, 31, 52, 242, 4557
UNION ALL SELECT 46781887, 24, 30.4, 54, 62, 13, 18, 29, 24, 52, 223, 4561

次にでテーブルを作成したデータベース名を控えます。DataZoneの画面に戻り、右側「Configured Resources」欄から「Publishing DB」をクリックし、「Publishing database details」の画面からProject Glue Producer Database の値をコピーします。

次にAmazon DataZone でcatalog_salesデータアセットを発行し、関連するすべてのチームがすぐに利用できるようにします。プロジェクト画面でPublish Dataを選択します。

以下のように入力していきます。

  • publishing methodでは「Automated publish」を選択
  • Publishing job detailsでジョブ名(今回はsales-publishing-job)を入力
  • Publishing agreementではデフォルトのagreementを選択
  • Data sourceではドロップダウンから使用可能なデータソースを選択します。(今回は画面に表示されているものだけが選択できました)
  • Data selectionのデータベース名に、前の手順で取得したプロジェクト GlueProducer データベースの値(testproject_pub_db)を入力します
  • Selection criteria、Data asset publishing、Publishing job scheduleはデフォルト設定のままとします

入力が終わったら「CREATE PUBLISHING JOB」をクリックします。

ジョブが完了になったらプロジェクト画面に戻り、「PUBLISHED DATA」タブからドラフト状態で発行したcatalog_salesデータアセットを選択します 。

「アクション」からEdit name and descriptionを選択し、TitleにProduct Sales Dataと入力して保存します。

右上に表示されている「Set asset to Active」を選択して、 このデータ資産をアクティブな状態に移行します。

SHCEMAタブではAthenaで作成したテーブル(catalog_sales)のフィールドが表示されました。

次にコンシューマプロジェクトを作成します。[Browse all projects]を選択し、Create projectから以下の画面ようにプロジェクト「marketing-consumer-project」を作成します。

次に、Product Sales Dataデータ アセットをコンシューマー ( marketing-consumer-project ) としてサブスクライブします。画面上部の検索ボックスに sale などを入力して「Product Sales Data」を選択します。Product Sales Dataの詳細画面に移動したら「Subscribe」をクリックします。ポップアップした画面で、Project名に「marketing-consumer-project」を選択して「Reason for request」欄を入力して「Subscribe」をクリックします。

次に、プロデューサー ( Testproject ) がコンシューマー ( Marketing-consumer-project ) にProduct Sales Data データ アセットへのアクセスを許可する必要があります。まず「Testproject」のプロジェクト画面に移動します。

「Subscription request」タブをクリックして一覧を見るとPending状態のPublished dataに「Product Sales Data」があるので「View request」をクリックします。

ポップアップ画面で「Approve」を選択し、承認の理由を入力してから、「Approve」を選択します。

marketing-consumer-projectのプロジェクト画面に戻ると「Subscribed data」タブの「Approved」ステータスの一覧にProduct Sales Dataが追加されていました。

これによって、認証にmarketing-consumer-projectの認証情報を使用して、新しいタブでAmazon Athena クエリエディターを開くことができるのでAthenaの画面に遷移してみます。

Athenaの画面で、プロジェクト「marketing-consumer-project」、データベース「marketingconsumerproject_sub_db」であることを確認してテーブル一覧を見てみると、サブスクライブが許可されたテーブル「Product Sales Data」のみが参照できるカタチとなっています。

ここまでで、プロデューサー側プロジェクト(Test project)がコンシューマ側プロジェクト(marketing-consumer-project)にデータをサブスクライブする手順を実施したので、次にmarketing-consumer-project側でサブスクライブされたデータを加工してDataZoneカタログに公開する手順を実施してみます。

Athena画面でデータベースを「marketingconsumerproject_pub_db」に切り替えて、以下のCTASクエリでテーブルを作ります。

CREATE TABLE "marketingconsumerproject_pub_db"."top_three_discounted_items" AS SELECT * FROM "marketingconsumerproject_sub_db"."testproject_pub_db-catalog_sales-133998493178" order by discount desc LIMIT 3;

では作ったテーブルをDataZoneカタログに公開します。Amazon DataZone ポータルに移動し、marketing-consumer-projectプロジェクトを選択し、「Settings」タブを選択し、「Capabilities」欄の「Data Lake Default Capabilityの”View Details”」をクリックします。

ポップアップしたウィンドウで「Parameters」タブを選択し、”projectGlueProducerDatabaseName”の値をコピーします。

marketing-consumer-projectの「Publish data」をクリックし、以下パラメータを入力して「Create publishing job」をクリックします。

  • publishing methodでは「Automated publish」を選択
  • Publishing job detailsでジョブ名(今回はtop-three-discounted-items-publishing-job)を入力
  • Data selectionのデータベース名に、前の手順でコピーしたGlueProducer データベースの値(marketingconsumerproject_pub_db)を入力
  • Data Asset publishingを「Active」に選択
  • それ以外はデフォルトの設定

ジョブが正常終了したことを確認後、DataZone カタログで検出できるようになります。

参考リンク