Я пытаюсь создать учетную запись хранения в Azure и загрузить в нее большой двоичный объект, используя их python SDK. Мне удалось создать такую учетную запись:
client = get_client_from_auth_file(StorageManagementClient)
storage_account = client.storage_accounts.create(
resourceGroup,
name,
StorageAccountCreateParameters(
sku=Sku(name=SkuName.standard_ragrs),
enable_https_traffic_only=True,
kind=Kind.storage,
location=region)).result()
Проблема в том, что позже я пытаюсь создать контейнер и не знаю, что вставить как «account_url», который я пытался сделать:
client = get_client_from_auth_file(BlobServiceClient, account_url=storage_account.primary_endpoints.blob)
return client.create_container(name)
Но я получаю:
azure.core.exceptions.ResourceNotFoundError: The specified resource does not exist
Мне удалось создать контейнер, используя:
client = get_client_from_auth_file(StorageManagementClient)
return client.blob_containers.create(
resourceGroup,
storage_account.name,
name,
BlobContainer(),
public_access=PublicAccess.Container
)
Но позже, когда Я пытаюсь загрузить большой двоичный объект с помощью BlobServiceClient или BlobClien. Мне все еще нужен "account_url", поэтому я все еще получаю сообщение об ошибке:
azure.core.exceptions.ResourceNotFoundError: The specified resource does not exist
Кто-нибудь может помочь мне понять, как получить account_url для учетной записи хранения, которую я создал с помощью SDK?
EDIT: Мне удалось найти способ решения проблемы, создав строку подключения из ключей хранилища.
storage_client = get_client_from_auth_file(StorageManagementClient)
storage_keys = storage_client.storage_accounts.list_keys(resource_group, account_name)
storage_key = next(v.value for v in storage_keys.keys)
return BlobServiceClient.from_connection_string(
'DefaultEndpointsProtocol=https;' +
f'AccountName={account_name};' +
f'AccountKey={storage_key};' +
'EndpointSuffix=core.windows.net')
Это работает, но я считаю, что ответ Джорджа Чена более элегантен.