Aracılığıyla paylaş


.NET ile blob kiralamaları oluşturma ve yönetme

Bu makalede .NET için Azure Depolama istemci kitaplığını kullanarak blob kiralamalarının nasıl oluşturulacağı ve yönetileceğini gösterilmektedir. blob kira sözleşmelerini almak, yenilemek, bırakmak ve kesmek için istemci kitaplığını kullanabilirsiniz.

Prerequisites

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

using yönergeleri ekle

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.

Bir istemci nesnesi oluştur.

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.

Authorization

Yetkilendirme mekanizmasının blob kiralaması ile çalışmak için gerekli izinlere sahip olması gereklidir. Microsoft Entra ID ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Storage Blob Data Contributor veya üzeri gerekir. Daha fazla bilgi edinmek için bkz. Kira Blobu (REST API) yetkilendirme kılavuzu.

Blob kiralamaları hakkında

Kiralama, yazma ve silme işlemleri için blob üzerinde kilit oluşturur ve kilidi yönetir. Kilit süresi 15-60 saniye veya sonsuz olabilir. Blob kiralaması, blob üzerinde özel yazma ve silme erişimi sağlar. Etkin kiralaması olan bir bloba yazmak için, istemci yazma isteğiyle birlikte etkin kiralama kimliğini de eklemelidir.

Kira durumları hakkında daha fazla bilgi edinmek ve bir kiralamada belirli bir eylemi ne zaman gerçekleştirebileceğinizi öğrenmek için bkz . Kira durumları ve eylemleri.

Bloklar üzerinde etkin kiralama olan bir kapsayıcı üzerinde Kapsayıcıyı Sil de dahil olmak üzere tüm kapsayıcı işlemlerine izin verilir. Bu nedenle, kapsayıcı içindeki bloblar etkin kiralara sahip olsa bile silinebilir. Kapsayıcıyı silme haklarını kontrol etmek için Kira Kapsayıcı işlemini kullanın.

Kira işlemleri bloblar ve kapsayıcılar için tüm kiralama işlemlerini içeren bir istemci sağlayan BlobLeaseClient sınıfı tarafından işlenir. İstemci kitaplığını kullanarak kapsayıcı kiralamaları hakkında daha fazla bilgi edinmek için bkz. .NET ile kapsayıcı kiraları oluşturma ve yönetme.

Kiralama sözleşmesi edinme

Blob kiralaması edindiğinizde, kodunuzun blob üzerinde işlem yapmak için kullanabileceği bir kira ID'si alırsınız. Blob zaten etkin bir kiraya sahipse, yalnızca etkin kira kimliğini kullanarak yeni kiralama isteyebilirsiniz. Ancak, yeni bir kira süresi belirtebilirsiniz.

Kiralama almak için BlobLeaseClient sınıfının bir örneğini oluşturun ve aşağıdaki yöntemlerden birini kullanın:

Aşağıdaki örnek, bir blob için 30 saniyelik bir kira süresi edinir:

public static async Task<BlobLeaseClient> AcquireBlobLeaseAsync(
    BlobClient blobClient)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient();

    Response<BlobLease> response = 
        await leaseClient.AcquireAsync(duration: TimeSpan.FromSeconds(30));

    // Use response.Value to get information about the blob lease

    return leaseClient;
}

Kiralamayı yenileme

İstekte belirtilen kira kimliği blobla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa blob kiralamasını yenileyebilirsiniz. Kiralamanın süresi dolmuş olsa bile, bu süre sona erdiğinden beri blob değiştirilmediyse veya tekrar kiralanmadıysa kiralama yenilenebilir. Kiralamayı yenilediğinizde kiralama süresi sıfırlanır.

Kiralamayı yenilemek için BlobLeaseClient örneğinde aşağıdaki yöntemlerden birini kullanın:

Aşağıdaki örnek bir blob için kira süresini yeniler:

public static async Task RenewBlobLeaseAsync(
    BlobClient blobClient,
    string leaseID)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient(leaseID);

    await leaseClient.RenewAsync();
}

Kira sözleşmesini feshet

