AWS S3 Lifecycle policies, depolama sınıfları arasında otomatik veri taşıma ve süresi dolan nesneleri silme işlemlerini yönetmenizi sağlar. Bu sayede manuel müdahale olmadan veri yönetimi optimize edilir, depolama maliyetleri düşer ve uyumluluk gereksinimleri karşılanır. Özellikle büyük ölçekli veri kümelerinde, doğru yapılandırılmış bir lifecycle policy, gereksiz maliyetlerin önüne geçer ve operasyonel yükü azaltır.
Nedir Bu S3 Lifecycle Policies?
AWS S3'te bir lifecycle policy, bir bucket içindeki nesnelere uygulanan kurallar bütünüdür. Her kural bir eylem (action) ve bir koşul (condition) içerir. Eylemler iki kategoriye ayrılır:
- Geçiş eylemleri (Transition actions): Nesneleri daha düşük maliyetli depolama sınıflarına taşır. Örneğin, 30 gün sonra STANDARD'dan STANDARD_IA'ya, 90 gün sonra GLACIER'a geçiş.
- Süre sonu eylemleri (Expiration actions): Nesneleri belirli bir süre sonra kalıcı olarak siler veya eski sürümleri temizler.
Lifecycle policy'ler bucket düzeyinde tanımlanır ve tüm nesnelere veya bir ön ek (prefix) ya da etikete (tag) göre filtrelenebilir. Bu esneklik sayesinde farklı veri kategorileri için farklı kurallar oluşturabilirsiniz.
Hangi Durumlarda Lifecycle Policy Kullanmalısınız?
Aşağıdaki senaryolar lifecycle policy kullanımı için idealdir:
- Yedekleme ve log verileri: Sık erişilmeyen eski yedekleri düşük maliyetli depolamaya taşımak.
- Veri arşivleme: Yasal veya uyumluluk gereği uzun süre saklanması gereken verileri Glacier veya Deep Archive'a taşımak.
- Geçici veri temizliği: Belirli bir süre sonra önemi kalmayan geçici dosyaları otomatik silmek.
- Versiyonlama yönetimi: Eski sürümleri silerek veya daha ucuz depolamaya taşıyarak maliyet kontrolü.
Bu kullanım durumlarında manuel işlemler yerine otomatik politikalar devreye girer. Örneğin, bir web uygulamasının loglarını 7 gün STANDARD'da tutup ardından STANDARD_IA'ya taşımak ve 30 gün sonra silmek, hem maliyeti azaltır hem de depolama alanını temiz tutar.
Adım Adım Lifecycle Policy Oluşturma
AWS Management Console, AWS CLI veya Infrastructure as Code araçları ile policy oluşturabilirsiniz. Aşağıdaki kontrol listesi, doğru bir yapılandırma için izlenmesi gereken adımları özetler:
- Hedefleri belirleyin: Hangi verilerin taşınacağı, ne zaman silineceği ve hangi depolama sınıflarının kullanılacağı netleştirilmeli.
- Filtreleme stratejisi oluşturun: Prefix (ör. logs/) veya tag (ör. environment=test) kullanarak kuralları belirli nesnelere uygulayın.
- Geçiş kurallarını tanımlayın: Her geçiş için minimum süre (gün) ve hedef depolama sınıfı belirtin. Örn: 30 gün sonra STANDARD_IA, 90 gün sonra GLACIER.
- Süre sonu kurallarını ekleyin: Nesnelerin ne zaman silineceğini belirleyin. Örn: 365 gün sonra kalıcı silme.
- Versiyonlama yönetimi (isteğe bağlı): Eski sürümler için ayrı kurallar (NoncurrentVersionTransition, NoncurrentVersionExpiration) ekleyin.
- Test edin: Policy'yi önce küçük bir veri kümesinde veya test bucket'ında deneyin. AWS'nin Lifecycle Policy simülasyon aracını kullanabilirsiniz.
- İzleyin ve optimize edin: CloudWatch metrikleri ile policy etkinliğini takip edin, gerekiyorsa gün cinsinden süreleri ayarlayın.
Örneğin, aşağıdaki JSON yapısı bir bucket için basit bir policy'yi temsil eder:
{
"Rules": [
{
"ID": "Log archive rule",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}
Bu policy, "logs/" ön ekiyle başlayan tüm nesneleri 30 gün sonra STANDARD_IA'ya, 90 gün sonra GLACIER'a taşır ve 365 gün sonra siler.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
Lifecycle policy yapılandırırken aşağıdaki hatalardan kaçının:
- Çok agresif geçiş süreleri: Verilere hâlâ sık erişiliyorsa erken geçiş yapmak performans sorunlarına ve erişim maliyetlerinin artmasına neden olabilir. Erişim modellerini iyi analiz edin.
- Filtreleme hataları: Tüm bucket'a uygulanan bir policy, istenmeyen verileri silebilir. Prefix veya tag kullanarak kuralları daraltın.
- Versiyonlama yönetimini unutmak: Versiyonlama açıkken eski sürümler birikerek maliyeti artırır. NoncurrentVersionExpiration ile eski sürümleri temizleyin.
- Minimum depolama sürelerini dikkate almamak: Bazı depolama sınıflarında (ör. STANDARD_IA) erken silme cezası uygulanır. AWS dökümantasyonunda belirtilen minimum süreleri kontrol edin.
- Test yapmadan canlıya almak: Policy'yi önce bir test bucket'ında denemek büyük veri kayıplarını önler. AWS'nin "Lifecycle Policy Simulator" aracını kullanabilirsiniz.
Bu hataların önüne geçmek için AWS VPC tasarımında olduğu gibi dikkatli bir planlama yapılmalıdır. Ayrıca, otomatik altyapı yönetimi için CloudFormation veya Terraform kullanarak policy'leri sürüm kontrolü altına alabilirsiniz. Sunucusuz mimarilerde de benzer şekilde Lambda soğuk başlatma optimizasyonu gibi ince ayarlar önemlidir.
Lifecycle Policy Stratejinizi Oluşturun
Başarılı bir lifecycle policy stratejisi, veri yaşam döngüsünü otomatize ederek maliyetleri kontrol altına alır ve operasyonel yükü azaltır. Unutmayın: policy'lerinizi düzenli olarak gözden geçirin ve değişen iş ihtiyaçlarına göre güncelleyin. AWS S3 Lifecycle Policies, doğru yapılandırıldığında bulut depolama maliyetlerinizde %40'a varan tasarruf sağlayabilir.
Sık Sorulan Sorular
S3 Lifecycle policy ile hangi eylemler gerçekleştirilebilir?
İki tür eylem vardır: Geçiş eylemleri (nesneleri daha düşük maliyetli depolama sınıflarına taşır) ve süre sonu eylemleri (nesneleri siler veya eski sürümleri temizler).
Lifecycle policy maliyetten ne kadar tasarruf sağlar?
Tasarruf miktarı veriye ve kullanılan depolama sınıflarına bağlıdır. Doğru yapılandırma ile özellikle arşiv verilerinde %50'ye varan oranlarda maliyet düşüşü mümkündür.
Bir objeye aynı anda kaç policy uygulanabilir?
Her bucket için birden fazla kural tanımlanabilir ancak bir nesne birden fazla kurala uyarsa en kısa süreli eylem uygulanır. Çakışmaları önlemek için filtreleme dikkatli yapılmalıdır.
Lifecycle policy oluştururken dikkat edilmesi gereken en önemli nokta nedir?
Yanlışlıkla veri kaybını önlemek için policy'yi canlıya almadan önce mutlaka test bucket'ında deneyin ve erişim modellerinizi iyi analiz edin.
Versiyonlama açıkken eski sürümler nasıl yönetilir?
NoncurrentVersionTransition ve NoncurrentVersionExpiration kuralları ekleyerek eski sürümleri daha ucuz depolamaya taşıyabilir veya belirli bir süre sonra silebilirsiniz.






