Which solution will meet these requirements with the LEAST operational overhead?
Set up a Route 53 failover routing policy. Configure a health check to determine the status of the ALB endpoint and to fail over to the failover S3 bucket endpoint.
Create a second CloudFront distribution and an S3 static website to host the custom error page. Set up a Route 53 failover routing policy. Use an active-passive configuration between the two distributions.
Create a CloudFront origin group that has two origins. Set the ALB endpoint as the primary origin. For the secondary origin, set an S3 bucket that is configured to host a static website Set up origin failover for the CloudFront distribution. Update the S3 static website to incorporate the custom error page.
Create a CloudFront function that validates each HTTP response code that the ALB returns. Create an S3 static website in an S3 bucket. Upload the custom error page to the S3 bucket as a failover. Update the function to read the S3 bucket and to serve the error page to the end users.
Explanations:
Route 53 failover would add latency due to DNS propagation and would not provide immediate failover. It also introduces unnecessary complexity and does not directly address handling 503 errors at the ALB level.
Creating a second CloudFront distribution is redundant and complex. This approach adds unnecessary operational overhead without providing immediate failover for 503 errors from the ALB.
Configuring a CloudFront origin group with the ALB as primary and an S3 bucket as secondary allows immediate failover to the custom error page on S3 when a 503 error occurs, minimizing operational overhead.
Using a CloudFront function for every HTTP response code is complex and inefficient for handling 503 errors. It introduces more operational overhead compared to an origin group failover configuration.