Takip et

My DevOps Journey: Part 13 – AWS S3 Essentials: The Backbone of Cloud Storage

AWS S3 ile bulut depolamanın gücünü keşfedin. DevOps yolculuğunuzda S3’ün temel kavramları, güvenlik ve ileri düzey kullanım senaryolarıyla veri yönetiminizi nasıl dönüştüreceğinizi öğrenin.

Günümüzün dijital dünyasında veri, her işletmenin ve uygulamanın can damarıdır. Her geçen gün artan veri hacmiyle birlikte, bu verileri güvenli, erişilebilir ve maliyet etkin bir şekilde depolamak, özellikle de ölçeklenebilirlik hedeflendiğinde kritik bir zorluk haline gelmektedir. İşte tam da bu noktada, Amazon Web Services (AWS) Simple Storage Service (S3) devreye giriyor. Bir DevOps mühendisi olarak veya bulut dünyasına adım atmaya hazırlanan bir geliştirici olarak, S3’ün ne anlama geldiğini, temel yeteneklerini ve operasyonel verimliliğinizi nasıl artırabileceğini anlamak, kariyer yolculuğunuzda size önemli bir avantaj sağlayacaktır.

Peki, S3’ü bu kadar özel kılan nedir? Birçok bulut depolama hizmeti varken, neden S3, neredeyse tüm AWS mimarilerinin ve modern uygulamaların omurgasını oluşturuyor? Cevap, onun eşsiz ölçeklenebilirliği, dayanıklılığı, güvenlik özellikleri ve esnek maliyet modelinde gizli. S3, sadece dosyaları depolamakla kalmaz; aynı zamanda statik web sitelerini barındırabilir, büyük veri analizi için veri gölleri oluşturabilir, felaket kurtarma senaryolarında kilit rol oynayabilir ve bulut tabanlı uygulamalarınızın depolama gereksinimlerini sorunsuz bir şekilde karşılayabilir. Bu makalede, S3’ün temel kavramlarından başlayarak, pratik örnekler ve gerçek dünya senaryolarıyla bu güçlü hizmeti derinlemesine inceleyeceğiz. Hazırsanız, bulut depolamanın geleceğine doğru bir yolculuğa çıkalım!

AWS S3’ün Temel Bileşenleri Nelerdir ve Nasıl Çalışır?

AWS S3, nesne depolama (object storage) hizmeti olarak tanımlanır ve geleneksel dosya sistemi veya blok depolama yaklaşımlarından önemli farklılıklar gösterir. Bu farklılıklar, S3’ü büyük ölçekli ve erişim şekli esnek olan veri depolama ihtiyaçları için ideal kılar. Öncelikle, S3’ün temel yapı taşlarına bir göz atalım, böylece çalışma prensibini daha iyi anlayabiliriz. Bu yapı taşları, kovalar, nesneler, anahtarlar, bölgeler ve depolama sınıflarıdır.

Her şeyden önce, S3’teki ana depolama birimimiz Kova (Bucket) olarak adlandırılır. Kovalar, nesnelerinizi barındıran mantıksal birimlerdir ve benzersiz bir adlandırma kuralına uymak zorundadırlar; bu isimler AWS genelinde benzersiz olmalıdır. Örneğin, “my-unique-company-data-bucket-2023” gibi bir adlandırma düşünebilirsiniz. Kovaları oluştururken bir AWS bölgesi seçmeniz gerekir (örneğin, eu-central-1 Frankfurt). Bu seçim, verilerinizin fiziksel olarak nerede depolanacağını belirler ve gecikme süresi, maliyet ve yasal uyumluluk açısından önemlidir. Kovalar, içeriklerini düzenlemek için klasör benzeri yapılar sunabilir, ancak temelde her şey düz bir nesne depolamasıdır; klasörler sadece bir ön ek (prefix) ile simüle edilir.

Kovaların içinde depoladığımız her şeye Nesne (Object) diyoruz. Bir nesne, depoladığınız verinin kendisi (herhangi bir dosya türü olabilir: metin, görsel, video, yedekleme vb.) ve bu veriyle ilgili metadata (oluşturulma tarihi, boyut, içerik türü vb.)’dan oluşur. Her nesne, bir Anahtar (Key) ile tanımlanır. Bu anahtar, kova içindeki nesnenin tam yolunu temsil eden benzersiz bir tanımlayıcıdır. Örneğin, “resimler/tatil/plaj.jpg” bir anahtar olabilir. Nesneler S3’te 0 bayttan terabaytlara kadar değişen boyutlarda olabilir ve depolanan nesne sayısında herhangi bir limit yoktur. Bu, S3’ü gerçekten sınırsız ölçeklenebilir kılar.

