コンマ

メモ代わりにアウトプットしています。何か不備がありましたら、お気軽にコメント頂けると有り難いです。

【AWS】メンテナンス時にALBで転送先を簡単に変える方法

TL;DR

ALB(Application Load Balancer)のリスナーのルールを使用して、ALBの転送先を変える方法を記載しています。

関連情報

以下を参考にしました。

docs.aws.amazon.com

特定のドメインの転送先を別転送先に変えたい場合(例えば、メンテナンス画面に変更させたい等)が少なからずあると思います。
ALBのリスナーのルールを使うことによって、簡単に変更することが可能だったので、メモ代わりにアウトプットしようと思いますmm
今回はまず、ALBのリスナー(HTTP : 80)で受けたときに、正常の場合EC2に転送します。
その後、メンテナンス画面にするためにルールを変更し、メンテナンス画面(擬似的に固定レスポンス)に変わるところまでを行います。

前提条件

  • ALB経由でEC2(webサーバー)にさばけること。

やってみます

1. リスナーのルールを作成する。(通常用)

現在、ALBではHTTP(port80)で受け、EC2に転送しています。

f:id:koooosuke:20190429235206p:plain

EC2ではwebサーバーとして、Nginxを起動しました。

f:id:koooosuke:20190429235633p:plain

ロードバランサー>リスナーでは以下のようになっています。 f:id:koooosuke:20190429235807p:plain

ルールの表示/編集からルールを編集していきます。 f:id:koooosuke:20190429235939p:plain

以下のようにパスで*を指定し、HTTP(port80)で受け取るALBのパスはEC2のターゲットグループに転送するようにルールを追加しました。 f:id:koooosuke:20190430000305p:plain

2. リスナーのルールを作成する。(メンテナンス用)

続いて、メンテナンス時に飛ばしたい転送先のルールを追加していきます。
今回は、擬似的に固定レスポンスを返すように以下のように、パスを*で指定し、固定レスポンスを返すようにルールを追加しました。
ただし、先程追加したルールの下にルールを追加するようにします。 f:id:koooosuke:20190430000825p:plain

3. ALBのルールを変え、転送先を変えてみる。

まず、現在のALBにつなぐと以下のようにEC2につながります。 f:id:koooosuke:20190429235633p:plain

ここで、ALBのルールの優先順位を固定レスポンス(メンテナンス用)を上位にするように変更してみます。 f:id:koooosuke:20190430001443p:plain

では、もう一度ALBにつないで確認をしてみると、以下のように先程のルールが適用されています。 f:id:koooosuke:20190430001644p:plain

こんな感じにパス指定やホストを指定したりして、ALBで簡単に転送先を変えることができました。