Java 用 Azure Purview 共有クライアント ライブラリ - バージョン 1.0.0-beta.2
Microsoft Purview データ共有を使用すると、組織内と組織全体の両方で、Azure Data Lake Storage Gen2および Azure Storage アカウントからデータをインプレースで共有できます。
データ プロバイダーは、Microsoft Purview データ共有を使用して、データを他のユーザーやパートナー (データ コンシューマーと呼ばれます) と直接共有しながら、Microsoft Purview 内から共有アクティビティを一元的に管理できます。
データ コンシューマーの場合、Microsoft Purview データ共有はプロバイダーが共有するデータにほぼリアルタイムでアクセスできます。
Microsoft Purview データ共有によって提供される主な機能は次のとおりです。
- 組織内で、または組織外のパートナーや顧客と (同じ Azure テナント内または異なる Azure テナント間で) データを共有する。
- データの重複なしに、ADLS Gen2 または BLOB ストレージのデータをインプレースで共有する。
- 複数の受信者とデータを共有する。
- ほぼリアルタイムで共有データにアクセスする。
- ADLSGen2 または Blob Storage アカウントごとに、共有関係を管理し、データの共有元と共有元を追跡します。
- いつでも共有アクセスを終了します。
- Microsoft Purview ガバナンス ポータルから、または REST API を使用した柔軟なエクスペリエンス。
この製品の詳細については、次のリソースを参照してください。
ソースコード | パッケージ (Maven) | API リファレンス ドキュメント | 製品ドキュメント | サンプル
作業の開始
前提条件
- バージョン 8 以降の Java Development Kit (JDK)
- Azure サブスクリプション
- 既存の Microsoft Purview アカウント。
Microsoft Purview アカウントの作成の詳細については、 こちらを参照してください。
ドキュメント
作業の開始に役立つさまざまなドキュメントが用意されています
製品へのパッケージの追加
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-analytics-purview-sharing</artifactId>
<version>1.0.0-beta.2</version>
</dependency>
認証
Azure Identity パッケージは、クライアントを認証するための既定の実装を提供します。
主要な概念
データ プロバイダー: データ プロバイダーとは、データ ソースを選択して共有を作成し、共有するファイルとフォルダー、共有するユーザーを選択する個人です。 その後、Microsoft Purview から各データ コンシューマーに招待が送信されます。
データ コンシューマー: データ コンシューマーとは、共有データへのアクセスに使用する独自の Azure サブスクリプションでターゲット ストレージ アカウントを指定することで、招待を受け入れる個人です。
例
データ プロバイダーの例
次のコード例は、データ プロバイダーが Microsoft Azure Java SDK for Purview Sharing を使用して共有アクティビティを管理する方法を示しています。
送信済み共有クライアントを作成する
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
送信済み共有を作成する
データの共有を開始するには、データ プロバイダーが最初に、共有するデータを識別する送信済み共有を作成する必要があります。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = UUID.randomUUID().toString();
InPlaceSentShare sentShare = new InPlaceSentShare()
.setDisplayName("sample-share")
.setDescription("A sample share");
StoreReference storeReference = new StoreReference()
.setReferenceName("/subscriptions/de06c3a0-4610-4ca0-8cbb-bbdac204bd65/resourceGroups/provider-storage-rg/providers/Microsoft.Storage/storageAccounts/providerstorage")
.setType(ReferenceNameType.ARM_RESOURCE_REFERENCE);
StorageAccountPath storageAccountPath = new StorageAccountPath()
.setContainerName("container-name")
.setReceiverPath("shared-file-name.txt")
.setSenderPath("original/file-name.txt");
List<StorageAccountPath> paths = new ArrayList<>();
paths.add(storageAccountPath);
BlobStorageArtifact artifact = new BlobStorageArtifact()
.setStoreReference(storeReference)
.setPaths(paths);
sentShare.setArtifact(artifact);
SyncPoller<BinaryData, BinaryData> response =
sentSharesClient.beginCreateOrReplaceSentShare(
sentShareId,
BinaryData.fromObject(sentShare),
new RequestOptions());
共有の招待をユーザーに送信する
送信された共有を作成した後、データ プロバイダーは、共有データを表示できるコンシューマーに招待を拡張できます。 この例では、電子メール アドレスを指定することで、招待状を個人に拡張します。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = "<sent-share-id>";
String sentShareInvitationId = UUID.randomUUID().toString();
UserInvitation sentShareInvitation = new UserInvitation()
.setTargetEmail("receiver@microsoft.com")
.setNotify(true)
.setExpirationDate(OffsetDateTime.now().plusDays(60));
Response<BinaryData> response =
sentSharesClient.createSentShareInvitationWithResponse(
sentShareId,
sentShareInvitationId,
BinaryData.fromObject(sentShareInvitation),
new RequestOptions());
共有の招待をサービスに送信する
データ プロバイダーは、サービスのテナント ID とオブジェクト ID を指定することで、サービスまたはアプリケーションへの招待を拡張することもできます。 サービスへの招待の送信に使用されるオブジェクト ID は、(アプリケーション登録ではなく) エンタープライズ アプリケーションに関連付けられているオブジェクト ID である必要があります。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = "<sent-share-id>";
String sentShareInvitationId = UUID.randomUUID().toString();
ServiceInvitation sentShareInvitation = new ServiceInvitation()
.setTargetActiveDirectoryId(UUID.fromString("<tenant-id>"))
.setTargetObjectId(UUID.fromString("<object-id>"))
.setExpirationDate(OffsetDateTime.now().plusDays(60));
Response<BinaryData> response =
sentSharesClient.createSentShareInvitationWithResponse(
sentShareId,
sentShareInvitationId,
BinaryData.fromObject(sentShareInvitation),
new RequestOptions());
送信済み共有を取得する
送信された共有を作成した後、データ プロバイダーはそれを取得できます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
SentShare retrievedSentShare = sentSharesClient
.getSentShareWithResponse("<sent-share-id>", new RequestOptions())
.getValue()
.toObject(SentShare.class);
送信済み共有を一覧表示する
データ プロバイダーは、作成した送信済み共有の一覧を取得することもできます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
PagedIterable<BinaryData> sentShareResults = sentSharesClient.listSentShares(
"/subscriptions/de06c3a0-4610-4ca0-8cbb-bbdac204bd65/resourceGroups/provider-storage-rg/providers/Microsoft.Storage/storageAccounts/providerstorage",
new RequestOptions());
List<SentShare> sentShares = sentShareResults.stream()
.map(binaryData -> binaryData.toObject(SentShare.class))
.collect(Collectors.toList());
送信済み共有を削除する
送信された共有は、データ プロバイダーによって削除され、すべてのデータ コンシューマーとのデータ共有を停止できます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
sentSharesClient.beginDeleteSentShare("<sent-share-id", new RequestOptions());
送信済み共有の招待を取得する
送信された共有の招待を作成した後、データ プロバイダーはそれを取得できます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = "<sent-share-id>";
String sentShareInvitationId = "<sent-share-invitation-id>";
Response<BinaryData> sentShareInvitation =
sentSharesClient.getSentShareInvitationWithResponse(sentShareId, sentShareInvitationId, new RequestOptions());
送信済み共有の招待を一覧表示する
データ プロバイダーは、作成した送信済みの共有招待の一覧を取得することもできます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = "<sent-share-id>";
RequestOptions requestOptions = new RequestOptions().addQueryParam("$orderBy", "properties/sentAt desc");
PagedIterable<BinaryData> response =
sentSharesClient.listSentShareInvitations(sentShareId, requestOptions);
送信済み共有の招待を削除する
個々の送信済み共有の招待をデータ プロバイダーによって削除して、招待がアドレス指定された特定のデータ コンシューマーとのデータ共有を停止できます。
SentSharesClient sentSharesClient =
new SentSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
String sentShareId = "<sent-share-id>";
String sentShareInvitationId = "<sent-share-invitation-id>";
sentSharesClient.beginDeleteSentShareInvitation(sentShareId, sentShareInvitationId, new RequestOptions());
データ コンシューマーの例
次のコード例は、データ コンシューマーが Microsoft Azure Java SDK for Purview Sharing を使用して共有アクティビティを管理する方法を示しています。
受信した共有クライアントを作成する
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
デタッチされた受信共有を一覧表示する
共有されたデータの表示を開始するには、データ コンシューマーはまず、デタッチされた受信共有の一覧を取得する必要があります。 このリスト内で、アタッチするデタッチされた受信共有を識別できます。
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
RequestOptions requestOptions = new RequestOptions().addQueryParam("$orderBy", "properties/createdAt desc");
PagedIterable<BinaryData> response = receivedSharesClient.listDetachedReceivedShares(requestOptions);
受信共有をアタッチする
データ コンシューマーは、受信した共有を特定したら、共有データにアクセスできる場所に受信した共有をアタッチできます。 受信した共有が既にアタッチされている場合は、指定された新しい場所で共有データにアクセスできるようになります。
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
RequestOptions listRequestOptions = new RequestOptions().addQueryParam("$orderBy", "properties/createdAt desc");
PagedIterable<BinaryData> listResponse = receivedSharesClient.listDetachedReceivedShares(listRequestOptions);
Optional<BinaryData> detachedReceivedShare = listResponse.stream().findFirst();
if (!detachedReceivedShare.isPresent()) {
return;
}
String receivedShareId = new ObjectMapper()
.readValue(detachedReceivedShare.get().toString(), ObjectNode.class)
.get("id")
.textValue();
InPlaceReceivedShare receivedShare = new InPlaceReceivedShare()
.setDisplayName("my-received-share");
StoreReference storeReference = new StoreReference()
.setReferenceName("/subscriptions/de06c3a0-4610-4ca0-8cbb-bbdac204bd65/resourceGroups/consumer-storage-rg/providers/Microsoft.Storage/storageAccounts/consumerstorage")
.setType(ReferenceNameType.ARM_RESOURCE_REFERENCE);
BlobAccountSink sink = new BlobAccountSink()
.setStoreReference(storeReference)
.setContainerName("container-name")
.setFolder("folderName")
.setMountPath("optionalMountPath");
receivedShare.setSink(sink);
SyncPoller<BinaryData, BinaryData> createResponse =
receivedSharesClient.beginCreateOrReplaceReceivedShare(receivedShareId, BinaryData.fromObject(receivedShare), new RequestOptions());
受信した共有を取得する
データ コンシューマーは、受信した個々の共有を取得できます。
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
Response<BinaryData> receivedShare =
receivedSharesClient.getReceivedShareWithResponse("<received-share-id>", new RequestOptions());
添付された受信共有を一覧表示する
データ コンシューマーは、アタッチされた受信共有の一覧を取得することもできます。
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
RequestOptions requestOptions = new RequestOptions().addQueryParam("$orderBy", "properties/createdAt desc");
PagedIterable<BinaryData> response =
receivedSharesClient.listAttachedReceivedShares(
"/subscriptions/de06c3a0-4610-4ca0-8cbb-bbdac204bd65/resourceGroups/consumer-storage-rg/providers/Microsoft.Storage/storageAccounts/consumerstorage",
requestOptions);
Optional<BinaryData> receivedShare = response.stream().findFirst();
if (!receivedShare.isPresent()) {
return;
}
ReceivedShare receivedShareResponse = receivedShare.get().toObject(InPlaceReceivedShare.class);
受信した共有を削除する
受信した共有をデータ コンシューマーが削除して、共有データへのアクセスを終了できます。
ReceivedSharesClient receivedSharesClient =
new ReceivedSharesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
receivedSharesClient.beginDeleteReceivedShare("<received-share-id>", new RequestOptions());
リソースの共有の例
次のコード例では、Microsoft Azure Java SDK for Purview Sharing を使用して共有リソースを表示する方法を示します。 共有リソースとは、プロバイダーがデータを共有する基になるリソース、またはコンシューマーが共有するデータをアタッチする宛先です。
リソースの共有を一覧表示する
共有リソースの一覧を取得して、共有アクティビティが行われたアカウント内のすべてのリソースを表示できます。
ShareResourcesClient shareResourcesClient =
new ShareResourcesClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint("https://<my-account-name>.purview.azure.com/share")
.buildClient();
PagedIterable<BinaryData> shareResourceResults = shareResourcesClient.listShareResources(new RequestOptions());
List<ShareResource> shareResources = shareResourceResults.stream()
.map(binaryData -> binaryData.toObject(ShareResource.class))
.collect(Collectors.toList());
トラブルシューティング
ログ記録の有効化
Azure SDK for Java には、アプリケーション エラーのトラブルシューティングと解決の迅速化に役立つ一貫したログ記録のストーリーが用意されています。 生成されたログでは、最終状態に達する前のアプリケーションのフローがキャプチャされ、根本原因を特定するのに役立ちます。 ログ記録の有効化に関するガイダンスについては、ログ Wiki を参照してください。
次のステップ
共同作成
このリポジトリへの投稿の詳細については、 投稿ガイドを参照してください。
- フォークする
- 機能ブランチを作成する (
git checkout -b my-new-feature
) - 変更をコミットする (
git commit -am 'Add some feature'
) - ブランチにプッシュする (
git push origin my-new-feature
) - 新しい Pull Request を作成する
Azure SDK for Java