Takip et

S3 Maliyetlerini Terbiye Etme: Lambda, Python, Athena ve SES ile Otomatik Raporlama

S3 Maliyetlerini Terbiye Etme: Lambda, Python, Athena ve SES ile Otomatik Raporlama

Amazon S3 depolama maliyetleri hızla artabilir ve bütçenizi zorlayabilir. Hafta sonlarınızı maliyet raporlarını incelemekle geçirmek yerine, otomatikleştirilmiş bir sistemle bu yükümlülüğü ortadan kaldırın. Bu makalede, AWS Lambda, Python, Athena ve SES’i kullanarak S3 maliyetlerinizi izleyen ve raporlayan bir sistem nasıl oluşturacağınızı adım adım öğreneceksiniz. Otomatik e-posta bildirimleriyle, maliyetlerinizi her zaman kontrol altında tutabilirsiniz ve hafta sonlarınızı kahve keyfiyle geçirebilirsiniz.

S3 Maliyetlerini Anlamak: İlk Adımlar

S3 maliyetlerinin karmaşık yapısını anlamak, etkili bir izleme ve raporlama sisteminin temelini oluşturur. Öncelikle, S3’ün nasıl ücretlendirdiğini kavramak gerekiyor. Depolama, veri transferi, isteğe bağlı istekler ve diğer işlemler için ücretlendirilirsiniz. Bölgeniz, depolama sınıfı (S3 Standard, S3 Intelligent-Tiering, S3 Glacier vb.) ve kullanım alışkanlıklarınız maliyetlerinizi doğrudan etkiler. Örneğin, sık erişilen veriler için S3 Standard kullanmak daha maliyetli olabilirken, nadiren erişilen veriler için S3 Glacier daha uygun olabilir. Bununla birlikte, S3 Glacier’dan veri alma işlemi, hızlı erişime kıyasla daha uzun zaman alır ve ekstra bir maliyet gerektirir. Dolayısıyla, maliyet optimizasyonunun ilk adımı, verilerinizi doğru depolama sınıfına yerleştirmek ve erişim sıklığını analiz etmektir. Bu analiz, doğru S3 depolama sınıfını belirlemenize ve gereksiz maliyetlerden kaçınmanıza yardımcı olur. Ayrıca, S3’ün sunucuları ile işlemleriniz arasında veri transferi maliyetlerini göz önünde bulundurmak ve bu maliyetleri azaltmak için en uygun bölgeleri belirlemek de önemlidir. Örneğin, kullanıcılarınızın çoğunluğunun bulunduğu bölgede S3’ü kullanarak veri transfer maliyetlerini azaltabilirsiniz.

AWS Servislerini Tanıyalım: Lambda, Python, Athena ve SES

Bu otomasyon sistemini oluşturmak için kullanacağımız temel AWS servislerini daha yakından inceleyelim:

* AWS Lambda: Kodunuzu sunucu yönetmeden çalıştırmanıza olanak tanıyan bir sunucusuz hesaplama hizmetidir. S3’teki maliyet verilerini düzenli aralıklarla işleyip rapor üretmek için kullanacağız.
* Python: Lambda fonksiyonlarımızı yazmak için kullanacağımız güçlü ve çok yönlü bir programlama dilidir. AWS SDK’ları ile kolayca diğer AWS hizmetleriyle entegre olur.
* Amazon Athena: S3’te depolanan verileri sorgulamak için kullanılan bir sunucusuz sorgulama hizmetidir. S3 maliyet verilerini sorgulayarak raporlama için gerekli bilgileri alacağız.
* Amazon SES (Simple Email Service): Raporları e-posta ile alıcıya göndermek için kullanacağımız bir e-posta gönderim hizmetidir.

Adım Adım: Otomatik S3 Maliyet Raporlama Sistemi

Şimdi, adım adım bir otomatik S3 maliyet raporlama sistemi oluşturalım. Bu örnek, Python kullanarak yazılmış bir Lambda fonksiyonu, Athena sorgusu ve SES ile e-posta gönderimi içerecektir.

