Что такое AWS CloudFront?

«Что такое AWS CloudFront?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AWS CloudFront — это глобальная сеть доставки контента (CDN), которая интегрирована с экосистемой AWS. Я использовал его для ускорения веб-приложений, кэшируя статические (изображения, CSS, JS) и динамические (API-ответы) ресурсы на edge-локациях, расположенных близко к конечным пользователям.

Ключевые особенности, которые я применял на практике:

  • Интеграция с источниками: В качестве origin выступали S3-бакеты, EC2-инстансы, Application Load Balancer или даже кастомные HTTP-серверы.
  • Lambda@Edge: Позволяет выполнять код на edge-локациях. Например, я использовал его для A/B-тестирования, переписывания URL или добавления security-заголовков.
  • Защита: Встроенная интеграция с AWS Shield Standard для базовой защиты от DDoS и AWS WAF для фильтрации трафика по правилам.
  • Гео-ограничения: Можно блокировать или разрешать доступ к контенту по странам.

Пример конфигурации через Terraform (Infrastructure as Code):

resource "aws_cloudfront_distribution" "app_distribution" {
  origin {
    domain_name = aws_lb.my_app_lb.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"]
    }
  }

  enabled         = true
  is_ipv6_enabled = true
  comment         = "Production distribution for my-app"

  default_cache_behavior {
    allowed_methods  = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "alb-origin"

    forwarded_values {
      query_string = true
      headers      = ["Authorization", "Host"] # Передаём авторизацию и хост для API

      cookies {
        forward = "all"
      }
    }

    viewer_protocol_policy = "redirect-to-https"
    min_ttl                = 0
    default_ttl            = 3600
    max_ttl                = 86400
  }

  restrictions {
    geo_restriction {
      restriction_type = "whitelist"
      locations        = ["US", "CA", "GB", "DE"]
    }
  }

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

Основной результат использования — снижение задержки (latency) для пользователей в разных регионах и уменьшение нагрузки на origin-серверы, что напрямую влияет на стоимость инфраструктуры и отказоустойчивость.