⌛
Route53の複数値回答ルーティングポリシーをterraformで書いてみる
DNSラウンドロビンで分散させてたサービスがあるのですが、どれか落ちた時に面倒かなというわけで、複数値回答ルーティングポリシーを使ってみることにしました(試してみたいだけともいう)。とはいえ、まだ terraform で設定してみただけで細かいところは未検証なので、そのうちそっちはやりたいと思います。今回は terraform でこう書くよってところだけ。
複数値回答ルーティングポリシーは、簡単に言うとヘルスチェックして生きてる分だけレコードを返してくれます。
コンソールだとこんな感じで設定進めていきます。
で、terraformのドキュメント読んで
multivalue_answer_routing_policy = true
すればいいのはすぐにわかったんですが、はて、レコードIDとやらは?
わかんないんでテキトーに書いて plan & apply してみたところ
Error: provider.aws: aws_route53_record: test-cdn-v2.example.jp.: "set_identifier": required field is not set when "multivalue_answer_routing_policy" is set
なるほど?つまり、こういうことか。
でも、これドキュメントに記載ないんですよ…。
(2021年3月15日閲覧)
ultivalue_answer_routing_policy
でも必須ですね。
というわけで、こんな感じに書いて完了。
resource "aws_route53_zone" "example-jp" {
name = "example.jp"
}
resource "aws_route53_health_check" "hc-test-cdn-v2-01" {
fqdn = "test-cdn01.example.jp"
port = 443
type = "HTTPS"
resource_path = "/healthcheck"
failure_threshold = "5"
request_interval = "30"
}
resource "aws_route53_health_check" "hc-test-cdn-v2-02" {
fqdn = "test-cdn02.example.jp"
port = 443
type = "HTTPS"
resource_path = "/healthcheck"
failure_threshold = "5"
request_interval = "30"
}
resource "aws_route53_record" "test-cdn-v2-01" {
zone_id = aws_route53_zone.example-jp.zone_id
name = "test-cdn-v2.example.jp."
type = "A"
ttl = "300"
multivalue_answer_routing_policy = true
health_check_id = aws_route53_health_check.hc-test-cdn-v2-01.id
set_identifier = "01"
records = ["XXX.XXX.XXX.XXX"]
}
resource "aws_route53_record" "test-cdn-v2-02" {
zone_id = aws_route53_zone.example-jp.zone_id
name = "test-cdn-v2.example.jp."
type = "A"
ttl = "300"
multivalue_answer_routing_policy = true
health_check_id = aws_route53_health_check.hc-test-cdn-v2-02.id
set_identifier = "02"
records = ["XX.XX.XX.XX"]
}
ヘルスチェック失敗した時にCloudWatchアラーム発砲出来るので、それはまた別途書いてみたいと思います。
Discussion