AWS S3 Maliyet Optimizasyonu 2026: Lifecycle, Intelligent-Tiering ve Storage Class Rehberi

AWS S3 maliyet optimizasyonu için 2026 rehberi: Lifecycle politikaları, Intelligent-Tiering, VPC Endpoint, Storage Lens, Terraform örnekleri ve faturanızdaki gizli maliyetleri ortaya çıkaran sekiz adımlık kontrol listesi.

AWS S3 Maliyet Optimizasyonu 2026 Rehberi

Güncellendi: 9 Haziran 2026

AWS S3 maliyet optimizasyonu özünde şu demek: doğru depolama sınıfını seçmek, Lifecycle politikalarıyla soğuyan veriyi otomatik olarak ucuz katmanlara taşımak, erişim kalıbı belirsiz prefix'lerde Intelligent-Tiering'i devreye almak, yarıda kalmış multipart upload parçalarını temizlemek ve veri transferi (egress) ücretlerini VPC Endpoint ile CloudFront üzerinden azaltmak. Aşağıdaki rehberde 2026 fiyatları, gerçek faturalarda en sık gördüğüm israf kaynakları, çalışan Terraform/CLI örnekleri ve S3 Storage Lens ile anomali tespiti adım adım var. Geçen yıl bir e-ticaret müşterisinin S3 faturasını altı haftada 17.000 USD/ay'dan 6.400 USD'ye düşürdüğüm projedeki ham notlardan damıtılmış halini düşünebilirsiniz.

  • S3 Standard'da tutulan, 30 günden eski ve nadiren okunan veriler Lifecycle politikası ile Standard-IA veya Glacier Instant Retrieval'a taşınarak depolama maliyeti %40-%68 azaltılabilir.
  • Erişim kalıbı bilinmeyen veya değişken olan bucket'lar için S3 Intelligent-Tiering, manuel Lifecycle tasarımına göre daha güvenli bir varsayılan seçimdir; aylık nesne başına 0.0025 USD izleme ücreti 128 KB altındaki nesnelerde uygulanmaz.
  • Tamamlanmamış multipart upload'lar ve eski nesne sürümleri, faturanın gizli yiyicileridir; AbortIncompleteMultipartUpload ve NoncurrentVersionExpiration kuralları her bucket'ta varsayılan olmalıdır.
  • VPC Gateway Endpoint kurulumu ücretsizdir ve EC2 - S3 trafiğini NAT Gateway üzerinden çıkmaktan kurtararak GB başına 0.045 USD'lik veri işleme ücretini sıfırlar.
  • S3 Storage Lens'in ücretsiz katmanı 28 günlük tutar; ücretli "Advanced metrics" katmanı prefix bazında soğuk veri ve maliyet anomalisi tespitini etkinleştirir.

S3 depolama sınıfları ve 2026 fiyatları

Amazon S3 maliyet optimizasyonunun temeli, her veri kümesini doğru depolama sınıfına yerleştirmektir. 2026 itibarıyla us-east-1 bölgesinde S3 Standard ilk 50 TB için GB başına aylık 0.023 USD iken, S3 Standard-Infrequent Access (IA) 0.0125 USD, S3 One Zone-IA 0.01 USD, S3 Glacier Instant Retrieval 0.004 USD, S3 Glacier Flexible Retrieval 0.0036 USD ve S3 Glacier Deep Archive yalnızca 0.00099 USD seviyesinde. Aradaki fark hızla milyonlarca dolara büyüyor: 100 TB'lık bir arşivi Standard yerine Deep Archive'da tutmak yıllık 27.000 USD'den 1.190 USD'ye iniyor.

