How to copy a blob from one container to another container using Azure Blob storage SDK

前端 未结 2 1575
不知归路
不知归路 2021-01-20 10:48

I have been referring to the document https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python. I have not been able to find the proper APIs for

2条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-20 11:25

    Here's a full example for version 12.0.0 of the SDK:

    from azure.storage.blob import BlobClient, BlobServiceClient
    from azure.storage.blob import ResourceTypes, AccountSasPermissions
    from azure.storage.blob import generate_account_sas    
    
    connection_string = '' # The connection string for the source container
    account_key = '' # The account key for the source container
    source_container_name = '' # Name of container which has blob to be copied
    blob_name = '' # Name of the blob you want to copy
    destination_container_name = '' # Name of container where blob will be copied
    
    # Create client
    client = BlobServiceClient.from_connection_string(connection_string) 
    
    # Create sas token for blob
    sas_token = generate_account_sas(
        account_name = client.account_name,
        account_key = account_key 
        resource_types = ResourceTypes(object=True, container=True),
        permission= AccountSasPermission(read=True,list=True),
        start = datetime.now()
        expiry = datetime.utcnow() + timedelta(hours=4) # Token valid for 4 hours
    )
    
    # Create blob client for source blob
    source_blob = BlobClient(
        client.url,
        container_name = source_container_name, 
        blob_name = blob_name,
        credential = sas_token
    )
    
    # Create new blob and start copy operation.
    new_blob = client.get_blob_client(destination_container_name, blob_name)    
    new_blob.start_copy_from_url(source_blob.url)
    

    See here for more information on how you can get the connection string and access key for the container.


    This answer assumes that both containers are within the same subscription.

提交回复
热议问题