1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メモ:メンテ拠点とかスマホアプリを考慮したSorry Pageの設定

Last updated at Posted at 2019-08-07

この記事は

  • AWSでいい感じにSorry Pageを表示するためのメモです

やりたかったこと

  • AWS上のWebサービスのメンテ中にアクセスがあった時にSorry Pageを出したかったです
  • ただし、下記の細かな要件を満たせるものとします

細かな要件

  • メンテしている拠点からのアクセスの場合は通す
    • メンテ終わってサイトオープンする前に正常動作確認をしたいため
  • /api/*というパスにアクセスがあった場合はjson形式でメンテ中の通知をしたい
    • スマホアプリからアクセスするエンドポイントのため
  • API以外へのパスにアクセスがあった場合はhtml形式でメンテ中の通知をしたい
Web スマホアプリ
その他拠点 HTMLのSorryPage JSONのSorryレスポンス
メンテ拠点 平常通り 平常通り

基本的な方法

  • 基本的にはALBのルールを設定して制御します
  • ロードバランサ>(選択)>リスナー>ルールの表示/編集から設定できます

詳細

  • こんな感じで設定を実施します

平常時の設定

  • 平常時は1番上に必ずマッチする条件でWebAPのターゲットグループに繋ぎます
  • なので基本的には2番目以下のメンテ系の条件に行くことはありません
条件種別 条件値 アクション アクション値 備考
パス * 転送 WebApのターゲットグループ ・サイトオープン中に利用
ソースIP メンテ拠点のIP 転送 WebApのターゲットグループ ・サイトクローズ中にメンテ拠点から利用
パス /api/* 固定レスポンス コード: 503
Content-Type: text/json
レスポンス本文: スマホ向けのJSON
・スマホ向けのSorryレスポンス
パス * 固定レスポンス コード: 503
Content-Type: text/html
レスポンス本文: Web向けhtml
・Webブラウザ向けのSorryPage

メンテ時の設定

  • メンテ時は平常時に1番上にあった平常運転の条件を1番下に移動しています
  • 1番目でソースIPがメンテ拠点の場合の条件を定義して、平常運転と同じようにWebAPに繋いでいます
  • 2番目でスマホからアクセスするパスの条件を定義し、JSONでSorryレスポンスを返却しています
  • 3番目でそれ以外のアクセスの条件を定義し、WebでのSorryPageを返却しています
条件種別 条件値 アクション アクション値 備考
ソースIP メンテ拠点のIP 転送 WebApのターゲットグループ ・サイトクローズ中にメンテ拠点から利用
パス /api/* 固定レスポンス コード: 503
Content-Type: text/json
レスポンス本文: スマホ向けのJSON
・スマホ向けのSorryレスポンス
パス * 固定レスポンス コード: 503
Content-Type: text/html
レスポンス本文: Web向けhtml
・Webブラウザ向けのSorryPage
パス * 転送 WebApのターゲットグループ ・サイトオープン中に利用

運用

  • こう定義しておくことで、平常運転の条件を1番上に持ってくるか、1番下に持ってくるかでメンテ中に切り替えることができます

その他

  • 条件の設定にはデフォルトの条件が入っていますが、この運用の場合その条件を使うことはありません

終わりに

  • これで色々都合のいいメンテ状態に簡単に切り替えられますね
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?