次の方法で共有


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 リファレンス ドキュメント | 製品ドキュメント | サンプル

作業の開始

前提条件

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 を参照してください。

次のステップ

共同作成

このリポジトリへの投稿の詳細については、 投稿ガイドを参照してください。

  1. フォークする
  2. 機能ブランチを作成する (git checkout -b my-new-feature)
  3. 変更をコミットする (git commit -am 'Add some feature')
  4. ブランチにプッシュする (git push origin my-new-feature)
  5. 新しい Pull Request を作成する