この記事はNTTコムウェア AdventCalendar 2024の22日目の記事です。
はじめに
NTTコムウェアの望月と申します!
クラウドの構築・構成管理に便利なプロダクト「SmartCloud®オーケストレータ」を活用し、パブリッククラウド構築・運用の提案や実際のクラウドマイグレーション案件でのAWS設計構築を担当しています。
今回は実際の構築で苦戦した、AWS上でのSorryサーバ構築について紹介できればと思います。
Sorryサーバについて
Sorryサーバとは、何らかの影響でサービスを提供しているサーバが応答できなくなった際に、利用者に対して停止原因や再開に関するアナウンス等を伝えるサーバです。
やりたかったこと
複数のWebサイトのSorryページを、1つのS3バケットで表示できる構成を考えていました。下記イメージ図のような想定です。
躓いたポイント
S3バケットでの静的サイトホスティングにはいくつかの制約事項があります。
そのうちの一つに、静的コンテンツをホスティングするバケット名は、
ドメイン名と厳密に一致している必要があるというものがあります。
どういうことかと言うと、「サイトA.com」のSorryページを作るには、
「サイトA.com」という名称でS3バケットを作成しなければならないということです。
翻って、SorryページをS3バケットの静的ホスティングで実装しようとすると、
サイト個別にS3バケットを用意しなければなりません。目論見崩れる・・・
解決策
Application Load Balancer(ALB)の固定レスポンス機能を用いて、Sorryサーバを構築しました。構成図は下記のとおりです。
固定レスポンス機能を用いると、クライアントリクエストを削除し、カスタムHTTPレスポンスを返すことが可能になります。
固定レスポンスでは下記項目を設定可能です。
レスポンスコード:任意のコードを設定可能です。今回は200としました。
コンテンツタイプ:メッセージの形式を選択可能です。今回はtext/htmlを選択し、html形式でSorryページを返すようにしました。
レスポンス本文:1024文字以下で入力が可能です。
留意点
ALBでのSorryサーバ構築は、とても便利なのですがいくつか留意点がありますので、そちらも紹介しておきます。
-
固定レスポンスとして設定可能なのは文字列のみ。
画像などは設定不可なのでご注意ください。 -
固定レスポンスで返信する際、レスポンスヘッダの詳細な設定を行えない
Keep-AliveをOFFにする設定がALBだと行えず、一度Sorry画面につないだ後にサーバへのアクセスが復活してもSorry画面に繋がってしまう事象が発生しました。こちらはLB側でALBから受信するレスポンスヘッダのKeep-AliveをConnection:Closeに変換することで対応できました -
ALBを作成する際に、空のターゲットグループを作成・指定する必要がある
AWSコンソールからALBを作成する際は、ターゲットグループの指定が必須となるので、ターゲットに何も指定しないターゲットグループを作成しなければならない。
終わりに
いかがでしたでしょうか?ALBを用いると、簡易&お安くSorryサーバを構築できるので静的コンテンツでSorryページを構築する場合はぜひ検討してみてください!
関連リンク
「SmartCloud®(スマートクラウド)」は、NTTコムウェア株式会社の登録商標です。その他、記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。