💻 Примеры: сценарии AWS

⚡ Сценарии одной строкой

  • Веб-сайт + БД: EC2 (веб) + RDS (MySQL) + S3 (статика) — всё в одном регионе, RDS в private subnet
  • Выбор региона для RU: нет российского региона → EU (eu-central-1 Frankfurt) или ближайший для СНГ
  • Экономия: t3.micro On-Demand ~$0.01/час, Reserved 1 год ~$0.006/час — разница 40%
  • Бюджет-алерт: Billing → Budgets → $10/месяц + email при 80% и 100%

Пример 1: Запуск EC2-инстанса через консоль (практическая работа из лекции)

Практическая работа из лекции: создание EC2-сервера через AWS Management Console.

Предварительные требования: аккаунт AWS (Free Tier или учебный аккаунт от преподавателя). EC2 t2.micro/t3.micro входит в Free Tier: 750 часов/месяц в течение первых 12 месяцев.

Шаг 1: Войти в консоль и открыть EC2

  1. Откройте console.aws.amazon.com
  2. В поисковой строке введите EC2
  3. Нажмите Launch Instance (оранжевая кнопка)

Шаг 2: Базовые настройки

  1. Name and tags: введите имя инстанса, например web-server-01
  2. Application and OS Images (AMI): выберите Amazon Linux 2023 AMI (помечена как «Free tier eligible»)
  3. Instance type: выберите t2.micro или t3.micro (Free tier eligible)

Шаг 3: Key pair (SSH-доступ)

  1. Нажмите Create new key pair
  2. Введите имя, например my-aws-key
  3. Тип: RSA, формат: .pem (для Linux/Mac) или .ppk (для PuTTY на Windows)
  4. Нажмите Create key pair — файл скачается автоматически. Сохраните его!
⚠️ Важно: приватный ключ (.pem) скачивается один раз и нигде не хранится в AWS. Потеря ключа означает потерю SSH-доступа к инстансу.

Шаг 4: Network settings

  1. VPC: оставьте Default VPC
  2. Subnet: выберите любую публичную подсеть (например, us-east-1a)
  3. Auto-assign public IP: Enable — без этого SSH-подключение будет невозможно
  4. Security group: создайте новую с правилом: Type = SSH, Port = 22, Source = 0.0.0.0/0
⚠️ Важно: разрешение SSH (порт 22) с 0.0.0.0/0 (весь интернет) допустимо для учебных целей. В production ограничьте доступ конкретным IP.

Шаг 5: Storage

По умолчанию предлагается 8 ГБ gp3. Для Free Tier оставьте как есть.

Шаг 6: Launch Instance

  1. Проверьте Summary (справа) — убедитесь, что тип t2.micro и AMI правильные
  2. Нажмите Launch Instance
  3. Подождите 1–2 минуты, пока статус изменится на running

Шаг 7: Подключение по SSH

# Windows PowerShell / Linux / Mac

# 1. Ограничьте права на ключ (Linux/Mac)
chmod 400 ~/Downloads/my-aws-key.pem

# 2. Подключитесь (замените IP на Public IPv4 вашего инстанса)
ssh -i ~/Downloads/my-aws-key.pem ec2-user@YOUR_PUBLIC_IP

# Для Ubuntu AMI пользователь: ubuntu
ssh -i ~/Downloads/my-aws-key.pem ubuntu@YOUR_PUBLIC_IP

Public IP инстанса: EC2 → Instances → выберите инстанс → вкладка Details → Public IPv4 address.

Пример 2: Выбор региона для проекта

Задача: выбрать регион AWS для веб-приложения с пользователями в Европе.

Критерий eu-west-1 (Ирландия) eu-central-1 (Франкфурт) us-east-1 (Вирджиния)
Задержка (Европа) ~15–30 мс ~10–20 мс ~80–120 мс
GDPR (данные в ЕС) Да (Ирландия — ЕС) Да (Германия — ЕС) Нет
Цена EC2 t3.medium/час ~$0.046 ~$0.052 ~$0.041
Число AZ 3 3 6
⚠️ Проверить по документации: цены меняются — актуально на aws.amazon.com/ec2/pricing.

Вывод: для европейских пользователей с GDPR-требованиями — eu-central-1 (Frankfurt) или eu-west-1 (Ireland). Если нет требований к локализации и важна стоимость — us-east-1.

Пример 3: Оценка стоимости простого веб-стека

Типичный стек: EC2 (веб-сервер) + RDS (БД) + S3 (статические файлы). Регион: eu-west-1.

Конфигурация:
  EC2:
    - Тип: t3.micro (2 vCPU, 1 ГБ RAM)
    - Модель: On-Demand
    - Часов в месяц: 730

  RDS:
    - Тип: db.t3.micro (MySQL)
    - Модель: On-Demand
    - Хранилище: 20 ГБ gp2

  S3:
    - Хранилище: 50 ГБ Standard
    - Запросов GET: 100 000/месяц
    - Передача данных OUT: 10 ГБ/месяц
⚠️ Проверить по документации: используйте AWS Pricing Calculator (calculator.aws) для точного расчёта — цены меняются.
💡 Free Tier покрывает: EC2 t2.micro 750 часов/мес (первые 12 мес), RDS t2.micro/t3.micro 750 часов/мес (первые 12 мес), S3 5 ГБ Standard (всегда). Для учёбы это означает практически нулевые расходы при правильном использовании.

Пример 4: Архитектура высокой доступности (HA) в двух AZ

Как использовать несколько зон доступности для устойчивости к сбоям:

Регион: eu-west-1 (Ирландия)
  ├── AZ: eu-west-1a
  │   ├── EC2 (web-01)         ← обрабатывает часть трафика
  │   └── RDS Primary          ← основная БД
  │
  └── AZ: eu-west-1b
      ├── EC2 (web-02)         ← обрабатывает часть трафика
      └── RDS Standby (Multi-AZ) ← автоматический failover

Load Balancer (ALB)            ← распределяет трафик между web-01 и web-02
  ↓
Internet Gateway               ← выход в интернет
  ↓
Route 53 (DNS)                 ← направляет пользователей на Load Balancer

Логика: если AZ eu-west-1a выходит из строя, Load Balancer перестаёт направлять трафик на web-01, RDS автоматически переключается на Standby в eu-west-1b. Пользователи замечают кратковременную задержку (failover RDS ~60–120 сек), но сервис не падает полностью.

Пример 5: Структура IAM для команды разработчиков

Организация прав для небольшой команды по принципу наименьших привилегий:

IAM Structure:
  Groups:
    Developers
      Policies:
        - AmazonEC2ReadOnlyAccess
        - AmazonS3FullAccess (только в bucket dev-*)
        - CloudWatchLogsReadOnlyAccess

    DevOps
      Policies:
        - AmazonEC2FullAccess
        - AmazonRDSFullAccess
        - IAMReadOnlyAccess

    Billing
      Policies:
        - AWSBillingReadOnlyAccess
        - CostExplorerReadOnlyAccess

  Users:
    alice  → Groups: [Developers]
    bob    → Groups: [Developers, DevOps]
    carol  → Groups: [Billing]

  Roles:
    EC2-S3-ReadRole
      Policies: AmazonS3ReadOnlyAccess
      TrustedEntities: EC2  ← позволяет EC2 читать S3 без Access Key
💡 Лучшая практика: никогда не назначайте пользователям прямые политики — только через группы. Так проще управлять правами при изменении команды.