Ответ
Основной способ экономии — эффективное кэширование контента на edge-локациях, что снижает нагрузку и исходящий трафик с origin-серверов (EC2, S3, ALB).
Ключевые настройки для экономии:
-
Оптимизация TTL:
- Для статики (изображения, CSS, JS) устанавливаю
max_ttlдо года. - Для динамического контента с частыми обновлениями настраиваю более короткие TTL или инвалидацию.
- Для статики (изображения, CSS, JS) устанавливаю
-
Использование Origin Shield: Включаю для уменьшения количества запросов к origin, особенно при большом количестве точек присутствия (POP).
-
Сжатие (Compression): Всегда активирую сжатие Gzip/Brotli для текстовых форматов, что сокращает объем передаваемых данных.
-
Географическое ограничение (Geo Restriction): Если сервис работает не по всему миру, блокирую трафик из нецелевых регионов, чтобы не платить за него.
Пример настройки кэширования в Terraform для S3 origin:
resource "aws_cloudfront_distribution" "static_site" {
origin {
domain_name = aws_s3_bucket.static.bucket_regional_domain_name
origin_id = "S3-static"
s3_origin_config {
origin_access_identity = aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path
}
}
default_cache_behavior {
target_origin_id = "S3-static"
viewer_protocol_policy = "redirect-to-https"
allowed_methods = ["GET", "HEAD", "OPTIONS"]
cached_methods = ["GET", "HEAD"]
compress = true
forwarded_values {
query_string = false
cookies { forward = "none" }
}
# Длительные TTL для статики
min_ttl = 0
default_ttl = 86400 # 1 день
max_ttl = 31536000 # 1 год
}
# Включаем Origin Shield для основного региона
origin_shield {
enabled = true
origin_shield_region = "eu-west-1"
}
}
Мониторинг: Регулярно анализирую отчеты CloudFront Usage Reports и метрики в CloudWatch (например, BytesDownloaded, Requests), чтобы выявлять неоптимальные паттерны запросов и корректировать политики кэширования.