Selamlar,
Azure Blob Storage Lifecycle Management kural bazlı tanımlama yaparak dosyanızın access tier değiştirmenizi veya silmenizi sağlar. Bu yazıyı yazdığım zaman preview sürümünde ve kullanımından ekstra bir ücret alınmayan bir servis.
Sadece standart blob listeleme ve tier değiştirme işlemleri için ücret ödeyeceksiniz. Lifecycle Management sadece General Purpose v2 (GPv2) storage hesapları için kullanılabilir. Eğer General Purpose (GPv1) varsa buradaki makale üzerinden GPv2 upgrade işlemini yapmanız gerekiyor.
Lifecycle Management ile yapılabilecekler ise şu şekilde;
- Blobların Access tier değiştirerek performans ve maliyet açısından en iyi duruma getirme (hot to cool, hot to archive yada cool to archive)
- Kullanımı biten blobları silme
Azure storage üzerinde kullanabileceğiniz tüm access tier’ları görmek için buradaki makaleyi inceleyebilirsiniz.
Azure portal üzerinden gerekli kuralları tanımlamak için storage hesabınızda giriş yaptıktan sonra Lifecycle Management tab’ını seçebilirsiniz.
Oluşturacağımız örnek policy ise şu şekilde olacak;
Resimler container içerisinde bulunan blobların eğer
- Son düzenleme tarihi üzerinden 30 gün geçtiyse access tier cool olarak değiştir
- Son düzenleme tarihi üzerinden 90 gün geçtiyse access tier archive olarak değiştir
- Son düzenleme tarihi üzerinden 3650 gün (10 yıl) geçtiyse sil
- Oluşturulma tarihi üzerinden 90 gün geçen tüm snapshot’ları sil
Buradaki kurallarımıza karşılık gelen json;
Oluşan json’ı detaylı inceleyecek olursak.
rules => Array olarak storage account üzerinde kural setleri belirlebilmemiz sağlıyor
rules.name => Kural adı
rules.enabled => Kuralı geçici olarak pasif edebilmek için kullanılabilecek alan. Eğer değer setlenmezde default value true
rules.type => Şuan için sabit enum değeri Lifecycle
rules.definition => Lifecycle tanımlamasını sağladığımız obje
rules.definition.filters.blobTypes => İşlem yapılacak blob tipleri. Şuan kabul edilen sabit enum değeri blockBlob
rules.definition.filters.prefixMatch => Storage account içerisinde kuralın çalışmasını istediğiniz container isimleri. Bizim örneğimizde https://myaccount.blob.core.windows.net/resimler/yeniresim.jpg adresi üzerinden aldığımız resimler container’ı. Eğer bir değer belirtmezseniz kural tüm storage account için çalıştırılır
rules.definition.actions.baseBlob => Blob üzerinde uygulanacak aksiyonlar
rules.definition.actions.snapshot => Snapshot üzerinde uygulanacak aksiyonlar
Kullanılabilir aksiyonlar;
Aksiyon | Base Blob | Snapshot |
tierToCool | Eğer blob hot tier ise çalışır. Access tier’ı cool olur | Desteklenmiyor |
tierToArchive | Eğer blob hot yada cool tier ise çalışır. Access tier’ı archive olur | Desteklenmiyor |
delete | Blob silinir | Snapshot silinir |
Eğer bir blob birden fazla aksiyon için uyumlu ise lifecycle management blob için en ucuz olan aksiyonu uygular. Örn: delete işlemi, tierToArchive işlemine göre daha ucuz yada tierToArchive işlemi tierToCool işlemine göre daha ucuz.
Aksiyonlar için tanımlanabilir koşullar ise;
Aksiyon çalıştırma koşulu | Koşul değeri | Uygunluk |
daysAfterModificationGreaterThan | Değiştirilme tarihi üzerinden geçen gün sayısı(Integer) | Sadece blob için kullanılabilir |
daysAfterCreationGreaterThan | Oluşturulma üzerinden geçen gün sayısı (Integer) | Blob ve snapshot için kullanılabilir |
Eğer storage account içerisinde oluşturulan tüm snapshotların oluşturulma tarihinden 90 gün geçtikten sonra silinmesini istiyorsak şu şekilde bir policy oluşturmamız gerekiyor.
Lifecycle Management Kullanımı kullanımı hakkında söyleyebileceklerim bu kadar.
Görüşmek üzere!