ハマログ

株式会社イーツー・インフォの社員ブログ

AWS環境でメンテナンス画面表示したいんだけど

こんにちは池島です。少しつまずいたことがあったので備忘録的にメモ。
要望はAWS環境でメンテナンス画面を表示したい。前提として下記があります。
・ELBを利用する
・画像はCloudFrontから表示する

なので下記の場合はメンテナンス画面ではなく「200」を戻したい。
・ELBのヘルスチェック
・CludFrontからの読み込み

最初は「.htaccess」の「RewriteCond」下記の様に書きました。

ErrorDocument 503 /maintenance.html
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{HTTP_USER_AGENT} !^(ELB-HealthChecker|CloudFront)

RewriteRule ^.*$ - [R=503,L]

これで画像のアップロードするとCloudFront経由の画像が503に。。。
設定だめみたいです。
正規表現間違ってますね。「^」がついてる。CloudFrontからの「HTTP_USER_AGENT」は「Amazon CloudFront」でした。
なので下記に直します。

ErrorDocument 503 /maintenance.html
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{HTTP_USER_AGENT} !^(ELB-HealthChecker|Amazon\ CloudFront)

RewriteRule ^.*$ - [R=503,L]

これで無事にメンテナンス画面表示中も画像アップロードできるようになりました。
RewriteCondの記述が間違っていた時にアップロードした画像は5分後くらいに正しく表示されるようになりました。
これはCloudFrontの設定で「エラーキャッシュ最小TTL → デフォルト5分」でデフォルトの時間キャッシュされているため5分後に正しく表示されたと思われます。

参考

AWSmaintenanceインフラメンテナンス運用

池島 篤則   池島 篤則   2017年12月5日


関連記事

AWS EC2でファイル共有 東京はまだだけど米国サーバーでEFS試してみる

こんにちはいけしまです。前回のブログ更新から5ヶ月もたってしまいました。すみませ…

AWSのVPCとサブネットの予約済みIPv4アドレスについて

今月より、レガシーなOSで動作しているウェブシステムをAWSに移行する作業をして…

AWSのRDSをアップグレードのためテスト

こんにちはいけしまです。たてつづけにブログ投稿。 もうひとつ前のブログで書いたR…


← 前の投稿

次の投稿 →