Compartir a través de


Biblioteca cliente de Uso compartido de Azure Purview para Python: versión 1.0.0b3

Microsoft Purview Share es un servicio en la nube totalmente administrado.

Confíe en gran medida en la documentación del servicio y en nuestros documentos de cliente de protocolo para usar esta biblioteca.

Código | fuentePaquete (PyPI) | Documentación del producto

Introducción

Instalar el paquete

Instale la biblioteca cliente de Uso compartido de Azure Purview para Python con pip:

pip install azure-purview-sharing

Requisitos previos

Autenticar el cliente

Uso de Azure Active Directory

En este documento se muestra cómo usar DefaultAzureCredential para autenticarse a través de Azure Active Directory. Sin embargo, se aceptará cualquiera de las credenciales que ofrece el paquete azure-identity . Consulte la documentación de azure-identity para más información sobre otras credenciales.

Una vez que haya elegido y configurado la credencial, puede crear instancias de .PurviewSharingClient

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
client = PurviewSharingClient(endpoint="https://<my-account-name>.purview.azure.com", credential=credential)

Conceptos clave

Proveedor de datos: Un proveedor de datos es la persona que crea un recurso compartido seleccionando un origen de datos, eligiendo los archivos y carpetas con los que compartir y con quién compartirlos. Después, Microsoft Purview envía una invitación a cada consumidor de datos.

Consumidor de datos: Un consumidor de datos es la persona que acepta la invitación especificando una cuenta de almacenamiento de destino en su propia suscripción de Azure que usará para acceder a los datos compartidos.

Ejemplos

Tabla de contenido:

Ejemplos del proveedor de datos

En los ejemplos de código siguientes se muestra cómo los proveedores de datos pueden usar el SDK de Python de Microsoft Azure para Purview Sharing para administrar su actividad de uso compartido.

Crear un cliente de recurso compartido enviado

import os, uuid, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

Crear un recurso compartido

Para empezar a compartir datos, el proveedor de datos primero debe crear un recurso compartido enviado que identifique los datos que desea compartir.

import os, uuid, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

sent_share_id = uuid.uuid4()

artifact = {
    "properties": {
        "paths": [
            {
                "containerName": "container-name",
                "receiverPath": "shared-file-name.txt",
                "senderPath": "original/file-name.txt"
            }
        ]
    },
    "storeKind": "AdlsGen2Account",
    "storeReference": {
        "referenceName": "/subscriptions/{subscription-id}/resourceGroups/provider-storage-rg/providers/Microsoft.Storage/storageAccounts/providerstorage",
        "type": "ArmResourceReference"
    }
}

sent_share = {
    "properties": {
        "artifact": artifact,
        "displayName": "sampleShare",
        "description": "A sample share"
    },
    "shareKind": "InPlace"
}

request = client.sent_shares.begin_create_or_replace(
    str(sent_share_id),
    sent_share=sent_share)

response = request.result()
print(response)

Enviar invitación de recurso compartido a un usuario

Después de crear un recurso compartido enviado, el proveedor de datos puede extender invitaciones a los consumidores que puedan ver los datos compartidos. En este ejemplo, una invitación se extiende a un individuo especificando su dirección de correo electrónico.

import os, uuid

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential
from datetime import date

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

sent_share_id = uuid.uuid4()
sent_share_invitation_id = uuid.uuid4()

consumerEmail = "consumer@contoso.com"
today = date.today()
invitation = {
    "invitationKind": "User",
    "properties": {
        "targetEmail": consumerEmail,
        "notify": "true",
        "expirationDate": date(today.year+1,today.month,today.day).strftime("%Y-%m-%d") + " 00:00:00"
    }
}

invitation_request = client.sent_shares.create_invitation(
    sent_share_id=str(sent_share_id),
    sent_share_invitation_id=str(sent_share_invitation_id),
    sent_share_invitation=invitation)

invitation_response = invitation_request.result()
created_invitation = json.loads(invitation_response)
print(created_invitation)

Enviar invitación de recurso compartido a un servicio

Los proveedores de datos también pueden extender invitaciones a servicios o aplicaciones especificando el identificador de inquilino y el identificador de objeto del servicio. El identificador de objeto utilizado para enviar una invitación a un servicio debe ser el identificador de objeto asociado a la aplicación empresarial (no al registro de la aplicación).