S3, verilerinizi birden fazla Availability Zone’da (Erişim Bölgesi) otomatik olarak yedekleyerek yüksek dayanıklılık (99.999999999% – on bir dokuz) sunar. Bu, donanım arızası gibi durumlarda bile verilerinizin kaybolmamasını sağlar. Ayrıca, her nesne için Sürümleme (Versioning) özelliğini etkinleştirerek, nesnelerinizin önceki versiyonlarını koruyabilir ve istenmeyen silinmelere veya değişikliklere karşı ek bir koruma katmanı oluşturabilirsiniz. Bu özellik, veri bütünlüğü ve kurtarma stratejileri açısından hayati önem taşır. S3, erişim kontrolünü de titizlikle yönetir. Bucket Politikaları ve Erişim Kontrol Listeleri (ACL’ler) ile kimlerin hangi nesnelere ne şekilde erişebileceğini detaylıca belirleyebilirsiniz. Genellikle Bucket Politikaları daha esnek ve kapsamlıdır, bu yüzden çoğu senaryoda tercih edilirler. Güvenlik, S3’ün temel bir bileşenidir ve şifreleme seçenekleri (sunucu tarafı şifreleme veya istemci tarafı şifreleme) ile verilerinizin hem depoda hem de transfer sırasında korunmasını sağlar. Dolayısıyla, S3 sadece bir depolama alanı olmaktan öte, verilerinizi uçtan uca yönetmenizi sağlayan kapsamlı bir bulut hizmetidir.

İlk S3 Kovamızı Oluşturma ve Dosya Yükleme Adımları

AWS S3’ün temel kavramlarını anladıktan sonra, artık ellerimizi kirletme zamanı! İlk S3 kovanızı oluşturmak ve içine dosya yüklemek oldukça basit bir süreçtir. Bu bölüm, hem AWS Yönetim Konsolu üzerinden hem de AWS Komut Satırı Arabirimi (CLI) kullanarak adım adım nasıl yapılacağını gösterecektir.

Adım 1: AWS Yönetim Konsolu Üzerinden Kova Oluşturma

  1. AWS Yönetim Konsolu’na giriş yapın ve arama çubuğuna “S3” yazarak S3 hizmetine gidin.
  2. “Buckets” (Kovalar) sayfasında, “Create bucket” (Kova oluştur) düğmesine tıklayın.
  3. Genel Yapılandırma:
    • Bucket name (Kova adı): Benzersiz bir isim girin (örneğin, “my-devops-journey-s3-bucket-2023-xyz”). Bu adın dünya genelinde AWS’de benzersiz olması gerektiğini unutmayın.
    • AWS Region (AWS Bölgesi): Kovayı depolamak istediğiniz bölgeyi seçin (örneğin, “eu-central-1 Frankfurt”). Bu, verinizin fiziksel konumunu belirleyecektir.
  4. Nesne Sahipliği: “ACL’s enabled” seçeneğini seçmek istiyorsanız bu kısımda etkinleştirebilirsiniz. Genellikle varsayılan ayarlar (Bucket owner enforced) yeterlidir ve daha basittir.
  5. Block Public Access settings for this bucket (Bu kova için Genel Erişimi Engelle ayarları): Güvenlik nedeniyle, tüm genel erişim ayarlarının varsayılan olarak “Engellendi” (Blocked) kalmasını şiddetle tavsiye ederiz. Eğer statik bir web sitesi barındıracaksanız, bu ayarları daha sonra değiştirebilirsiniz, ancak ilk aşamada kapalı tutmak en iyisidir.
  6. Bucket Versioning (Kova Sürümleme): Veri bütünlüğü ve kurtarma için sürümlemeyi etkinleştirmeyi düşünebilirsiniz. Bu özellik, aynı nesnenin birden fazla sürümünü korumanıza olanak tanır.
  7. Diğer tüm ayarları (Tags, Default encryption, Advanced settings) şimdilik varsayılan olarak bırakabilirsiniz.
  8. “Create bucket” düğmesine tıklayarak kovanızı oluşturun. Kovanız birkaç saniye içinde hazır olacaktır.

