Налаштування AWS CloudFront CDN під ключ

Повільне завантаження сайту відлякує користувачів і знижує позиції в пошуку. Ми налаштовуємо AWS CloudFront CDN, щоб контент доставлявся з найближчого до відвідувача вузла, а ваш сервер не перевантажувався. Наша команда реалізує проєкт під ключ — від аудиту та конфігурації до підтримки, забезпечуючи стабільну роботу та масштабування разом із бізнесом.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування AWS CloudFront CDN під ключ
Середній
від 1 дня до 3 днів
Часті запитання

Налаштування AWS CloudFront CDN під ключ

При запуску сайту на AWS глобальні користувачі часто стикаються з довгим завантаженням. TTFB вище 500 мс, LCP зашкалює, а сервер не справляється з піковим навантаженням. Без CDN це норма. Ми налаштовуємо AWS CloudFront так, що час відгуку скорочується в 2-3 рази, а навантаження на origin падає на 90%. Наш досвід — багаторічна робота з AWS, численні проекти, сертифіковані інженери. Ми гарантуємо SLA та цілодобову підтримку.

Як CloudFront прискорює завантаження сайту?

CloudFront — CDN від Amazon з 450+ edge-локаціями по всьому світу. Замість того щоб щоразу ходити до вашого сервера, він віддає кешовані копії контенту з найближчого вузла. Це радикально знижує TTFB (перші 50 мс) і покращує Core Web Vitals: LCP, CLS, INP. Крім того, CloudFront підтримує HTTP/2, автоматичне стиснення Brotli/Gzip та stale-while-revalidate. Економія на трафіку може досягати 60% завдяки стисненню та кешуванню на межі мережі.

Типові політики кешування для різних типів контенту:

Тип контенту Cache Policy ID Min/Max TTL Поведінка при помилці
Статичні асети (CSS, JS, зображення) Managed-CachingOptimized 1 рік stale-while-revalidate
HTML-сторінки Кастомна 5-10 хвилин stale-while-revalidate
API-запити Managed-CachingDisabled 0 Не кешувати

Чому обирають CloudFront для AWS-інфраструктури?

CloudFront щільно інтегрований з AWS — S3, ALB, API Gateway, Lambda@Edge. Ви можете:

  • Прив'язати SSL-сертифікат через ACM безкоштовно.
  • Використовувати Origin Shield для додаткового кешу між edge та origin.
  • Запускати кастомну логіку на Edge Functions (CloudFront Functions або Lambda@Edge) без затримок.

Порівняння з іншими CDN:

Характеристика CloudFront Cloudflare Fastly
Edge-локації 450+ 330+ 50+
Інтеграція з AWS нативна стороння стороння
Lambda@Edge є немає немає
Origin Shield є немає є (тільки платний)

CloudFront найкраще підходить, якщо ваша інфраструктура вже на AWS. Він дає повний контроль над кешуванням та безпекою.

Які проблеми вирішує CloudFront на практиці?

В одному проекті зі 100 000 унікальних відвідувачів на день ми знизили TTFB з 800 мс до 40 мс після налаштування CloudFront з Origin Shield та правильними політиками кешу. Навантаження на origin впало в 50 разів, а витрати на трафік скоротилися на 40%. Origin Shield — це другий рівень кешу між edge та origin, який агрегує запити та знижує навантаження. Рекомендується для проектів з тисячами запитів на секунду.

Процес налаштування CDN

  1. Аналітика: вивчаємо архітектуру вашого сайту, визначаємо, які ресурси кешувати, які API залишити без кешу.
  2. Проектування: проектуємо distribution, політики кешу, behaviours, origin shield.
  3. Реалізація: пишемо Terraform-конфігурацію, налаштовуємо SSL через ACM, підключаємо S3 для статики.
  4. Тестування: перевіряємо заголовки кешу, інвалідацію, швидкість завантаження в різних регіонах.
  5. Деплой: деплоїмо через CI/CD, документуємо процес.

Що входить в роботу

  • Документація з конфігурації та інструкція для розробників.
  • Доступи до CloudFront, ACM, S3 з мінімальними привілеями.
  • Навчання вашої команди: як керувати кешем, створювати інвалідації.
  • Підтримка протягом місяця після запуску — виправляємо нештатні ситуації.
  • Моніторинг через CloudWatch та налаштування алертів за помилками та затримками.
  • Звіт про продуктивність з метриками TTFB, LCP, CLS до та після впровадження.

Приклад конфігурації Terraform