import os, uuid

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

targetActiveDirectoryId = uuid.uuid4()
targetObjectId = uuid.uuid4()

sent_share_invitation = {
    "invitationKind": "Service",
    "properties": {
        "targetActiveDirectoryId": str(targetActiveDirectoryId),
        "targetObjectId": str(targetObjectId)
    }
}

invitation_response = client.sent_shares.create_invitation(
    sent_share_id=str(sent_share_id),
    sent_share_invitation_id=str(sent_share_invitation_id),
    sent_share_invitation=sent_share_invitation)

print(invitation_response)

Obtener recurso compartido enviado

Después de crear un recurso compartido enviado, los proveedores de datos pueden recuperarlo.

import os, uuid

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()
sent_share_id = uuid.uuid4()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

retrieved_sent_share = client.sent_shares.get(sent_share_id=str(sent_share_id))
print(retrieved_sent_share)

Enumerar recursos compartidos enviados

Los proveedores de datos también pueden recuperar una lista de los recursos compartidos enviados que han creado.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

provider_storage_account_resource_id = "/subscriptions/{subscription-id}/resourceGroups/provider-storage-rg/providers/Microsoft.Storage/storageAccounts/providerstorage"

list_request = client.sent_shares.list(
    reference_name=provider_storage_account_resource_id,
    orderby="properties/createdAt desc")

for list_response in list_request:
    print(list_response)

Eliminar recurso compartido enviado

El proveedor de datos puede eliminar un recurso compartido enviado para dejar de compartir sus datos con todos los consumidores de datos.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

sent_share_id = uuid.uuid4()

delete_request = client.sent_shares.begin_delete(sent_share_id=str(sent_share_id))
delete_response = delete_request.result()
print(delete_response)

Obtener invitación de recurso compartido enviado

Después de crear una invitación de recurso compartido enviada, los proveedores de datos pueden recuperarla.

import os, uuid, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

sent_share_id = uuid.uuid4()
sent_share_invitation_id = uuid.uuid4()

get_invitation_response = client.sent_shares.get_invitation(
    sent_share_id=str(sent_share_id), 
    sent_share_invitation_id=str(sent_share_invitation_id))

retrieved_share_invitation = json.loads(get_invitation_response)
print(retrieved_share_invitation)

Enumerar invitaciones de recurso compartido enviadas

Los proveedores de datos también pueden recuperar una lista de las invitaciones de recurso compartido enviadas que han creado.

import os, uuid, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint, credential=credential)

sent_share_id = uuid.uuid4()

list_request = client.sent_shares.list_invitations(sent_share_id=str(sent_share_id))

for list_response in list_request:
    print(list_response)

Eliminar invitación de recurso compartido enviado

El proveedor de datos puede eliminar una invitación de recurso compartido enviado individual para dejar de compartir sus datos con el consumidor de datos específico al que se ha dirigido la invitación.

import os, uuid, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

sent_share_id = uuid.uuid4()
sent_share_invitation_id = uuid.uuid4()

delete_invitation_request = client.sent_shares.begin_delete_invitation(
    sent_share_id=str(sent_share_id),
    sent_share_invitation_id=str(sent_share_invitation_id))
delete_invitation_response = delete_invitation_request.result()
print(delete_invitation_response)

Ejemplos de consumidor de datos

En los ejemplos de código siguientes se muestra cómo los consumidores de datos pueden usar el SDK de Python de Microsoft Azure para purview sharing para administrar su actividad de uso compartido.

Crear un cliente de recurso compartido recibido

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

Enumerar recursos compartidos recibidos desasociados

Para empezar a ver los datos compartidos con ellos, un consumidor de datos primero debe recuperar una lista de recursos compartidos recibidos desasociados. Dentro de esta lista, pueden identificar un recurso compartido recibido desasociado que se va a adjuntar. Un recurso compartido recibido "desasociado" hace referencia a un recurso compartido recibido que nunca se ha adjuntado o que se ha desasociado.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

list_detached_response = client.received_shares.list_detached(orderby="properties/createdAt desc")
print(list_detached_response)

Adjuntar un recurso compartido recibido

Una vez que el consumidor de datos ha identificado un recurso compartido recibido, puede adjuntar el recurso compartido recibido a una ubicación donde pueda acceder a los datos compartidos. Si el recurso compartido recibido ya está asociado, los datos compartidos serán accesibles en la nueva ubicación especificada.

