Ответ
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-серверы, что напрямую влияет на стоимость инфраструктуры и отказоустойчивость.