İstekte belirtilen kira kimliği blobla ilişkili kira kimliğiyle eşleştiğinde blob kirasını iptal edebilirsiniz. Kiranın boşaltılması, başka bir istemcinin serbest bırakma işlemi tamamlandıktan hemen sonra blob için kira talep etmesini sağlar.

BlobLeaseClient örneğinde aşağıdaki yöntemlerden birini kullanarak kiralamayı serbest bırakabilirsiniz:

Aşağıdaki örnek bir blob üzerindeki kiralama süresini sona erdirir:

public static async Task ReleaseBlobLeaseAsync(
    BlobClient blobClient,
    string leaseID)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient(leaseID);

    await leaseClient.ReleaseAsync();
}

Kira sözleşmesini bozmak

Blob üzerinde etkin bir kira varsa blob kiralamasını bozabilirsiniz. Herhangi bir yetkili istek kirayı bozabilir; eşleşen bir kira kimliği belirtmek için istek gerekli değildir. Kira bozulduktan sonra yenilenemez ve kirayı bozmak, özgün kiralamanın süresi dolana veya serbest bırakılana kadar bir süre için yeni bir kiranın alınmasına engel olur.

BlobLeaseClient örneğinde aşağıdaki yöntemlerden birini kullanarak kirayı bozabilirsiniz:

Aşağıdaki örnek bir blob üzerindeki kilidi sonlandırır.

public static async Task BreakBlobLeaseAsync(
    BlobClient blobClient)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient();

    await leaseClient.BreakAsync();
}

Kira durumları ve eylemleri

Aşağıdaki diyagramda, kiralamanın beş durumu ve kiralama durumu değişikliklerine neden olan komutlar veya olaylar gösterilmektedir.

Blob kiralama durumlarını ve durum değişikliği tetikleyicilerini gösteren diyagram.

Aşağıdaki tabloda beş kira durumu listelenmiştir, her birinin kısa bir açıklaması verilmiştir ve belirli bir durumda izin verilen kiralama eylemleri listelenmiştir. Bu kiralama eylemleri, diyagramda gösterildiği gibi durum geçişlerine neden olur.

Kira durumu Description kira eylemlerine izin verilir
Available Kiranın kilidi açık ve satın alınabiliyor. acquire
Leased Kira sözleşmesi kilitlendi. acquire (yalnızca aynı kira kimliği), renew, change, releaseve break
Expired Kiralama süresi doldu. acquire, renew, release ve break
Breaking Kira sözleşmesi feshedilmiştir, ancak mola süresi dolana kadar kilitli kalmaya devam edecektir. release ve break
Broken Kira sözleşmesi ihlal edildi ve fesih süresi sona erdi. acquire, release ve break

Kiralamanın süresi dolduğunda, blob değiştirilene veya yeniden kiralanana kadar kira kimliği Blob hizmeti tarafından korunur. İstemci, süresi dolan kira kimliğini kullanarak kiralamayı yenilemeye veya serbest bırakmaya çalışabilir. Bu işlem başarılı olursa istemci, kira kimliği son geçerli olduğundan beri blob'un değiştirilmediğini bilir. İstek başarısız olursa, istemci blob'un değiştirildiğini veya kiralama son olarak aktif olduğundan bu yana tekrar kiralandığını bilir. İstemcinin daha sonra blob üzerinde yeni bir kiralama yapması gerekir.

Bir kiranın süresi açıkça yayımlanmak yerine sona eriyorsa, blob için yeni bir kiralamanın alınabilmesi için istemcinin bir dakika kadar beklemesi gerekebilir. Ancak blob değiştirilmediyse istemci kira kimliğini kullanarak kiralamayı hemen yenileyebilir.

Anlık görüntüler salt okunur olduğundan blob anlık görüntüsü için kira verilemiyor. Anlık görüntüye göre kiralama isteğinde bulunmak durum kodu 400 (Bad Request) ile sonuçlanır.

Resources

.NET için Azure Blob Depolama istemci kitaplığını kullanarak blob kiralarını yönetme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

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. Blob kiralamalarını yönetmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

İstemci kütüphane kaynakları

Ayrıca bakınız

  • Bu makale, .NET için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için .NET uygulamanızı oluşturun bölümünde geliştirici kılavuzu makalelerinin tam listesine bakın.