結論
CloudFrontのカスタムエラーレスポンスを使おうと思って設定をしたが、意図したとおりに動かなかった。
結論、カスタムエラーページに設定するページは正常なステータスコードで返す必要があることがわかった。
(オリジンサーバーからの404レスポンスをCloudFrontから503でカスタムエラーページを返す例)
やっていたこと
503を返すページをつくりたくて、とりあえず既にに用意している404ページを流用してCloudFrontのカスタムエラーレスポンスで503に変えて配信しようと思っていた。
イメージは以下の図。(これは意図したとおりに動かない)
だが、何度設定しても意図したとおりに動かず、CloudFrontから404が帰ってきていた。
試しに200を返すページをカスタムエラーページに設定したところ動いた。
ドキュメントを読むと、
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html
HTTP ステータスコードの代わりにカスタムエラーページを返すように CloudFront を構成していても、カスタムエラーページが利用できない場合には、CloudFront は、カスタムエラーページを持つオリジンから受信したステータスコードをビューワーに返します。
とあり、カスタムエラーページからのレスポンスのステータスコードが正常でなければ、そのステータスコードをそのまま返すようになっている様。
そのため、カスタムエラーページとして設定するページは正常なステータスコードを返す必要があることがわかった。