Вы должны использовать sasToken
с URL-адресом большого двоичного объекта при использовании метода start_copy_from_url
или , устанавливающего исходный контейнер большого двоичного объекта как publi c. В противном случае он выдаст ошибку, которую вы видели.
Для sasToken вы можете сгенерировать его из кода или из azure портала.
Вот пример кода, включая создание токена sas для blob:
from azure.storage.blob import BlobServiceClient, BlobClient, generate_blob_sas, BlobSasPermissions
from azure.storage.fileshare import ShareClient, ShareFileClient
from datetime import datetime, timedelta
connection_string="xxx"
blobserviceclient = BlobServiceClient.from_connection_string(connection_string)
source_blob = BlobClient(blobserviceclient.url,container_name="xxx", blob_name="xxx")
#generate sas token for this blob
sasToken = generate_blob_sas(
account_name="xxx",
container_name="xxx",
blob_name="xxxx",
account_key="xxx",
permission= BlobSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
fileshareclient =ShareClient.from_connection_string(connection_string,"xxx")
destination_file = fileshareclient.get_file_client('xxx')
destination_file.start_copy_from_url(source_blob.url+"?"+sasToken)
print("**copy completed**")