Как проверить, правильно ли был создан экземпляр BlobClient? - PullRequest
0 голосов
/ 21 апреля 2020

Я ужасно смущен тем, как посмотреть, правильно ли настроен и подключен мой сервис BlobClient. Я попытался получить некоторые параметры в классе BobClient, но доступны только те, которые я установил в определении.

Если мои учетные данные находятся в локальном JSON файле, как мне передать это в BobClient? Если нет, есть ли варианты передачи учетных данных, которые существуют в локальном файле, и создания экземпляра BlobClient?

Вот соответствующие строки кода:

client = get_client_from_auth_file(ComputeManagementClient, auth_path='azure_credentials.json')
service = BlobClient(account_url="https://myaccount.blob.core.windows.net/",
                         container_name='learn',
                         blob_name='class/courses.xlsx'
                         )

print(service.account_name()) # Returns: myaccount

with open(r'C:\Data\class\courses.xlsx', "rb") as data:
        service.upload_blob(data=data,
                            blob_type='BlockBlob',
                            overwrite=True
                            )

1 Ответ

0 голосов
/ 22 апреля 2020

Если вы хотите получить доступ к Azure хранилищу BLOB-объектов с Azure Аутентификацией AD, вам нужно назначить Azure RAB C роль ( Владелец данных хранилища BLOB-объектов , Данные хранилища BLOB-объектов Участник или Устройство чтения данных BLOB-объектов хранилища ) для участника службы или пользователя AD. Для получения более подробной информации, пожалуйста, обратитесь к документу

Например, 1. создайте субъект-службу и назначьте роль Azure RAB C для sp.

az login
az account set --subscription "<your subscription id>"
# it will assign Storage Blob Data Contributor to the sp at subscription level
az ad sp create-for-rbac -n "mysample" --role Storage Blob Data Contributor --scopes <the resource id of storage account>

enter image description here

Код
from azure.identity import ClientSecretCredential
tenant_id=''// sp tenant 
client_id=''// sp appId
client_secret='' // sp password
token_credential = ClientSecretCredential(
       tenant_id,
       client_id,
       client_secret
   )

from azure.storage.blob import  BlobClient
service =BlobClient(account_url='https://blobstorage0516.blob.core.windows.net/',container_name='test',blob_name='help.txt',credential=token_credential)
result=None
with open('D:\help.txt', "rb") as data:
       result= service.upload_blob(data=data,
                            blob_type='BlockBlob',
                            overwrite=True
                            )
print(result)

enter image description here

...