Table of contents
Bütçeleme ve Maliyet Yönetimi ( Budgets and Planning)
Arama kısmına "budgets" veya ilgili servis ismini yazarak Faturalandırma ve Maliyet yönetimi servisini bulabiliriz.
Yan taraftaki menuden "Budgets" bütçeler bölümü, daha önce oluşturmaduysanız görseldeki gibi görünecektir.
Bütçe oluşturmak için "Create budget" butonuna basılır. Burada, varsayılan ve özelleştirilen olarak iki türlü bütçe şablonu bulunur. Sonrasında bütçe türü seçilmesi gerekir. Zero spend budget, harcamanın hiç yapılmadığı bütçeleme. AWS Ücretsiz deneme hesapları için kullanılabilir. Hesap için harcanan maliyet $0.01 geçerse uyarı vermektedir. Diğer bütçeleme türlerinde ise, günlük veya aylık olarak yapılan bütçelemeler için kullanılır.
Oluşan bütçe şekildeki gibi görüntülenir.
AWS Temel Kavramlar
REGION : AWS hizmetlerini kullanacağımız bölgeleri içerir.
IAM : Açılımı Identity and Access Management olan servis, kullanıcı erişim ve yetkilerini yönetir.
VPC : Virtual Private Cloud, izole edilmiş bir sanal ağ oluşturur.
EC2 : Elastic Compute Cloud, bulut tabanlı sanal sunucu hizmeti
RDS : Relational Database Service, veritabanı servisi
EBS : Elastic Block Store, ec2 sunucular için blok depolama alanı
S3 : Simple Storage Service, uygulamaların depolama alanı
EFS : Elastic File System, bulut ortamında paylaşımlı dosya depolama alanı.
EC2 Sunucu Oluşturma
EC2, kısaca bulut tabanlı sanal sunucu oluşturma hizmetidir. Sunucu oluşturmak için arama kısmına ec2 yazalım ve çıkan servise tıklayalım.
Resources, kısmında kaç tane instance olarak isimlendirilen sunucuların çalıştığı, güvenlik grupları, uzaktan bağlantılar için oluşturulan anahtar değerler, depolama için kullanılan volumes olarak isimlendirilen depolamalar gibi bilgiler yer alır.
Sunucu oluşturmak için "Launch instance" butonuna basalım.
Sunucu ismi, işletim sistemi, instance türü, sunucuya bağlantı için anahtar çifti, ağ ayarları, depolama ve gelişmiş seçenekler yer almaktadır. Kullanım amacına ve gereksinimlere uygun şekilde sanal sunucu oluşturulabilir. Ücretsiz için "free tier eligible" olarak gösterilmektedir.
Uzaktan bağlanmak için giriş anahtar çifti seçilir, eğer yoksa "create new key pair" seçeneği ile oluşturulabilir.
Oluşan anahtar çifti dosyası otomatik olarak indirilmektedir. Bu gizli anahtar(private key), ssh bağlantısı için kullanılır.
Tüm ayarlar tamamlandıktan sonra, sunucu başlatılabilir.
Oluşan bu suncuya erişim için terminal ekranından ssh -i key_file.pem ec2-user@PUBLIC-IP
komutu çalıştırılır.
Oluşan instance dair detaylı bilgilere ulaşmak için sunucunun seçili olması gerekmektedir. Güvenlik, networking ve depolama gibi ayarlar bu bölümden yapılır. Örneğin sunucuya ping atılması veya herhangi bir portuna erişim gerekiyor. Varsayılan olarak sadece 22 portu açık olduğu Security başlığı altında görülebilir.
Inbound, makineye gelen trafiği filtreleyen kurallar. Outbound kurallar da makinenin erişebileceği port ve hedef adresleri filtreler. Sunucu, Inbound kurallara ICMP protokolüne izin verilmesi dahilinde ping paketlerine cevap verebilmektedir.
Sunucu Koruması
Oluşturulan sunucunun durdurulmasını (stop) veya sonlandırılamsını (termination) önlemek için koruma ayarlarının açılması gerekmektedir.
Sağ üst köşede bulunan Actions içerisinden Instance settings ayarlarından yapılmaktadır. Durdurulma koruma ayarları için "Change stop protection" basılır ve koruma aktif hale getirilir.
Sunucu Türü Değiştirme
Kullanılan sunucunun kapasitesi yetersiz geldiği zaman, sunucu kapasitesi genişletilebilmektedir. Bunun için ilk önce sunucu durdurulmalıdır (stopped). Actions kısmından, Instance Settings > Change instance type seçeneği seçilir. Kullanılmak istenen tür değiştirilir ve yapılan değişiklikler görseldeki gibi uygulanabilir.
Durdurulan sunucu tekrardan başlatılır Instance State > Start Instance
.
EC2 NGINX Kurulumu
ubuntu image ile ec2 instance oluşturuldu. Oluşan sunucuya ssh ile bağlantı kurulduktan sonra, root kullanıcısı olarak apt install nginx
komutu ile nginx yüklenmektedir.
systemctl status nginx
ile servisin çalıştığı kontrol edilebilir
sunucuya IP ile erişim yapılabilir ancak inbound kuralında varsayılan olarak sadece ssh 22 portu açık olduğu için 80/http portuna izin verilmesi gerekmektedir. Tarayıcıdan, sunucuya erişildiğinde varsayılan nginx sayfası görünmektedir.
Ek olarak instance oluştururken ağ ayarlarında, http veya https trafiğine izin verilirse 80 ve 433 portları açık olarak ec2 sunucu oluşturulur
nginx varsayılan dizini /var/www/html
. ücretsiz web site şablonlarından birisini indirip bu dizine kopyalayarak veya kendi oluşturduğunuz web sayfası ile basit bir web uygulaması kurulumu gerçekleştirilebilir.
demo isminde bir dizin oluşturup, web sayfa için chatgpt kullanarak oluşturulan index.html sayfası yerleştirilir.
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo Sayfası</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
margin: 0;
padding: 20px;
}
header {
background-color: #333;
color: #fff;
padding: 10px 0;
text-align: center;
}
nav {
margin: 20px 0;
}
nav a {
margin: 0 10px;
text-decoration: none;
color: #333;
}
section {
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
footer {
text-align: center;
margin-top: 20px;
color: #777;
}
</style>
</head>
<body>
<header>
<h1>Demo Sayfasına Hoşgeldiniz</h1>
</header>
<nav>
<a href="#">Anasayfa</a>
<a href="#">Hakkında</a>
<a href="#">İletişim</a>
</nav>
<section>
<h2>Basit Bir Başlık</h2>
<p>Bu, örnek bir paragraf metnidir. Bu alan, web sayfanızda içerik göstermek için kullanılabilir.</p>
</section>
<footer>
© 2024 Demo Sayfası. Tüm hakları saklıdır.
</footer>
</body>
</html>
Tarayıcıdan IP/demo olarak erişildiğinde oluşturulmuş web sayfası görülmektedir.
Sunucu Backup Alma
Oluşturulan bir EC2 sunucusunun image alma işlemi için Instances bölümüne gelinir. Sağ üst köşede bulunan Actions menüsü içerisinden Image and templates > Create images yolu izlenir.
Oluşturulan imagelar Images > AMIs lislenmektedir.
Elastic IP
EC2 sunucularında, sunucunun durdurulup başlatılması, reboot edilmesi durumlarında makinenin IP adresi değişmektedir. Bu durumu önlemek için Elasitc IP allocate etmek gerekmektedir.
Network & Security > Elastic IPs kısmından IP adresi alınabilir. Bu IP adresi aws hesabınıza ait olur ve oluşan ec2 makinesi ile bağlandığında, makinenin reboot sonrası veya tekrardan başlatılmasından sonra IP adresi değişmeyecektir. Bu işlemde belirli bir ücretlendirme uygulanmaktadır.
Sunucu Disk Genişletme
EC2 sunucunun depolama ile ilgili bilgileri Storage içerisinde görüntülenir. Volume olarak isimlendirilen bu depolama alanına Elastic Block Store > Volumes'dan da erişilebilir.
Actions> Modiy volume seçilerek istenilen gereksinimler değiştirilebilmektedir. Free tier hesaplar için 30GB' a kadar ücretsiz sunulmaktadır.
IAM
Kimlik erişim yönetimi servisi, yeni bir kullanıcı oluşturma, yetkilendirme ve politika işlemlerinin yapılmasını sağlamaktadır. Varsayılan olarak root hesabı kullanılır ancak root hesabının kullanılması veya paylaşılması önerilmemektedir.
Arama bölümünden IAM yazıp servise girilir. Users bölümü içerisinde kullanıcı oluştur, "Create user" butonuna tıklanır.
Kullanıcı ismi girilir ve oluşturulan kullanıcının aws console erişiminin olması isteniyorsa alttaki butonun seçili olması gerekmektedir. Kullanıcı türü şuan için IAM user olarak oluşturulacaktır. Users must create a new password at next sign-in butonu işaretlenirse kullanıcı giriş yaptığında parolasını değiştirmesi istenmektedir.
Sonraki aşamada izinler seçilmektedir. Permissions Policy kısmında vermek istenilen policyler ayarlanmaktadır.
Kullanıcı detayları ve seçilen policyler kullanıcı oluşturulmadan önce gösterilmektedir.
Create user butonu ile IAM kullanıcısı oluşturulur. Oluşan kullanıcı ile giriş yapmak için gerekli bilgiler, hesap id, kullanıcı adı ve parola bilgileri gerekmektedir.
Oluşan kullanıcı hesbaının çoklu kimlik doğrulama özelliğini aktif haline getirmek için kullanıcıya tıklayalım.
Console Access seçeneğinden veya Alt kısımda bulunan Security credentials bölümünden çoklu doğrulama etkinleştirilebilir.
Çoklu doğrulama için güvenlik anahtarı, doğrulama uygulaması veya Hardware TOTP(Time-based one-time-password) token hangi seçenek kullanılacak ise seçilir ve eklenir.
Burada bir authenticator uygulamasını kullanarak çoklu doğrulama işlemi aktif hale getirilmiş oldu. Aynı şekilde root hesabına da çoklu doğrulama eklenebilmektedir.
AWS CLI Kullanımı
aws bulut hesabını komut satırı veya terminal ekranından yönetme işlemidir. aws.amazon.com/cli adresinden indirilmektedir. Linux için aşağıdaki komutlar çalıştırılır.
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
Erişim sağlayacak kullanıcı için erişim anahtarı oluşturmak gerekiyor. Bunun için tekrardan Users >Security Credentials kısmından erişim anahtarı oluşturulmaktadır.
Erişim anahtarını hangi durumda kullanılacağı seçilmektedir.
aws cli kullanmadan önce bazı ayarlamalar gerekmektedir. Bunlardan ilk önce aws configure
komutu, aws hesabında oluşturulan erişim anahtarını, varsayılan bölgeyi ve format bilgilerinin ayarlamasında yardımcı olmaktadır.
aws cli ile sunucu oluşturulabilir. Bunun için image id, instance türü, key-name, securit group ve region bilgileri gerekmektedir.
aws ec2 run-instances \
--image-id ami-04a81a99f5ec58529 \
--count 1 --instance-type t2.micro \
--key-name first \
--security-groups-ids sg-0fec4e4836f911ce7 \
--region us-east-1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=ec2_aws_cli}]'
t2.micro türünde ubuntu image kullanarak ec2_aws_cli isimli bir ec2 sunucu oluşturulmaktadır. Instances bölümünde sanal sunucunun oluşturulduğu görülmektedir.
Oluşturulan bu instance aws ec2 terminate-instances --instance-ids
komutu ile terminate edilebilir.
Amazon S3 (Simple Storage Service)
Amazonun depolama servisidir. Depolama katmanları bulunur. Veriye erişimin sıklığı ile ilgilidir. Arama kısmından S3 yazıp servise ulaşalım. Create bucket seçeneği seçilir.
S3 dosya atıldığı zaman varsayılan olarak dışardan erişilebilir durumda değildir. Bucket ismi eşsiz olmalıdır.
Oluşan bucket detayları incelendiğinde, içerisinde olan objeler görüntülenebilir.
Dosya eklemek için upload file butonuna tıklanır.
Eklenilen dosyalar Objects başlığı altında listelenmektedir. Dosya yükleme işlemi, benzer şekilde AWS CLI kullanarak da gerçekleştirilir. aws cli hangi kullanıcı ile oturum açılmış olduğunu aws sts get-caller-identity
komutu ile görüntülenir veya ~/.aws/credentials
dosyası içerisinde erişim anahtarı bulunmaktadır.
aws s3 ls s3://BUCKETNAME
komutu ile bucket içerisinde olan objeler listelenir.
aws s3 cp file.txt s3://BUCKETNAME
komutunu kullanarak localde bulunan dosya bucketa aktarılır.
Bucket oluştururken dışardan erişim kapalı olarak gelir Block public access etkin haldedir. Bucket detaylarında Permissions yetkiler başlığı altında devre dışı bırakılabilir.
Erişime açık bir hale gelen bucket objeleri için politikalar uygulanabilir. Hemen bir altında bulunan Bucket policy başlığı altında policyler eklenebilir
Burada sadece bucket içerisinde bulunan objeler için, yalnızca objeleri getirme izni verilmiştir. Tarayıcı üzerinden bir objeye erişildiği zaman görseldeki gibi görünmektedir.
Objeler, listelenmek istendiğinde "Access Denied" yanıtı verebilir.
Bunun içinde policy olarak ListBucket eylemine izin verilmelidir. Yan tarafta bulunan Add Statement seçenğinden servis ve izin verilecek eylem seçilebilmektedir.
Gerekli izinler verildiğinde bucket içerisindeki objelere public olarak erişim sağlanabilmektedir.
Amazon s3 servisi aynı zamanda statik bir web site yayınlayabiliyor. Oluşturulan bucket detaylarında Properties > Static website hosting ayarlarından etkinleştirilebilir
S3 bucket objelerde aynı isim olduğu durumlar için versiyonlama sistemi etkinleştirilebilir. Bunun için bucket oluştururken Bucket versioning seçeneği aktifleştirilmelidir.
Örneğin varolan bir dosya isminden farklı bir dosya yüklediğimiz zaman, versiyonlama aktif olduğunda objenin versiyonlar kısmından veya Show versions seçeneğini etkinleştirildiğinde dosyanın versiyonları da listelenmektedir.
Amazon RDS (Relational Database Service)
Free tier hesaplar için AWS bir yıllığına 750saat/aylık kullanım hakkı vermektedir (Detaylı bilgi için aws.amazon.com/free). Create database butonu ile veritabanı oluşturma adımlarına geçilir.
İlk olarak veritabanı oluşturma metodu sorulur. Standart ve kolay kurulum şeklinde iki çeşit metot bulunur. Standart kurulumda çoğu yapılandırma ayarlamalarını kendimizin yapması beklenir. Veritabanı seçilir mysql, oracle gibi hangisi kullanılmak isteniyorsa. Burada mysql seçilmiştir. Şablon olarak free tier üzerinden ilerlenmiştir. Kullanım amacına göre production veya test ortamı gibi seçenekleri de bulunur.
Veritabanı giriş bilgileri tanımlandıktan sonra Connectivity kısmında belirtilen ec2 instance veritabanı kaynaklarına erişebilir mi veya dışardan erişime izin durumu belirlenmektedir.
Connectivity > Additional configuration seçeneğinde port numarası belirlenmektedir. Varsayılan olarak 3306 portu kullanılır.
Veritabanı kimlik doğrulama yöntemi seçilmektedir.
Additional configuration ek yapılandırma işlemleri içerisinde önemli olarak ayarlanması gereken backup ve log kayıtlarının etkinleştirilmesi olabilir
En son kısımda, seçilen ayarlara göre bir ücret çıkartılmaktadır. Free tier için varsayılan ayarlamalar değişmediği sürece, deneme amaçlı kullanan kullanıcılar için ek bir ücret yansımayacaktır.
Oluşan veritabanı detaylarına, üzerine tıklayarak görüntülenebilmektedir.
Oluştururken dışardan erişime kapalı olarak oluşturulduysa, Modify seçenğine girerek public access enable hale getirilir.
Değişiklikler uygulandıktan sonra, security group inbound kurallarında mysql portu erişilebilir hale getirilir.
Erişim için gerekli işlemler tamamlandıktan sonra mysql veritabanı sunucusuna çeşitli uygulamalar kullanarak veya komut satırından bağlanılabilmektedir.
ec2 instance ile bağlantı kurmak istenildiğinde Actions kımsından Set up ec2 instances seçeneği seçilir.
Bağlantı yapılacak EC2 instance seçimi yapılmaktadır.
yapılan değişiklikleri gözden geçirmek için inceleme sayfası görünmektedir. Burada security group eklemeleri yapıldığını açıklamaktadır. Bu işlemlerden sonra, ec2 instance ile mysql veritabanına erişim sağlanabilmektedir.
Tech İstanbul Bulut Teknolojileri Bootcamp Programında, Devops Mühendisleri & AWS Çözüm Mimarları Hakan Bayraktar ve Rıfat Kılıç eğitmenliğinde anlatılan AWS kullanımı ve servisleri konusu ile ilgili aldığım notlardır. İlgilenenler için eğitim tekrarları Tech İstanbul youtube kanalında yer almaktadır.