Partilhar via


Biblioteca de clientes de compartilhamento do Azure Purview para Java – versão 1.0.0-beta.2

Compartilhamento de Dados do Microsoft Purview permite que os dados sejam compartilhados in-loco de Azure Data Lake Storage Gen2 e contas de Armazenamento do Azure, dentro e entre organizações.

Os provedores de dados podem usar Compartilhamento de Dados do Microsoft Purview para compartilhar seus dados diretamente com outros usuários e parceiros (conhecidos como consumidores de dados) sem duplicação de dados, gerenciando centralmente suas atividades de compartilhamento de dentro do Microsoft Purview.

Para consumidores de dados, Compartilhamento de Dados do Microsoft Purview fornece acesso quase em tempo real aos dados compartilhados com eles por um provedor.

Os principais recursos fornecidos pelo Compartilhamento de Dados do Microsoft Purview incluem:

  • Compartilhe dados dentro da organização ou com parceiros e clientes fora da organização (dentro do mesmo locatário do Azure ou em diferentes locatários do Azure).
  • Compartilhe dados do ADLS Gen2 ou do armazenamento de blobs in-loco sem duplicação de dados.
  • Compartilhe dados com vários destinatários.
  • Acesse dados compartilhados quase em tempo real.
  • Gerencie relações de compartilhamento e controle com quem os dados são compartilhados/de cada conta do Armazenamento de Blobs ou ADLSGen2.
  • Encerre o acesso de compartilhamento a qualquer momento.
  • Experiência flexível por meio do portal de governança do Microsoft Purview ou com APIs REST.

Visite os recursos a seguir para saber mais sobre este produto.

Código-fonte | Pacote (Maven) | Documentação | de referência da APIDocumentação do | produtoAmostras

Introdução

Pré-requisitos

Para obter mais informações sobre como criar uma conta do Microsoft Purview, consulte aqui.

Documentação

Várias documentações estão disponíveis para ajudá-lo a começar

Adicionando o pacote ao seu produto

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-analytics-purview-sharing</artifactId>
    <version>1.0.0-beta.2</version>
</dependency>

Autenticação

O pacote de Identidade do Azure fornece a implementação padrão para autenticar o cliente.

Principais conceitos

Provedor de dados: Um provedor de dados é o indivíduo que cria um compartilhamento selecionando uma fonte de dados, escolhendo quais arquivos e pastas compartilhar e com quem compartilhá-los. Em seguida, o Microsoft Purview envia um convite para cada consumidor de dados.

Consumidor de dados: Um consumidor de dados é o indivíduo que aceita o convite especificando uma conta de armazenamento de destino em sua própria assinatura do Azure que ele usará para acessar os dados compartilhados.

Exemplos

Exemplos de provedor de dados

Os exemplos de código a seguir demonstram como os provedores de dados podem usar o SDK java do Microsoft Azure para compartilhamento do Purview para gerenciar sua atividade de compartilhamento.

Criar um cliente de compartilhamento enviado

SentSharesClient sentSharesClient =
        new SentSharesClientBuilder()
                .credential(new DefaultAzureCredentialBuilder().build())
                .endpoint("https://<my-account-name>.purview.azure.com/share")
                .buildClient();

Criar um compartilhamento enviado

Para começar a compartilhar dados, o provedor de dados deve primeiro criar um compartilhamento enviado que identifique os dados que deseja compartilhar.

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());

Enviar um convite de compartilhamento para um usuário

Depois de criar um compartilhamento enviado, o provedor de dados pode estender convites para consumidores que podem exibir os dados compartilhados. Neste exemplo, um convite é estendido a um indivíduo especificando seu endereço de email.

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());

Enviar um convite de compartilhamento para um serviço

Os provedores de dados também podem estender convites para serviços ou aplicativos especificando a ID do locatário e a ID de objeto do serviço. A ID do objeto usada para enviar um convite a um serviço deve ser a ID de objeto associada ao Aplicativo Empresarial (não ao registro do aplicativo).

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());

