La soluzione semplice e interessante è quella di mettere il tuo ELB dietro CloudFront.
Se il server di origine (in questo caso l'ELB) genera un errore 5XX (o 4XX se lo desideri), CloudFront può restituire una pagina di errore personalizzata , che puoi configurare CloudFront per recuperare da un bucket S3 creando una seconda origine che punta al bucket e creazione di un routing del comportamento della cache (ad es.) /errors/static/*
al bucket.
Funziona meglio del failover di Route 53 per un motivo importante ... un errore fatale, se vuoi ... i browser sono terribili nel memorizzare nella cache le ricerche DNS per molto più tempo del previsto. Il DNS TTL non è pertinente.
In sostanza, una volta che un browser ha una voce DNS in mano, continua a provare a usarla ... in genere, fino a quando tutte le finestre del browser sono chiuse.
Quindi, se il tuo sito non funziona per un visitatore che era già sul sito, è improbabile che vedano il sito alternativo.
Peggio ancora, se un visitatore colpisce il tuo sito per la prima volta mentre è inattivo, si "attaccherà" sulla pagina di manutenzione finché non chiuderà tutte le finestre del browser.
Se si utilizza il DNS di failover, ciò è davvero utile solo se la destinazione di failover è ancora l'applicazione, forse solo più lontano.
Puoi disattivare la memorizzazione nella cache di CloudFront se non ti serve.
Puoi anche configurare l'errore di CloudFront che memorizza nella cache TTL su un valore diverso da zero se vuoi che smetta di martellare il tuo sito mentre è inattivo e cerca di ripristinarlo. Per una determinata pagina che genera un errore, continuerà a mostrare la pagina di errore e non disturberà il server con ulteriori richieste per quella pagina fino alla scadenza dell'errore CachingTTL.