Amazon Web Services (AWS), işletmelerin ve geliştiricilerin bulutta çeşitli hizmetleri kullanmasına olanak tanıyan bir platformdur. AWS hesaplarına Python ile erişmek, bu hizmetleri yerel bilgisayarınızdan yönetmenize ve kullanmanıza olanak tanır. Bu yazıda, AWS hesaplarına Python ile nasıl erişeceğinizi öğreneceksiniz.
AWS hesaplarına yerel bilgisayarınızdan Python veya başka bir programlama dilini kullanarak erişmenin, “AWS Management Console’dan” erişmeye göre bazı avantajları ve dezavantajları vardır:
Avantajlar:
- Otomasyon ve Programlanabilirlik: Kodla erişim, işlemleri otomatikleştirme ve özelleştirme sağlar.
- Hızlı Erişim ve Hızlı Tepki: Hızlı işlem ve yanıt süreleri sunar.
- Özelleştirme ve Esneklik: İhtiyaçlara uygun özel çözümler geliştirmenizi sağlar.
- Toplu İşlemler ve Yedekleme: Birden çok kaynağı toplu olarak yönetme yeteneği sunar.
Dezavantajlar:
- Kod Yazma ve Bakım Zamanı: Kod yazmak ve güncelleme gerektirir.
- Güvenlik ve İzleme: Güvenlik ve izleme önlemleri kullanıcıya bağlıdır.
- Hata ve Sorunlar: Kendi kodunuzu hataları ve sorunları gidermek için kullanmanız gerekir.
- Öğrenme Eğrisi: AWS hizmetlerini ve programlamayı öğrenme süreci gerektirir.
Yerel bilgisayarımdan AWS servislerine erişmek için gerekenler:
- Python kurma
- boto3 modülünü yükleme
- Aws hesabı oluşturma
- User oluşturma
- Yerel Bilgisayarla AWS Hesabını Eşleme
Python Kurulumu
Bu projede Python’ın 3.11.0 sürümü kullanılmıştır. Python kurulumunu yapmak için bu adrese gidilerek gerekli kurulumlar yapılmalıdır.
boto3 Modülünü Yükleme
boto3, Python ile AWS uygulamaları geliştirmek için kullanılan bir Python SDK’sıdır. “boto3” modülünü yüklemek için önce “pip” paket yöneticisinin bilgisayarınızda yüklü olduğundan emin olun. pip paketinin yüklü olup olmadığını terminalde aşağıdaki kodu çalıştırarak öğrenebilirsiniz.
pip --version
pip paketi bilgisayarınıza yüklü değilse, onu bu adresten indirip kurabilirsiniz. “pip” zaten yüklüyse, boto3 modülünü aşağıdaki kodu kullanarak yükleyebilirsiniz:”
pip install boto3
AWS Hesabı Oluşturma
AWS’de yeni bir hesap oluşturmak için öncelikle bu adresen AWS ana sayfasına gitmeniz gerekir. Ana sayfada “Bir AWS Hesabı Oluşturun” veya “Create a new AWS account” gibi seçeneklere tıklayarak hesap oluşturma sürecini başlatın.
User Oluşturma
AWS’de yeni bir kullanıcı oluşturmak için, AWS Identity and Access Management (IAM) hizmetini kullanmalısınız. IAM hizmetine erişmek için AWS yönetim konsoluna gidin, “Services” sekmesine tıklayın ve ardından “IAM” seçeneğini bulup tıklayın.
Identity and Access Management konsolunu açtıktan sonra sol tarafta bulunan “Users” (Kullanıcılar) sekmesine tıklamanız gerekecek. Ardından “Users” sekmesine tıkladıktan sonra, yeni bir kullanıcı eklemek için “Create User” butonuna basabilirsiniz.
“Create User” butonuna tıkladıktan sonra, “User name” (Kullanıcı adı) bilgisini girmeniz gerekecek. Daha sonra kullanıcının erişim yetkilerini belirleyebilirsiniz. Eğer daha önce oluşturduğunuz bir “User Group” varsa, kullanıcıyı bu gruba ekleyebilirsiniz. Kullanıcıyı bir gruba eklemeyecekseniz, yetkileri doğrudan atamak için “Attach policies directly” seçeneğini seçebilirsiniz. İzinleri verdikten sonra, yeni kullanıcıyı oluşturmak için “Create User” butonuna basabilirsiniz.
Yerel Bilgisayarla AWS Hesabını Eşleme
Yerel bilgisayarlarımızda AWS hesaplarına erişim sağlamak, bulut altyapısını yönetmek ve AWS hizmetlerini yerel uygulamalarımıza entegre etmek için oldukça önemlidir. AWS, kullanıcılarına programatik erişim sağlama olanağı sunar, böylece kod geliştiriciler ve sistem yöneticileri, Python gibi programlama dilleri aracılığıyla AWS hizmetlerine erişebilirler. Bu erişim sağlamanın temelini ise “Access key” ve “Secret access key” gibi kimlik bilgileri oluşturur. Bu yazıda, yerel bilgisayarınızda bu kimlik bilgilerini nasıl saklayabileceğinizi ve AWS hesaplarına nasıl güvenli bir şekilde erişebileceğinizi öğreneceğiz.
“Access key” ve “Secret access key” bilgilerini elde etmek için IAM (Identity and Access Management) hizmetini kullanmanız gerekmektedir. IAM konsoluna erişmek için AWS yönetim konsoluna giriş yapın ve sol taraftaki “Users” (Kullanıcılar) sekmesine tıklayın. Ardından oluşturduğunuz kullanıcıya tıklamalısınız. Kullanıcıya tıkladıktan sonra açılan sayfada “Security credentials” (Güvenlik kimlik bilgileri) sekmesine gitmelisiniz.”
“Security credentials” sekmesine tıkladıktan sonra aynı sayfanın biraz aşağısında yer alan “Access keys” (Erişim anahtarları) bölümünde bulunan “Create access key” (Erişim anahtarı oluştur) düğmesine tıklamanız gerekmektedir.
“Create access key” butonuna tıkladıktan sonra, kullanım örneği seçmeniz istenecek ve bu noktada “Local code” (Yerel kod) seçeneğini tercih etmelisiniz. Ardından “Next” (İleri) ve “Create access key” (Erişim anahtarı oluştur) düğmelerine tıklamanız gerekecektir.
“Create access key” butonuna bastıktan sonra aşağıdaki görseldeki yerlerden “Secret access key” ve “Access keys” bilgilerine erişebilirsiniz.
“Access keys” ve “Secret access key” bilgilerini aldıktan sonra, bu bilgileri yerel bilgisayarınıza girmeniz gerekmektedir. Ubuntu kullanıyorsanız, bu bilgileri “~/.aws/credentials” dosyasının içine eklemeniz gerekecektir. Windows kullanıyorsanız, bu bilgileri “C:\Users<KULLANICI_ADINIZ>.aws\credentials” dosyasının içine eklemelisiniz.
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
Eğer projenizde “us-east-1” (N. Virginia) AWS bölgesini kullanmıyorsanız, Ubuntu kullanıyorsanız bu bölge tercihinizi “~/.aws/config” dosyasına, Windows kullanıyorsanız ise “C:\Users<KULLANICI_ADINIZ>.aws\config” dosyasına eklemeniz gerekmektedir.
[default]
region=eu-central-1
output=json
Python İle Aws servislerine Erişme Örnekleri
1-) AWS S3 Kovalarını Listeleme Kodu:
import boto3
# Boto3 S3 istemcisini oluşturun
s3 = boto3.client('s3')
# S3 kovalarını listeleyin
response = s3.list_buckets()
# Kovaları ekrana yazdırın
print("S3 Kovaları:")
for bucket in response['Buckets']:
print(f"- {bucket['Name']}")
2-) Ec2 Örneği Oluşturma
import boto3
# Boto3 EC2 istemcisini oluşturun
ec2 = boto3.client('ec2')
# EC2 örneği oluşturma isteği
response = ec2.run_instances(
ImageId='AMI_ID', # AMI kimliğini belirtin
InstanceType='t2.micro', # EC2 örneği türünü seçin (t2.micro örneği burada örnek olarak verilmiştir)
MinCount=1,
MaxCount=1,
KeyName='YOUR_KEY_PAIR_NAME', # Kullanacağınız SSH anahtar çiftinin adını belirtin
SubnetId='subnet-0e463a80879202dff', # SubnetId bilgisini girin
SecurityGroupIds=['sg-065ed36e35c199e6c'] # kullanılan Security Group'un id bilgisi
)
# Oluşturulan EC2 örneği bilgilerini alın
instance_id = response['Instances'][0]['InstanceId']
public_ip = response['Instances'][0]['PublicIpAddress']
print(f"EC2 örneği oluşturuldu. Örnek Kimliği: {instance_id}, Genel IP: {public_ip}")
EC2 örneğinin çalışıp çalışmadığı kontrol etmek için EC2 Management konsoluna gidin ve “Resources” (Kaynaklar) bölümünde bulunan “Instances (running)” butonuna tıklayın.
“Instances (running)” butonuna tıkladıktan sonra çalışmakta olan örnekleri görebilirsiniz. Çalışan örneklerin yanında bulunan kutucuğa bastığımızda o örnek ile ilgili daha detaylı bilgilere de erişebilirsiniz. (Public IP, Instance ID, Public IPv4 DNS …)
NOT: aşağıdaki kod ile sizin için uygun olan “SubnetId” bilgilerini listeleyebilirsiniz.
import boto3
ec2 = boto3.client('ec2')
# Subnetleri listele
response = ec2.describe_subnets()
# SubnetId'leri ekrana yazdır
for subnet in response['Subnets']:
print("SubnetId:", subnet['SubnetId'])
NOT: SecurityGroupIds bilgisini öğrenmek için AWS Yönetim Konsolu’na giriş yaptıktan sonra, sol taraftaki menüden “EC2” sekmesine tıklayın. Ardından, sol taraftaki menüde “Network & Security” altında “Security Groups” seçeneğine tıklayarak güvenlik gruplarınızı görüntüleyebilirsiniz. Burada, her güvenlik grubunun kimlik bilgisini (“Group ID” veya “Grup Kimliği”) ve diğer detayları görmek için ilgili güvenlik grubunun adına tıklayabilirsiniz. Bu şekilde güvenlik gruplarınıza ait kimlik bilgilerini kolayca öğrenebilirsiniz. Eğer yeni bir “Security Group” oluşturmak isterseniz “Create security group” butonuna tıklayarak oluşturabilirsiniz.
3-) Ec2 Örneğini Durdurma(stop)
import boto3
# EC2 istemcisini oluştur
ec2_client = boto3.client('ec2')
# Duraklatmak istediğiniz EC2 örneğinin kimliği
instance_id = 'YOUR_INSTANCE_ID'
# EC2 örneği durdurma işlemi
response = ec2_client.stop_instances(InstanceIds=[instance_id])
# Yanıtı kontrol etme
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print(f"EC2 örneği {instance_id} başarıyla durduruldu.")
else:
print(f"EC2 örneği {instance_id} durdurulurken bir hata oluştu.")
Bu kod örneğindeki “instance id” Ec2 örneği oluşturulurken “print” ile bastırılan “instance id” ile aynıdır.
4-) Ec2 Örneğini Başlatma(Start)
import boto3
# EC2 istemcisini oluştur (kimlik bilgileri ve bölge otomatik olarak alınır)
ec2_client = boto3.client('ec2')
# Başlatmak istediğiniz EC2 örneğinin kimliği
instance_id = 'YOUR_INSTANCE_ID'
# EC2 örneği başlatma işlemi
response = ec2_client.start_instances(InstanceIds=[instance_id])
# Yanıtı kontrol etme
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print(f"EC2 örneği {instance_id} başarıyla başlatıldı.")
else:
print(f"EC2 örneği {instance_id} başlatılırken bir hata oluştu.")
Daha önce durdurduğunuz EC2 örneklerini yukarıdaki kod ile tekrar başlatabilirsiniz.
5-) Ec2 Örneğini Sonlandırma(Terminate)
import boto3
# EC2 istemcisini oluştur
ec2_client = boto3.client('ec2')
# Terminate etmek istediğiniz EC2 örneğinin kimliği
instance_id = 'YOUR_INSTANCE_ID'
# EC2 örneği terminate işlemi
response = ec2_client.terminate_instances(InstanceIds=[instance_id])
# Yanıtı kontrol etme
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print(f"EC2 örneği {instance_id} başarıyla terminate edildi.")
else:
print(f"EC2 örneği {instance_id} terminate edilirken bir hata oluştu.")
AWS EC2 örneğini durdurmak (stop), örneği geçici olarak kapatır, ancak veriler ve yapılandırmalar korunur, böylece daha sonra tekrar başlatılabilir. Öte yandan, Sonlandırma(terminate) işlemi, tüm verileri kalıcı olarak siler.
SSH İLE EC2 Örneğine bağlanma
SSH ile EC2 örneğine bağlanmak için bir ‘Anahtar Çifti’ne (Key Pair) ihtiyaç vardır. Anahtar Çiftini oluşturmak için önce ‘EC2 Management Console’a’ gidin. Ardından, sol taraftaki menüden ‘Network & Security’ (Ağ ve Güvenlik) altında bulunan ‘Key Pairs’ (Anahtar Çiftleri) sekmesine tıklayın. Açılan sayfada ‘Create Key Pair’ (Anahtar Çiftini Oluştur) butonuna tıklayarak Anahtar Çiftini oluşturmaya başlayabilirsiniz.
Anahtar çiftini oluşturduysanız aşağıdaki komut ile SSH bağlantısı yapabilirsiniz:
ssh -i /path/to/your-key.pem ec2-user@your-instance-public-ip
Sonuç
Bu blog yazısında, yerel bilgisayarınızdan AWS servislerine nasıl güvenli bir şekilde erişebileceğinizi keşfettik. AWS’nin güçlü özelliklerini ve servislerini Python ve boto3 kütüphanesi aracılığıyla nasıl kullanabileceğinizi adım adım inceledik. Geliştiriciler ve sistem yöneticileri için zaman ve kaynak tasarrufu sağlayan bu yöntemler, bulut bilişimin gücünden tam anlamıyla yararlanmanızı sağlar. Umarız, bu içerikler sizlere AWS’yi daha etkin kullanma konusunda yol gösterici olmuştur.
Çağdaş Yılmaz
cagdas.yilmaz@golive.com.tr