Obter um compartilhamento enviado

Depois de criar um compartilhamento enviado, os provedores de dados podem recuperá-lo.

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);

Listar compartilhamentos enviados

Os provedores de dados também podem recuperar uma lista dos compartilhamentos enviados que criaram.

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());

Excluir um compartilhamento enviado

Um compartilhamento enviado pode ser excluído pelo provedor de dados para parar de compartilhar seus dados com todos os consumidores de dados.

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());

Obter convite de compartilhamento enviado

Depois de criar um convite de compartilhamento enviado, os provedores de dados podem recuperá-lo.

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());

Listar convites de compartilhamento enviados

Os provedores de dados também podem recuperar uma lista dos convites de compartilhamento enviados que eles criaram.

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);

Excluir um convite de compartilhamento enviado

Um convite de compartilhamento enviado individualmente pode ser excluído pelo provedor de dados para parar de compartilhar seus dados com o consumidor de dados específico ao qual o convite foi endereçado.

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());

Exemplos de consumidor de dados

Os exemplos de código a seguir demonstram como os consumidores de dados podem usar o SDK java do Microsoft Azure para compartilhamento do Purview para gerenciar suas atividades de compartilhamento.

Criar um cliente de compartilhamento recebido

ReceivedSharesClient receivedSharesClient =
        new ReceivedSharesClientBuilder()
                .credential(new DefaultAzureCredentialBuilder().build())
                .endpoint("https://<my-account-name>.purview.azure.com/share")
                .buildClient();

Listar compartilhamentos recebidos desanexados

Para começar a exibir dados compartilhados com eles, um consumidor de dados deve primeiro recuperar uma lista de compartilhamentos recebidos desanexados. Nessa lista, eles podem identificar um compartilhamento recebido desanexado para anexar.

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);

Anexar um compartilhamento de recebimento

Depois que o consumidor de dados identificar um compartilhamento recebido, ele poderá anexar o compartilhamento recebido a um local onde possa acessar os dados compartilhados. Se o compartilhamento recebido já estiver anexado, os dados compartilhados serão disponibilizados no novo local especificado.

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());

Obter Compartilhamento Recebido

Um consumidor de dados pode recuperar um compartilhamento recebido individual.

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());

Listar compartilhamentos recebidos anexados

Os consumidores de dados também podem recuperar uma lista de seus compartilhamentos recebidos anexados.

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);

Excluir um compartilhamento recebido

Um compartilhamento recebido pode ser excluído pelo consumidor de dados para encerrar o acesso aos dados compartilhados.

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()); 

Compartilhar exemplos de recursos

Os exemplos de código a seguir demonstram como usar o SDK java do Microsoft Azure para compartilhamento do Purview para exibir recursos de compartilhamento. Um recurso de compartilhamento é o recurso subjacente do qual um provedor compartilha dados ou o destino em que um consumidor anexa dados compartilhados com eles.

Listar recursos de compartilhamento

Uma lista de recursos de compartilhamento pode ser recuperada para exibir todos os recursos em uma conta em que as atividades de compartilhamento ocorreram.

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());

Solução de problemas

Habilitando o registro em log

Os SDKs do Azure para Java oferecem uma história de log consistente para ajudar a solucionar problemas de erros do aplicativo e agilizar a resolução. Os logs produzidos capturam o fluxo de um aplicativo antes que acessem o estado do terminal para ajudar a localizar o problema raiz. Exiba o wiki de log para obter diretrizes sobre como habilitar o registro em log.

Próximas etapas

Participante

Para obter detalhes sobre como contribuir para esse repositório, consulte o guia de contribuição.

  1. Bifurcar
  2. Criar seu branch de recurso (git checkout -b my-new-feature)
  3. Confirmar suas alterações (git commit -am 'Add some feature')
  4. Enviar por push para o branch (git push origin my-new-feature)
  5. Criar nova solicitação de pull