Cuando empezamos a tocar S3 o CloudFront en AWS para gestionar algún proyecto web, en el pasado, era prácticamente obligatorio tener que recurrir a montar buckets S3 con webhosting habilitado para simplemente hacer una redirección, por ejemplo, domain.com a www.domain.com. Como digo era algo bastante usado. Siempre me pareció un poco raro montar un bucket de S3 solo para esto pero, era lo que era. Vamos a ver como podemos usar esta funcionalidad (desde 2021) y deprecar el uso de AWS S3 Bucket para redirecciones. Vamos a ver en este post como redirigir una petición con CloudFront function en AWS.
Funciones en CloudFront
Amazon CloudFront permite distribuir contenido, aplicaciones y APIs a usuarios de todo el mundo con baja latencia. Además de actuar como CDN, CloudFront puede ejecutar lógica en el edge, es decir, cerca del usuario final.
Lambda@Edge
AWS distingue principalmente dos tipos de procesamiento en el edge. Para operaciones complejas y con mayor consumo de recursos existe Lambda@Edge, pensada para ejecutar lógica más avanzada cuando el contenido no está disponible en caché o se necesita realizar procesamiento adicional.
CloudFront Functions
Para tareas mucho más simples, como modificar peticiones o respuestas HTTP, añadir o eliminar cabeceras, hacer redirecciones o aplicar pequeñas reglas sobre cada request, AWS ofrece CloudFront Functions. Estas funciones ejecutan código JavaScript ligero directamente en las ubicaciones edge de CloudFront, con menor coste y latencia que Lambda@Edge.
CloudFront Functions es una buena opción para tareas rápidas como:
- Optimizar la caché, normalizando URLs, cabeceras, cookies o parámetros para mejorar el cache hit ratio.
- Hacer redirecciones o reescrituras de URL, por ejemplo enviando usuarios a otra página o implementando pruebas A/B.
- Modificar cabeceras HTTP, como añadir HSTS, eliminar cabeceras innecesarias o reenviar información al origen.
- Aplicar controles de acceso, validando tokens como JWT o HMAC para permitir o bloquear peticiones.
En resumen, Lambda@Edge está orientado a lógica más compleja, mientras que CloudFront Functions resulta ideal para modificaciones rápidas y sencillas de las peticiones y respuestas que pasan por CloudFront.
Redirecciones antes

Mirando la documentación, la funcionalidad de redirección en S3 es de 2012, wow. Esto explica porque era el método más usado durante muchos años. Los problemas son los que hemos explicado, tenemos que mantener un bucket de S3 solo para hacer una redirección.
Redirección ahora

Coste
CloudFront Functions tiene un coste muy reducido. AWS incluye actualmente hasta 2 millones de invocaciones mensuales sin coste y, una vez superado ese límite, el precio es de aproximadamente 0,10 USD por cada millón de ejecuciones.
Para casos sencillos como una redirección HTTP del dominio principal hacia www, el impacto económico es prácticamente despreciable para un sitio web con un volumen de tráfico normal.
Como redirigir las peticiones
Con Terraform es tan fácil como esto.
resource "aws_cloudfront_function" "redirect_apex_to_www" {
name = "redirect-apex-to-www"
runtime = "cloudfront-js-1.0"
publish = true
code = <<EOF
function handler(event) {
var request = event.request;
var uri = request.uri || "/";
var host = request.headers.host.value;
if (host === "example.com") {
return {
statusCode: 301,
statusDescription: "Moved Permanently",
headers: {
location: {
value: "https://www.example.com" + uri
}
}
};
}
return request;
}
EOF
}
...
...
...
resource "aws_cloudfront_distribution" "redirect" {
...
...
...
default_cache_behavior {
# ...
function_association {
event_type = "viewer-request"
function_arn = aws_cloudfront_function.redirect_apex_to_www.arn
}
}Después de aplicar el cambio para validar que es la función la que ejecuta la redirección, podemos validarlo con curl
❯ curl -I -sS https://domain.com
HTTP/2 301
server: CloudFront
date: Fri, 18 Sep 2026 08:12:49 GMT
content-length: 0
location: https://www.domain.com/
x-cache: FunctionGeneratedResponse from cloudfront
via: 1.1 c1214d711b9d87739d1d184e6539edfc.cloudfront.net (CloudFront)
x-amz-cf-pop: MAD53-P2
x-amz-cf-id: SuTDpMGf1FKKQMed59QiwJovTxjvkJUbIiZsEr1W6sWYaOMnMDASdQ==Links
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example_cloudfront_functions_redirect_based_on_country_section.html
- https://aws.amazon.com/blogs/aws/introducing-cloudfront-functions-run-your-code-at-the-edge-with-low-latency-at-any-scale/
- https://aws.amazon.com/blogs/aws/amazon-s3-support-for-website-redirects/
- https://www.rubenortiz.es/tag/cloudfront/
¿Te ha ayudado este artículo?
☕ Invítame a un café