# main.tf — створення CloudFront distribution
resource "aws_cloudfront_distribution" "main" {
  enabled = true
  is_ipv6_enabled = true
  default_root_object = "index.html"
  price_class = "PriceClass_200"

  # Основний origin — Laravel на EC2/ALB
  origin {
    domain_name = aws_lb.main.dns_name
    origin_id = "alb-origin"
    custom_origin_config {
      http_port = 80
      https_port = 443
      origin_protocol_policy = "https-only"
      origin_ssl_protocols = ["TLSv1.2"]
    }
    custom_header {
      name = "X-Origin-Verify"
      value = var.origin_verify_token
    }
  }

  # S3 origin для статичних файлів
  origin {
    domain_name = aws_s3_bucket.assets.bucket_regional_domain_name
    origin_id = "s3-assets"
    origin_access_control_id = aws_cloudfront_origin_access_control.main.id
    origin_shield {
      enabled = true
      origin_shield_region = "eu-central-1"
    }
  }

  # Статичні асети з S3
  ordered_cache_behavior {
    path_pattern = "/assets/*"
    target_origin_id = "s3-assets"
    viewer_protocol_policy = "redirect-to-https"
    allowed_methods = ["GET", "HEAD"]
    cached_methods = ["GET", "HEAD"]
    compress = true
    cache_policy_id = aws_cloudfront_cache_policy.assets.id
  }

  # API — без кешу
  ordered_cache_behavior {
    path_pattern = "/api/*"
    target_origin_id = "alb-origin"
    viewer_protocol_policy = "https-only"
    allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods = ["GET", "HEAD"]
    cache_policy_id = data.aws_cloudfront_cache_policy.caching_disabled.id
    origin_request_policy_id = data.aws_cloudfront_origin_request_policy.all_viewer.id
  }

  # Основні сторінки — короткий кеш
  default_cache_behavior {
    target_origin_id = "alb-origin"
    viewer_protocol_policy = "redirect-to-https"
    allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods = ["GET", "HEAD"]
    compress = true
    cache_policy_id = aws_cloudfront_cache_policy.pages.id
  }

  restrictions {
    geo_restriction {
      restriction_type = "none"
    }
  }

  viewer_certificate {
    acm_certificate_arn = aws_acm_certificate.main.arn
    ssl_support_method = "sni-only"
    minimum_protocol_version = "TLSv1.2_2021"
  }
}

# Cache Policy для статичних асетів
resource "aws_cloudfront_cache_policy" "assets" {
  name = "assets-immutable"
  min_ttl = 31536000
  max_ttl = 31536000
  default_ttl = 31536000
  parameters_in_cache_key_and_forwarded_to_origin {
    cookies_config {
      cookie_behavior = "none"
    }
    headers_config {
      header_behavior = "none"
    }
    query_strings_config {
      query_string_behavior = "none"
    }
    enable_accept_encoding_brotli = true
    enable_accept_encoding_gzip = true
  }
}

Інвалідація кешу при деплої

# AWS CLI: інвалідувати все
aws cloudfront create-invalidation \
    --distribution-id $DISTRIBUTION_ID \
    --paths "/*"

# Тільки HTML-сторінки (після публікації контенту)
aws cloudfront create-invalidation \
    --distribution-id $DISTRIBUTION_ID \
    --paths "/blog/*" "/products/*" "/"
// Laravel: інвалідація при публікації статті
use Aws\CloudFront\CloudFrontClient;

class ArticlePublished
{
    public function handle(Article $article): void
    {
        $client = new CloudFrontClient([
            'version' => 'latest',
            'region' => 'us-east-1',
        ]);

        $client->createInvalidation([
            'DistributionId' => config('services.cloudfront.distribution_id'),
            'InvalidationBatch' => [
                'Paths' => ['Quantity' => 1, 'Items' => ["/blog/{$article->slug}"]],
                'CallerReference' => (string) now()->timestamp,
            ],
        ]);
    }
}

CloudFront Functions — безпека на edge

// function.js — додає security headers (< 1 мс)
function handler(event) {
    var response = event.response;
    var headers = response.headers;
    headers['strict-transport-security'] = { value: 'max-age=63072000; includeSubDomains; preload' };
    headers['x-content-type-options'] = { value: 'nosniff' };
    headers['x-frame-options'] = { value: 'SAMEORIGIN' };
    headers['referrer-policy'] = { value: 'strict-origin-when-cross-origin' };
    return response;
}
resource "aws_cloudfront_function" "security_headers" {
  name    = "security-headers"
  runtime = "cloudfront-js-2.0"
  code    = file("function.js")
  publish = true
}

Origin Shield

Додатковий проміжний кеш між edge-вузлами та origin-сервером. Зменшує навантаження на origin у 10–50 разів для популярного контенту. Включений у прикладі вище.

Докладніше про конфігурацію Origin Shield Origin Shield вмикається в блоці origin. Вибирайте регіон, найближчий до вашого origin. Для Європи — eu-central-1, для США — us-east-1. Це знизить затримки та зробить кеш більш ефективним.

Терміни та вартість

Базове налаштування займає 1-2 дні. Складні сценарії з Lambda@Edge та Origin Shield — до 5 днів. Точну вартість розраховуємо індивідуально після аналізу вашої інфраструктури. Оцінимо ваш проект за 1 день — зв'яжіться, і ми підготуємо пропозицію. Отримайте консультацію з налаштування CloudFront вже сьогодні.

Докладніше: CloudFront Documentation, CDN

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060