Aracılığıyla paylaş


.NET ile kaynak nesne URL'sinden blob kopyalama

Bu makalede,.NET 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. Zaman uyumsuz zamanlama istediğiniz kopyalama işlemleri için bkz . .NET kullanarak zaman uyumsuz zamanlama ile blob kopyalama.

Önkoşullar

Ortamınızı ayarlama

Var olan bir projeniz yoksa, bu bölümde bir projenin .NET için Azure Blob Depolama istemci kitaplığıyla çalışacak şekilde nasıl ayarlanacağı gösterilir. Adımlar arasında paket yükleme, yönergeler ekleme using ve yetkili istemci nesnesi oluşturma yer alır. Ayrıntılar için bkz. Azure Blob Depolama ve .NET'i kullanmaya başlama.

Paketleri yükleme

Proje dizininizden komutunu kullanarak dotnet add package Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için Azure.Identity paketi gereklidir.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Yönerge ekleme using

Kod dosyanızın en üstüne şu using yönergeleri ekleyin:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Bu makaledeki bazı kod örnekleri için ek using yönergeler gerekebilir.

İ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:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Bir .NET uygulamasına bağımlılık ekleme için bir hizmet istemcisi kaydedebilirsiniz.

Ayrıca, belirli kapsayıcılar veya bloblar için istemci nesneleri de 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.

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 Verileri Katkıda Bulunanı 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.

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 zaman uyumlu olarak tamamlar.

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. Ancak, blok listesi korunmaz ve kaydedilmemiş bloklar kopyalanmamıştır. Hedef blobun içeriği kaynağın içeriğiyle aynıdır, ancak işlenen blok listesi korunmaz.

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, Blok Listesini Koy ile birlikte URL'den Blok Koy API'sini kullanın.

Blob boyutu sınırlamaları ve faturalama konuları dahil olmak üzere işlem hakkında Put Blob From URL daha fazla bilgi edinmek için bkz . URL'den Blob Ekleme açıklamaları.

Kaynak nesne URL'sinden blob kopyalama

Bu bölümde, kaynak nesne URL'sinden kopyalama işlemi gerçekleştirmek üzere .NET için Azure Depolama istemci kitaplığı tarafından sağlanan yöntemlere genel bir bakış sunulmaktadır.

Aşağıdaki yöntemler Blobu URL'den Yerleştir 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öntemler URL'den Blok Koy REST API işlemini sarmalar. Bu yöntemler, içeriğin 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 içindeki bir kaynak blobdan kopyalamaya yönelik bir senaryo gösterilmektedir. SyncUploadFromUriAsync yöntemi, örnekte gösterildiği gibi mevcut bir blobun üzerine yazılıp yazılmayacağını belirtmek için isteğe bağlı olarak bir Boole parametresi kabul edebilir. overwrite parametresi varsayılan olarak false olarak ayarlanır.

//-------------------------------------------------
// Copy a blob from the same storage account
//-------------------------------------------------
public static async Task CopyWithinStorageAccountAsync(
    BlobClient sourceBlob,
    BlockBlobClient destinationBlob)
{
    // Get the source blob URI and create the destination blob
    // overwrite param defaults to false
    await destinationBlob.SyncUploadFromUriAsync(sourceBlob.Uri/*, overwrite: false*/);
}

SyncUploadFromUriAsync yöntemi, işlem için daha fazla seçenek belirtmek üzere bir BlobSyncUploadFromUriOptions parametresini de kabul edebilir.

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.

//-------------------------------------------------
// Copy a blob from an external source
//-------------------------------------------------
public static async Task CopyFromExternalSourceAsync(
    string sourceLocation,
    BlockBlobClient destinationBlob)
{
    Uri sourceUri = new(sourceLocation);

    // Create the destination blob from the source URL
    // overwrite param defaults to false
    await destinationBlob.SyncUploadFromUriAsync(sourceUri/*, overwrite: false*/);
}

Kaynaklar

.NET 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.

REST API işlemleri

.NET için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık .NET 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:

Kod örnekleri

İstemci kitaplığı kaynakları