Adım 2: Kovaya Dosya Yükleme

  1. Oluşturduğunuz kovaya tıklayarak içine girin.
  2. “Upload” (Yükle) düğmesine tıklayın.
  3. “Add files” (Dosya ekle) veya “Add folder” (Klasör ekle) düğmelerini kullanarak bilgisayarınızdan yüklemek istediğiniz dosya veya klasörleri seçin.
  4. Yükleme seçenekleri sayfasında, depolama sınıfını (örneğin, Standard), şifreleme ayarlarını kontrol edebilirsiniz. Varsayılan ayarlar genellikle başlangıç için yeterlidir.
  5. “Upload” düğmesine tıklayarak dosyalarınızı S3’e yükleyin.

Yükleme tamamlandığında, dosyalarınızı kovanızın içinde listeleyebilir ve her bir nesneye tıklayarak detaylarını (URL, metadata vb.) görebilirsiniz. Bir nesnenin URL’sini kopyalayarak tarayıcınızdan erişmeyi deneyebilirsiniz, ancak eğer “Block Public Access” ayarını engelli tuttuysanız, bu URL’ye erişemeyeceksinizdir. Erişim için ya genel erişimi açmanız ya da imzalı URL’ler (signed URLs) kullanmanız gerekir.

Uzman İpucu: Yüksek hacimli ve otomatik dosya yüklemeleri için genellikle AWS CLI veya SDK’lar tercih edilir. Bu yöntemler, manuel işlemlere göre çok daha verimli ve hatasızdır.

Adım 3: AWS CLI ile Kova Oluşturma ve Dosya Yükleme

AWS CLI, komut satırından S3 kaynaklarınızı yönetmek için güçlü bir araçtır. Öncelikle CLI’ın bilgisayarınızda kurulu ve yapılandırılmış olduğundan emin olun.

Kova oluşturmak için:


aws s3 mb s3://my-devops-journey-cli-bucket-2023-xyz --region eu-central-1

Bu komut, belirtilen bölgede yeni bir kova oluşturur. "mb" "make bucket" anlamına gelir.

Bir dosyayı kovaya yüklemek için:


aws s3 cp /yol/dosya.txt s3://my-devops-journey-cli-bucket-2023-xyz/klasor/dosya.txt

