

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon DataZone の開始方法
<a name="getting-started"></a>

このセクションの情報は、Amazon DataZone の使用を開始する上で役立ちます。Amazon DataZone を初めて利用する場合は、[Amazon DataZone の用語と概念](datazone-concepts.md)で説明されている概念と用語について理解することから始めてください。

これらのクイックスタートワークフローのいずれかでステップを開始する前に、このガイドの「[セットアップ](setting-up.md)」セクションで説明されている手順を完了する必要があります。新しい AWS アカウントを使用している場合は、[Amazon DataZone マネジメントコンソールを使用するために必要なアクセス許可を設定](create-iam-roles.md)する必要があります。既存の Glue Data Catalog オブジェクトがある AWS アカウントを使用している場合は、Amazon DataZone AWS への Lake Formation アクセス許可も設定する必要があります。 [ DataZone](lake-formation-permissions-for-datazone.md) 

この「使用開始」セクションでは、次の Amazon DataZone クイックスタートワークフローについて説明します。

**Topics**
+ [Glue データを使用した Amazon DataZone AWS クイックスタート](quickstart-glue.md)
+ [Amazon Redshift データを使用した Amazon DataZone クイックスタート](quickstart-rs.md)
+ [サンプルスクリプトを使用する Amazon DataZone クイックスタート](quickstart-apis.md)

# Glue データを使用した Amazon DataZone AWS クイックスタート
<a name="quickstart-glue"></a>

サンプル Glue データを使用して Amazon DataZone で完全なデータプロデューサーとデータコンシューマーワークフローを実行するには AWS 、次のクイックスタートステップを実行します。

