年中アイス

いろいろつらつら

Route53のヘルスチェックに403を返してるはずなのに、なぜかFailしない

ちょっとはまったのでメモ。

Route53には、エンドポイントをチェックして、フェイルオーバーしたり、DNSの振り分けを止めたりする機能がついています。これを有効に使うには、何が成功で、何が失敗になる(する)のかをコントロールすることが重要です。

AWSの仕様上は、単純なHTTPでのチェックは、2秒以内に200から400未満のステータスを返す必要があると記載があります。

How Amazon Route 53 Determines Whether an Endpoint Is Healthy - Amazon Route 53

HTTP and HTTPS health checks — Amazon Route 53 must be able to establish a TCP connection with the endpoint within four seconds.
In addition, the endpoint must respond with an HTTP status code of 200 or greater and less than 400 within two seconds after connecting.

 

Failしたときの挙動を確認したくて、403を返す状態にするもFailせず、正常判定が続く。ブラウザでヘルスチェック用のURLを見てもnginxの403ページ。まさか、403ページが200ステータスで返っている?と思い、wgetで叩いてみたら、実は最初に301が返っていました。

/healthcheckpath

301 Moved Permanently.

/healthcheckpath/

403 Forbidden.

/healthcheckpath/index.html というファイルを /healthcheckpath でアクセスしてたから一度301経由してました。。。 /healthcheckpath/ のように最後に/を付けたらきちんとFail判定されました。