Volver a artículos
6 min de lecturaastro-ssg-aws-s3-cloudfront

Escrito por Rodrigo de Miguel

Dominio con Route 53 y CloudFront para un blog Astro SSG (4/5)

Cómo añadir dominio propio, HTTPS y Google Search Console a un blog estático en AWS usando Route 53 y CloudFront, de forma sencilla y sin pelearte con DNS.

AWS
Cloudfront
S3
Route 53
Astro
Static Site Generation SSG
Web Performance Optimization WPO

Vamos a rematar el blog

A estas alturas ya tenemos algo que pinta muy bien:

  • Un blog en Astro
  • HTML estático
  • S3 + CloudFront sirviendo contenido rápido
  • URLs limpias
  • Coste prácticamente cero

Lo único que falta para que esto ya huela a proyecto cerrado es:

  • dominio propio
  • HTTPS
  • contarle a Google que estamos aquí

Nada más.
No vamos a montar nada extraño ni a tirarnos horas peleando con DNS (spoiler: AWS aquí se porta).

Qué vamos a hacer en este post

Paso a paso y sin rodeos:

  1. Comprar un dominio (fuera de AWS)
  2. Gestionar el DNS con Route 53
  3. Crear y asociar certificados SSL
  4. Conectar el dominio a CloudFront
  5. Registrar el sitio en Google Search Console

Cuando terminemos:

👉 el blog será accesible desde tu dominio, con HTTPS y visible para Google.

Paso 1 — Comprar el dominio (donde quieras)

Aquí no hay misterio. El dominio lo puedes comprar donde te resulte más cómodo.

Algunos proveedores habituales:

El proveedor da igual.
La condición clave es que permita cambiar los nameservers.

Paso 2 — Crear la zona hospedada en Route 53

Ahora sí, entramos en AWS.

En Route 53:

  • Hosted zones → Create hosted zone
  • Domain name: tudominio.com
  • Type: Public hosted zone

Al crearla, AWS te entrega:

  • 4 registros NS (servidor de nombres DNS)
  • 1 registro SOA (autoridad de zona)

Estos nameservers son los que vamos a necesitar justo después.

Paso 3 — Enlazar el dominio con Route 53

Vuelve al proveedor donde compraste el dominio.

Busca algo parecido a:

  • “Servidores DNS”
  • “Nameservers”
  • “Gestión DNS”

Y sustituye los nameservers actuales por los que te dio Route 53.

Ejemplo:

TEXT
ns-123.awsdns-45.org ns-456.awsdns-78.co.uk ns-789.awsdns-12.com ns-321.awsdns-34.net

Propagación DNS

Este cambio:

  • a veces es casi inmediato
  • otras veces tarda unas horas

Para comprobarlo, busca tu dominio en:

Cuando los NS ya apunten a AWS, seguimos adelante.

Paso 4 — Certificado SSL (HTTPS) con AWS ACM

Detalle clave: CloudFront solo acepta certificados en us-east-1. No lo olvides.

Opción CLI (rápida)

BASH
aws acm request-certificate \ --domain-name tudominio.com \ --subject-alternative-names www.tudominio.com \ --validation-method DNS \ --region us-east-1

Opción consola (más visual)

  • Ve a AWS Certificate Manager
  • Request certificate
  • Public certificate
  • Dominios: tudominio.com y www.tudominio.com
  • Validación: DNS
  • El resto por defecto

ACM te dará un registro CNAME para validar que el dominio es tuyo.

Paso 5 — Validar el certificado en Route 53

En Route 53 → Hosted zone del dominio:

  • Create record
  • Tipo: CNAME
  • Copia exactamente los valores que te da ACM

Muchas veces AWS muestra el botón “Create records in Route 53”. Si aparece, úsalo y te ahorras trabajo.

En pocos minutos: 👉 el certificado pasa a estado Issued.

Guarda el ARN del certificado. Lo necesitamos más adelante.

Paso 6 — Asociar el dominio y el SSL a CloudFront

Volvemos a CloudFront.

En tu distribución:

  • General → Edit

Configura:

  • Alternate domain name (CNAME)tudominio.com
  • Custom SSL certificate → selecciona el certificado
  • HTTP versions → HTTPS/2 y HTTPS/3

Guarda los cambios.

CloudFront tarda un rato en propagar la configuración. Es normal, aquí toca esperar.

Paso 7 — Crear el registro DNS hacia CloudFront

En Route 53 → Hosted zone:

  • Create record
  • Tipo: A
  • Alias:
  • Target: el dominio de tu distribución de CloudFront

Con esto conectas: 👉 tudominio.com → CloudFront → S3

Cuando termine la propagación: 🎉 el blog debería cargar con HTTPS y dominio propio.

Paso 8 — Google Search Console (contarle a Google que existes)

Ahora toca una parte menos técnica, pero igual de relevante.

Crear propiedad

Google te dará un registro TXT.

Verificar dominio

En Route 53:

  • Create record
  • Tipo: TXT
  • Pega el valor que te da Google

Esperas unos minutos y validas.

Paso 9 — Enviar el sitemap

En Search Console:

  • Sitemaps
  • Añadir sitemap

En Astro, por defecto:

TEXT
https://tudominio.com/sitemap-index.xml

Y listo.

A partir de aquí:

  • Google empieza a rastrear
  • aparecen impresiones en “Rendimiento”
  • la indexación va poco a poco (esto lleva su tiempo)

Cómo comprobar que todo está bien

Comprobaciones rápidas y prácticas:

  • https://tudominio.com carga
  • https://tudominio.com/blog/ funciona sin index.html
  • https://tudominio.com/sitemap-index.xml existe
  • En Search Console no aparecen errores graves

Si algo no encaja:

  • revisa DNS
  • revisa que el certificado esté en us-east-1
  • revisa que el dominio esté asociado a CloudFront

Qué hemos hecho realmente

Visto con perspectiva, no es nada fuera de lo normal:

  • Un dominio
  • DNS gestionado por AWS
  • HTTPS sin tocar certificados a mano
  • Google avisado

Todo con piezas conocidas y sin trucos raros.

Qué queda por hacer

El blog ya está online y accesible para cualquiera, asi que...

En el siguiente (y último) post:

  • Añadir CI con GitHub Actions
  • Desplegar automáticamente con cada push
  • Quitar el “paso manual” del deploy

Cerrar el flujo de principio a fin.


“Ahora solo falta automatizar el despliegue para dejarlo redondo.”

Posts de la serie

1️⃣ Parte 1: Un blog no debería ser un SaaS
2️⃣ Parte 2: Preparar un blog en Astro con buen criterio
3️⃣ Parte 3: S3 + CloudFront para servir un blog estático rápido y barato
👉 Parte 4: Dominio con Route 53 y CloudFront para un blog Astro SSG
5️⃣ Parte 5: Automatizar el despliegue de un blog Astro SSG con GitHub Actions y AWS
🐙 GitHub Repo: demo-astro-ssg-s3-cloudfront

¿Hablamos?

¿Buscas a alguien que entienda el producto tanto como el código?

Abrir conversación

© 2026 Rodrigo de Miguel. Todos los derechos reservados.