.NET ile kapsayıcı kiralamaları oluşturma ve yönetme
Bu makalede, .NET için Azure Depolama istemci kitaplığını kullanarak kapsayıcı kiralamalarının nasıl oluşturulacağı ve yönetileceğini gösterilmektedir. kapsayıcı kiralamalarını almak, yenilemek, serbest bırakmak ve kesmek için istemci kitaplığını kullanabilirsiniz.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- İşletim sisteminiz için en son .NET SDK'sı . Çalışma zamanını değil SDK'yi aldığınızdan emin olun.
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ı, kapsayıcı kiralaması ile çalışmak 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. Kira Kapsayıcısı (REST API) yetkilendirme kılavuzu.
Kapsayıcı kiralamaları hakkında
Kiralama, silme işlemleri için bir kapsayıcı üzerinde kilit oluşturur ve yönetir. Kilit süresi 15-60 saniye veya sonsuz olabilir. Kapsayıcıdaki kiralama, kapsayıcıya özel silme erişimi sağlar. Kapsayıcı kiralaması yalnızca Kapsayıcıyı Sil REST API'sini silme işlemini kullanarak kapsayıcıyı silme özelliğini denetler. Etkin kiralaması olan bir kapsayıcıyı silmek için, istemcinin silme isteğiyle birlikte etkin kira kimliğini içermesi gerekir. Kira kimliği olmadan kiralanan bir kapsayıcıda diğer tüm kapsayıcı işlemleri başarılı olur. Kapsayıcı geçici silmeyi etkinleştirdiyseniz silinen kapsayıcıları geri yükleyebilirsiniz.
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.
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 blob kiralamaları hakkında daha fazla bilgi edinmek için bkz . .NET ile blob kiralamaları oluşturma ve yönetme.
Kiralama alma
Bir kapsayıcı kirası aldığınızda, kodunuzun kapsayıcı üzerinde çalışmak için kullanabileceği bir kira kimliği alırsınız. Kapsayıcının zaten etkin bir kirası varsa, 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 kapsayıcı için 30 saniyelik kira alır:
public static async Task<BlobLeaseClient> AcquireContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
Response<BlobLease> response =
await leaseClient.AcquireAsync(duration: TimeSpan.FromSeconds(30));
// Use response.Value to get information about the container lease
return leaseClient;
}
Kiralamayı yenileme
İstekte belirtilen kira kimliği kapsayıcıyla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa kapsayıcı kirasını yenileyebilirsiniz. Kiralama süresi dolsa bile, kapsayıcının süresi dolduğundan bu yana yeniden kiralanmamış olması durumunda kira 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 kapsayıcı kirasını yeniler:
public static async Task RenewContainerLeaseAsync(
BlobContainerClient containerClient,
string leaseID)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient(leaseID);
await leaseClient.RenewAsync();
}
Kirayı serbest bırakma
İstekte belirtilen kira kimliği, kapsayıcıyla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa kapsayıcı kiralamasını serbest bırakabilirsiniz. Kiranın serbest bırakılması, başka bir istemcinin yayın tamamlandıktan hemen sonra kapsayıcı için kira almasını sağlar.
BlobLeaseClient örneğinde aşağıdaki yöntemlerden birini kullanarak kiralamayı serbest bırakabilirsiniz:
Aşağıdaki örnek bir kapsayıcıda kirayı serbest bırakır:
public static async Task ReleaseContainerLeaseAsync(
BlobContainerClient containerClient,
string leaseID)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient(leaseID);
await leaseClient.ReleaseAsync();
}
Kirayı kesme
Kapsayıcının etkin bir kirası varsa kapsayıcı kirası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 kapsayıcıda kirayı keser:
public static async Task BreakContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.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.
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 | Açıklama | kira eylemlerine izin verilir |
---|---|---|
Kullanılabilir | Kiranın kilidi açık ve satın alınabiliyor. | acquire |
Kiralanan | Kira kilitli. | acquire (yalnızca aynı kira kimliği), renew , change , release ve break |
Süresi Doldu | Kiralama süresi doldu. | acquire , renew , release ve break |
Kırma | Kira bozulmuştur, ancak mola süresi dolana kadar kira kilitlenmeye devam edecektir. | release ve break |
Bozuk | Kira bozuldu ve kesme süresi doldu. | acquire , release ve break |
Kiralamanın süresi dolduğunda, kapsayıcı yeniden değiştirilene veya 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. İstek başarısız olursa, istemci kapsayıcının yeniden kiralandığını veya kiralamanın son etkin olması nedeniyle kapsayıcının silindiğini bilir.
Bir kiranın süresi açıkça serbest bırakılmak yerine sona eriyorsa, kapsayıcı için yeni bir kiralamanın alınabilmesi için istemcinin bir dakika kadar beklemesi gerekebilir. Ancak istemci, süresi dolan kira kimliğiyle kiralamayı hemen yenileyebilir.
Kaynaklar
.NET için Azure Blob Depolama istemci kitaplığını kullanarak kapsayıcı 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. Kapsayıcı kiralarını yönetmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
İstemci kitaplığı kaynakları
Ayrıca bkz.
İlgili içerik
- 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ı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.