Bu komut, yerel bir dosyayı (/yol/dosya.txt) S3 kovanıza (s3://my-devops-journey-cli-bucket-2023-xyz/) belirli bir anahtarla (klasor/dosya.txt) kopyalar. "cp" "copy" anlamına gelir. Dosya adını ve yolunu ihtiyacınıza göre düzenlemeyi unutmayın.

Bu adımlar, S3'e ilk adımınızı atmanız için yeterlidir. Artık verilerinizi bulutta güvenle depolayabilir ve yönetebilirsiniz.

Gelişmiş Depolama Stratejileri: S3 Yaşam Döngüsü Yönetimi ve Depolama Sınıfları Optimizasyonu Nasıl Yapılır?

Veri depolama maliyetlerini düşürmek ve performans gereksinimlerini karşılamak, özellikle büyük veri setleriyle uğraşan DevOps ekipleri için sürekli bir optimizasyon alanıdır. AWS S3, bu ihtiyacı karşılamak için çeşitli depolama sınıfları ve yaşam döngüsü yönetim kuralları sunar. Bu araçlar, verilerinizin kullanım sıklığına, erişim desenlerine ve beklenen ömrüne göre otomatik olarak daha uygun maliyetli depolama sınıflarına taşınmasını veya belirli bir süre sonra silinmesini sağlar.

S3 Depolama Sınıfları ve Avantajları:

S3, farklı erişim sıklıkları ve maliyet noktaları için optimize edilmiş birçok depolama sınıfına sahiptir. Doğru depolama sınıfını seçmek, hem performansı hem de maliyetleri önemli ölçüde etkileyebilir:

  • S3 Standard: Yüksek erişimli ve sıklıkla kullanılan veriler için tasarlanmıştır. Düşük gecikme süresi ve yüksek verim sunar. Örneğin, bir web uygulamasının ana içeriği veya sıklıkla erişilen log dosyaları bu sınıfa uygun olabilir.
  • S3 Intelligent-Tiering: Veri erişim desenleri bilinmeyen veya değişken olan veriler için idealdir. Bu sınıf, verileri erişim desenlerine göre otomatik olarak en uygun depolama katmanına taşır, böylece manuel yönetim ihtiyacını ortadan kaldırır.
  • S3 Standard-Infrequent Access (S3 Standard-IA): Daha az sıklıkla erişilen ancak gerektiğinde hızlı erişim gerektiren veriler için maliyet-etkin bir seçenektir. Depolama maliyetleri Standard'a göre daha düşüktür, ancak veri alma (retrieval) maliyeti biraz daha yüksektir. Uzun süreli yedeklemeler veya felaket kurtarma dosyaları için uygundur.
  • S3 One Zone-Infrequent Access (S3 One Zone-IA): Standard-IA'ya benzer, ancak verileri tek bir Availability Zone'da depolar. Bu, maliyeti daha da düşürür ancak bir Availability Zone'un kaybı durumunda veri dayanıklılığını azaltır. Yeniden oluşturulabilen veya kolayca başka bir yerden kopyalanabilen veriler için düşünülebilir.
  • S3 Glacier ve S3 Glacier Deep Archive: Çok nadiren erişilen ve uzun süreli arşivleme gerektiren veriler için tasarlanmıştır. Depolama maliyetleri son derece düşüktür, ancak veri alma süreleri dakikalardan saatlere kadar değişebilir ve alma maliyetleri daha yüksektir. Yasal uyumluluk gerektiren uzun vadeli arşivler veya eski veriler için idealdir.

S3 Yaşam Döngüsü Kuralları (Lifecycle Rules):

Manuel olarak hangi verinin hangi depolama sınıfına taşınacağını veya ne zaman silineceğini takip etmek, özellikle petabaytlarca veri ile uğraşırken imkansız hale gelebilir. İşte burada yaşam döngüsü kuralları devreye girer. Bu kurallar, belirli koşullar altında (örneğin, bir nesnenin oluşturulmasından belirli bir süre sonra) nesneleri otomatik olarak farklı depolama sınıflarına geçirmeyi veya tamamen silmeyi sağlar. Bu, maliyet optimizasyonunun ve veri yönetiminin anahtarıdır.

Örnek Senaryo: Log Dosyalarının Yönetimi

Diyelim ki, uygulamanız günde yüzlerce GB log dosyası üretiyor ve bunları S3'e yüklüyor. İlk 30 gün boyunca bu loglara sık sık erişmeniz gerekiyor olabilir (hata ayıklama, performans izleme). 30 gün sonra erişim sıklığı azalıyor ama 90 gün boyunca hala hızlı erişime ihtiyacınız var. 90 gün sonra ise loglar sadece yasal uyumluluk için 7 yıl saklanmalı ve nadiren erişilmelidir.

Bu senaryo için bir yaşam döngüsü kuralı şöyle oluşturulabilir:

  1. Geçiş Kuralı 1: Nesneler oluşturulduktan 30 gün sonra S3 Standard-IA sınıfına geçirin.
  2. Geçiş Kural 2: Nesneler oluşturulduktan 90 gün sonra S3 Glacier sınıfına geçirin.
  3. Son Kullanma Kuralı: Nesneler oluşturulduktan 7 yıl (2555 gün) sonra kalıcı olarak silin.

Bu kural setini AWS Konsolu üzerinden veya CLI ile kolayca ayarlayabilirsiniz. Örneğin, bir yaşam döngüsü kuralı tanımlamak için aşağıdaki gibi bir JSON yapısı kullanabilirsiniz:


{
  "Rules": [
    {
      "ID": "LogArchivingRule",
      "Prefix": "logs/",
      "Status": "Enabled",
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        }
      ],
      "Expiration": {
        "Days": 2555
      }
    }
  ]
}

Bu JSON'u kullanarak put-bucket-lifecycle-configuration CLI komutunu çalıştırabilirsiniz. Bu tür kurallar, manuel müdahaleye gerek kalmadan veri yaşam döngünüzü otomatikleştirecek, maliyetlerinizi optimize edecek ve operasyonel yükünüzü azaltacaktır. Unutmayın, doğru depolama sınıfı ve yaşam döngüsü stratejisi, S3'ten maksimum fayda sağlamanın anahtarıdır.

Güvenlik ve Erişim Kontrolü: S3 Kovalarınızı Güvende Tutmak İçin Hangi Yöntemleri Kullanmalıyız?

Veri güvenliği, bulut depolamanın en kritik yönlerinden biridir. AWS S3, verilerinizi korumak için kapsamlı bir dizi güvenlik mekanizması sunar. Bir DevOps uzmanı olarak, bu mekanizmaları doğru bir şekilde yapılandırmak ve uygulamak, hassas verilerinizin yetkisiz erişime karşı korunmasını sağlamak için hayati öneme sahiptir. Yanlış yapılandırılmış bir S3 kovası, veri sızıntılarına yol açabilir ve ciddi güvenlik riskleri oluşturabilir.

