見出し画像

エンジニア通信Vol.4 ~AWS Tips:メンテナンス切替~

こんにちは。
開発エンジニアのAです。

最近は自宅でヨガを楽しんでいます。


エンジニアの皆さんはパブリッククラウドに慣れていらっしゃる方も
多いかと思いますが

今回は、AWSは軽く触ったことがある程度、、という方向けにTipsをご紹介します。

テーマはメンテナンスページの表示です。
一緒に見ていきましょう。




まず、webアプリケーションのシステム構成を確認します。
今回は下記のような構成で構築済みだとします。

メンテナンス実施中は、S3に格納されているメンテナンスページへリダイレクトさせるようにしてみましょう。

構成例

各サービスの詳細説明は割愛させていただきますが、
ポイントとしてはCloudFrontを経由して、S3の静的サイトを参照している点です。

※CloudFrontは、エッジロケーションからコンテンツを配信するCDNサービ  スです。
※また上記構成の場合バックエンド側の対応も必要ですが、今回はフロントエンドの画面切替に焦点を絞ってご説明します。

やり方としてはいくつか考えられるかと思います。

DNSの設定で向き先を変えてしまう方法もありますが、ややカスタマイズ性に欠けますので
すでに利用している想定のAWS WAFを使用することにします。

※AWS WAF(Web Application Firewall)はSQLインジェクションやクロスサイトスクリプティングなど
一般的なWebアプリケーションに対する攻撃への防御機能を提供するサービスです。

今回の構成では、CloudFrontに対してアタッチされていますので
このWAFにリダイレクトのルールを追加することで、メンテナンス画面を表示させたいと思います。

+αとして、メンテナンス作業担当者にはリダイレクトを通さない設定も加えてみましょう。

それでは、AWS WAFのページを開きます。
事前準備として、IP setsから、メンテナンス作業担当者のIP setsを作成しておきます。

作業者のIPアドレスを登録しておく

続いて、Web ACLsから、メンテナンス用のACLを作成します。
Create web ACLから作成しましょう。

ACL名を入力し先に進み、ルール(条件)を作成していきます。

作成画面では名称などを入力後、
Add my own rules and rule groups
⇒ Rule builderから、ルールを作成していきます。

Web ACLを作成

次に、条件に当てはまったリクエストに対するActionを指定します。
ここで即座に503ステータスコードを返却することも可能です。

今回はリダイレクトをさせたいので、カスタムレスポンスとして、
レスポンスコードを302, レスポンスヘッダにlocation=/maintenance、としておきます。

条件にあてはまった場合のActionを設定

条件として、
先ほど作成したIP sets内のIPからのリクエストは含まない(処理しない)、としておきましょう。

※今回は行いませんが、web ACLでは複数のルールを作成して優先順位づけすることも出来ます。

Web ACLが作成できたら、CloudFrontの設定を編集します。

対象のCloudFrontディストリビューションを選択し、設定編集画面から
AWS WAFのWeb ACLを変更すれば完了です。

CloudFrontの設定画面からWAFを切り替え

実際の運用では、通常時とメンテナンス時でそれぞれACLを作成しておくことで、
ワンクリックでのメンテナンス切り替えが可能となります。
(切替は即座に反映されます。)



以上、CloudFrontなどの構築が済んでいる前提でしたので
駆け足で限定的なものではありますが、Tipsをご紹介いたしました。

こんなことをしているんだな、と雰囲気を掴んでいただけますと幸いです。

それではまた。

~~~~

ドリームビジョンではエンジニアの採用を通年で行っております。
ご興味のあるかたはご連絡お待ちしております。

▼ドリームビジョン