1. S3 Maliyet Verilerini Toplama:

Öncelikle, AWS Cost Explorer’dan S3 maliyet verilerini S3’e günlük olarak aktarmalıyız. Cost Explorer, çeşitli formatlarda (CSV, JSON vb.) veri indirme imkanı sunar. Bu verileri S3’te düzenli bir şekilde saklayacağız. Athena bu verileri sorgulamak için kullanılacaktır.

2. Athena Sorgusu Oluşturma:

Athena ile S3 maliyet verilerini sorgulamak için SQL benzeri bir dil kullanırız. Aşağıda, günlük S3 maliyetlerini özetleyen bir örnek sorgu verilmiştir:

SELECT
    DATE(billing_period_start) AS billing_date,
    SUM(cost) AS total_cost
FROM
    "your-s3-bucket"."cost_explorer_data"
GROUP BY
    billing_date
ORDER BY
    billing_date DESC;

"your-s3-bucket" kısmını kendi S3 kovasının adıyla değiştirmeyi unutmayın.

3. Python ile Lambda Fonksiyonu Yazma:

Şimdi, Athena sorgusunu çalıştırıp sonuçları e-posta olarak gönderecek bir Python Lambda fonksiyonu yazalım.

import boto3
import json

athena = boto3.client('athena')
ses = boto3.client('ses')

def lambda_handler(event, context):
    query = """
        SELECT
            DATE(billing_period_start) AS billing_date,
            SUM(cost) AS total_cost
        FROM
            "your-s3-bucket"."cost_explorer_data"
        GROUP BY
            billing_date
        ORDER BY
            billing_date DESC;
    """

    response = athena.start_query_execution(
        QueryString=query,
        QueryExecutionContext={'Database': 'default'},
        ResultConfiguration={'OutputLocation': 's3://your-s3-bucket/athena_results/'}
    )

    query_execution_id = response['QueryExecutionId']

    # Athena sorgusunun tamamlanmasını bekle
    waiter = athena.get_waiter('query_execution_status_ready')
    waiter.wait(QueryExecutionId=query_execution_id)

    result = athena.get_query_results(QueryExecutionId=query_execution_id)

    report = ""
    for row in result['ResultSet']['Rows'][1:]: # Başlık satırını atla
        billing_date = row['Data'][0]['VarCharValue']
        total_cost = row['Data'][1]['VarCharValue']
        report += f"Tarih: {billing_date}, Toplam Maliyet: {total_cost}\n"

    #E-posta gönderimi
    ses.send_email(
        Source='your-email@example.com',
        Destination={'ToAddresses': ['recipient-email@example.com']},
        Message={
            'Subject': {'Data': 'Günlük S3 Maliyet Raporu'},
            'Body': {'Text': {'Data': report}}
        }
    )

    return {
        'statusCode': 200,
        'body': json.dumps('S3 maliyet raporu başarıyla gönderildi!')
    }

Bu kod, Athena sorgusunu çalıştırır, sonuçları alır ve raporu oluşturarak belirtilen e-posta adresine gönderir. "your-s3-bucket" ve "your-email@example.com" yer tutucularını kendi değerlerinizle değiştirmeyi unutmayın.

4. Lambda Fonksiyonunu Yapılandırma:

Lambda fonksiyonunu oluşturduktan sonra, rolüne IAM izinleri eklemeniz gerekmektedir. Athena sorgularını çalıştırmak ve SES ile e-posta göndermek için gerekli izinleri ekleyin.

5. Lambda Fonksiyonunu Zamanlama:

Son olarak, Lambda fonksiyonunu CloudWatch Events (eski adıyla CloudWatch Events) kullanarak düzenli aralıklarla (örneğin, günlük) çalışacak şekilde zamanlayın.

İleri Düzey Teknikler ve Optimizasyonlar

Bu temel sistemin üzerine daha gelişmiş özellikler ekleyerek daha kapsamlı bir S3 maliyet yönetimi sağlayabilirsiniz:

