Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Python için Azure Depolama istemci kitaplığını kullanarak kaynak nesne URL'sinden blob kopyalama işlemi gösterilmektedir. Blobu aynı depolama hesabındaki bir kaynaktan, farklı bir depolama hesabındaki bir kaynaktan veya belirli bir URL'deki HTTP GET isteği aracılığıyla alınan erişilebilir nesnelerden kopyalayabilirsiniz.
Bu makalede ele alınan istemci kitaplığı yöntemleri, Blobu URL'den Yerleştir ve URL'den Blok Koy REST API işlemlerini kullanır. Bu yöntemler, verileri bir depolama hesabına taşımak istediğiniz ve kaynak nesnenin URL'sine sahip olmak istediğiniz kopyalama senaryoları için tercih edilir. Asenkron planlamayı tercih ettiğiniz kopyalama işlemleri için Python ile zaman uyumsuz zamanlama kullanarak blob kopyalama konusuna bakın.
Zaman uyumsuz API'leri kullanarak blob kopyalama hakkında bilgi edinmek için bkz Kaynak nesne URL'sinden asenkron olarak blob kopyalama.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Python 3.8+
Ortamınızı ayarlama
Mevcut bir projeniz yoksa, bu bölümde Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Diğer ayrıntılar için bkz. Azure Blob Depolama ve Python'ı kullanmaya başlama.
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Paketleri yükleme
kullanarak pip installaşağıdaki paketleri yükleyin:
pip install azure-storage-blob azure-identity
İçeri aktarma deyimlerini ekle
Aşağıdaki import deyimlerini ekleyin:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import (
BlobServiceClient,
BlobClient,
)
Yetkilendirme
Yetkilendirme mekanizması, kopyalama işlemini gerçekleştirmek için gerekli izinlere sahip olmalıdır. Microsoft Entra ID ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Verisi Katkı Sağlayıcı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Url'den Blob Koyma (REST API) veya Url'den Blok Koy (REST API) yetkilendirme kılavuzu.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Ayrıca, belirli kapsayıcılar veya bloblar için istemci nesneleri doğrudan veya BlobServiceClient nesnesinden oluşturabilirsiniz. İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
Kaynak nesne URL'sinden blob kopyalama hakkında
İşlem, Put Blob From URL blobun içeriğinin belirli bir URL'den okunduğu yeni bir blok blobu oluşturur. İşlem eşzamanlı olarak tamamlanır.
Kaynak, belirtilen URL'de standart bir HTTP GET isteği aracılığıyla alınabilir herhangi bir nesne olabilir. Buna blok blobları, ekleme blobları, sayfa blobları, blob anlık görüntüleri, blob sürümleri veya Azure içindeki veya dışındaki erişilebilir nesneler dahildir.
Kaynak nesne bir blok blobu olduğunda, işlenen tüm blob içeriği kopyalanır. Hedef blobun içeriği kaynağın içeriğiyle aynıdır, ancak işlenen blokların listesi korunmaz ve kaydedilmemiş bloklar kopyalanmamıştır.
Hedef her zaman bir blok blobu, var olan bir blok blobu veya işlem tarafından oluşturulan yeni bir blok blobudur. Var olan bir blobun içeriğinin üzerine yeni blobun içeriği yazılır.
İşlem Put Blob From URL her zaman kaynak blob'un tamamını kopyalar. Bayt aralığının veya blok kümesinin kopyalanması desteklenmez. Kaynak URL kullanarak blok blobunun içeriğinde kısmi güncelleştirmeler gerçekleştirmek için URL'den Blok Koy API'sini kullanın.
Blob boyutu sınırlamaları ve faturalandırma konuları dahil olmak üzere işlem hakkında daha fazla bilgi edinmek için Put Blob From URL'na bkz.
Kaynak nesne URL'sinden blob kopyalama
Bu bölümde, Bir kaynak nesne URL'sinden kopyalama işlemi gerçekleştirmek üzere Python için Azure Depolama istemci kitaplığı tarafından sağlanan yöntemlere genel bir bakış sunulmaktadır.
Aşağıdaki yöntem, URL'den Blob Koy REST API işlemini sarmalar ve blobun içeriğinin belirli bir URL'den okunduğu yeni bir blok blobu oluşturur:
Bu yöntemler, verileri bir depolama hesabına taşımak istediğiniz ve kaynak nesnenin URL'sine sahip olmak istediğiniz senaryolar için tercih edilir.
Büyük nesneler için tek tek bloklarla çalışmayı seçebilirsiniz. Aşağıdaki yöntem, URL'den Blok Gönderme REST API işlemini kapsar. Bu yöntem, içeriklerinin kaynak URL'den okunduğu bir blobun parçası olarak işlenecek yeni bir blok oluşturur:
Azure'da bir kaynaktan blob kopyalama
Azure'da bir kaynaktan blob kopya ediyorsanız, kaynak bloba erişim Microsoft Entra Kimliği, paylaşılan erişim imzası (SAS) veya hesap anahtarı aracılığıyla yetkilendirilebilir.
Aşağıdaki örnekte, Azure'da kaynak blobu kopyalamaya yönelik bir senaryo gösterilmektedir. upload_blob_from_url yöntemi, örnekte gösterildiği gibi mevcut bir blobun üzerine yazıp yazılmayacağını belirtmek için isteğe bağlı olarak bir Boole parametresi kabul edebilir.
def copy_from_source_in_azure(self, source_blob: BlobClient, destination_blob: BlobClient):
# Get the source blob URL and create the destination blob
# set overwrite param to True if you want to overwrite existing blob data
destination_blob.upload_blob_from_url(source_url=source_blob.url, overwrite=False)
Azure dışındaki bir kaynaktan blob kopyalama
Azure dışındaki erişilebilir nesneler de dahil olmak üzere belirli bir URL'de HTTP GET isteği aracılığıyla alınabilen herhangi bir kaynak nesne üzerinde kopyalama işlemi gerçekleştirebilirsiniz. Aşağıdaki örnekte, erişilebilir bir kaynak nesne URL'sinden blob kopyalamaya yönelik bir senaryo gösterilmektedir.
def copy_from_external_source(self, source_url: str, destination_blob: BlobClient):
# Create the destination blob from the source URL
# set overwrite param to True if you want to overwrite existing blob data
destination_blob.upload_blob_from_url(source_url=source_url, overwrite=False)
Kaynak nesne URL'sinden zaman uyumsuz olarak blob kopyalama
Python için Azure Blob Depolama istemci kitaplığı, bir blobu kaynak URL'den zaman uyumsuz olarak kopyalamayı destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.
Zaman uyumsuz API'leri kullanarak kaynak nesne URL'sinden blob kopyalamak için şu adımları izleyin:
Aşağıdaki import ifadelerini ekleyin:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient, BlobClientkullanarak
asyncio.runprogramı çalıştırmak için kod ekleyin. Bu işlev, örneğimizdemain()geçirilen eş yordamı çalıştırır veasyncioolay döngüsünü yönetir. Coroutine'lar async/await söz dizimi ile bildirilir. Bu örnekte, coroutine ilk olarakmain()kullanarakBlobServiceClienten üst düzeyiasync witholuşturur ve ardından bir kaynak URL'den blob kopyalayan yöntemi çağırır. Yalnızca en üst düzey istemcinin kullanmasıasync withgerektiğini unutmayın; bu istemciden oluşturulan diğer istemciler aynı bağlantı havuzunu paylaşır.async def main(): sample = BlobCopySamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: # Copy a blob from one container to another in the same storage account source = blob_service_client.get_blob_client(container="source-container", blob="sample-blob.txt") destination = blob_service_client.get_blob_client(container="destination-container", blob="sample-blob.txt") await sample.copy_from_source_in_azure(source_blob=source, destination_blob=destination) if __name__ == '__main__': asyncio.run(main())Kaynak URL'den blob kopyalamak için kod ekleyin. Aşağıdaki kod örneği, zaman uyumlu örnekle aynıdır, ancak yöntem
asyncanahtar sözcüğüyle bildirilir veawaityöntemi çağrılırkenupload_blob_from_urlanahtar sözcüğü kullanılır.async def copy_from_source_in_azure(self, source_blob: BlobClient, destination_blob: BlobClient): # Get the source blob URL and create the destination blob # set overwrite param to True if you want to overwrite existing blob data await destination_blob.upload_blob_from_url(source_url=source_blob.url, overwrite=False)
Bu temel kurulumla, bu makaledeki diğer örnekleri async/await söz dizimini kullanarak korotin olarak uygulayabilirsiniz.
Kaynaklar
Python için Azure Blob Depolama istemci kitaplığını kullanarak blobları kopyalama hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
Python için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Python paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Bu makalede ele alınan istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:
- URL'den Blob Yerleştirme (REST API)
- URL'den Blok Yükle (REST API)
İstemci kitaplığı kaynakları
İlgili içerik
- Bu makale, Python için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Python uygulamanızı oluşturma makalesinde geliştirici kılavuzu makalelerinin tam listesine bakın.