Route53のフェイルオーバールーティングでSorryページに流す

AWS

はじめに

Route53のフェイルオーバールーティングを用いて、ALBに障害やメンテナンスが行われている場合、
セカンダリのルーティング先として指定したS3の静的WebページにてSorryページを表示させる。

前提

オリジナルドメイン取得済みでALBと紐づいている状態が前提

やっていく

セカンダリ用のS3バケット設定

セカンダリ用の各種S3設定

S3バケット作成

遷移先のS3バケットを作成。
この時、オリジナルドメインと同じ名前のバケットである必要がある。
パブリックアクセスを有効にし、他設定はデフォルト。

Sorryページの素材もアップロード

静的ウェブホスティング有効化

静的ウェブホスティングも有効にする

S3バケットポリシー

バケットポリシーを記述

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::blog.murabo.net/*"
            ]
        }
    ]
}

これでS3のDNSにアクセスするとSorryページが表示される。

Route53のレコード設定

オリジナルドメインとELBのDNSが紐づくAレコードをフェイルオーバールーティングとし、プライマリの向き先とする。

プライマリ用レコード

ルーティングポリシーを「フェイルオーバー」に。レコードタイプをプライマリに設定。
レコードIDは任意。プライマリと分かる様にする。
ターゲットのヘルスを評価も有効化する

セカンダリ用レコード

セカンダリ用レコードを作成。ここまでいったら「フェイルオーバーレコードを定義」をクリック

※TTLは60とかでも良いかも

S3のバケットを指定

完成

完成。フェイルオーバーレコードがプライマリとセカンダリ用で定義された。

これでELB側に異常があった場合、S3側に自動で遷移される様になった。

※この時S3バケットにサブドメイン以外のバケット(例えばmurabo.net)があるとうまく遷移できない。

タイトルとURLをコピーしました