**Topics**
+ [ステップ 1 - Amazon DataZone ドメインとデータポータルを作成する](#create-domain-gs-glue)
+ [ステップ 2 - 公開プロジェクトを作成する](#create-publishing-project-gs-glue)
+ [ステップ 3 - 環境を作成する](#create-environment-gs-glue)
+ [ステップ 4 - 公開するデータを生成する](#produce-data-for-publishing-gs-glue)
+ [ステップ 5 - Glue AWS からメタデータを収集する](#gather-metadata-from-glue-gs-glue)
+ [ステップ 6 - データアセットをキュレートして公開する](#curate-data-asset-gs-glue)
+ [ステップ 7 - データ分析用のプロジェクトを作成する](#create-project-for-data-analysis-gs-glue)
+ [ステップ 8 - データ分析用の環境を作成する](#create-environment-gs2-glue)
+ [ステップ 9 - データカタログを検索してデータをサブスクライブする](#search-catalog-subscribe-gs-glue)
+ [ステップ 10: サブスクリプション リクエストの承認](#approve-subscription-request-gs-glue)
+ [ステップ 11 - Amazon Athena でクエリを構築してデータを分析する](#analyze-data-gs-glue)

## ステップ 1 - Amazon DataZone ドメインとデータポータルを作成する
<a name="create-domain-gs-glue"></a>

このセクションでは、このワークフローの Amazon DataZone ドメインとデータポータルを作成する手順について説明します。

Amazon DataZone ドメインを作成するには、次の手順を実行します。Amazon DataZone ドメインの削除については、「[Amazon DataZone の用語と概念](datazone-concepts.md)」を参照してください。

1. [https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) の Amazon DataZone コンソールに移動し、サインインしてから、**[ドメインを作成]** を選択します。
**注記**  
このワークフローに既存の Amazon DataZone ドメインを使用する場合は、**[ドメインを表示]** を選択して使用するドメインを選択し、「ステップ 2 - 公開プロジェクトを作成する」に進みます。

1. **[ドメインを作成]** ページで、次のフィールドの値を指定します。
   + **名前** - ドメインの名前を指定します。このワークフローでは、このドメイン **Marketing** を呼び出すことができます。
   + **説明** - オプションでドメインの説明を指定します。
   + **データ暗号化** - データはデフォルトで、 がユーザーに代わって AWS 所有および管理するキーで暗号化されます。このユースケースでは、デフォルトのデータ暗号化設定のままにすることができます。

     カスタマーマネージドキーの詳細については、「[Amazon DataZone での保管中のデータ暗号化](encryption-rest-datazone.md)」を参照してください。データ暗号化にユーザー独自の KMS キーを使用する場合は、デフォルトの [AmazonDataZoneDomainExecutionRole](AmazonDataZoneDomainExecutionRole.md) に次のステートメントを含める必要があります。

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "Statement1",
                 "Effect": "Allow",
                 "Action": [
                     "kms:Decrypt",
                     "kms:DescribeKey",
                     "kms:GenerateDataKey"
                 ],
                 "Resource": [
                     "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
                 ]
             }
         ]
     }
     ```

------
   + **サービスアクセス** - デフォルトで選択されている **[デフォルトのロールを使用]** オプションを変更しないままにします。
**注記**  
このワークフローに既存の Amazon DataZone ドメインを使用している場合は、**[既存のサービスロールを使用]** オプションを選択して、ドロップダウンメニューから既存のロールを選択できます。
   + **[Quick Setup]** で、**[データ消費と公開のためにこのアカウントを設定]** を選択します。このオプションでは、**データレイク**と**データウェアハウス**の組み込み Amazon DataZone ブループリントを有効にし、このアカウントに必要なアクセス許可、リソース、デフォルト プロジェクト、デフォルト データレイク、データウェアハウス環境プロファイルを設定します。Amazon DataZone ブループリントの詳細については、「[Amazon DataZone の用語と概念](datazone-concepts.md)」を参照してください。
   + **[アクセス許可の詳細]** の残りのフィールドは変更しないでください。
**注記**  
既存の Amazon DataZone ドメインがある場合は、**[既存のサービスロールを使用]** オプションを選択し、**[Glue 管理アクセスロール]**、**[Redshift 管理アクセスロール]**、**[プロビジョニングロール]** のドロップダウンメニューから既存のロール を選択できます。
   + **[タグ]** のフィールドは変更しないでください。
   + **[ドメインを作成]** をクリックします。

1. ドメインが正常に作成されたら、このドメインを選択し、ドメインの概要ページに表示されるこのドメインの **[データポータル URL]** をメモします。この URL を使用して Amazon DataZone データポータルにアクセスし、このワークフローの残りのステップを完了できます。**データポータルを開く** を選択して、データポータルに移動することもできます。

**注記**  
Amazon DataZone の現在のリリースでは、ドメインが作成されると、データポータル用に生成された URL は変更できません。

ドメインの作成には数分かかることがあります。ドメインのステータスが **[使用可能]** になるまで待ってから、次のステップに進みます。

## ステップ 2 - 公開プロジェクトを作成する
<a name="create-publishing-project-gs-glue"></a>

このセクションでは、このワークフローの公開プロジェクトを作成するために必要な手順について説明します。

1. 上記のステップ 1 を完了してドメインを作成すると、**[Amazon DataZone へようこそ\$1]** ウィンドウが表示されます。このウィンドウで **[プロジェクトを作成]** を選択します。

1. 例えば、このワークフローでプロジェクト名を指定する場合、**SalesDataPublishingProject** という名前を付け、残りのフィールドを変更せずに **[作成]** を選択します。

## ステップ 3 - 環境を作成する
<a name="create-environment-gs-glue"></a>

このセクションでは、このワークフローの環境を作成するために必要な手順について説明します。

1. 上記のステップ 2 を完了してプロジェクトを作成すると、**[プロジェクトを使用する準備ができました\$1]** ウィンドウが表示されます。このウィンドウで **[環境を作成]** を選択します。

1. **[環境を作成]** ページで、以下を指定して **[環境を作成]** を選択します。

1. 以下の値を指定します。
   + **名前** - 環境の名前を指定します。このチュートリアルでは、`Default data lake environment` と呼びます。
   + **説明** - 環境の説明を入力します。
   + **環境プロファイル** - **DataLakeProfile** 環境プロファイルを選択します。これにより、このワークフローで Amazon DataZone を使用して、Amazon S3、 AWS Glue Catalog、Amazon Athena 内のデータを操作できます。
   + このチュートリアルでは、残りのフィールドは変更しないでください。

1. [**環境を作成**] を選択します。

## ステップ 4 - 公開するデータを生成する
<a name="produce-data-for-publishing-gs-glue"></a>

このセクションでは、このワークフローで公開するデータを生成するために必要な手順について説明します。

1. 上記のステップ 3 を完了したら、`SalesDataPublishingProject` プロジェクトの右側のパネルの **[分析ツール]**で **Amazon Athena** を選択します。これにより、認証にプロジェクトの認証情報を使用して Athena クエリエディタが開きます。公開環境が **[Amazon DataZone 環境]** ドロップダウンで選択され、`<environment_name>%_pub_db` データベースがクエリエディタで選択されていることを確認します。

1. このチュートリアルでは、**Create Table as Select** (CTAS) クエリスクリプトを使用して、Amazon DataZone に公開する新しいテーブルを作成します。クエリエディタでこの CTAS スクリプトを実行し、公開して検索とサブスクリプションで使用できる `mkt_sls_table` テーブルを作成します。

   ```
   CREATE TABLE mkt_sls_table AS
   SELECT 146776932 AS ord_num, 23 AS sales_qty_sld, 23.4 AS wholesale_cost, 45.0 as lst_pr, 43.0 as sell_pr, 2.0 as disnt, 12 as ship_mode,13 as warehouse_id, 23 as item_id, 34 as ctlg_page, 232 as ship_cust_id, 4556 as bill_cust_id
   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
   ```

   **mkt\$1sls\$1table** テーブルが左側の **[テーブルとビュー]** セクションに正常に作成されていることを確認します。これで、Amazon DataZone カタログに公開できるデータアセットができます。

## ステップ 5 - Glue AWS からメタデータを収集する
<a name="gather-metadata-from-glue-gs-glue"></a>

このセクションでは、このワークフローのために AWS Glue からメタデータを収集するステップについて説明します。

1. 上記のステップ 4 を完了したら、Amazon DataZone データポータルで `SalesDataPublishingProject` プロジェクトを選択し、**[データ]** タブを選択し、左側のパネルで **[データソース]** を選択します。

1. 環境作成プロセスの一部として作成されたソースを選択します。

1. **[アクション]** ドロップダウンメニューの横にある **[実行]** を選択し、更新ボタンを選択します。データソースの実行が完了すると、アセットが Amazon DataZone インベントリに追加されます。

## ステップ 6 - データアセットをキュレートして公開する
<a name="curate-data-asset-gs-glue"></a>

このセクションでは、このワークフローでデータアセットをキュレートして公開する手順について説明します。

1. 上記のステップ 5 を完了したら、Amazon DataZone データポータルで、前のステップで作成した `SalesDataPublishingProject` プロジェクトを選択して **[データ]** タブを選択し、左側のパネルで **[インベントリデータ]** を選択して `mkt_sls_table` テーブルを見つけます。

1. `mkt_sls_table` アセットの詳細ページを開くと、自動的に生成されたビジネス名が表示されます。**自動生成されたメタデータ**のアイコンを選択すると、アセットと列の自動生成された名前が表示されます。各名前を個別に承認または拒否するか、**[すべて承認]** を選択して生成された名前を適用できます。必要に応じて、使用可能なメタデータフォームをアセットに追加し、用語集の用語を選択してデータを分類することもできます。

1. **[アセットを公開]** を選択して `mkt_sls_table` アセットを公開します。

## ステップ 7 - データ分析用のプロジェクトを作成する
<a name="create-project-for-data-analysis-gs-glue"></a>

このセクションでは、データ分析用のプロジェクトを作成する手順について説明します。これは、このワークフローのデータコンシューマーステップの始まりです。

1. 上記のステップ 6 を完了したら、Amazon DataZone データポータルで、**[プロジェクト]** ドロップダウンメニューから **[プロジェクトを作成]** を選択します。

1. **[プロジェクトを作成]** ページで、プロジェクト名を指定します。例えば、このワークフローでは、**MarketingDataAnalysisProject** という名前を付け、残りのフィールドは変更せずに **[作成]** を選択します。

## ステップ 8 - データ分析用の環境を作成する
<a name="create-environment-gs2-glue"></a>

このセクションでは、データ分析用の環境を作成する手順について説明します。

1. 上記のステップ 7 を完了したら、Amazon DataZone データポータルで `MarketingDataAnalysisProject` プロジェクトを選択し、**[環境]** タブを選択して **[環境を作成]** を選択します。

1. **[環境を作成]** ページで、以下を指定して **[環境を作成]** を選択します。
   + **名前** - 環境の名前を指定します。このチュートリアルでは、`Default data lake environment` と呼びます。
   + **説明** - 環境の説明を入力します。
   + **環境プロファイル** - 組み込みの **DataLakeProfile** 環境プロファイルを選択します。
   + このチュートリアルでは、残りのフィールドは変更しないでください。

## ステップ 9 - データカタログを検索してデータをサブスクライブする
<a name="search-catalog-subscribe-gs-glue"></a>

このセクションでは、データカタログを検索してデータをサブスクライブする手順について説明します。

1. 上記のステップ 8 を完了したら、Amazon DataZone データポータルで Amazon DataZone アイコンを選択し、Amazon DataZone の **[検索]** フィールドで、データポータルの **[検索]** バーでキーワード (「カタログ」や「販売」など) を使用してデータアセットを検索します。

   必要に応じて、フィルターまたはソートを適用し、「**製品販売データ**」アセットを見つけたら、それを選択してアセットの詳細ページを開くことができます。

1. 「**カタログ販売データ**」アセットの詳細ページで、**[サブスクライブ]** を選択します。

1. **[サブスクライブ]** ダイアログで、ドロップダウンから **MarketingDataAnalysisProject** コンシューマープロジェクトを選択し、サブスクリプションリクエストの理由を指定して **[サブスクライブ]** を選択します。

## ステップ 10: サブスクリプション リクエストの承認
<a name="approve-subscription-request-gs-glue"></a>

このセクションでは、サブスクリプションリクエストを承認する手順について説明します。

1. 上記のステップ 9 を完了したら、Amazon DataZone データポータルで、アセットを公開した **SalesDataPublishingProject** プロジェクトを選択します。

1. **[データ]** タブを選択し、**[公開されたデータ]**、**[受信リクエスト]** の順に選択します。

1. これで、承認が必要な新しいリクエストの行が表示されます。**[リクエストを表示]** を選択します。承認の理由を入力し、**[承認]** を選択します。

## ステップ 11 - Amazon Athena でクエリを構築してデータを分析する
<a name="analyze-data-gs-glue"></a>

Amazon DataZone カタログにアセットを正常に公開してサブスクライブしているので、アセットを分析できます。

1. Amazon DataZone データポータルで、**MarketingDataAnalysisProject** コンシューマープロジェクトを選択し、右側のパネルの **[分析ツール]** で Amazon Athena との **[クエリデータ]** リンクを選択します。これにより、認証にプロジェクトの認証情報を使用して Amazon Athena クエリエディタが開きます。クエリエディタの **[Amazon DataZone 環境]** ドロップダウンから **MarketingDataAnalysisProject** コンシューマー環境を選択し、データベースドロップダウンからプロジェクトの `<environment_name>%sub_db` を選択します。

1. サブスクライブしているテーブルでクエリを実行できるようになります。**[テーブルとビュー]** からテーブルを選択して **[プレビュー]** を選択すると、エディタ画面に SELECT ステートメントを表示できます。クエリを実行して、結果を確認します。

# Amazon Redshift データを使用した Amazon DataZone クイックスタート
<a name="quickstart-rs"></a>

次のクイックスタートのステップを完了することで、Amazon DataZone で Amazon Redshift データのサンプルを使用して、データプロデューサーとデータコンシューマーの完全なワークフローを実行します。

**Topics**
+ [ステップ 1 - Amazon DataZone ドメインとデータポータルを作成する](#create-domain-gs-rs)
+ [ステップ 2 - 公開プロジェクトを作成する](#create-publishing-project-gs-rs)
+ [ステップ 3 - 環境を作成する](#create-environment-gs-rs)
+ [ステップ 4 - 公開するデータを生成する](#produce-data-for-publishing-gs-rs)
+ [ステップ 5 - Amazon Redshift からメタデータを収集する](#gather-metadata-from-glue-gs-rs)
+ [ステップ 6 - データアセットをキュレートして公開する](#curate-data-asset-gs-rs)
+ [ステップ 7 - データ分析用のプロジェクトを作成する](#create-project-for-data-analysis-gs-rs)
+ [ステップ 8 - データ分析用の環境を作成する](#create-environment-gs2-rs)
+ [ステップ 9 - データカタログを検索してデータをサブスクライブする](#search-catalog-subscribe-gs-rs)
+ [ステップ 10: サブスクリプション リクエストの承認](#approve-subscription-request-gs-rs)
+ [ステップ 11 - Amazon Redshift でクエリを構築してデータを分析する](#analyze-data-gs-rs)

## ステップ 1 - Amazon DataZone ドメインとデータポータルを作成する
<a name="create-domain-gs-rs"></a>

Amazon DataZone ドメインを作成するには、次の手順を実行します。Amazon DataZone ドメインの削除については、「[Amazon DataZone の用語と概念](datazone-concepts.md)」を参照してください。

1. [https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) の Amazon DataZone コンソールに移動し、サインインしてから、**[ドメインを作成]** を選択します。
**注記**  
このワークフローに既存の Amazon DataZone ドメインを使用する場合は、[ドメインを表示] を選択して使用するドメインを選択し、「ステップ 2 - 公開プロジェクトを作成する」に進みます。

1. **[ドメインを作成]** ページで、次のフィールドの値を指定します。
   + **名前** - ドメインの名前を指定します。このワークフローでは、このドメイン `Marketing` を呼び出すことができます。
   + **説明** - オプションでドメインの説明を指定します。
   + **データ暗号化** - データはデフォルトで、 がユーザーに代わって AWS 所有および管理するキーで暗号化されます。このチュートリアルでは、デフォルトのデータ暗号化設定のままにすることができます。

     カスタマーマネージドキーの詳細については、「[Amazon DataZone での保管中のデータ暗号化](encryption-rest-datazone.md)」を参照してください。データ暗号化にユーザー独自の KMS キーを使用する場合は、デフォルトの [AmazonDataZoneDomainExecutionRole](AmazonDataZoneDomainExecutionRole.md) に次のステートメントを含める必要があります。

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "Statement1",
                 "Effect": "Allow",
                 "Action": [
                     "kms:Decrypt",
                     "kms:DescribeKey",
                     "kms:GenerateDataKey"
                 ],
                 "Resource": [
                     "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
                 ]
             }
         ]
     }
     ```

------
   + **サービスアクセス** - **[カスタムサービスロールを使用]** オプションを選択し、ドロップダウンメニューから **AmazonDataZoneDomainExecutionRole** を選択します。
   + **[Quick Setup]** で、**[データ消費と公開のためにこのアカウントを設定]** を選択します。このオプションでは、**データレイク**と**データウェアハウス**の組み込み Amazon DataZone ブループリントを有効にし、このワークフローの残りのステップを完了するために必要なアクセス許可とリソースを設定します。Amazon DataZone ブループリントの詳細については、「[Amazon DataZone の用語と概念](datazone-concepts.md)」を参照してください。
   + **[アクセス許可の詳細]** と **[タグ]** の残りのフィールドは変更せずに、**[ドメインを作成]** を選択します。

1. ドメインが正常に作成されたら、このドメインを選択し、ドメインの概要ページに表示されるこのドメインの **[データポータル URL]** をメモします。この URL を使用して Amazon DataZone データポータルにアクセスし、このワークフローの残りのステップを完了できます。

**注記**  
Amazon DataZone の現在のリリースでは、ドメインが作成されると、データポータル用に生成された URL は変更できません。

ドメインの作成には数分かかることがあります。ドメインのステータスが **[使用可能]** になるまで待ってから、次のステップに進みます。

## ステップ 2 - 公開プロジェクトを作成する
<a name="create-publishing-project-gs-rs"></a>

次のセクションでは、このワークフローで公開プロジェクトを作成する手順について説明します。

1. ステップ 1 を完了したら、データポータル URL を使用して Amazon DataZone データポータルに移動し、シングルサインオン (SSO) または IAM AWS 認証情報を使用してログインします。

1. **[プロジェクトを作成]** を選択し、プロジェクト名を指定します。例えば、このワークフローでは、**SalesDataPublishingProject** という名前を付けてから、残りのフィールドを変更せずに、**[作成]** を選択します。

## ステップ 3 - 環境を作成する
<a name="create-environment-gs-rs"></a>

次のセクションでは、このワークフローで環境を作成する手順について説明します。

1. ステップ 2 を完了したら、前のステップで作成した `SalesDataPublishingProject` プロジェクトを Amazon DataZone データポータルで選択し、**[環境]** タブ、**[環境を作成]** の順に選択します。

1. **[環境を作成]** ページで、以下を指定して **[環境を作成]** を選択します。
   + **名前** - 環境の名前を指定します。このチュートリアルでは、`Default data warehouse environment` と呼びます。
   + **説明** - 環境の説明を入力します。
   + **環境プロファイル** - **DataWarehouseProfile** 環境プロファイルを選択します。
   + Amazon Redshift クラスターの名前、データベース名、およびデータが保存されている Amazon Redshift クラスターのシークレット ARN を入力します。
**注記**  
 AWS Secrets Manager のシークレットに次のタグ (キー/値) が含まれていることを確認します。  
Amazon Redshift クラスターの場合 - datazone.rs.cluster: <cluster\$1name:database name>  
Amazon Redshift Serverless ワークグループの場合 - datazone.rs.workgroup: <workgroup\$1name:database\$1name>
AmazonDataZoneProject: <projectID> 
AmazonDataZoneDomain: <domainID>
詳細については、[「 AWS Secrets Manager でのデータベース認証情報の保存](https://docs.aws.amazon.com//redshift/latest/mgmt/data-api-access.html#data-api-secrets)」を参照してください。  
 AWS Secrets Manager で指定するデータベースユーザーには、スーパーユーザーアクセス許可が必要です。

## ステップ 4 - 公開するデータを生成する
<a name="produce-data-for-publishing-gs-rs"></a>

次のセクションでは、このワークフローで公開するデータを生成する手順について説明します。

1. Amazon DataZone データポータルでステップ 3 を完了したら、`SalesDataPublishingProject`プロジェクトを選択し、右側のパネルの **[分析ツール]** で **Amazon Redshift** を選択します。これにより、認証にプロジェクトの認証情報を使用して Amazon Redshift クエリエディタが開きます。

1. このチュートリアルでは、**Create Table as Select** (CTAS) クエリスクリプトを使用して、Amazon DataZone に公開する新しいテーブルを作成します。クエリエディタでこの CTAS スクリプトを実行し、公開して検索とサブスクリプションで使用できる `mkt_sls_table` テーブルを作成します。

   ```
   CREATE TABLE mkt_sls_table AS
   SELECT 146776932 AS ord_num, 23 AS sales_qty_sld, 23.4 AS wholesale_cost, 45.0 as lst_pr, 43.0 as sell_pr, 2.0 as disnt, 12 as ship_mode,13 as warehouse_id, 23 as item_id, 34 as ctlg_page, 232 as ship_cust_id, 4556 as bill_cust_id
   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
   ```

   **mkt\$1sls\$1table** テーブルが正常に作成されていることを確認します。これで、Amazon DataZone カタログに公開できるデータアセットができます。

## ステップ 5 - Amazon Redshift からメタデータを収集する
<a name="gather-metadata-from-glue-gs-rs"></a>

次のセクションでは、Amazon Redshift からメタデータを収集する手順について説明します。

1. ステップ 4 を完了したら、Amazon DataZone データポータルで `SalesDataPublishingProject` プロジェクトを選択し、**[データ]** タブ、**[データソース]** の順に選択します。

1. 環境作成プロセスの一部として作成されたソースを選択します。

1. **[アクション]** ドロップダウンメニューの横にある **[実行]** を選択し、更新ボタンを選択します。データソースの実行が完了すると、アセットが Amazon DataZone インベントリに追加されます。

## ステップ 6 - データアセットをキュレートして公開する
<a name="curate-data-asset-gs-rs"></a>

次のセクションでは、このワークフローでデータアセットをキュレートして公開する手順について説明します。

1. ステップ 5 を完了したら、Amazon DataZone データポータルで `SalesDataPublishingProject` プロジェクトを選択し、**[データ]** タブ、**[インベントリデータ]** の順に選択し、`mkt_sls_table` テーブルを見つけます。

1. `mkt_sls_table` アセットの詳細ページを開くと、自動的に生成されたビジネス名が表示されます。**自動生成されたメタデータ**のアイコンを選択すると、アセットと列の自動生成された名前が表示されます。各名前を個別に承認または拒否するか、**[すべて承認]** を選択して生成された名前を適用できます。必要に応じて、使用可能なメタデータフォームをアセットに追加し、用語集の用語を選択してデータを分類することもできます。

1. **[公開]** を選択して `mkt_sls_table` アセットを公開します。

## ステップ 7 - データ分析用のプロジェクトを作成する
<a name="create-project-for-data-analysis-gs-rs"></a>

次のセクションでは、このワークフローでデータ分析用のプロジェクトを作成する手順について説明します。

1. ステップ 6 を完了したら、Amazon DataZone データポータルで **[プロジェクトを作成]** を選択します。

1. **[プロジェクトを作成]** ページで、プロジェクト名を指定します。例えば、このワークフローでは、**MarketingDataAnalysisProject** という名前を付け、残りのフィールドは変更せずに **[作成]** を選択します。

## ステップ 8 - データ分析用の環境を作成する
<a name="create-environment-gs2-rs"></a>

次のセクションでは、このワークフローでデータ分析用の環境を作成する手順について説明します。

1. ステップ 7 を完了したら、前のステップで作成した `MarketingDataAnalysisProject` プロジェクトを Amazon DataZone データポータルで選択し、**[環境]** タブ、**[環境を追加]** の順に選択します。

1. **[環境を作成]** ページで、以下を指定して **[環境を作成]** を選択します。
   + **名前** - 環境の名前を指定します。このチュートリアルでは、`Default data warehouse environment` と呼びます。
   + **説明** - 環境の説明を入力します。
   + **環境プロファイル** - **DataWarehouseProfile** 環境プロファイルを選択します。
   + Amazon Redshift クラスターの名前、データベース名、およびデータが保存されている Amazon Redshift クラスターのシークレット ARN を入力します。
**注記**  
 AWS Secrets Manager のシークレットに次のタグ (キー/値) が含まれていることを確認します。  
Amazon Redshift クラスターの場合 - datazone.rs.cluster: <cluster\$1name:database name>  
Amazon Redshift Serverless ワークグループの場合 - datazone.rs.workgroup: <workgroup\$1name:database\$1name>
AmazonDataZoneProject: <projectID> 
AmazonDataZoneDomain: <domainID>
詳細については、[「 AWS Secrets Manager でのデータベース認証情報の保存](https://docs.aws.amazon.com//redshift/latest/mgmt/data-api-access.html#data-api-secrets)」を参照してください。  
 AWS Secrets Manager で指定するデータベースユーザーには、スーパーユーザーアクセス許可が必要です。
   + このチュートリアルでは、残りのフィールドは変更しないでください。

## ステップ 9 - データカタログを検索してデータをサブスクライブする
<a name="search-catalog-subscribe-gs-rs"></a>

次のセクションでは、データカタログを検索してデータをサブスクライブする手順について説明します。

1. ステップ 8 を完了したら、Amazon DataZone データポータルの **[検索]** バーでキーワード (「カタログ」や「売上」など) を使用してデータアセットを検索します。

   必要に応じて、フィルターまたはソートを適用し、「製品販売データ」アセットを見つけたら、それを選択してアセットの詳細ページを開くことができます。

1. 「製品販売データ」アセットの詳細ページで、**[サブスクライブ]** を選択します。

1. ダイアログでドロップダウンからコンシューマープロジェクトを選択し、アクセスリクエストに理由を入力し、**[サブスクライブ]** を選択します。

## ステップ 10: サブスクリプション リクエストの承認
<a name="approve-subscription-request-gs-rs"></a>

次のセクションでは、このワークフローでサブスクリプションリクエストを承認する手順について説明します。

1. ステップ 9 を完了したら、アセットを公開した **SalesDataPublishingProject** プロジェクトを Amazon DataZone データポータルで選択します。

1. **[データ]** タブを選択し、**[公開されたデータ]**、**[受信リクエスト]** の順に選択します。

1. ビューリクエストリンクを選択し、**[承認]** を選択します。

## ステップ 11 - Amazon Redshift でクエリを構築してデータを分析する
<a name="analyze-data-gs-rs"></a>

Amazon DataZone カタログにアセットを正常に公開してサブスクライブしているので、アセットを分析できます。

1. Amazon DataZone データポータルの右側のパネルで、Amazon Redshift リンクをクリックします。これにより、認証にプロジェクトの認証情報を使用して Amazon Redshift クエリエディタが開きます。

1. これで、サブスクライブしているテーブルでクエリ (SELECT ステートメント) を実行できます。テーブルをクリック (縦三点リーダーオプション) してプレビューを選択すると、エディタ画面に SELECT ステートメントを表示できます。クエリを実行して、結果を確認します。

# サンプルスクリプトを使用する Amazon DataZone クイックスタート
<a name="quickstart-apis"></a>

Amazon DataZone には、管理ポータルまたは Amazon DataZone データポータルを介して、または Amazon DataZone HTTPS API を使用してプログラムでアクセスできます。これにより、HTTPS リクエストを サービスに直接発行できます。このセクションでは、以下の一般的なタスクを完了するために使用できる Amazon DataZone API を呼び出すサンプルスクリプトについて説明します。

**Topics**
+ [Amazon DataZone ドメインとデータポータルを作成する](#create-domain-gs-glue-api)
+ [パブリッシュプロジェクトを作成する](#create-publishing-project-gs-glue-api)
+ [環境ファイルを作成する](#create-environment-profile-gs-glue-api)
+ [環境を作成する](#create-environment-gs-glue-api)
+ [Glue AWS からメタデータを収集する](#gather-metadata-from-glue-gs-glue-api)
+ [データアセットをキュレートして公開する](#curate-data-asset-gs-glue-api)
+ [データカタログを検索してデータをサブスクライブする](#search-catalog-subscribe-gs-glue-api)
+ [データカタログ内のアセットを検索する](#search-catalog-subscribe-gs-glue-api)
+ [その他の便利なサンプルスクリプト](#other-useful-scripts-api)

## Amazon DataZone ドメインとデータポータルを作成する
<a name="create-domain-gs-glue-api"></a>

次のサンプルスクリプトを使用して Amazon DataZone ドメインを作成できます。Amazon DataZone ドメインの削除については、「[Amazon DataZone の用語と概念](datazone-concepts.md)」を参照してください。

```
import sys
import boto3

// Initialize datazone client
region = 'us-east-1'
dzclient = boto3.client(service_name='datazone', region_name='us-east-1')

// Create DataZone domain
def create_domain(name):
    return dzclient.create_domain(
        name = name,
        description = "this is a description",
        domainExecutionRole = "arn:aws:iam::<account>:role/AmazonDataZoneDomainExecutionRole",
    )
```

## パブリッシュプロジェクトを作成する
<a name="create-publishing-project-gs-glue-api"></a>

次のサンプルスクリプトを使用して、Amazon DataZone で公開プロジェクトを作成できます。

```
// Create Project
def create_project(domainId):
    return dzclient.create_project(
        domainIdentifier = domainId,
        name = "sample-project"
    )
```

## 環境ファイルを作成する
<a name="create-environment-profile-gs-glue-api"></a>

次のサンプルスクリプトを使用して、Amazon DataZone で環境プロファイルを作成できます。

このサンプルペイロードは、`CreateEnvironmentProfile` API を呼び出すときに使用されます。

```
Sample Payload
{
    "Content":{
        "project_name": "Admin_project",
        "domain_name": "Drug-Research-and-Development",
        "blueprint_account_region": [
            {
                "blueprint_name": "DefaultDataLake",
                "account_id": ["066535990535",
                "413878397724",
                "676266385322", 
                "747721550195", 
                "755347404384"
                ],
                "region": ["us-west-2", "us-east-1"]
            },
            {
                "blueprint_name": "DefaultDataWarehouse",
                "account_id": ["066535990535",
                "413878397724",
                "676266385322", 
                "747721550195", 
                "755347404384"
                ],
                "region":["us-west-2", "us-east-1"]
            }
        ]
    }
}
```

このサンプルスクリプトは `CreateEnvironmentProfile` API を呼び出します。

```
def create_environment_profile(domain_id, project_id, env_blueprints)    
        try:
            response = dz.list_environment_blueprints(
                domainIdentifier=domain_id,
                managed=True
            )
            env_blueprints = response.get("items")
            env_blueprints_map = {}
            for i in env_blueprints:
                env_blueprints_map[i["name"]] = i['id']
            
            print("Environment Blueprint map", env_blueprints_map)
            for i in blueprint_account_region:
                print(i)
                for j in i["account_id"]:
                    for k in i["region"]:
                        print("The env blueprint name is", i['blueprint_name'])
                        dz.create_environment_profile(
                            description='This is a test environment profile created via lambda function',
                            domainIdentifier=domain_id,
                            awsAccountId=j,
                            awsAccountRegion=k,
                            environmentBlueprintIdentifier=env_blueprints_map.get(i["blueprint_name"]),
                            name=i["blueprint_name"] + j + k + "_profile",
                            projectIdentifier=project_id
                        )
        except Exception as e:
            print("Failed to created Environment Profile")
            raise e
```

これは、`CreateEnvironmentProfile` API が呼び出された後のサンプル出力ペイロードです。

```
{
    "Content":{
        "project_name": "Admin_project",
        "domain_name": "Drug-Research-and-Development",
        "blueprint_account_region": [
            {
                "blueprint_name": "DefaultDataWarehouse",
                "account_id": ["111111111111"],
                "region":["us-west-2"],
                "user_parameters":[
                    {
                        "name": "dataAccessSecretsArn",
                        "value": ""
                    }
                ] 
            }
        ]
    }
}
```

## 環境を作成する
<a name="create-environment-gs-glue-api"></a>

次のサンプルスクリプトを使用して、Amazon DataZone で環境を作成できます。

```
def create_environment(domain_id, project_id,blueprint_account_region ):
         try:
            #refer to get_domain_id and get_project_id for fetching ids using names.
            sts_client = boto3.client("sts")
            # Get the current account ID
            account_id = sts_client.get_caller_identity()["Account"]
            print("Fetching environment profile ids")
            env_profile_map = get_env_profile_map(domain_id, project_id)

            for i in blueprint_account_region:
                for j in i["account_id"]:
                    for k in i["region"]:
                        print(" env blueprint name", i['blueprint_name'])
                        profile_name = i["blueprint_name"] + j + k + "_profile"
                        env_name = i["blueprint_name"] + j + k + "_env"
                        description = f'This is environment is created for {profile_name}, Account {account_id} and region {i["region"]}'
                        try:
                            dz.create_environment(
                                description=description,
                                domainIdentifier=domain_id,
                                environmentProfileIdentifier=env_profile_map.get(profile_name),
                                name=env_name,
                                projectIdentifier=project_id
                            )
                            print(f"Environment created - {env_name}")
                        except:
                            dz.create_environment(
                                description=description,
                                domainIdentifier=domain_id,
                                environmentProfileIdentifier=env_profile_map.get(profile_name),
                                name=env_name,
                                projectIdentifier=project_id,
                                userParameters= i["user_parameters"] 
                            )
                            print(f"Environment created - {env_name}")
        except Exception as e:
            print("Failed to created Environment")
            raise e
```

## Glue AWS からメタデータを収集する
<a name="gather-metadata-from-glue-gs-glue-api"></a>

このサンプルスクリプトを使用して、 Glue AWS からメタデータを収集できます。このスクリプトは標準スケジュールで実行されます。サンプルスクリプトからパラメータを取得し、グローバルにすることができます。標準の関数を使用してプロジェクト、環境、ドメイン ID を取得します。 AWS Glue データソースは、スクリプトの cron セクションで更新できる標準時刻に作成および実行されます。

```
def crcreate_data_source(domain_id, project_id,data_source_name)
        print("Creating Data Source")
        data_source_creation = dz.create_data_source(
            # Define data source : Customize the data source to which you'd like to connect
            # define the name of the Data source to create, example: name ='TestGlueDataSource'
            name=data_source_name,
            # give a description for the datasource (optional), example: description='This is a dorra test for creation on DZ datasources'
            description=data_source_description,
            # insert the domain identifier corresponding to the domain to which the datasource will belong, example: domainIdentifier= 'dzd_6f3gst5jjmrrmv'
            domainIdentifier=domain_id,
            # give environment identifier , example: environmentIdentifier= '3weyt6hhn8qcvb'
            environmentIdentifier=environment_id,
            # give corresponding project identifier, example: projectIdentifier= '6tl4csoyrg16ef',
            projectIdentifier=project_id,
            enableSetting="ENABLED",
            # publishOnImport used to select whether assets are added to the inventory and/or discovery catalog .
            # publishOnImport = True : Assets will be added to project's inventory as well as published to the discovery catalog
            # publishOnImport = False : Assets will only be added to project's inventory.
            # You can later curate the metadata of the assets and choose subscription terms to publish them from the inventory to the discovery catalog.
            publishOnImport=False,
            # Automated business name generation : Use AI to automatically generate metadata for assets as they are published or updated by this data source run.
            # Automatically generated metadata can be be approved, rejected, or edited by data publishers.
            # Automatically generated metadata is badged with a small icon next to the corresponding metadata field.
            recommendation={"enableBusinessNameGeneration": True},
            type="GLUE",
            configuration={
                "glueRunConfiguration": {
                    "dataAccessRole": "arn:aws:iam::"
                    + account_id
                    + ":role/service-role/AmazonDataZoneGlueAccess-"
                    + current_region
                    + "-"
                    + domain_id
                    + "",
                    "relationalFilterConfigurations": [
                        {
                            #
                            "databaseName": glue_database_name,
                            "filterExpressions": [
                                {"expression": "*", "type": "INCLUDE"},
                            ],
                            #    "schemaName": "TestSchemaName",
                        },
                    ],
                },
            },
            # Add metadata forms to the data source (OPTIONAL).
            # Metadata forms will be automatically applied to any assets that are created by the data source.
            # assetFormsInput=[
            #     {
            #         "content": "string",
            #         "formName": "string",
            #         "typeIdentifier": "string",
            #         "typeRevision": "string",
            #     },
            # ],
            schedule={
                "schedule": "cron(5 20 * * ? *)",
                "timezone": "UTC",
            },
        )
        # This is a suggested syntax to return values
        #        return_values["data_source_creation"] = data_source_creation["items"]
        print("Data Source Created")


//This is the sample response payload after the CreateDataSource API is invoked:

{
    "Content":{
        "project_name": "Admin",
        "domain_name": "Drug-Research-and-Development",
        "env_name": "GlueEnvironment",
        "glue_database_name": "test",
        "data_source_name" : "test",
        "data_source_description" : "This is a test data source"
    }
}
```

## データアセットをキュレートして公開する
<a name="curate-data-asset-gs-glue-api"></a>

次のサンプルスクリプトを使用して、Amazon DataZone のデータアセットをキュレートして公開できます。

次のスクリプトを使用して、カスタムフォームタイプを作成できます。

```
 
def create_form_type(domainId, projectId):
    return dzclient.create_form_type(
        domainIdentifier = domainId,
        name = "customForm",
        model = {
            "smithy": "structure customForm { simple: String }"
        },
        owningProjectIdentifier = projectId,
        status = "ENABLED"
    )
```

次のサンプルスクリプトを使用して、カスタムアセットタイプを作成できます。

```
def create_custom_asset_type(domainId, projectId):
    return dzclient.create_asset_type(
        domainIdentifier = domainId,
        name = "userCustomAssetType",
        formsInput = {
            "Model": {
                "typeIdentifier": "customForm",
                "typeRevision": "1",
                "required": False
            }
        },
        owningProjectIdentifier = projectId,
    )
```

次のサンプルスクリプトを使用して、カスタムアセットを作成できます。

```
def create_custom_asset(domainId, projectId):
    return dzclient.create_asset(
        domainIdentifier = domainId,
        name = 'custom asset',
        description = "custom asset",
        owningProjectIdentifier = projectId,
        typeIdentifier = "userCustomAssetType",
        formsInput = [
            {
                "formName": "UserCustomForm",
                "typeIdentifier": "customForm",
                "content": "{\"simple\":\"sample-catalogId\"}"
            }
        ]
    )
```

次のサンプルスクリプトを使用して、用語集を作成できます。

```
def create_glossary(domainId, projectId):
    return dzclient.create_glossary(
        domainIdentifier = domainId,
        name = "test7",
        description = "this is a test glossary",
        owningProjectIdentifier = projectId
    )
```

次のサンプルスクリプトを使用して、用語集の用語を作成できます。

```
def create_glossary_term(domainId, glossaryId):
    return dzclient.create_glossary_term(
        domainIdentifier = domainId,
        name = "soccer",
        shortDescription = "this is a test glossary",
        glossaryIdentifier = glossaryId,
    )
```

次のサンプルスクリプトを使用して、システム定義のアセットタイプを使用するアセットを作成できます。

```
def create_asset(domainId, projectId):
    return dzclient.create_asset(
        domainIdentifier = domainId,
        name = 'sample asset name',
        description = "this is a glue table asset",
        owningProjectIdentifier = projectId,
        typeIdentifier = "amazon.datazone.GlueTableAssetType",
        formsInput = [
            {
                "formName": "GlueTableForm",
                "content": "{\"catalogId\":\"sample-catalogId\",\"columns\":[{\"columnDescription\":\"sample-columnDescription\",\"columnName\":\"sample-columnName\",\"dataType\":\"sample-dataType\",\"lakeFormationTags\":{\"sample-key1\":\"sample-value1\",\"sample-key2\":\"sample-value2\"}}],\"compressionType\":\"sample-compressionType\",\"lakeFormationDetails\":{\"lakeFormationManagedTable\":false,\"lakeFormationTags\":{\"sample-key1\":\"sample-value1\",\"sample-key2\":\"sample-value2\"}},\"primaryKeys\":[\"sample-Key1\",\"sample-Key2\"],\"region\":\"us-east-1\",\"sortKeys\":[\"sample-sortKey1\"],\"sourceClassification\":\"sample-sourceClassification\",\"sourceLocation\":\"sample-sourceLocation\",\"tableArn\":\"sample-tableArn\",\"tableDescription\":\"sample-tableDescription\",\"tableName\":\"sample-tableName\"}"
            }
        ]
    )
```

次のサンプルスクリプトを使用してアセットリビジョンを作成し、用語集の用語をアタッチできます。

```
def create_asset_revision(domainId, assetId):
    return dzclient.create_asset_revision(
        domainIdentifier = domainId,
        identifier = assetId,
        name = 'glue table asset 7',
        description = "glue table asset description update",
        formsInput = [
            {
                "formName": "GlueTableForm",
                "content": "{\"catalogId\":\"sample-catalogId\",\"columns\":[{\"columnDescription\":\"sample-columnDescription\",\"columnName\":\"sample-columnName\",\"dataType\":\"sample-dataType\",\"lakeFormationTags\":{\"sample-key1\":\"sample-value1\",\"sample-key2\":\"sample-value2\"}}],\"compressionType\":\"sample-compressionType\",\"lakeFormationDetails\":{\"lakeFormationManagedTable\":false,\"lakeFormationTags\":{\"sample-key1\":\"sample-value1\",\"sample-key2\":\"sample-value2\"}},\"primaryKeys\":[\"sample-Key1\",\"sample-Key2\"],\"region\":\"us-east-1\",\"sortKeys\":[\"sample-sortKey1\"],\"sourceClassification\":\"sample-sourceClassification\",\"sourceLocation\":\"sample-sourceLocation\",\"tableArn\":\"sample-tableArn\",\"tableDescription\":\"sample-tableDescription\",\"tableName\":\"sample-tableName\"}"
            }
        ],
        glossaryTerms = ["<glossaryTermId:>"]
    )
```

次のサンプルスクリプトを使用してアセットを発行できます。

```
def publish_asset(domainId, assetId):
    return dzclient.create_listing_change_set(
        domainIdentifier = domainId,
        entityIdentifier = assetId,
        entityType = "ASSET",
        action = "PUBLISH",
    )
```

## データカタログを検索してデータをサブスクライブする
<a name="search-catalog-subscribe-gs-glue-api"></a>

次のサンプルスクリプトを使用してデータカタログを検索し、データをサブスクライブできます。

```
def search_asset(domainId, projectId, text):
    return dzclient.search(
        domainIdentifier = domainId,
        owningProjectIdentifier = projectId,
        searchScope = "ASSET",
        searchText = text,
    )
```

次のサンプルスクリプトを使用して、アセットのリスト ID を取得できます。

```
def search_listings(domainId, assetName, assetId):
    listings = dzclient.search_listings(
        domainIdentifier=domainId,
        searchText=assetName,
        additionalAttributes=["FORMS"]
    )
    
    assetListing = None
    for listing in listings['items']:
        if listing['assetListing']['entityId'] == assetId: 
            assetListing = listing
    
    return listing['assetListing']['listingId']
```

次のサンプルスクリプトを使用して、リスティング ID を使用するサブスクリプションリクエストを作成できます。

```
create_subscription_response = def create_subscription_request(domainId, projectId, listingId):
    return dzclient.create_subscription_request(
        subscribedPrincipals=[{
            "project": {
                "identifier": projectId
            }
        }],
        subscribedListings=[{
            "identifier": listingId
        }],
        requestReason="Give request reason here."
    )
```

上記の `create_subscription_response` を使用して ` subscription_request_id` を取得し、次のサンプルスクリプトを使用してサブスクリプションを承諾/承認します。

```
subscription_request_id = create_subscription_response["id"]

def accept_subscription_request(domainId, subscriptionRequestId): 
    return dzclient.accept_subscription_request(
        domainIdentifier=domainId,
        identifier=subscriptionRequestId
    )
```

## データカタログ内のアセットを検索する
<a name="search-catalog-subscribe-gs-glue-api"></a>

以下のサンプルスクリプトを使用し、フリーテキスト検索を使用して、Amazon DataZone カタログで公開されたデータアセット (リスト項目) を検索できます。
+ 次の例では、ドメインでフリーテキストキーワード検索を実行し、指定したキーワード「credit」に一致するすべてのリスト項目を返します。

  ```
  aws datazone search-listings \
    --domain-identifier dzd_c1s7uxe71prrtz \
    --search-text "credit"
  ```
+ 複数のキーワードを組み合わせて、検索範囲をさらに絞り込むこともできます。例えば、メキシコでの販売に関連するデータを持つすべての公開データアセット (リスト項目) を検索する場合は、「メキシコ」と「販売」という 2 つのキーワードを使用してクエリを作成できます。

  ```
              aws datazone search-listings \
    --domain-identifier dzd_c1s7uxe71prrtz \
    --search-text "mexico sales"
  ```

フィルターを使用してリスト項目を検索することもできます。SearchListings API の `filters` パラメータを使用すると、ドメインからフィルタリングされた結果を取得できます。API は複数のデフォルトフィルターをサポートしており、2 つ以上のフィルターを組み合わせて AND/OR 演算を実行することもできます。フィルター句には、属性と値の 2 つのパラメータがあります。サポートされているデフォルトのフィルター属性は、`typeName`、`owningProjectId`、`glossaryTerms` です。
+ 次の例では、リスト項目 が Redshift テーブルのタイプである、指定したドメインのすべてのリスト項目を、`assetType` フィルターを使用して検索します。

  ```
              aws datazone search-listings \
  --domain-identifier dzd_c1s7uxe71prrtz \
  --filters '{"or":[{"filter":{"attribute":"typeName","value":"RedshiftTableAssetType"}} ]}'
  ```
+ AND/OR 演算子を使用して、複数のフィルターを組み合わせることもできます。次の例では、`typeName` および `project`フィルターを組み合わせます。

  ```
              aws datazone search-listings \
  --domain-identifier dzd_c1s7uxe71prrtz \
  --filters '{"or":[{"filter":{"attribute":"typeName","value":"RedshiftTableAssetType"}},  {"filter":{"attribute":"owningProjectId","value":"cwrrjch7f5kppj"}} ]}'
  ```
+ 次の例に示すように、フリーテキスト検索とフィルターを組み合わせて正確な結果を検索し、リスト項目の作成時刻/最終更新時刻でさらにソートすることもできます。

  ```
              aws datazone search-listings \
  --domain-identifier dzd_c1s7uxe71prrtz \
  --search-text "finance sales" \
  --filters '{"or":[{"filter":{"attribute":"typeName","value":"GlueTableViewType"}} ]}' \
  --sort '{"attribute": "UPDATED_AT", "order":"ASCENDING"}'
  ```

## その他の便利なサンプルスクリプト
<a name="other-useful-scripts-api"></a>

次のサンプルスクリプトを使用して、Amazon DataZone でデータを操作するさまざまなタスクを完了できます。

次のサンプルスクリプトを使用して、既存の Amazon DataZone ドメインを一覧表示使用します。

```
def list_domains():
    datazone = boto3.client('datazone')
    response = datazone.list_domains(status='AVAILABLE')
    [print("%12s | %16s | %12s | %52s" % (item['id'], item['name'], item['managedAccountId'], item['portalUrl'])) for item in response['items']]
    return
```

次のサンプルスクリプトを使用して、既存の Amazon DataZone プロジェクトを一覧表示します。

```
def list_projects(domain_id):
    datazone = boto3.client('datazone')
    response = datazone.list_projects(domainIdentifier=domain_id)
    [print("%12s | %16s " % (item['id'], item['name'])) for item in response['items']]
    return
```

次のサンプルスクリプトを使用して、既存の Amazon DataZone メタデータフォームを一覧表示します。

```
def list_metadata_forms(domain_id):
    datazone = boto3.client('datazone')
    response = datazone.search_types(domainIdentifier=domain_id, 
        managed=False,
        searchScope='FORM_TYPE')
    [print("%16s | %16s | %3s | %8s" % (item['formTypeItem']['name'], item['formTypeItem']['owningProjectId'],item['formTypeItem']['revision'], item['formTypeItem']['status'])) for item in response['items']]
    return
```