La solución simple y genial aquí es poner su ELB detrás de CloudFront.
Si el servidor de origen (el ELB en este caso) arroja un error 5XX (o 4XX si lo desea), CloudFront puede devolver una página de error personalizada , que puede configurar CloudFront para buscar desde un depósito S3 creando un segundo origen apuntando al bucket y creando un enrutamiento de comportamiento de caché (por ejemplo) /errors/static/*
al bucket.
Esto funciona mejor que la conmutación por error de la ruta 53 por una razón importante ... un defecto fatal, si lo desea ... los navegadores son terribles sobre el almacenamiento en caché de las búsquedas de DNS durante mucho más tiempo de lo esperado. El DNS TTL no es relevante.
Esencialmente, una vez que un navegador tiene una entrada DNS en la mano, simplemente sigue intentando usarla ... típicamente, hasta que se cierran todas las ventanas del navegador.
Entonces, si su sitio deja de funcionar para un visitante que ya estaba en el sitio, es poco probable que vea el sitio alternativo.
Peor aún, si un visitante visita su sitio por primera vez mientras está inactivo, se "pegará" en la página de mantenimiento hasta que cierre todas las ventanas del navegador.
Si usa DNS de conmutación por error, eso es realmente bueno si el objetivo de conmutación por error sigue siendo su aplicación, tal vez un poco más lejos.
Puede desactivar el almacenamiento en caché de CloudFront si no lo necesita.
También puede configurar el error de almacenamiento en caché TTL de CloudFront a un valor distinto de cero si desea que deje de dañar su sitio mientras está inactivo y tratando de recuperarse. Para una página determinada que arroja un error, seguirá mostrando la página de error y no molestará a su servidor con más solicitudes para esa página hasta que caduque el Error CachingTTL.