Amazon DataZone のアカウント連携してデータ公開

Amazon DataZone における複数アカウントの関連付けを行った上で、ポータル内でデータ共有する流れを試してみました。(備忘録メモとしての記事となります。)

# Amazon DataZoneとは

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

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

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


あともう1つ、Amazon DataZoneが支援するユースケースとしてあるのが、ビジネスカタログの整備です。

Amazon DataZoneでビジネス用語集を用意することができまして、提供されている検索ポータルから、データを組織内の共通言語によって検索できます。
そして見つけたそのデータカタログがどういったデータなのかを、直感的に理解し、より活用しやすい環境を、データ基盤として作れるというのも、このAmazon DataZoneの特徴にあります。

---

ではさっそく Amazon DataZone での複数アカウントの関連付けをしていきたいと思います。

この検証では AWS コンソールにおいて、アカウントAはダークモード表示、アカウントBをライトモード表示としております。また、DataZone ポータルでは左上のプロジェクト名でアカウントAとアカウントBを区別できます。

## 1. アカウントAでドメインを作成していきます。

![Screenshot 2024-05-17 at 13.38.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/f0644f2f-ee7b-92ab-dc84-737764608296.png)

ドメイン名は「Corporate」とします。
![Screenshot 2024-05-17 at 13.40.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/2f46d170-dec0-ad54-0064-f363e65c2136.png)

![Screenshot 2024-05-17 at 13.42.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/fd325073-76b2-33e6-614d-a2fe0f28daf7.png)


## 2. DataLake のブループリントを有効にします。
![Screenshot 2024-05-17 at 13.43.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/e7c0b28c-8e73-e7af-4dab-41e15bd0a428.png)

![Screenshot 2024-05-17 at 13.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/608f9bae-9511-a330-9aaa-ab55297fcaa3.png)


## 3. アカウントAでプロジェクト、環境プロファイル、環境を作成していきます。

Account_A というプロジェクトを作成します。
![Screenshot 2024-05-17 at 13.45.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/1274a36e-5024-c707-8847-cf9d39f5d976.png)

AccountAprofile という環境プロファイルを作成します。
![Screenshot 2024-05-17 at 13.46.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/d19ada05-1caa-a899-c3c3-e387a4a88e10.png)

![Screenshot 2024-05-17 at 13.48.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/aeeb133a-dcee-60fd-c33c-83ada79609f2.png)

AccountAenvironment という環境を作成します。
![Screenshot 2024-05-17 at 13.49.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/6ecd756e-9105-56ca-2ed4-bb74cb37a903.png)

![Screenshot 2024-05-17 at 13.50.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/e09b2350-bb9e-6fdf-eda1-7e90190fbc70.png)

## 4. Corporate にアカウントBを関連付けしていきます。

AccountA でアカウントBの関連付け申請をします。
![Screenshot 2024-05-17 at 13.54.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/83f24e24-8b62-c6c6-70e3-940120822e7b.png)

AccountB で関連付けリクエストを承認します。
![Screenshot 2024-05-17 at 13.55.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/3a94411e-d291-91e3-3168-39ccbec2e61c.png)

承認時にブループリントをデータレイクとして選択します。
![Screenshot 2024-05-17 at 13.59.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/93414524-b4d5-de1e-7b69-2dd09245dfd4.png)

![Screenshot 2024-05-17 at 14.01.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/f9b5dd6d-7690-6436-5844-d37f1e70602e.png)


## 5. アカウントBのプロジェクト、環境プロファイル、環境をCorporate内に作成していきます。

![Screenshot 2024-05-17 at 14.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/99e54baf-a4d0-c9fb-e255-2eae64c1b815.png)

AccountBprofile という環境プロファイルを作成します。
![Screenshot 2024-05-17 at 14.05.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/b9fe3df1-781c-39bf-50c2-a2ea2364110e.png)

プロファイル作成時にはAWSアカウントの選択でアカウントBのアカウントIDを選択します。
![Screenshot 2024-05-17 at 14.06.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/8468bb0e-0795-d820-24ab-61bb3b8c5ba5.png)

![Screenshot 2024-05-17 at 14.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/77097b2d-54c7-d2eb-20ac-d617bec19706.png)

AccountBenvironment という環境を作成します。
![Screenshot 2024-05-17 at 14.10.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/7c0bbe2a-8562-bed5-f890-2f89dd66bd04.png)

※もし環境作成の途中でエラーがでたら、AWS Lake Formationで Data lake administrators にアカウントAのDataZoneプロビジョニングロールを追加して、再実行してください。
![Screenshot 2024-05-17 at 14.15.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/b06524c8-9e35-73d6-ef3c-448a8d4c43d6.png)