1. S3 Block Public Access (Genel Erişimi Engelle):

Bu, S3 güvenlik mekanizmalarının en temelidir ve tüm yeni kovalar için varsayılan olarak etkinleştirilmiştir. Dört ayardan oluşur:

  • Herkese açık kovaların oluşturulmasını engelle.
  • Herkese açık kovaların ayarlarının değiştirilmesini engelle.
  • Herkese açık erişim noktalarının oluşturulmasını engelle.
  • Herhangi bir kovaya genel erişim izni veren yeni ACL'lerin veya kova politikalarının uygulanmasını engelle.

Bu ayarları etkin tutmak, kovalarınızın yanlışlıkla herkese açık hale gelmesini büyük ölçüde engeller. Eğer özellikle bir kovayı herkese açmanız gerekiyorsa (örneğin, statik bir web sitesi barındırmak için), bu ayarları dikkatlice ve sadece gerekli olanlar için devre dışı bırakmalısınız.

Uzman İpucu: S3 Block Public Access, kova düzeyinde uygulanan ve IAM politikaları ile ACL'leri geçersiz kılabilen güçlü bir güvenlik katmanıdır. Kovanızı herkese açmadan önce her zaman bu ayarları kontrol edin.

2. Kova Politikaları (Bucket Policies):

Kova politikaları, bir S3 kovasına ve içindeki nesnelere erişimi yönetmek için kullanılan JSON tabanlı izin belgeleridir. Belirli bir kullanıcıya, role, IP adresine veya başka bir AWS hesabına belirli eylemler için izin verebilir veya bu eylemleri reddedebilirsiniz. İşte basit bir örnek:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowSpecificIP",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-secure-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

Bu politika, my-secure-bucket adlı kovadaki tüm nesnelere (s3:GetObject) sadece belirli bir IP aralığından (203.0.113.0/24) gelen isteklere izin verir. Diğer tüm istekler reddedilir. Kova politikaları, karmaşık erişim kontrol senaryolarını uygulamak için son derece güçlüdür.

3. IAM Politikaları ve Rolleri:

AWS Identity and Access Management (IAM), AWS kaynaklarınıza kimlerin erişebileceğini yönetmek için kullanılır. IAM kullanıcılarına ve rollerine uygulanan politikalar aracılığıyla, S3 kovalarınıza erişimi kontrol edebilirsiniz. IAM politikaları, genellikle AWS hesabınızdaki kullanıcılar, gruplar ve roller için en iyi uygulamadır. Örneğin, bir EC2 örneğinin S3'ten dosya okuması gerekiyorsa, bu EC2 örneğine atanmış bir IAM rolü aracılığıyla gerekli S3 izinlerini verebilirsiniz.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::my-app-data-bucket",
        "arn:aws:s3:::my-app-data-bucket/*"
      ]
    }
  ]
}

Bu IAM politikası, belirli bir kovanın içeriğini listeleme ve nesneleri okuma izni verir. Bu politika, bir kullanıcıya veya bir role atanabilir.

4. Şifreleme (Encryption):

S3, depolanan verilerinizi hem aktarım sırasında (in transit) hem de depoda (at rest) korumak için çeşitli şifreleme seçenekleri sunar:

  • Sunucu Tarafı Şifreleme (Server-Side Encryption):
    • SSE-S3: AWS tarafından yönetilen şifreleme anahtarlarıyla S3'ün kendi anahtarlarını kullanarak nesnelerinizi şifreler. Kullanımı en kolay seçenektir.
    • SSE-KMS: AWS Key Management Service (KMS) kullanarak şifreleme anahtarlarını yönetirsiniz. Anahtar kullanımınız üzerinde daha fazla kontrol sağlar ve anahtar denetimi için bir kayıt defteri (audit trail) tutar.
    • SSE-C: Şifreleme anahtarını sizin sağladığınız ve yönettiğiniz sunucu tarafı şifrelemedir. AWS anahtarı saklamaz, sadece şifreleme/şifre çözme işlemi sırasında kullanır.
  • İstemci Tarafı Şifreleme (Client-Side Encryption): Verileri S3'e yüklemeden önce kendi tarafınızda şifrelersiniz. Bu, verilerinizi AWS'ye ulaşmadan önce zaten şifreli olmasını sağlar, ancak anahtar yönetim sorumluluğu tamamen sizdedir.