Ne var ki yalnızca GB ücretine bakmak yanıltıcıdır. IA ve Glacier sınıfları nesne başına minimum 128 KB faturalandırılır; 30 (IA) veya 90/180 (Glacier) gün öncesinde silinen ya da taşınan veri için ek ücret de tahakkuk eder. PUT/GET istek ücretleri de farklıdır: Glacier Flexible Retrieval'dan 1.000 nesne geri yüklemek 0.05 USD artı GB başına çıkartma ücreti tutarken, Standard'da 1.000 GET 0.0004 USD. Yani küçük, sık erişilen veya kısa ömürlü nesneleri soğuk sınıflara atmayın (bunu zor yoldan öğrendim: bir analytics ekibi nightly raporları doğrudan IA'ya yazınca depolamadan kazandıkları her doları erken silme cezasıyla geri verdiler). Resmi S3 storage classes karşılaştırma sayfasında her sınıfın minimum nesne boyutu ve süre koşulları tek tek listelenmiştir.

SınıfFiyat (USD/GB/ay)Min. süreMin. nesneİlk byte gecikmesiTipik kullanım
S3 Standard0.023--msAktif uygulama verisi, web içerik
Intelligent-Tiering0.023 - 0.00099--ms (sıcak katmanlar)Erişim kalıbı belirsiz veri gölü
Standard-IA0.012530 gün128 KBmsYedek, eski log, paylaşılan dosya
One Zone-IA0.0130 gün128 KBmsYeniden üretilebilir ikincil kopyalar
Glacier Instant Retrieval0.00490 gün128 KBmsTıbbi görüntü, ürün medyası arşivi
Glacier Flexible Retrieval0.003690 gün40 KBdk-saatYedek, uyum arşivi
Glacier Deep Archive0.00099180 gün40 KB12 saatUzun vadeli uyum, çevrimdışı yedek

S3 Intelligent-Tiering ne zaman kullanılmalı?

S3 Intelligent-Tiering, erişim kalıbı önceden bilinmeyen ya da zaman içinde değişen veriler için tasarlanmıştır. Hizmet nesneleri Frequent Access, Infrequent Access (30 gün erişilmeyen), Archive Instant Access (90 gün erişilmeyen) ve opsiyonel olarak Archive Access (90+ gün) ile Deep Archive Access (180+ gün) katmanlarına otomatik taşır. Aralarda erişim ya da geri yükleme ücreti yoktur; siz yalnızca her nesne için ayda 0.0025 USD/1.000 nesne izleme ücreti ödersiniz. 128 KB altındaki nesneler ne izleme ücretine tabidir ne de soğuk katmanlara taşınır. İşte bu yüzden milyonlarca küçük thumbnail içeren bucket'larda Intelligent-Tiering çoğu zaman manuel Lifecycle'dan daha iyi sonuç verir.

Genel kuralım şu: bir veri gölündeki Parquet/Avro/JSON nesnelerinin çoğu 1 MB üstündeyse ve hangi prefix'in soğuyacağını kimse kestiremiyorsa, Intelligent-Tiering varsayılan sınıf olmalı. Buna karşılık günlük log rotasyonu, CloudTrail dosyaları veya nightly DB snapshot gibi kesin olarak öngörülebilen soğuma desenleri için klasik Lifecycle politikası, 0.0025 USD'lik izleme ücretini ortadan kaldırdığı için biraz daha ucuza gelir. AWS resmi dokümantasyonu Archive Access ve Deep Archive Access opt-in katmanlarının nasıl etkinleştirileceğini ayrıntılı anlatır. Bu iki katmanı açmadan önce geri yükleme gecikmesini kabul edebileceğinizden emin olun, aksi halde "tier change requires restore" hatası size pazartesi sabahı sürprizi olarak döner.

S3 lifecycle policy nasıl yazılır?

Lifecycle politikası, hangi nesnenin ne kadar süre sonra hangi sınıfa taşınacağını veya silineceğini belirleyen kurallar bütünüdür. Erişim kalıbı bilinen veri için Intelligent-Tiering'in 0.0025 USD/1.000 nesne izleme ücretini bile ödemek istemiyorsanız doğru araç budur. Aşağıdaki örnek, logs/ prefix'indeki nesneleri 30 gün sonra Standard-IA'ya, 90 gün sonra Glacier Instant Retrieval'a, 365 gün sonra Deep Archive'a taşır ve 7 yıl sonra siler; ayrıca 7 günden eski tamamlanmamış multipart upload'ları temizler:

{
  "Rules": [
    {
      "ID": "logs-tiering",
      "Status": "Enabled",
      "Filter": { "Prefix": "logs/" },
      "Transitions": [
        { "Days": 30,  "StorageClass": "STANDARD_IA" },
        { "Days": 90,  "StorageClass": "GLACIER_IR" },
        { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
      ],
      "Expiration": { "Days": 2555 },
      "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 }
    },
    {
      "ID": "purge-old-versions",
      "Status": "Enabled",
      "Filter": {},
      "NoncurrentVersionTransitions": [
        { "NoncurrentDays": 30, "StorageClass": "GLACIER_IR" }
      ],
      "NoncurrentVersionExpiration": { "NoncurrentDays": 180 }
    }
  ]
}

Bu politikayı CLI ile uygulamak için:

aws s3api put-bucket-lifecycle-configuration \
  --bucket my-data-lake \
  --lifecycle-configuration file://lifecycle.json

Kritik nokta şu: bir Lifecycle taşıması her bir nesne başına ücretlendirilir (Standard'dan IA'ya geçişte 1.000 nesne başına 0.01 USD). Milyarlarca küçük nesneniz varsa taşıma maliyeti birkaç aylık depolama tasarrufunu aşabilir. Dolayısıyla Lifecycle politikalarını uygulamadan önce S3 Storage Lens veya S3 Inventory ile nesne sayımı ve ortalama boyut analizini mutlaka yapın. Daha geniş bir maliyet tahsisi ve etiketleme stratejisi için bulut etiketleme ile maliyet tahsisi rehberimiz Lifecycle kurallarını tag-key filtreleriyle hedeflemenin yolunu gösterir.

S3 faturasındaki gizli maliyetler

Çoğu ekibin S3 faturasında "depolama" satırı toplamı, maliyetin yalnızca yarısıdır. Geri kalan yarı; istek ücretleri, eksik multipart upload parçaları, eski nesne sürümleri, çoklu bölge replikasyonu (CRR/SRR) ve veri taşıma ücretlerinden oluşur. Pratikte en sık karşılaştığım beş gizli maliyet kalemi şunlar:

  1. Tamamlanmamış multipart upload'lar: Büyük dosya yüklemesi yarıda kesilirse parçalar bucket'ta kalır ve depolama ücretine yansır ama ListObjects ile görünmez. aws s3api list-multipart-uploads --bucket X ile tespit edilir.
  2. Eski nesne sürümleri (Versioning): Versioning açık bir bucket'ta her PUT yeni bir sürüm yaratır; eski sürümler aynı GB ücretinden faturalanır. Standart konsolda görünmeseler bile aws s3api list-object-versions ile listelenirler.
  3. Replikasyon eşi olmadan kalmış DeleteMarker'lar: CRR ile çoklu bölgeye kopyalanan bir bucket'ta silinen nesneler hedefte DeleteMarker olarak kalır ve LIST istekleri sırasında metadata ücretine sebep olur.
  4. Glacier overhead: Her Glacier nesnesi için 32 KB Standard ve 8 KB Glacier indeks metadata'sı eklenir. 100 milyon nesnenin doğrudan Deep Archive'a taşınması durumunda yaklaşık 4 TB metadata Standard fiyatından faturalanır; yani küçük dosyalar için Glacier ekonomik olmaz.
  5. S3 Object Lock + Versioning kombinasyonu: Compliance kipinde kilitlenmiş nesneler retention süresi bitene dek silinemez; yanlış yapılandırılmış bir Object Lock kuralı yıllarca depolama maliyetine yol açabilir.

Veri transferi ve egress maliyetlerini düşürme

S3 depolama ücreti zamanla düşse de veri transferi ücreti, kurumsal faturanın en hızlı büyüyen kalemidir. İnternet üzerinden çıkan ilk 10 TB için GB başına 0.09 USD, sonraki 40 TB için 0.085 USD ödenir; aynı bölgedeki EC2'ye trafik aynı AZ üzerinden ücretsizdir, ancak NAT Gateway üzerinden geçtiğinde GB başına ek 0.045 USD "data processing" ücreti devreye girer. Üç pratik müdahale yıllık on binlerce dolar tasarruf sağlar:

  1. VPC Gateway Endpoint kurun (ücretsiz): EC2/EKS pod'ları S3 ile konuşurken NAT Gateway yerine Gateway Endpoint üzerinden gitsin. Tek satır Terraform: resource "aws_vpc_endpoint" "s3" { vpc_id = ... service_name = "com.amazonaws.eu-central-1.s3" }
  2. CloudFront önüne koyun: CloudFront ile S3 origin trafiği ücretsizdir; son kullanıcıya çıkış CloudFront tarifesinden faturalanır ve "Security Savings Bundle" gibi taahhüt indirimleri, aktif kullanıcılı projelerde S3 doğrudan egress'ten %40'a kadar ucuza gelir.
  3. S3 Transfer Acceleration'ı sorgulayın: Edge üzerinden yükleme cazip görünür ama GB başına 0.04 USD ek ücret alır. Yalnızca okyanus aşırı kullanıcılarınız varsa karşılaştırmalı test yapın.

Çapraz bölge replikasyonunda (CRR) iki yanlı veri çıkış ücreti uygulanır (kaynak bölgenin inter-region fiyatı, GB başına 0.02 USD). Replikasyonu yalnızca uyum gerektiren prefix'lerle sınırlamak için Filter alanını mutlaka kullanın. Lambda fonksiyonlarınızın S3'ten okuduğu veriler üzerinde de etki kurmak istiyorsanız serverless maliyet optimizasyonu rehberimizdeki çağrı paterni önerileri Lambda + S3 trafiği için işinize yarar.

S3 Storage Lens ile maliyet görünürlüğü

S3 Storage Lens, organizasyon ya da hesap düzeyinde tüm bucket'lar için günlük metrik ve trend grafiği sunan tek yerleşik araçtır. Ücretsiz katmanı 28 günlük tutar ve 28 temel metrik (toplam depolama, nesne sayısı, ortalama nesne boyutu vb.) sağlar. Ücretli "Advanced metrics and recommendations" katmanı (milyon nesne başına 0.20 USD/ay) prefix bazında metrik, etkinlik metrikleri ve 15 ay tutma süresi ekler; üstüne aktivasyon kuralları ile CloudWatch alarmı tetikleyebilirsiniz.

Hızlı kazanım için Storage Lens panosunda şu üç widget'ı önceliklendirin: "Incomplete multipart upload bytes", "Noncurrent version bytes" ve "Object count by size range". İlk iki widget genellikle ilk haftada %5-%15 fatura düşüşü sağlayan kuralları açığa çıkartır. Üçüncüsü, milyonlarca 1 KB altı nesne tespit ederse bunları S3 Batch Operations ile birleştirmek (mesela Parquet'e yazmak) hem depolama hem de istek ücretini düşürür. AWS Storage Lens belgelerinde 28 metrik için tam liste ve örnek CloudFormation şablonları bulabilirsiniz.

Terraform ile maliyet odaklı S3 yapılandırması

Maliyet kuralları manuel uygulanırsa kaçınılmaz olarak unutulur (bunu, yeni bir bucket Slack'te onaylandığında "tamam ekledim" denip aslında eklenmediği o klasik üretim hikâyesinde görmüştüm). Aşağıdaki Terraform modülü tek bir bucket'a hem Intelligent-Tiering yapılandırması, hem Lifecycle politikası, hem versioning + noncurrent expiration, hem de zorunlu cost-allocation etiketlerini bir arada uygular:

resource "aws_s3_bucket" "data" {
  bucket = "acme-data-lake-prod"
}

resource "aws_s3_bucket_versioning" "data" {
  bucket = aws_s3_bucket.data.id
  versioning_configuration { status = "Enabled" }
}

resource "aws_s3_bucket_intelligent_tiering_configuration" "data" {
  bucket = aws_s3_bucket.data.id
  name   = "archive-after-90-180"

  tiering {
    access_tier = "ARCHIVE_ACCESS"
    days        = 90
  }
  tiering {
    access_tier = "DEEP_ARCHIVE_ACCESS"
    days        = 180
  }
}

resource "aws_s3_bucket_lifecycle_configuration" "data" {
  bucket = aws_s3_bucket.data.id

  rule {
    id     = "abort-mpu-and-version-cleanup"
    status = "Enabled"

    abort_incomplete_multipart_upload { days_after_initiation = 7 }

    noncurrent_version_transition {
      noncurrent_days = 30
      storage_class   = "GLACIER_IR"
    }
    noncurrent_version_expiration { noncurrent_days = 180 }
  }

  rule {
    id     = "default-intelligent-tiering"
    status = "Enabled"

    transition {
      days          = 0
      storage_class = "INTELLIGENT_TIERING"
    }
  }
}

resource "aws_s3_bucket_tagging" "data" {
  bucket = aws_s3_bucket.data.id
  tag_set = {
    CostCenter  = "data-platform"
    Environment = "prod"
    Owner       = "[email protected]"
  }
}

Etiketleri Cost Allocation Tag olarak aktive etmeyi unutmayın (Billing konsolu, Cost Allocation Tags). Aksi takdirde Cost Explorer'da prefix veya bucket bazında değil yalnızca toplam S3 satırı görünür. Rezervasyon ekonomisi açısından şunu da hatırlatayım: S3, EC2'de Savings Plans ve Reserved Instances karşılaştırmamızda ele alındığı gibi taahhüt indirimi sunmaz. S3'te tek "rezervasyon benzeri" indirim S3 Glacier Provisioned Capacity'dir ve yalnızca yüksek hızlı geri yükleme garantisi gerektiren uyum senaryoları için anlamlıdır.

Uygulamaya hazır maliyet düşürme kontrol listesi

Aşağıdaki sekiz maddelik liste, çoğu ekibin ilk ay içinde uygulayabileceği ve tipik olarak S3 faturasında %20-%50 düşüş sağlayan minimum eylemleri sıralar. Her madde geri alınabilir ve üretim yüklerini bozmadan uygulanır; sırayla işleterek hem hızlı kazanım hem de düşük risk profili korunur:

  1. Her bucket'a AbortIncompleteMultipartUpload kuralı (7 gün) ekleyin; değişiklik geri dönüşsüz değildir ve hiçbir uygulamayı bozmaz.
  2. Versioning açık bucket'larda NoncurrentVersionExpiration kuralını 90-180 gün arası bir değerle aktive edin.
  3. S3 Storage Lens'i organizasyon düzeyinde etkinleştirin ve haftalık raporu FinOps Slack kanalına otomatik düşürün.
  4. "Veri kalıbı belirsiz" olan tüm yeni bucket'lar için varsayılan storage class'ı Intelligent-Tiering yapın; 128 KB altı nesne ağırlıklı bucket'lar için Lifecycle tercih edin.
  5. EC2/EKS/Lambda - S3 trafiği olan her VPC'ye S3 Gateway Endpoint ekleyin (tek satır Terraform, ücretsiz).
  6. CRR uygulanan bucket'larda Filter kullanın; tüm bucket'ı replike etmek nadiren gerçek uyum gereksinimidir.
  7. Cost Allocation Tag'leri Billing konsolundan aktive edin ve Cost Explorer'da SERVICE = S3 + Tag: CostCenter raporunu kaydedin.
  8. Her çeyrek S3 fiyat sayfasını kontrol edin; AWS son iki yılda Glacier Instant Retrieval ve Standard-IA fiyatlarını birden fazla kez düşürdü.

Sıkça Sorulan Sorular

S3 Glacier ile Deep Archive arasındaki fark nedir?

Glacier Flexible Retrieval geri yüklemeyi dakikalardan 12 saate kadar yapar ve GB başına aylık 0.0036 USD'dir; Deep Archive yalnızca 0.00099 USD ama standart geri yükleme 12 saat, toplu geri yükleme 48 saat sürer. Aylık taranma olasılığı düşük 7+ yıllık uyum arşivleri için Deep Archive ekonomiktir.

S3 Intelligent-Tiering küçük dosyalar için uygun mu?

128 KB altındaki nesneler izleme ücretine tabi değildir ve soğuk katmanlara taşınmazlar; yani küçük dosyalar Intelligent-Tiering'de etkin biçimde Frequent Access fiyatından kalır. Bu durumda nesneleri Parquet/Avro gibi formatlarda birleştirip Lifecycle ile Standard-IA'ya taşımak daha ekonomiktir.

S3 lifecycle taşıması ne kadar sürer?

Lifecycle değerlendirmesi günde bir kez asenkron çalışır, dolayısıyla bir nesnenin yeni storage class'a fiilen taşınması 24-48 saate kadar sürebilir; faturalandırma yeni sınıfın eşiği geçilince başlar. Acil değişiklik için S3 Batch Operations + CopyObject kullanın.

VPC Gateway Endpoint ile S3 trafiği gerçekten ücretsiz mi?

Evet. Gateway Endpoint'in kendisi ücretsizdir ve aynı bölgedeki S3 ile EC2 arasındaki trafik veri transferi ücretine tabi değildir; bu kurulum NAT Gateway üzerinden geçişin GB başına 0.045 USD'lik veri işleme ücretini sıfırlar. Yalnızca Interface Endpoint (PrivateLink) saatlik AZ ücreti alır.

S3 maliyetlerini hangi araçla en hızlı analiz edebilirim?

İlk durak S3 Storage Lens'in ücretsiz dashboard'udur; eksik multipart upload, eski sürüm bayt sayımı ve nesne boyut dağılımını organizasyon düzeyinde gösterir. Daha derin analiz için S3 Inventory raporlarını Athena ile sorgulayın; prefix bazında storage class dağılımını dakikalar içinde çıkarırsınız.

Yazar Hakkında Editorial Team

Our team of expert writers and editors.