このチュートリアルでは、Azure Data Share を使用してデータ共有の招待を受け入れる方法について説明します。 共有されているデータを受信する方法と、定期的な更新間隔を有効にして、共有されているデータの最新のスナップショットを常に確実に取得する方法について説明します。
- Azure Data Share の招待を受け入れる方法
- Azure Data Share アカウントを作成する
- データの宛先を指定する
- スケジュールされた更新のためにデータ共有へのサブスクリプションを作成する
[前提条件]
データ共有の招待を受け入れる前に、以下に示す Azure リソースをいくつか作成する必要があります。
データ共有の招待を受け入れる前に、すべての前提条件が満たされていることを確認します。
ストレージ アカウントにデータを受信する
- Azure Storage アカウント: まだお持ちでない場合は、 Azure Storage アカウントを作成できます。
-
Microsoft.Storage/storageAccounts/write に存在するストレージ アカウントに書き込むアクセス許可。 このアクセス許可は、 ストレージ アカウント共同作成者 ロールに存在します。
- ストレージ アカウントにロールの割り当てを追加するアクセス許可。これは Microsoft.Authorization/ロールの割り当て/書き込みにあります。 このアクセス許可は所有者ロールに存在します。
SQL ベースのターゲットへのデータの受信
Azure SQL Database の Azure Synapse Analytics にデータを受信することを選択した場合は、以下に前提条件の一覧を示します。
- Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)。
-
MICROSOFT.Sql/servers/databases/write に存在する SQL サーバー上のデータベースに書き込むアクセス許可。 このアクセス許可は 共同作成者 ロールに存在します。
-
SQL サーバーの Microsoft Entra 管理者
- SQL Server ファイアウォールアクセス。 これを行うには、次の手順を実行します。
- Azure portal の SQL Server で、ファイアウォールと仮想ネットワークに移動します
- [Azure サービスとリソースにこのサーバーへのアクセスを許可する] で [はい] を選択します。
-
[+クライアント IP の追加] を選択します。 クライアント IP アドレスは変更される可能性があります。 このプロセスは、次回 Azure portal から SQL データを共有するときに繰り返す必要がある場合があります。 IP 範囲を追加することもできます。
-
保存 を選択します。
Azure Synapse Analytics (ワークスペース) SQL プールにデータを受信するための前提条件
Azure Synapse Analytics (ワークスペース) 専用 SQL プール。 サーバーレス SQL プールへのデータの受信は現在サポートされていません。
Microsoft.Synapse/workspaces/sqlPools/write に存在する Synapse ワークスペース内の SQL プールに書き込むアクセス許可。 このアクセス許可は 共同作成者 ロールに存在します。
Synapse ワークスペース SQL プールにアクセスするための Data Share リソースのマネージド ID に対するアクセス許可。 これを行うには、次の手順を実行します。
Azure portal で、Synapse ワークスペースに移動します。 左側のナビゲーションから 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 リソースをまだ作成していない場合は、後でこの前提条件に戻ることができます。
Synapse ワークスペースのファイアウォール アクセス。 これを行うには、次の手順を実行します。
- Azure portal で、Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
- [Azure サービスとリソースにこのワークスペースへのアクセスを許可する] で [オン] を選択します。
-
[+クライアント IP の追加] を選択します。 クライアント IP アドレスは変更される可能性があります。 このプロセスは、次回 Azure portal から SQL データを共有するときに繰り返す必要がある場合があります。 IP 範囲を追加することもできます。
-
保存 を選択します。
Azure Data Explorer クラスターにデータを受信する:
- データ プロバイダーの Data Explorer クラスターと同じ Azure データ センター内の Azure Data Explorer クラスター: まだない場合は、 Azure Data Explorer クラスターを作成できます。 データ プロバイダーのクラスターの Azure データ センターがわからない場合は、プロセスの後半でクラスターを作成できます。
-
Microsoft.Kusto/clusters/write に存在する Azure Data Explorer クラスターへの書き込みアクセス許可。 このアクセス許可は共同作成者の役割に存在します。
Azure portal にサインインする
Azure portal にサインインします。
招待を開く
招待は、電子メールから開くか、Azure portal から直接開くことができます。
メール内の招待を開くためには、まず受信トレイでデータプロバイダーからの招待を確認してください。 招待は Microsoft Azure からの招待であり、yourdataprovider@___domain.comからの Azure Data Share の招待というタイトルです。 [ 招待の表示 ] を選択して、Azure で招待を表示します。
Azure portal から直接招待を開くには、Azure portal で データ共有の招待を 検索します。 このアクションにより、データ共有の招待の一覧が表示されます。
テナントのゲスト ユーザーの場合、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 をコピーします。
招待を承諾する
利用規約を含め、すべてのフィールドが確認されていることを確認します。 利用規約に同意する場合は、同意することを示すチェック ボックスをオンにする必要があります。
[ ターゲット データ共有アカウント] で、データ共有をデプロイするサブスクリプションとリソース グループを選択します。
[ データ共有アカウント] フィールドで、既存の Data Share アカウントがない場合は [ 新規作成 ] を選択します。 それ以外の場合は、データ共有を受け入れる既存のデータ共有アカウントを選択します。
[ Received Share Name]\(受信共有名 \) フィールドでは、データ提供で指定された既定値のままにするか、受信した共有の新しい名前を指定できます。
利用規約に同意し、受信した共有を管理するデータ共有アカウントを指定したら、[ 同意して構成] を選択します。 共有サブスクリプションが作成されます。
この操作により、Data Share アカウントに、受信した共有が表示されます。
招待を承諾しない場合は、[拒否] を選択 します。
az datashare share-subscription create コマンドを使用して、データ共有を作成します。
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 コマンドを使用して、データ共有を作成します。 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) にデータを受信する場合は、[ データ共有に対して上記の "ユーザーの作成" スクリプトの実行を許可する] チェック ボックスをオンにします。
インプレース共有の場合は、指定された場所でデータ ストアを選択します。 場所は、データ プロバイダーのソース データ ストアがある Azure データ センターです。 データセットがマップされたら、ターゲット パスのリンクに従ってデータにアクセスできます。
スナップショット ベースの共有の場合、データ プロバイダーがデータを定期的に更新するためのスナップショット スケジュールを作成している場合は、[スナップショット スケジュール] タブを選択して スナップショット スケジュール を有効にすることもできます。スナップショット スケジュールの横にあるチェック ボックスをオンにし、[ + 有効] を選択します。 スケジュールされた最初のスナップショットは、スケジュール時刻から 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 日間に生成されたすべてのスナップショットの履歴を確認できます。
リソースをクリーンアップする
リソースが不要になったら、[データ共有の概要] ページに移動し、[削除] を選択して削除 します 。
次のステップ
このチュートリアルでは、Azure Data Share を受け入れて受信する方法について説明しました。 Azure Data Share の概念の詳細については、Azure Data Share の用語に進んでください。