S3 varsayılan şifrelemeyi kova düzeyinde etkinleştirmenizi sağlar, bu sayede kovaya yüklenen her nesne otomatik olarak belirlenen şifreleme yöntemiyle şifrelenir. Bu, güvenlik için önemli bir ilk adımdır.

Bu güvenlik mekanizmalarının doğru bir şekilde kombinasyonu, S3 kovalarınızdaki verilerinizi dış tehditlere ve yetkisiz erişime karşı güçlü bir şekilde korumanızı sağlar. Düzenli olarak güvenlik denetimleri yapmak ve en az ayrıcalık ilkesini (principle of least privilege) uygulamak, S3 güvenlik stratejinizin temelini oluşturmalıdır.

Gerçek Dünya Senaryosu: Bir Web Sitesini S3 Üzerinde Barındırma ve Statik İçerik Dağıtımı Nasıl Yapılır?

AWS S3'ün en popüler ve pratik kullanım senaryolarından biri, statik web sitelerini barındırmaktır. Dinamik bir sunucuya (örneğin, EC2) ihtiyaç duymadan, yalnızca HTML, CSS, JavaScript ve görsellerden oluşan bir web sitesini S3 üzerinde barındırmak, inanılmaz derecede maliyet-etkin, yüksek erişilebilir ve ölçeklenebilir bir çözüm sunar. Bu senaryo, bloglar, tek sayfa uygulamaları (SPA'lar), portfolyolar veya dokümantasyon siteleri için idealdir.

Vaka Analizi: Düşük Maliyetli ve Yüksek Erişilebilir Bir Blog Sitesi

Bir geliştirici olarak, kendi kişisel blogunuzu veya projenizin dokümantasyon sitesini en düşük maliyetle, ancak yüksek performans ve erişilebilirlikle yayınlamak istiyorsunuz. Bu sitenin yalnızca statik içerikten oluştuğunu varsayalım. İşte AWS S3 ve CloudFront kullanarak bu hedefe nasıl ulaşabileceğiniz:

Adım 1: S3 Kovası Oluşturma ve Yapılandırma

  1. Daha önce öğrendiğimiz gibi, sitenizin içeriğini barındırmak için bir S3 kovası oluşturun. Kova adının, eğer sitenize özel bir alan adı (örneğin, www.example.com) üzerinden erişilmesini istiyorsanız, alan adınızla aynı olması genellikle tavsiye edilir.
  2. Kova oluşturulduktan sonra, "Properties" (Özellikler) sekmesine gidin.
  3. En alta kaydırarak "Static website hosting" (Statik web sitesi barındırma) bölümünü bulun ve "Edit" (Düzenle) düğmesine tıklayın.
  4. "Enable" (Etkinleştir) seçeneğini işaretleyin.
  5. "Index document" (Dizin belgesi) olarak index.html (veya sitenizin ana sayfasının adı) ve "Error document" (Hata belgesi) olarak error.html (isteğe bağlı) girin.
  6. Değişiklikleri kaydedin. Bu işlem size bir "Endpoint" URL'si verecektir (örneğin, http://my-website-bucket.s3-website.eu-central-1.amazonaws.com).
Uzman İpucu: S3 statik web sitesi barındırma endpoint'leri HTTP üzerinden çalışır. HTTPS için CloudFront kullanmanız gerekmektedir.

Adım 2: Kova Politikası ile Genel Erişimi Sağlama

S3 Block Public Access ayarlarını devre dışı bırakmadıysanız, sitenize hala erişilemeyecektir. Kovanızın "Permissions" (İzinler) sekmesine gidin:

  1. "Block Public Access" bölümünü düzenleyin ve "Block all public access" seçeneğinin işaretini kaldırın. Sadece gerekli olanları açmak için dikkatli olun. Statik web sitesi barındırmak için genellikle "Block public access to buckets and objects granted through new public bucket policies and ACLs" ve "Block public and cross-account access to buckets and objects through any public bucket policies and ACLs" seçeneklerinin işareti kaldırılır.
  2. "Bucket policy" (Kova politikası) bölümünü düzenleyin ve aşağıdaki JSON politikasını ekleyin. your-bucket-name kısmını kendi kova adınızla değiştirin:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*"
            ]
        }
    ]
}

Bu politika, kovanızdaki tüm nesnelerin (* Principal) herkes tarafından okunmasına (s3:GetObject) izin verir. Politikayı kaydedin. Artık S3 web sitesi endpoint'iniz üzerinden sitenize erişebilirsiniz.

