質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

4314閲覧

Route53とCloudFrontを使ったマルチリージョン構成の構築ができない

kingdom

総合スコア6

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/11/24 05:20

###前提・実現したいこと
AWSを使って、リージョンを跨いだサーバーレス構成を作りたいと思っています。
以下のようなイメージです。
[Route53]-CloudFront(A)-APIGateway(A)-Lambda(東京)
[Route53]-CloudFront(B)-APIGateway(B)-Lambda(ソウル)

CloudFrontのディストリビューション、APIGatewayもそれぞれ別のものを作っています。
Lambdaはリージョン毎に作っています。

Route53は1つで、DNSフェイルオーバー機能を使って、CloudFront(A)側が停止した場合、Route53からの接続先がCloudFront(A)→(B)と切り替わるようにしたいです。

Route53は以下の設定にしています。

-------------------------------------------------------------------------------- Name Type Value            ポリシー -------------------------------------------------------------------------------- A.net CNAME CloudFront(A)のドメイン名  FailOver(Primary) A.net CNAME B.net             FailOver(Secondary) B.net A(Alias)  CloudFront(B)のドメイン名

また、各CloudFrontのCNAMEは以下のとおりです。
CloudFront(A)→A.net
CloudFront(B)→B.net
※CloudFrontのCNAMEは重複不可だったので、B.netを経由するようにしています。

###発生している問題・エラーメッセージ

CloudFront(A)を停止しても、CloudFront(B)に切り替わらない。
CNAME・Aレコードなどの設定にこだわりはないので、目的が達成できる方法を知りたいです。

###該当のソースコード

言語なし

###試したこと
Route53のレコードセットを色々と変えてはみたのですが、うまくいきませんでした。
CloudFrontのCNAMEを以下のようにもしてみたのですが、ちゃんと動いてはくれませんでした。
CloudFront(A)→A.net
CloudFront(B)→*.net

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

DNSフェイルオーバーしないのは、ヘルスチェックに失敗しないからだと思われます。
「CloudFront(A)側が停止」がどういう状態を指しているのかわかりませんが(APIGateway(A) の停止?)、その状態のときに Route 53 のヘルスチェックに失敗するようになっていますでしょうか?

以下も参考になるかもしれません。

投稿2017/11/25 07:44

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kingdom

2017/11/26 13:30

コメントありがとうございます。 CloudFront(A)が停止の状態としては、以下を試していました。 ・CloudFrontディストリビューションを停止した状態 ・APIGatewayのステージのパスを指定して、ステージを削除した状態orAPIGateway自体を削除した状態 結果、いずれもヘルスチェックの結果はUnhealthyとはなっています。 A.netが指しているLambdaで"A"を返すようにしており、B.netが指すLambdaは”B"を返すようにしているのですが、このタイミングでA.netにアクセスしても、"A"が返ってきてしまい、"B"が返ってきません。 B.netのTypeをA(Alias)ではなくCNAMEにもしてみましたが、結果は変わりませんでした。 頂いたURLの情報を見てもう少し検討してみます。ありがとうございます。
TaichiYanagiya

2017/11/27 02:33

> このタイミングでA.netにアクセスしても、"A"が返ってきてしまい それって、キャッシュではないですか? ブラウザか、CloudFront が生きていれば CloudFront がキャッシュを返しているか。
TaichiYanagiya

2017/11/27 03:21

ブラウザで確認する前に、dig, nslookup などで DNS を確認してみてください。 Route 53 で Primary が Unhealthy のときに、A.net を問い合わせると何が返るのか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問