## 6. アカウントBでデータカタログを整備します。

アカウントBのS3バケットにデータファイルをアップロードします。
![Screenshot 2024-05-17 at 14.17.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/91eff837-2ce1-771c-b7a7-bd2ea56570f0.png)

AWS Glue で crawler を作成します。![Screenshot 2024-05-17 at 14.20.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c950760c-7990-2067-62f0-80b0bef54631.png)

データソースにさきほどファイルをアップロードしたバケットを選択します。
![Screenshot 2024-05-17 at 14.22.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/aea1dbff-fcd2-8709-ef89-96cbeafa38dd.png)

実行ロールを新規で作成し、選択します。
![Screenshot 2024-05-17 at 14.23.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/e828db00-2b98-ef83-de94-1819373a9990.png)

ターゲットデータベースに Datazone の accountbenvironment の Pub DB を選択します。
![Screenshot 2024-05-17 at 14.24.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/9ac2ecb3-5613-8d12-f1a2-05746453034a.png)

crawler が作成されます。
![Screenshot 2024-05-17 at 14.26.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/307ff1ff-d68d-262d-6254-9203bfd53cf9.png)

crawler を実行する前に、Lake Formation で crawler 実行ロールにおける pub db へのテーブル作成権限を付与します。
![Screenshot 2024-05-17 at 14.29.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c4b5b8ca-7a4a-5e3d-bab8-391dfff80294.png)

![Screenshot 2024-05-17 at 14.30.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/b9e43cd0-3e1d-14ff-7336-0cfefeb4ca3a.png)

AWS Glue の さきほど作った crawler を実行していきます。
![Screenshot 2024-05-17 at 14.31.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/9f506245-b607-85f6-4c33-607927d82d69.png)

Crawler が完了したら、テーブルが作成されていることが確認できます。
![Screenshot 2024-05-17 at 14.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/f2b29d66-360c-8ae2-5a7c-fa997214f053.png)

これで、アカウントBのデータカタログが DataZone 内のポータルで 利用できるようになりました。


## 7. アカウントB内にあるデータカタログを DataZone の Account_B プロジェクトに取り込みます。

![Screenshot 2024-05-17 at 14.38.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/152f900f-6a17-0c0e-0e8c-aa9e101f4a88.png)

取り込みジョブを実行します。
![Screenshot 2024-05-17 at 14.39.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/97a42df4-5e39-fc83-ef1a-6ed9c3301d29.png)

取り込みが完了すると、アセット名が表示されます。
![Screenshot 2024-05-17 at 14.40.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/ee464dc7-76a9-62b3-fcf3-aa0245606d93.png)

インベントリデータにもデータアセットが表示されます。
![Screenshot 2024-05-17 at 14.42.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/712d1ed6-d23a-928d-4d36-8ae87f601f2b.png)

![Screenshot 2024-05-17 at 14.44.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/bbdb362c-2d60-be4f-86e0-b9e46bdfd571.png)


## 8. Account_B プロジェクトからアカウントBのデータアセットを公開します。

データアセットを公開しようとすると、DataZone管理対象外というアラートがでます。
![Screenshot 2024-05-17 at 14.45.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/da0b2784-3340-b660-78ec-a93be591e534.png)

データアセットを管理対象とするため、アカウントBの AWS Lake Formation のData lake locations の設定を行います。S3 path にはデータファイルをあげたバケットを選択します。
![Screenshot 2024-05-17 at 14.47.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/6a71a59c-2070-fcef-f828-4ffce5fb7d40.png)

登録ができたら、再度 DataZone ポータルで公開を試みると、管理対象外のアラートは消えているのでそのまま公開します。(自動生成メタデータのアラートは今回は無視しております。)
![Screenshot 2024-05-17 at 14.50.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/c77d8a3b-bd88-d290-eba2-a291d209a6b0.png)

## 8. Account_A プロジェクトから公開されたアカウントBのデータアセットを検索してみます。

![Screenshot 2024-05-17 at 14.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779150/2f52ab61-5337-a61f-20d8-a5e5467eb5d5.png)

無事検索ができ、アカウントを関連付けした上で、Amazon DataZone 内でデータ共有ができることが確認できました。

---

今回、Amzon DataZone で 複数のアカウントを関連付けし、アカウントを跨いだデータ共有の流れを試してみました。まだ、Amazon DataZone は新しいサービスなので、今後 DataZone を試されるどなたかのヒントになれば幸いです。