Adım 3: CloudFront ile İçerik Dağıtımı ve HTTPS (CDN)

Sitenizin dünya genelinde hızlı bir şekilde yüklenmesini sağlamak ve HTTPS desteği eklemek için AWS CloudFront'u (bir İçerik Dağıtım Ağı - CDN) kullanmak akıllıca olacaktır:

  1. AWS Yönetim Konsolu'nda CloudFront hizmetine gidin ve "Create Distribution" (Dağıtım Oluştur) düğmesine tıklayın.
  2. Origin Domain (Kaynak Etki Alanı): S3 web sitesi endpoint URL'nizi seçin (S3 kovanızı listede görmelisiniz). *DİKKAT: S3 kovasının kendisini seçmeyin, mutlaka S3 statik web sitesi barındırma endpoint'ini seçin.*
  3. Viewer Protocol Policy (Görüntüleyici Protokol Politikası): "Redirect HTTP to HTTPS" (HTTP'yi HTTPS'ye Yönlendir) veya "HTTPS Only" (Sadece HTTPS) seçeneğini seçin.
  4. Alternate Domain Names (CNAMEs) (Alternatif Alan Adları): Özel alan adınızı (örneğin, www.example.com) buraya ekleyin.
  5. Custom SSL Certificate (Özel SSL Sertifikası): AWS Certificate Manager (ACM) kullanarak alan adınız için bir SSL sertifikası oluşturun ve burada seçin.
  6. Diğer ayarları (caching behavior, geo-restrictions vb.) ihtiyaçlarınıza göre yapılandırın.
  7. Dağıtımı oluşturun. CloudFront dağıtımınızın etkinleşmesi biraz zaman alabilir (genellikle 15-20 dakika).

CloudFront dağıtımınız etkinleştikten sonra, alan adınızın DNS kayıtlarını CloudFront'un verdiği dağıtım alan adına (örneğin, d111111abcdef8.cloudfront.net) işaret edecek şekilde güncelleyin (CNAME kaydı). Artık sitenize www.example.com adresinden HTTPS üzerinden hızlı ve güvenli bir şekilde erişilebilirsiniz.

Bu vaka analizi, S3'ün sadece depolama için değil, aynı zamanda modern, ölçeklenebilir ve uygun maliyetli web çözümleri oluşturmak için nasıl temel bir bileşen olduğunu göstermektedir. DevOps mühendisleri için S3, bulut altyapısının çok yönlü ve vazgeçilmez bir parçasıdır.

Sonuç ve Gelecek Adımlar: S3 Neden DevOps'un Temel Taşıdır?

DevOps yolculuğumuzun bu on üçüncü bölümünde, AWS S3'ün bulut depolamanın sadece bir hizmeti olmaktan çok daha fazlası olduğunu derinlemesine inceledik. S3, basitliğiyle öne çıkan ancak altında yatan mühendislik harikasıyla sınırsız ölçeklenebilirlik, inanılmaz dayanıklılık ve esnek bir maliyet yapısı sunan bir nesne depolama çözümüdür. Modern uygulamaların ve DevOps süreçlerinin temel taşı olmasının arkasında yatan nedenleri net bir şekilde gördük.

Makale boyunca, S3'ün temel bileşenlerini, kovaların ve nesnelerin nasıl çalıştığını, ilk kovanızı ve nesnelerinizi nasıl oluşturup yöneteceğinizi adım adım öğrendik. Ayrıca, yaşam döngüsü yönetim kuralları ve çeşitli depolama sınıfları aracılığıyla maliyet optimizasyonunu nasıl yapacağınızı ele aldık. Güvenliğin ne denli kritik olduğunu vurgulayarak, S3 Block Public Access, kova politikaları, IAM entegrasyonu ve şifreleme seçenekleri gibi mekanizmaları inceledik. Son olarak, statik bir web sitesini S3 üzerinde barındırma ve CloudFront ile entegrasyon gibi gerçek dünya senaryolarıyla S3'ün pratik uygulamalarını keşfettik.

S3, DevOps'un çeviklik, otomasyon ve sürekli teslimat ilkeleriyle mükemmel bir uyum içindedir. Uygulama yapılandırmaları, CI/CD artefaktları, log dosyaları, yedeklemeler, büyük veri analizleri için veri gölleri veya statik web içerikleri gibi sayısız kullanım durumuyla S3, bulut tabanlı altyapıların vazgeçilmez bir bileşenidir. Geliştiricilerin ve operasyon ekiplerinin iş yükünü azaltır, veri yönetimini basitleştirir ve uygulamaların daha hızlı ve güvenilir bir şekilde dağıtılmasını sağlar. Bu sayede, DevOps ekipleri daha çok yeniliğe odaklanabilir ve altyapı yönetiminin karmaşıklığından kurtulabilir.

