0%
تكاليف AWS: دليل التحسين للمبتدئين

تكاليف AWS: دليل التحسين للمبتدئين

تعرّف على كيفية فهم تكاليف AWS وتحسينها.

I

InSkillCoach

· دقيقة

تكاليف AWS: دليل التحسين للمبتدئين

تعرّف على كيفية فهم تكاليف AWS وتحسينها.

1. فهم الفوترة في AWS

الخدمات المجانية

  • AWS Free Tier: خدمات مجانية لمدة 12 شهرًا
  • الخدمات المجانية دائمًا:
    • Lambda: مليون استدعاء/شهر
    • CloudWatch: 10 مقاييس، مليون طلب
    • S3: 5 GB من التخزين
    • DynamoDB: 25 GB من التخزين

الفوترة حسب الخدمة

# Exemple de calcul des coûts
def calculate_costs():
    # EC2 : Facturation par heure
    ec2_cost = {
        't2.micro': 0.0116,  # par heure
        't2.small': 0.023,   # par heure
        't2.medium': 0.0464  # par heure
    }
    
    # S3 : Facturation par GB/mois
    s3_cost = {
        'standard': 0.023,    # par GB/mois
        'infrequent': 0.0125, # par GB/mois
        'glacier': 0.004      # par GB/mois
    }
    
    # Lambda : Facturation par requête
    lambda_cost = {
        'requests': 0.0000002,  # par requête
        'duration': 0.00001667  # par 100ms
    }
    
    return {
        'ec2': ec2_cost,
        's3': s3_cost,
        'lambda': lambda_cost
    }

2. الخدمات التي ينبغي مراقبتها

Amazon Athena

  • الفوترة: حسب البايتات الممسوحة
  • التحسين:
# Exemple d'optimisation Athena
def optimize_athena_query():
    # 1. Partitionner les données
    partition_query = """
    CREATE TABLE ma_table_partitionnee
    PARTITIONED BY (annee INT, mois INT)
    AS SELECT * FROM ma_table;
    """
    
    # 2. Compresser les données
    compression_query = """
    CREATE TABLE ma_table_compressee
    WITH (format = 'PARQUET', compression = 'SNAPPY')
    AS SELECT * FROM ma_table;
    """
    
    return {
        'partition_query': partition_query,
        'compression_query': compression_query
    }

Amazon Redshift

  • الفوترة: حسب ساعات تشغيل العنقود (Cluster)
  • التحسين:
# Exemple d'optimisation Redshift
def optimize_redshift():
    # 1. Choisir le bon type de nœud
    node_types = {
        'dc2.large': 0.25,    # par heure
        'dc2.8xlarge': 2.36,  # par heure
        'ra3.xlplus': 0.24    # par heure
    }
    
    # 2. Configurer le WLM (Workload Management)
    wlm_config = {
        'concurrency_scaling': True,
        'max_concurrency': 50,
        'query_timeout': 300
    }
    
    return {
        'node_types': node_types,
        'wlm_config': wlm_config
    }

3. أفضل ممارسات التحسين

إيقاف الموارد غير المستخدمة

# Exemple d'arrêt automatique
def stop_unused_resources():
    ec2 = boto3.client('ec2')
    
    # Arrêter les instances EC2 inactives
    instances = ec2.describe_instances(
        Filters=[
            {
                'Name': 'instance-state-name',
                'Values': ['running']
            }
        ]
    )
    
    for instance in instances['Reservations']:
        # Vérifier l'utilisation CPU
        cloudwatch = boto3.client('cloudwatch')
        cpu_usage = cloudwatch.get_metric_statistics(
            Namespace='AWS/EC2',
            MetricName='CPUUtilization',
            Dimensions=[{'Name': 'InstanceId', 'Value': instance['InstanceId']}],
            StartTime=datetime.now() - timedelta(hours=24),
            EndTime=datetime.now(),
            Period=3600,
            Statistics=['Average']
        )
        
        # Arrêter si utilisation < 5%
        if cpu_usage['Datapoints'][-1]['Average'] < 5:
            ec2.stop_instances(InstanceIds=[instance['InstanceId']])

استخدام الحجوزات

# Exemple d'achat de réservation
def purchase_reservation():
    ec2 = boto3.client('ec2')
    
    # Acheter une réservation EC2
    reservation = ec2.purchase_reserved_instances_offering(
        ReservedInstancesOfferingId='offering-id',
        InstanceCount=1,
        LimitPrice={
            'Amount': '100',
            'CurrencyCode': 'USD'
        }
    )
    
    return reservation['ReservedInstancesId']

4. إعداد التنبيهات

إعداد الميزانيات

# Exemple de configuration de budget
def setup_budget():
    budgets = boto3.client('budgets')
    
    # Créer un budget mensuel
    budget = budgets.create_budget(
        AccountId='account-id',
        Budget={
            'BudgetName': 'MonBudget',
            'BudgetLimit': {
                'Amount': '100',
                'Unit': 'USD'
            },
            'TimeUnit': 'MONTHLY',
            'BudgetType': 'COST',
            'CostFilters': {
                'Service': ['Amazon EC2', 'Amazon S3']
            }
        },
        NotificationsWithSubscribers=[
            {
                'Notification': {
                    'NotificationType': 'ACTUAL',
                    'ComparisonOperator': 'GREATER_THAN',
                    'Threshold': 80,
                    'ThresholdType': 'PERCENTAGE'
                },
                'Subscribers': [
                    {
                        'SubscriptionType': 'EMAIL',
                        'Address': 'mon-email@example.com'
                    }
                ]
            }
        ]
    )
    
    return budget['BudgetId']

مراقبة التكاليف

# Exemple de surveillance des coûts
def monitor_costs():
    ce = boto3.client('ce')
    
    # Obtenir les coûts par service
    costs = ce.get_cost_and_usage(
        TimePeriod={
            'Start': '2024-01-01',
            'End': '2024-03-22'
        },
        Granularity='MONTHLY',
        Metrics=['UnblendedCost'],
        GroupBy=[
            {'Type': 'DIMENSION', 'Key': 'SERVICE'}
        ]
    )
    
    return costs['ResultsByTime']

5. أدوات التحسين

AWS Cost Explorer

  • الميزات:
    • عرض التكاليف بيانيًا
    • التوقعات
    • توصيات التحسين

AWS Trusted Advisor

  • عمليات الفحص:
    • التكاليف غير المحسّنة
    • الأداء
    • الأمان
    • تحمّل الأعطال

الخاتمة

أهم النقاط التي ينبغي تذكّرها:

  • استخدام Free Tier
  • مراقبة التكاليف لكل خدمة
  • تحسين الاستعلامات
  • إيقاف الموارد غير المستخدمة
  • إعداد التنبيهات

التوصيات:

  • البدء بحجم صغير
  • استخدام الحجوزات
  • إعداد الميزانيات
  • مراقبة التكاليف بانتظام
  • التحسين المستمر
InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.5k
91

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!