チュートリアル:Azure Data Share を使用したデータの受け入れと受信
[アーティクル] 12/19/2023
14 人の共同作成者
フィードバック
この記事の内容
このチュートリアルでは、Azure Data Share を使用してデータ共有の招待を受け入れる方法を学習します。 自分が共有しているデータを受信する方法と、自分が共有しているデータのスナップショットを常に最新に保つために通常の更新間隔を有効にする方法を学習します。
Azure Data Share の招待を受け入れる方法
Azure Data Share アカウントを作成する
自分のデータの受信先を指定する
スケジュールされた更新のため、自分のデータ共有のサブスクリプションを作成する
前提条件
データ共有の招待を受け入れる前に、次に一覧表示されているいくつかの Azure リソースを作成する必要があります。
データ共有の招待を受け入れる前に、すべての前提条件を満たしていることを確認します。
ストレージ アカウントへのデータの受信
Azure Storage アカウント: Azure Storage アカウント をまだお持ちでない場合は、作成できます。
ストレージ アカウントに書き込む権限。これは、Microsoft.Storage/storageAccounts/write に含まれています。 このアクセス許可は、ストレージ アカウント共同作成者 ロール内に存在します。
ストレージ アカウントにロールの割り当てを追加する権限。これは、Microsoft.Authorization/role assignments/write に含まれています。 この権限は、所有者ロール内に存在します。
SQL ベースのターゲットへのデータの受信
Azure SQL Database、Azure Synapse Analytics へのデータを受信することを選択した場合、前提条件の一覧を以下に示します。
Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)。
SQL サーバー上のデータベースに書き込む権限。これは、Microsoft.Sql/servers/databases/write に含まれています。 このアクセス許可は、共同作成者 ロール内に存在します。
SQL サーバーの Microsoft Entra 管理者
SQL Server ファイアウォール アクセス。 この操作を行うには、以下の手順を実行します。
Azure portal の SQL サーバーで、 [ファイアウォールと仮想ネットワーク] に移動します。
[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] で [はい] を選択します。
[+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変わることがあります。 次回 Azure portal から SQL データを共有するときにも、このプロセスを繰り返すことが必要になる場合もあります。 IP 範囲を追加することもできます。
[保存] を選択します。
Azure Synapse Analytics (ワークスペース) の SQL プールにデータを受信するための前提条件
Azure Synapse Analytics (ワークスペース) の専用 SQL プール。 サーバーレス SQL プールへのデータの受信は、現在サポートされていません。
Synapse ワークスペースの SQL プールに対する書き込みアクセス許可。これは、Microsoft.Synapse/workspaces/sqlPools/write にあります。 このアクセス許可は、共同作成者 ロール内に存在します。
Data Share リソースのマネージド ID が Synapse ワークスペースの SQL プールにアクセスするためのアクセス許可。 この操作を行うには、以下の手順を実行します。
Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [Microsoft Entra admin] (Microsoft Entra 管理者) を選択し、自分自身を Microsoft Entra 管理者 に設定します。
Synapse Studio を開き、左側のナビゲーションから [管理] を選択します。 [セキュリティ] で [アクセス制御] を選択します。 SQL 管理者 またはワークスペース管理者 ロールを自分に割り当てます。
Synapse Studio で、左側のナビゲーションから [開発] を選択します。 SQL プールで次のスクリプトを実行して、Data Share リソースのマネージド ID を "db_datareader、db_datawriter、db_ddladmin" として追加します。
create user "<share_acc_name>" from external provider;
exec sp_addrolemember db_datareader, "<share_acc_name>";
exec sp_addrolemember db_datawriter, "<share_acc_name>";
exec sp_addrolemember db_ddladmin, "<share_acc_name>";
<share_acc_name> は、ご自分の Data Share リソースの名前です。 Data Share リソースをまだ作成していない場合は、後でこの前提条件に戻ることができます。
Synapse ワークスペースのファイアウォール アクセス。 この操作を行うには、以下の手順を実行します。
Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
[Azure サービスおよびリソースに、このワークスペースへのアクセスを許可する] で [オン] を選びます。
[+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変わることがあります。 次回 Azure portal から SQL データを共有するときにも、このプロセスを繰り返すことが必要になる場合もあります。 IP 範囲を追加することもできます。
[保存] を選択します。
Azure Data Explorer クラスターへのデータの受信:
データ プロバイダーの Data Explorer クラスターと同じ Azure データ センター内の Azure Data Explorer クラスター: まだお持ちでない場合は、Azure Data Explorer クラスター を作成できます。 データ プロバイダーのクラスターの Azure データ センターがわからない場合は、後でこの手順の中でクラスターを作成できます。
Azure Data Explorer クラスターに書き込む権限。これは、Microsoft.Kusto/clusters/write に含まれています。 この権限は、投稿者ロール内に存在します。
Azure portal にサインインする
Azure portal にサインインします。
招待を開く
招待は、メールから開くことができるほか、Azure portal から直接開くこともできます。
招待をメールから開くには、受信トレイでデータ プロバイダーからの招待を確認します。 招待は Microsoft Azure からで、件名は " yourdataprovider@domain.com からの Azure Data Share の招待 " になっています。 [招待を表示] を選択して、Azure で招待を確認します。
Azure portal から直接招待を開くには、Azure portal で [データ共有への招待] を検索します。 この操作により、Data Share の招待の一覧が表示されます。
テナントのゲスト ユーザーの場合、Data Share の招待を初めて表示する前に、テナントの自分のメール アドレスを確認するよう求められます。 確認が完了すると、12 か月間有効になります。
表示する招待を選択します。
まず、PowerShell の環境を準備します。 PowerShell コマンドは、ローカルで実行するか、Azure Cloud Shell の Bash 環境を使用して実行できます。
Azure PowerShell をローカルで使用する場合は、次のようにします。
Azure Cloud Shell を使用する場合は、次のようにします。
Connect-AzAccount コマンドを使用して、Azure アカウントに接続します。
Connect-AzAccount
複数のサブスクリプションがある場合は、Set-AzContext コマンドを実行して正しいサブスクリプションを設定します。
Set-AzContext [SubscriptionID/SubscriptionName]
自分の現在の招待を表示するには、Get-AzDataShareReceivedInvitation コマンドを実行します。
Get-AzDataShareReceivedInvitation
次のセクションで使用するために招待 ID をコピーします。
招待を受け入れる
[使用条件] を含む、すべてのフィールドを確認してください。 使用条件に同意する場合は、同意を示すボックスをオンにする必要があります。
[Target Data Share Account](ターゲット データ共有アカウント) の下で、ご自分のデータ共有のデプロイ先となるサブスクリプションとリソース グループを選択します。
[Data Share Account](データ共有アカウント) フィールドには、既存のデータ共有アカウントがない場合には、 [新規作成] を選択します。 それ以外の場合は、自分のデータ共有を受け入れる既存のデータ共有アカウントを選択します。
[Received Share Name] (受信した共有名) フィールドでは、データ提供で指定された既定値のままにするか、受信した共有の新しい名前を指定できます。
利用規約に同意し、受信した共有を管理するための Data Share アカウントを指定したら、 [Accept and configure](受け入れと構成) を選択します。 共有サブスクリプションが作成されます。
この操作により、Data Share アカウントに、受信した共有が表示されます。
招待を受け入れたくない場合は、[拒否] を選択します。
az datashare share-subscription create コマンドを使用して、Data Share を作成します。
az datashare share-subscription create --resource-group share-rg \
--name "fabrikamsolutions" --account-name FabrikamDataShareAccount \
--invitation-id 89abcdef-0123-4567-89ab-cdef01234567 \
--source-share-location "East US 2"
New-AzDataShareSubscription コマンドを使用して、Data Share を作成します。 InvitationId は、前の手順で収集した ID です。
New-AzDataShareSubscription -ResourceGroupName share-rg -AccountName FabrikamDataShareAccount -Name "Fabrikam Solutions" -InvitationId "89abcdef-0123-4567-89ab-cdef01234567"
データを受信する場所を構成するには、次の手順に従います。
[データセット] タブを選択します。ターゲット先を割り当てるデータセットの横にあるチェックボックスをオンにします。 [+ ターゲットへのマップ] を選択し、ターゲット データ ストアを選択します。
データを配置するターゲット データ ストアの種類を選択します。 パスと名前が同じターゲット データ ストア内のすべてのデータ ファイルまたはデータ テーブルが上書きされます。 Azure SQL Database または Azure Synapse Analytics (旧称: Azure SQL DW) でデータを受け取る場合は、[Allow Data Share to run the above 'create user' script on my behalf] (自分の代わりに上記の "ユーザーの作成" スクリプトを実行することを Data Share に許可する) チェック ボックスをオンにします。
インプレース共有の場合は、指定された場所にあるデータ ストアを選択します。 この場所は、データ プロバイダーのソース データ ストアが配置されている Azure データ センターです。 データセットがマップされたら、ターゲット パスのリンクに従ってデータにアクセスできます。
スナップショットベースの共有の場合、データに定期的な更新を提供するためのスナップショット スケジュールがデータ プロバイダーによって作成されていれば、 [スナップショット スケジュール] タブを選択して、スナップショット スケジュールを有効にすることもできます。スナップショット スケジュールの横にあるチェック ボックスをオンにし、 [+ Enable](+ 有効) を選択します。 スケジュールされた最初のスナップショットは、スケジュール時刻から 1 分以内に開始され、以降のスナップショットはスケジュール時刻から数秒以内に開始されます。
コピーしたファイルのメタデータは、各実行後に保持されません。 これは仕様です。
これらのコマンドを使用して、データを受信する場所を構成します。
az datashare consumer-source-data-set list コマンドを実行して、データ セット ID を取得します。
az datashare consumer-source-data-set list --resource-group "share-rg" \
--account-name "FabrikamDataShareAccount" \
--share-subscription-name "fabrikamsolutions" \
ストレージ アカウントが必要な場合、az storage account create コマンドを実行して、この Data Share のストレージ アカウントを作成します。
az storage account create --resource-group "share-rg" --name "FabrikamDataShareStorageAccount" \
az storage account show コマンドを使用して、ストレージ アカウント ID を取得します。
az storage account show --resource-group "share-rg" --name "FabrikamDataShareStorageAccount" \
--query "id"
次のコマンドを使用して、アカウント プリンシパル ID を取得します。
az datashare account show --resource-group "share-rg" --name "FabrikamDataShareAccount" \
--query "identity.principalId"
az role assignment create コマンドを使用し、アカウント プリンシパル ID とストレージ アカウント ID を使用して、アカウント プリンシパルのロールの割り当てを作成します。
az role assignment create --role "Contributor" \
--assignee-object-id aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
--assignee-principal-type ServicePrincipal --scope "your\storage\account\id\path"
手順 1 のデータセット ID に基づいてマッピング用の変数を作成します。
$mapping='{\"data_set_id\":\"' + $dataset_id + '\",\"container_name\":\"newcontainer\",
\"storage_account_name\":\"datashareconsumersa\",\"kind\":\"BlobFolder\",\"prefix\":\"consumer\"}'
az datashare data-set-mapping create コマンドを使用して、データセットのマッピングを作成します。
az datashare data-set-mapping create --account-name "FabrikamDataShareAccount" \
--data-set-mapping-name "datasetmapping" --resource-group "share-rg" \
--share-subscription-name "fabrikamsolutions" --blob-folder-data-set-mapping $mapping
az datashare share-subscription synchronize コマンドを実行して、データセットの同期を開始します。
az datashare share-subscription synchronize \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--name "Fabrikam Solutions" --synchronization-mode "Incremental" \
az datashare share-subscription list-synchronization コマンドを実行して、同期の一覧を表示します。
az datashare share-subscription list-synchronization \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--share-subscription-name "Fabrikam Solutions" \
az datashare share-subscription list-source-share-synchronization-setting コマンドを使用して、共有に設定されている同期設定を確認します。
az datashare share-subscription list-source-share-synchronization-setting \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--share-subscription-name "Fabrikam Solutions"
これらのコマンドを使用して、データを受信する場所を構成します。
Get-AzDataShareSourceDataSet コマンドを実行して、データ セット ID を取得します。
Get-AzDataShareSourceDataSet -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions"
共有データを格納する場所がまだない場合は、次の手順に従ってストレージ アカウントを作成できます。 ストレージが既にある場合は、次の手順に進むことができます。
New-AzStorageAccount コマンドを実行して Azure Storage アカウントを作成します。
$storageAccount = New-AzStorageAccount -ResourceGroupName "share-rg" -AccountName FabrikamStorageAccount -Location "East US 2" -SkuName Standard_GRS
$ctx = $storageAccount.Context
New-AzStorageContainer コマンドを実行して、データを保持する新しい Azure Storage アカウントにコンテナーを作成します。
$containerName = "StorageContainer"
New-AzStorageContainer -Name $containerName -Context $ctx -Permission blob
Set-AzStorageBlobContent コマンドを使用してファイルをアップロードします。 次の例では、ローカル メモリの D:\testFiles フォルダーから作成したコンテナーに textfile.csv をアップロードします。
Set-AzStorageBlobContent -File "D:\testFiles\textfile.csv" -Container $containerName -Blob "textfile.csv" -Context $ctx
PowerShell での Azure Storage の使用方法の詳細については、こちらの Azure Storage PowerShell ガイド を参照してください。
Get-AzStorageAccount コマンドを使用して、ストレージ アカウント ID を取得します。
Get-AzStorageAccount -ResourceGroupName "share-rg" -Name FabrikamStorageAccount
最初の手順のデータ セット ID を使用し、New-AzDataShareDataSetMapping コマンドを実行して、データセット マッピングを作成します。
New-AzDataShareDataSetMapping -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -Name "Fabrikam Solutions" -StorageAccountResourceId "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" -DataSetId "0123abcd-ef01-2345-6789-abcdef012345" -Container "StorageContainer"
Start-AzDataShareSubscriptionSynchronization コマンドを実行して、データセットの同期を開始します。
Start-AzDataShareSubscriptionSynchronization -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -SynchronizationMode "Incremental"
Get-AzDataShareSubscriptionSynchronization コマンドを実行して、同期の一覧を表示します。
Get-AzDataShareSubscriptionSynchronization -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions"
Get-AzDataShareSubscriptionSynchronizationDetail コマンドを使用して、共有に設定されている同期設定を確認します。
Get-AzDataShareSubscriptionSynchronizationDetail -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -SynchronizationId "a6ee5c8d-0ce0-485e-b2f2-966b187dc6c7"
スナップショットをトリガーする
これらの手順は、スナップショットベースの共有にのみ適用されます。
スナップショットをトリガーするには、 [詳細] タブ、 [スナップショットのトリガー] の順に選択します。 これで、データの完全なスナップショットまたは増分スナップショットをトリガーすることができます。 データ プロバイダーから初めてデータを受信する場合は、完全なコピーを選択します。
最終実行状態が "成功 " の場合、ターゲット データ ストアに移動して、受信したデータを表示します。 [データセット] を選んで、ターゲット パスのリンクをクリックします。
az datashare trigger create コマンドを実行して、スナップショットをトリガーします。
az datashare trigger create --account-name "FabrikamDataShareAccount" --resource-group "share-rg" --share-subscription-name "Fabrikam Solutions" --scheduled-trigger recurrence-interval="Day" synchronization-mode="Incremental" synchronization-time="2018-11-14T04:47:52.9614956Z" --name "Trigger1"
これらの手順は、スナップショットベースの共有にのみ適用されます。
New-AzDataShareTrigger コマンドを実行して、スナップショットをトリガーします。
New-AzDataShareTrigger -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -Name "Fabrikam Solutions" -RecurrenceInterval "Day" -SynchronizationTime "2018-11-14T04:47:52.9614956Z"
履歴を表示する
この手順は、スナップショットベースの共有にのみ適用されます。 スナップショットの履歴を表示するには、 [履歴] タブを選択します。ここには、過去 30 日間に生成されたすべてのスナップショットの履歴があります。
リソースをクリーンアップする
リソースが不要になったら、Data Share の [概要] ページに移動し、[削除] を選択して削除します。
次の手順
このチュートリアルでは、Azure Data Share の受け入れ方法と受信方法について学習しました。 Azure Data Share の概念の詳細については、Azure Data Share の用語に進んでください。