Пользовательское доменное имя в API Gateway позволяет ему отвечать на имена, отличные от предоставленного AWS (оно работает через SNI ), а также предоставлять сертификат, который имеет хотя бы один SAN , которое будет соответствовать указанному вами имени, поэтому вам нужно будет определить это, а также любые записи DNS, чтобы люди могли затем разрешить шлюз API.
Что касается записей на основе задержки, вам нужно будет создать несколько записей Route53и определить политику задержек в каждом из них.aws_route53_record
документы показывают, как вы можете создавать взвешенные записи для смещения 10% всего трафика к другой цели:
resource "aws_route53_record" "www-dev" {
zone_id = "${aws_route53_zone.primary.zone_id}"
name = "www"
type = "CNAME"
ttl = "5"
weighted_routing_policy {
weight = 10
}
set_identifier = "dev"
records = ["dev.example.com"]
}
resource "aws_route53_record" "www-live" {
zone_id = "${aws_route53_zone.primary.zone_id}"
name = "www"
type = "CNAME"
ttl = "5"
weighted_routing_policy {
weight = 90
}
set_identifier = "live"
records = ["live.example.com"]
}
В вашем случае вы захотите что-то подобное:
data "aws_region" "region_one" {}
data "aws_route53_zone" "selected" {
name = "example.com."
}
resource "aws_api_gateway_domain_name" "example" {
domain_name = "api.example.com"
certificate_name = "example-api"
certificate_body = "${file("${path.module}/example.com/example.crt")}"
certificate_chain = "${file("${path.module}/example.com/ca.crt")}"
certificate_private_key = "${file("${path.module}/example.com/example.key")}"
}
resource "aws_route53_record" "region_one" {
zone_id = "${data.aws_route53_zone.selected.zone_id}"
name = "${aws_api_gateway_domain_name.region_one.domain_name}"
type = "A"
latency_routing_policy {
region = "${data.aws_region.region_one.name}"
}
set_identifier = "${data.aws_region.region_one.name}"
alias {
name = "${aws_api_gateway_domain_name.region_one.regional_domain_name}"
zone_id = "${aws_api_gateway_domain_name.region_one.regional_zone_id}"
evaluate_target_health = true
}
}
И поместите его там, где вы создаете каждый шлюз API или используете несколько провайдеров с различной конфигурацией региона для одновременного применения обоих.