AWS yani Amazon Web Services'te durağan sanal yöre barındırmak için neler gerekli?
Bu yazıdaki bilgileri kullanarak sanal yöre hazırlamak için öncelikle neler gerekli?Öncelikle bir AWS IAM hesabınız olması gerekli. Buda ondan önce bir kök hesabı(root account) bulunmasını gerektiriyor. Daha sonra AWS IAM servisi üzerinden bir IAM hesabı alınabiliyor. IAM hizmeti ücretsiz ancak IAM kullanıcısı yapabilmek için MFA güvenliği sağlamak üzere bir cihaza Authenticator uygulaması kurulması gerekli. Android bir telefona veya Ubuntu bilgisayara Google Authenticator kurmak bunun kısa yolu. Bunun dışında gereklilik olarak Amazon Route 53 veya başka bir alan adı kaydedici ile kaydedilmiş bir alan adı gerekiyor. Gereklilikler bu kadar.
AWS S3 kovası(bucket) nedir?
Sanal yöre nesnelerini yani HTML, CSS ve Javascript dosyaları yüklenecek S3 kovası nedir?AWS S3 kovası AWS'in, LightSail, CloudFront, IAM gibi hizmet çeşitlerinden biri. Başka hizmetler ile veya kendi başına kullanılabilecek buluttaki sabit disk parçası olarak düşünülebilir. Eğer sanal yöre sadece tarayıcıda çalışan HTML, CSS ve Javascript dosyalarından meydana geliyorsa, en küçük ölçekli bir LightSail'in bile gereksiz büyük kaynak olduğu düşünülüyorsa, bir S3 kovasına dosyalar yüklenip, bunlar CloudFront denetimleri aracılığıyla sanala sunulabilir. Aslında S3 hizmeti durağan sanal yöre barındırma seçeneği bulunduruyor ancak bunu kullanmak için tüm nesnelerin sanal bütün kullanıcıların kullanımına tamamen açılması gerekiyor, ve bu gereksiz güvenlik zaafiyeti anlamına geliyor.
AWS CloudFront nedir?
Bulut ön yüzü şeklinde çevirilebilecek CloudFront hizmeti nedir, ne için kullanılabilir?Yüksek hızda veri aktarımı yeteneği olan içerik dağıtımında kullanılabilecek bir AWS hizmetidir. Bu yazı kapsamında bir S3 kovasının durağan sanal yöre olarak sanal kullanıcıların erişimine açılması ve alan adının AWS dışındaki bir kaydediciden kaydettirilmiş olsa bile sertifikalandırılarak kullanılabilmesini sağlayan hizmettir.
Bir S3 kovasına dosya yüklemek
S3 buluttaki disk parçasıdır, buna sanal yöre için gerekli dosyalar yüklenir.Sanal yöre için gerekli CSS klasörü, Javascript klasörü ve index.html, contact.html gibi dosyalar S3 kovasına yüklenir. Bu süreç sürekli dağıtım ile GitHub'a atılabilecek bütün dosyaların ve değişikliklerin kendiliğinden yapılması üzerine de kurgulanabilirdi ancak GitHub Action adı verilen bir github hizmeti sayesinde yapılabilecek bu işlem burada yer almıyor. Şimdilik tüm dağıtmaları S3'e hizmet arayüzünden(management console) erişerek yüklüyorum.
S3 kovasının durağan sanal yöre uç noktası olarak tanımlanmaması
S3 kovaları durağan sanal yöre olarak kullanılmak üzere bir ayar barındırır, bu yazıda bu seçenek kullanılmayacaktır.Bir S3 kovasının özellikler sekmesi altında düzenleyebileceğiniz özelliklerinden biri olarak durağan sanal yöre olarak kullanılma seçeneği bulunmaktadır. Site hazırlanırken bu özelliğin kullanılıp kullanılmayacağı bilinmiyordu, ancak CloudFront'un bir kaynağı olarak ayarlanan ve son olarak erişim politikası(bucket policy) belirlenen bir S3 kovasının bu özelliğinin kullanılmaması daha uygun göründü.
CloudFront'a bir kaynak(origin) eklemek
CloudFront, S3 kovaları ile iletişimini kaynakları(origin) üzerinden gerçekleştiriyor.S3 kovası bir ad verildikten ve dosya yüklendikten sonra bir CloudFront kaynağı olmaya hazırdır, ancak CloudFront kaynağı erişimi için güncellenmesi gerekecektir. Şu an için CloudFront kaynağı tanımlarken seçilebilecek bir S3 kovasının ismi açılır seçeneklerden seçilir.
CloudFront'a bir kaynak(origin) eklemek
CloudFront, S3 kovaları ile iletişimini kaynakları(origin) üzerinden gerçekleştiriyor.Yeni kaynak(origin) ekleme sayfasında kaynak erişim denetleme ayarları(Origin access control settings (recommended)) olarak adlandırılmış bir ayar bulunur bu ayar seçildiğinde, politika(policy) kopyalanabilmesi için "copy policy" şeklinde bir düğme yer alır. Bu düğmeye basılarak politika kopyalanır. Ardından "go to S3 bucket" şeklindeki linkle gidilen S3 kovası politika ayarına yapıştırılırsa, kaynak S3 kovası CloudFront erişimine izin veren bir kaynak haline getirilmiş olur.
Sahibi olunan alan adının CloudFront'a yönlendirilmesi
Bir CloudFront dağıtımı(distribution) xxxx.cloudfront.net şeklinde bir alan adı sağlıyor.Bir CloudFront dağıtımının xxxx.cloudfront.net şeklindeki alan adı, Route 53 veya diğer bir alan adı kaydedicinin sunduğu arayüzden CNAME değeri olarak kayıt ekleyerek yönlendirilir. Bu sayede istenen alan adı çağrıldığında CloudFront kaynağı olan S3 kovasındaki dosyaların sanal yöre şeklinde sunulması sağlanır.
CloudFront kök unsusurun belirlenmesi
Bir CloudFront kaynağı index.html gibi bir dosya adı olarak belirlenir.S3 kovasında bir index.html nesnesi bulunuyorsa bu dosya kök unsur olarak belirlenir. Bu sayede sanal yöreye ulaşılmış olur ve diğer nesnelere köprüler(link) aracılığıyla ulaşılması mümkün olur.