Bu makale, S3'e dair kapsamlı bir giriş niteliğindedir. Ancak AWS ekosistemi ve S3'ün yetenekleri sürekli gelişmektedir. Bir sonraki adımlarınızda, S3 Event Notifications (olay bildirimleri) ile diğer AWS hizmetlerini (Lambda, SQS gibi) tetiklemeyi, S3 Batch Operations ile binlerce nesne üzerinde toplu işlemler yapmayı veya S3 Storage Lens ile depolama kullanımınızı ve maliyetlerinizi analiz etmeyi düşünebilirsiniz. S3 ile ilgili becerilerinizi geliştirmeye devam ettikçe, bulut tabanlı mimarilerde çok daha güçlü ve verimli çözümler tasarlayabileceksiniz.

Sıkça Sorulan Sorular

  • S: AWS S3 ve EBS arasındaki temel fark nedir?
    C: S3 (Simple Storage Service) bir nesne depolama hizmetidir ve web ölçeğinde sınırsız veri depolamak için tasarlanmıştır. Verileri nesneler (objeler) halinde depolar ve API veya HTTP üzerinden erişilir. Genellikle yedeklemeler, arşivler, medya dosyaları veya statik web siteleri için kullanılır. EBS (Elastic Block Store) ise bir blok depolama hizmetidir ve EC2 örneklerine takılabilen yüksek performanslı sanal diskler sağlar. Bir işletim sistemi veya veritabanı gibi performans gerektiren uygulamalar için kullanılır ve dosya sistemi düzeyinde erişim sunar.
  • S: S3'te veri yedekliliği (durability) nasıl sağlanır?
    C: S3, verilerinizi otomatik olarak seçtiğiniz bölge içindeki birden fazla Availability Zone'a (Erişim Bölgesi) dağıtarak yüksek veri yedekliliği sağlar. Bu, tek bir donanım arızasının veya Availability Zone'un kaybedilmesinin verilerinizin kaybolmasına neden olmamasını garanti eder. S3 Standard ve Standard-IA için bu oran 99.999999999% (on bir dokuz) olarak belirtilir.
  • S: Bir S3 kovası ne kadar veri depolayabilir?
    C: Bir S3 kovasında depolayabileceğiniz nesne sayısı veya toplam veri miktarı açısından herhangi bir üst limit yoktur. Her bir nesne (dosya) maksimum 5 TB boyutunda olabilir. Bu, S3'ü pratikte sınırsız ölçeklenebilir bir depolama çözümü haline getirir.
  • S: S3 maliyetlerini nasıl optimize edebilirim?
    C: S3 maliyetlerini optimize etmek için birkaç yöntem vardır: doğru depolama sınıfını seçmek (veri erişim sıklığına göre Standard, IA, Glacier gibi), yaşam döngüsü kuralları kullanarak verileri otomatik olarak daha uygun maliyetli sınıflara geçirmek veya süresi dolan verileri silmek, S3 Intelligent-Tiering kullanarak bilinmeyen erişim desenleri için otomasyondan yararlanmak ve sık erişilen veriler için CloudFront gibi CDN hizmetlerini kullanarak S3'ten veri transfer maliyetlerini azaltmaktır.
  • S: S3 nesnelerimi nasıl herkesle paylaşabilirim?
    C: S3 nesnelerinizi herkesle paylaşmanın başlıca yolları şunlardır:
    1. Kova Politikası kullanarak belirli nesnelere veya tüm kovaya genel okuma erişimi vermek (genellikle statik web siteleri için kullanılır). Ancak, "Block Public Access" ayarlarını dikkatlice yapılandırmanız gerekir.
    2. Nesnelerin ACL'lerini (Erişim Kontrol Listeleri) herkese açık okuma izni verecek şekilde ayarlamak (daha az esnek olduğu için genellikle kova politikaları tercih edilir).
    3. Önceden imzalanmış URL'ler (Presigned URLs) oluşturarak belirli bir süre için nesneye geçici, güvenli erişim sağlamak. Bu URL'ler belirli bir süre sonra geçerliliğini yitirir ve hassas verileri paylaşmak için idealdir.
Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version