import os, json

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

consumer_storage_account_resource_id = "/subscriptions/{subscription-id}/resourceGroups/consumer-storage-rg/providers/Microsoft.Storage/storageAccounts/consumerstorage"

list_detached_response = client.received_shares.list_detached(orderby="properties/createdAt desc")
received_share = next(x for x in list_detached_response)

store_reference = {
    "referenceName": consumer_storage_account_resource_id,
    "type": "ArmResourceReference"
}

sink = {
    "properties": {
        "containerName": "container-test",
        "folder": "folder-test",
        "mountPath": "mountPath-test",
    },
    "storeKind": "AdlsGen2Account",
    "storeReference": store_reference
}

received_share['properties']['sink'] = sink

update_request = client.received_shares.begin_create_or_replace(
    received_share['id'],
    content_type="application/json",
    content=json.dumps(received_share))

update_response = update_request.result()
print(update_response)

Obtener recurso compartido recibido

Un consumidor de datos puede recuperar un recurso compartido recibido individual.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

list_detached_response = client.received_shares.list_detached(orderby="properties/createdAt desc")
list_detached = json.loads(list_detached_response)
received_share = list_detached[0]

get_share_response = client.received_shares.get(received_share_id=received_share['id'])
retrieved_share = json.loads(get_share_response)
print(retrieved_share)

Enumerar recursos compartidos recibidos adjuntos

Los consumidores de datos también pueden recuperar una lista de sus recursos compartidos recibidos adjuntos.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

consumer_storage_account_resource_id = "/subscriptions/{subscription-id}/resourceGroups/consumer-storage-rg/providers/Microsoft.Storage/storageAccounts/consumerstorage"

list_attached_response = client.received_shares.list_attached(
    reference_name=consumer_storage_account_resource_id,
    orderby="properties/createdAt desc")
print(list_attached_response)

Eliminar recurso compartido recibido

El consumidor de datos puede eliminar un recurso compartido recibido para finalizar su acceso a los datos compartidos.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

delete_received_share_request = client.received_shares.begin_delete(received_share_id=received_share['id'])
delete_received_share_response = delete_received_share_request.result()
print(delete_received_share_response)

Ejemplos de recursos compartidos

En los ejemplos de código siguientes se muestra cómo usar el SDK de Python de Microsoft Azure para purview sharing para ver los recursos compartidos. Un recurso compartido es el recurso subyacente desde el que un proveedor comparte datos o el destino donde un consumidor adjunta los datos compartidos con ellos.

Enumerar recursos compartidos

Se puede recuperar una lista de recursos compartidos para ver todos los recursos de una cuenta en la que se han realizado actividades de uso compartido.

import os

from azure.purview.sharing import PurviewSharingClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["ENDPOINT"]
credential = DefaultAzureCredential()

client = PurviewSharingClient(endpoint=endpoint,credential=credential)

list_request = client.share_resources.list(
    filter="properties/storeKind eq 'AdlsGen2Account'",
    orderby="properties/createdAt desc")

for list_response in list_request:
    print(list_response)

Solución de problemas

General

El cliente del catálogo de Purview generará excepciones definidas en Azure Core si llama a .raise_for_status() las respuestas.

Registro

Esta biblioteca usa la biblioteca de registro estándar para el registro. La información básica sobre las sesiones HTTP (direcciones URL, encabezados, etc.) se registra en el nivel INFO.

El registro detallado del nivel de depuración, incluidos los cuerpos de solicitud y respuesta, y los encabezados no redactados, se puede habilitar en un cliente con el argumento de palabra clave logging_enable:

import sys
import logging
from azure.identity import DefaultAzureCredential
from azure.purview.sharing import PurviewSharingClient

# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)

# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

endpoint = "https://<my-account-name>.share.purview.azure.com"
credential = DefaultAzureCredential()

# This client will log detailed information about its HTTP sessions, at DEBUG level
client = PurviewSharingClient(endpoint=endpoint, credential=credential, logging_enable=True)

Del mismo modo, logging_enable puede habilitar el registro detallado para una sola send_request llamada, incluso cuando no está habilitado para el cliente:

result = client.types.get_all_type_definitions(logging_enable=True)

Pasos siguientes

Para obtener ejemplos más genéricos, consulte nuestros ejemplos.

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.