Amazon DataZone 経由で SageMaker Canvas へデータインポート

Amazon DataZone で公開しているデータカタログを、SageMaker Studio からサブスクライブして、SageMaker Canvas にインポートする流れを試してみました。(備忘録メモとしての記事となります。)

# Amazon DataZoneとは

Amazon DataZoneは、AWS、オンプレミス、サードパーティのソースに保存されたデータをカタログ化、検索、共有、管理するためのデータ管理サービスです。

Amazon DataZoneを使用して、組織間のデータアクセスを管理できます。

データのパブリッシュとサブスクライブのワークフローを提供しているので、これにより、データプロデューサーはアセットを、ドメイン内にデータカタログとして公開できます。
そして、データコンシューマーは、サブスクライプフローを通したアクセス制御メカニズムによって、カタログにあるデータへアクセスできるようになります。
Amazon DataZone では、さまざまなデータへのアクセス制御を一元化できるため、誰がどのデータをどのような目的で使用しているかを容易に確認することができます。 

詳しくは[こちら](https://aws.amazon.com/jp/datazone/)や[ユーザガイド](https://docs.aws.amazon.com/ja_jp/datazone/latest/userguide/what-is-datazone.html)を参照ください。

---

それではさっそく Amazon DataZone を通して SageMaker にデータをインポートしていく本題に入ります。

ざっくりな作業フローとしては下記となります。

![Screenshot 2024-11-28 at 10.17.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/023674ce-3c43-8b89-8cea-67e29a700b05.png)

1\. データプロデューサープロジェクトで Amazon DataZone ポータル内にデータを公開する。
2\. データコンシューマープロジェクトで、SageMaker 用の環境を作成する。
3\. 作成した SageMaker 環境から、SageMaker Studio に遷移して、対象データをサブスクライブする。
4\. サブスクライブ申請をプロデューサー側で承認する。
5\. SageMaker Canvas で対象のデータをインポートする。
※Canvas にインポートしたデータを使って、モデルを作成する作業まではこの記事に含めておりません。

なお、この検証では AWS コンソールとして、同一アカウントでプロデューサープロジェクトと、コンシューマープロジェクトをつかいわけます。DataZone ポータルでは左上のプロジェクト名で区別できます。

---

## 準備：プロデューサーのプロジェクト作成とデータカタログ整備

いきなりですが、本題でない準備作業を、他者の力をお借りして、進めたいと思います。

AWS 社が公開しているハンズオンの[メインパート](https://catalog.us-east-1.prod.workshops.aws/workshops/c7b9d931-6d86-4994-99e5-77ada5aaffbc/ja-JP/hands-on)の 1-4 を実施します。
4章については Cloud Formation テンプレートをそのまま実行することで、Order の Glue データカタログができた状態となります。


[第1章]
![Screenshot 2024-11-28 at 10.35.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/9a111d29-d659-fd7c-7182-b53ecd5d4622.png)

[第2章]
![Screenshot 2024-11-28 at 10.37.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/f98493fc-404f-edc7-831f-c0aab2045f77.png)

[第3章]
![Screenshot 2024-11-28 at 10.39.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/d00f7eb2-ce3d-c79c-2a28-140fe80cd29b.png)

[第4章]
![Screenshot 2024-11-28 at 10.42.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/5c0cc81a-c8b5-af3c-f24d-4aefc938c5e3.png)



## 1. プロデューサープロジェクトでデータを公開していきます。

この作業もハンズオンの[5章](https://catalog.us-east-1.prod.workshops.aws/workshops/c7b9d931-6d86-4994-99e5-77ada5aaffbc/ja-JP/hands-on/metadata)と[6章](https://catalog.us-east-1.prod.workshops.aws/workshops/c7b9d931-6d86-4994-99e5-77ada5aaffbc/ja-JP/hands-on/publish)を参考にすすめます。


まずデータソースを作成します。

![Screenshot 2024-11-28 at 10.49.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/117adad2-0f2e-472e-6fb8-33e877a22052.png)
![Screenshot 2024-11-28 at 10.49.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c9302ca8-7906-6ffa-015c-40c313eee14c.png)

次の画面の詳細設定やスケジュールなどはそのまま「次へ」を押して、作成完了まで進ます。
![Screenshot 2024-11-28 at 10.51.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/0168fec3-3f51-7c7d-5539-d6cd94520730.png)

右上の「実行」ボタンを押して、アセットを取り込みます。
![Screenshot 2024-11-28 at 10.53.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/3740f31b-f993-fca5-0b65-5b2ebaf61e3d.png)


インベントリデータのアセットに「order」ができているので詳細を確認します。
![Screenshot 2024-11-28 at 10.54.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/bd4865c2-3c73-e939-334a-7242e667ba3a.png)

AIのメタデータ自動生成などもでてきますが、今回は無視して、右上の「アセットを公開」を押して、データ公開を進めます。
![Screenshot 2024-11-28 at 10.55.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/aff441eb-e6de-0a53-6641-7e7cecd1a894.png)
![Screenshot 2024-11-28 at 12.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c1dfdfd3-4776-f231-ce2e-bee6fb61aaa9.png)



## 2. コンシューマープロジェクトと環境を作成していきます。

左上のプロジェクト作成操作より、「Consumer」プロジェクトを作成します。
![Screenshot 2024-11-28 at 12.03.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/1dfe5f5e-ec1b-ca79-6502-fd08b472bb8c.png)

ここからコンシュマープロジェクトを作成していくのですが、そもそもの　DataZone ドメインで SageMaker のブループリントを有効にする必要があります。AWS コンソールのドメイン詳細画面のブループリントタブから操作を行います。
![Screenshot 2024-11-28 at 12.06.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/60ca218f-3cdb-f00e-6997-49c99c855784.png)

ブループリントの設定として、今回は必要なロールなど新規で作成するようにそのまま、「ブループリントを有効にする」ボタンを押します。
![Screenshot 2024-11-28 at 12.10.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/1b13e082-7e4a-8852-74a8-2a4cc6a2854d.png)

次に、DataZone ポータルに戻り、コンシュマープロジェクトで環境プロファイルを作成します。
![Screenshot 2024-11-28 at 12.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/46cce041-b88b-0aea-dc02-37415eaed484.png)

ブループリントで有効化した SageMaker を選択します。
![Screenshot 2024-11-28 at 12.15.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/ec0eadaa-8bd2-ab98-99ff-9bdc6cd881ef.png)

パラメータは今回独自のものを入力しました。
AWSアカウント、リージョンを自身のものを選びます。次のパラメータとして「IAM」認証、「パブリックインターネットのみ」、そしてKMSキー、VPC、サブネットを適切なものを入力します。
(SageMaker ドメインを新たに作成して、それに紐づくKMSキーやVPCの設定を踏襲するのがわかりやすいかもしれないです。)

![Screenshot 2024-11-28 at 12.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/842d1a21-f1bd-d74b-f22f-855b302cb5a5.png)

その他の設定はそのまま、「環境プロファイルを作成」を押します。
![Screenshot 2024-11-28 at 12.18.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/4d916974-2a62-6900-b3a7-f7bb4bbce15c.png)


次に作成された環境プロファイルを使って環境を作成します。
![Screenshot 2024-11-28 at 12.27.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/14539091-ba5b-b1ce-ea2c-c85c4a0a8a19.png)

![Screenshot 2024-11-28 at 12.33.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/603a968a-2f2a-7a58-068a-cfbd519993ce.png)



## 3. SageMaker Studio からデータのサブスクライブ

コンシューマーで作成した環境のディープリンクから、SageMaker Studio へ遷移します。
![Screenshot 2024-11-28 at 12.35.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/71a6832d-27c5-a141-eefd-748be96291ca.png)

![Screenshot 2024-11-28 at 12.36.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/e87ac372-a479-fd77-c712-8534053b987b.png)

左の 「Assets」メニューから「Asset catalog」タブへと選択していくと、公開されているデータの「order」が確認できます。
![Screenshot 2024-11-28 at 12.37.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/d05c75aa-a8a7-6df8-8cb4-f213751814fd.png)

「order」アセットをクリックして、データのスキーマ等を確認したら、右上の「Subscribe」を押します。
![Screenshot 2024-11-28 at 12.38.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/773df8e9-f0e3-c7d5-4c2f-3b5e209278a3.png)

申請理由を記載して、「Submit」を押します。
![Screenshot 2024-11-28 at 12.39.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/23b4e02f-290d-8909-d2f8-af88fcffdbb0.png)




## 4. プロデューサープロジェクトでサブスクライブ申請を承認

プロデューサープロジェクトのデータの受信リクエストメニューを見ると、コンシューマーからのリクエストが確認できます。
![Screenshot 2024-11-28 at 12.41.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/23bd25de-1cc2-c639-2dc9-29ea0c6fcbfb.png)

リクエストを表示して、フルアクセスとして承認します。
![Screenshot 2024-11-28 at 12.42.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/445507cf-2776-76d6-04c2-5e6b14cc786a.png)

もう１度、コンシューマー側の SageMaker Studio のアセットを見てみると、「Subscribed assets」に「order」が表示されているを確認できました。
![Screenshot 2024-11-28 at 12.43.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/3c550133-2eba-d7d8-f86f-5df231d6094c.png)

ちなみに DataZone ポータルでも同様にコンシューマープロジェクトのサブスクライブされたデータとして表示されます。
![Screenshot 2024-11-28 at 12.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/154a6cc4-ebb4-9510-b160-9ab05018fad1.png)




## 5. サブスクライブしたデータの Canvas インポート

引き続き、SageMaker Studio の画面左上から、「Canvas」を選択し、起動させます。
![Screenshot 2024-11-28 at 12.47.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c950a0b1-7c59-82db-19a2-12faec01dfcd.png)

Canvas が起動完了したら、Canvasを開きます。
![Screenshot 2024-11-28 at 12.50.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/32ba1a61-6f78-5765-7bca-fce315c91591.png)

左のメニューから「Data Wrangler」を選択します。中央の「Import and prepare」ボタンを押下し、「Tabular」を選択します。
![Screenshot 2024-11-28 at 12.52.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/54b7baf9-19d7-d7f0-62d6-34d5db737800.png)

データソースに「Athena」を選択すると、「AwsDataCatalog」- 「consumer_env_sub_db」配下に、サブスクライブした「order」のデータが確認できます。
![Screenshot 2024-11-28 at 12.53.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/bec3d420-80b0-dc53-fb60-aaafd9810a33.png)

「order」データをドラッグ&ドロップすると、preview としてインポート対象のデータが確認できます。問題なければ、右下の「Import」ボタンを押します。
![Screenshot 2024-11-28 at 12.55.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c0443626-33a5-f628-f33b-2b9c694b8943.png)

インポートが完了です。
![Screenshot 2024-11-28 at 12.56.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/ba6c9369-572b-8c48-a349-500be1ca4a9d.png)

これにより DataZone でサブスクライブしたデータを、SageMaker Canvas 内にインポートできたので、続く分析とモデル作成に利用することができます。
また作成したモデルを Model Registry に格納し、SageMaker Studio から公開することで、DataZone ポータルで検索可能となります。（ただし、2024年12月現在、モデル自体を DataZone のマネージドアセット対象とする術がないため、サブスクライブしてもモデルにアクセスさせる運用を自身で考える必要がある点は注意です。）



## まとめ

今回、Amzon DataZone で公開されたデータをサブスクライブして、SageMaker Canvas でモデル作成するためにインポートするという流れを試してみました。今後 DataZone を試されるどなたかのヒントになれば幸いです。