Поделиться через


Клиентская библиотека общего доступа Azure Purview для Python — версия 1.0.0b3

Общий ресурс Microsoft Purview — это полностью управляемая облачная служба.

Для использования этой библиотеки следует в значительной степени полагаться на документацию службы и наши клиентские документы по протоколу .

Исходный код | Пакет (PyPI) | Документация по продукту

Начало работы

Установка пакета

Установите клиентную библиотеку общего доступа Azure Purview для Python с помощью pip:

pip install azure-purview-sharing

Предварительные требования

  • Для использования этого пакета требуется подписка Azure и ресурс Purview .
  • Для использования этого пакета требуется Python 3.6 или более поздней версии.

Аутентификация клиента

Использование Azure Active Directory

В этом документе демонстрируется использование DefaultAzureCredential для проверки подлинности с помощью Azure Active Directory. Однако любые учетные данные, предлагаемые пакетом azure-identity , будут приняты. Дополнительные сведения о других учетных данных см. в документации по azure-identity .

Выбрав и настроив учетные данные, можно создать экземпляры 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)

Основные понятия

Поставщик данных: Поставщик данных — это пользователь, который создает общую папку, выбирая источник данных, выбирая файлы и папки для совместного использования и кому к ним предоставлять общий доступ. Затем Microsoft Purview отправляет приглашение каждому потребителю данных.

Потребитель данных: Потребитель данных — это пользователь, который принимает приглашение, указывая целевую учетную запись хранения в своей подписке Azure, которую он будет использовать для доступа к общим данным.

Примеры

Оглавление

Примеры поставщиков данных

В следующих примерах кода показано, как поставщики данных могут использовать пакет SDK Microsoft Azure Python для общего доступа Purview для управления своими действиями общего доступа.

Создание клиента отправленной общей папки

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)

Создание общей папки

Чтобы начать общий доступ к данным, поставщик данных должен сначала создать отправленный общий ресурс, который идентифицирует данные, к которым он хотел бы предоставить общий доступ.

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)

Отправка приглашения на общий доступ пользователю

После создания отправленного общего ресурса поставщик данных может распространить приглашения на потребителей, которые затем могут просматривать общие данные. В этом примере приглашение распространяется на пользователя, указывая его адрес электронной почты.

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)

Отправка приглашения на общий доступ в службу

Поставщики данных также могут расширять приглашения для служб или приложений, указывая идентификатор клиента и идентификатор объекта службы. Идентификатор объекта, используемый для отправки приглашения в службу, должен быть идентификатором объекта, связанным с корпоративным приложением (а не регистрацией приложения).

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)

Получить отправленный общий ресурс

После создания отправленного общего ресурса поставщики данных могут получить его.

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)

Список отправленных общих папок

Поставщики данных также могут получить список отправленных общих папок, которые они создали.

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)

Удалить отправленную общую папку

Поставщик данных может удалить отправленную общую папку, чтобы прекратить предоставление общего доступа ко всем потребителям данных.

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)

Получение приглашения на отправку общего доступа

После создания приглашения отправляемого общего ресурса поставщики данных могут получить его.

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)

Список отправленных приглашений на общий доступ

Поставщики данных также могут получить список отправленных приглашений на общий доступ, которые они создали.

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)

Удалить приглашение отправляемого общего ресурса

Поставщик данных может удалить отдельное приглашение на общий доступ, чтобы прекратить предоставление общего доступа к данным конкретному потребителю данных, которому было адресовано приглашение.

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)

Примеры потребителей данных

В следующих примерах кода показано, как потребители данных могут использовать пакет SDK Microsoft Azure Python для общего доступа Purview для управления своими действиями общего доступа.

Создание клиента полученной общей папки

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)

Вывод списка отсоединяемых полученных общих папок

Чтобы начать просмотр данных, которыми им предоставлен доступ, потребитель данных должен сначала получить список отсоединяемых полученных общих папок. В этом списке они могут определить отсоединяемую полученную общую папку для присоединения. "Отсоединяемый" полученный общий ресурс относится к полученной общей папке, которая никогда не была присоединена или была отсоединены.

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)

Присоединение полученной общей папки

После того как потребитель данных определил полученную общую папку, он может присоединить полученную общую папку к расположению, где он может получить доступ к общим данным. Если полученная общая папка уже присоединена, общие данные будут доступны в указанном новом расположении.

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)

Получить полученную общую папку

Потребитель данных может получить отдельный полученный общий ресурс.

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)

Список присоединенных полученных общих папок

Потребители данных также могут получить список присоединенных общих папок.

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)

Удалить полученную общую папку

Получатель данных может удалить полученную общую папку, чтобы прекратить доступ к общим данным.

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)

Примеры общего доступа к ресурсам

В следующих примерах кода показано, как использовать пакет SDK Microsoft Azure Для Python для общего доступа Purview для просмотра общих ресурсов. Ресурс общего доступа — это базовый ресурс, из которого поставщик предоставляет общий доступ к данным, или место назначения, к которому потребитель присоединяет данные, к которым предоставлен общий доступ.

Перечисление ресурсов общего ресурса

Можно получить список общих ресурсов, чтобы просмотреть все ресурсы в учетной записи, в которой имели место действия общего доступа.

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)

Устранение неполадок

Общие сведения

Клиент каталога Purview будет вызывать исключения, определенные в Azure Core , при вызове .raise_for_status() ответов.

Ведение журнала

Эта библиотека использует стандартную библиотеку ведения журнала для ведения журнала. Основные сведения о сеансах HTTP (URL-адреса, заголовки и т. д.) регистрируются на уровне INFO.

С помощью аргумента-ключевого слова logging_enable можно включить в клиенте ведение журнала на уровне отладки (DEBUG), на котором фиксируются сведения о телах запросов и ответов, а также заголовки без изменений:

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)

Аналогичным logging_enable образом можно включить подробное ведение журнала для одного send_request вызова, даже если он не включен для клиента:

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

Дальнейшие действия

Дополнительные универсальные примеры см. в наших примерах.

Участие

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см . на странице cla.microsoft.com.

При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.