* Maliyet Tahmini: Geçmiş verileri kullanarak gelecekteki S3 maliyetlerini tahmin edebilirsiniz. Bu tahminler, gelecekteki bütçeleme işlemlerinizde yardımcı olabilir.
* Anormallik Algılama: Maliyetlerde ani artışları tespit etmek için makine öğrenmesi algoritmaları kullanabilirsiniz. Bu, potansiyel maliyet sorunlarını erkenden tespit etmenizi sağlar.
* Otomatik Ölçeklendirme: S3 depolama gereksinimlerine göre otomatik olarak ölçeklenen bir mimari tasarlayarak maliyetleri optimize edebilirsiniz.
* Farklı Depolama Sınıfları Arasındaki Geçişleri Otomatikleştirme: Veri erişim sıklığına göre verilerinizi farklı S3 depolama sınıfları arasında otomatik olarak taşıyarak maliyetleri optimize edebilirsiniz. Bu otomasyon için Lambda fonksiyonlarını ve S3 lifecycle policies'i birlikte kullanabilirsiniz. https://fatihsoysal.com adresinden daha fazla bilgi edinebilirsiniz.

Gerçek Dünya Senaryoları

Senaryo 1: Başarısız Yedekleme Sistemi: Bir şirket, günlük yedekleme işlemleri için S3 kullanıyor. Ancak, yedekleme sistemindeki bir hata nedeniyle, günlük birçok yedek kopya S3'e yükleniyor. Bu durum maliyetleri aniden artırıyor. Otomatikleştirilmiş raporlama sistemi, bu ani maliyet artışını tespit edip uyarı veriyor, böylece problem hızlıca çözülüyor.

Senaryo 2: Artan Veri Miktarı: Bir medya şirketi, videolarını S3'te saklıyor. Zamanla, video sayısı ve toplam veri miktarı artıyor ve maliyetler de buna paralel olarak yükseliyor. Sistem, maliyet trendlerini analiz ederek şirketin daha uygun bir S3 depolama sınıfına geçmesi veya veri arşivleme stratejileri uygulaması için erken uyarı veriyor.

Sonuç ve Sıkça Sorulan Sorular

Bu makalede, AWS Lambda, Python, Athena ve SES kullanarak otomatik S3 maliyet raporlama sisteminin nasıl oluşturulacağını öğrendiniz. Bu sistem, S3 maliyetlerinizi izleyerek, maliyet artışlarına karşı önlem almanızı sağlar ve hafta sonlarınızı daha verimli geçirmenize yardımcı olur.

Sıkça Sorulan Sorular:

1. Sistemin kurulumu ne kadar sürer? Sistemin kurulum süresi, mevcut altyapınıza ve deneyim seviyenize bağlı olarak değişir. Ancak, temel sistemin kurulumu birkaç saat içinde tamamlanabilir.

2. Sistemin bakımı nasıl yapılır? Sistemin bakımı, Lambda fonksiyonunun düzenli güncellenmesi ve AWS Cost Explorer'dan gelen verilerin doğru şekilde işlendiğinden emin olmayı gerektirir.

3. Sistem kaç S3 kovasına uygulanabilir? Sistem, bir veya birden çok S3 kovasına uygulanabilir. Athena sorgusunu buna göre değiştirmeniz gerekebilir.

4. Sistem, S3 dışında başka hizmetlerin maliyetlerini de takip edebilir mi? Evet, AWS Cost Explorer tüm AWS hizmetlerinin maliyet verilerini sağladığı için, sistemi diğer AWS hizmetlerinin maliyetlerini takip etmek için de uyarlayabilirsiniz. Ancak, Athena sorgusunu ve Lambda fonksiyonunu buna göre değiştirmeniz gerekecektir.

5. Sistemin güvenliği nasıl sağlanır? Sistemin güvenliğini sağlamak için, IAM rollerini doğru şekilde yapılandırmanız ve Lambda fonksiyonunuza gerekli izinleri vermeniz önemlidir. Ayrıca, S3 kovasının erişim kontrolünü doğru bir şekilde yapılandırmanız da güvenlik için önemlidir.

Yazar: Fatih Soysal

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.
Mobil sürümden çık