AWS Route53子域名alb.skhole.club无DNS记录问题求助
AWS Route53子域名DNS查询无结果问题排查与解决
问题背景
在AWS Route53中购买域名skhole.club,系统自动生成对应托管区域;随后为子域名alb.skhole.club创建了独立托管区域,通过Terraform配置添加DNS记录。执行dig命令查询skhole.club可正常返回记录,但查询alb.skhole.club无任何结果。首次使用自定义域名,寻求排查思路及解决方案。
Terraform配置文件(route53.tf)
版本声明
required_providers { aws = { source = "hashicorp/aws" version = "4.59.0" } }
资源配置
data "aws_route53_zone" "host_domain" { name = local.host_domain } data "aws_route53_zone" "alb" { name = "alb.${local.host_domain}" } resource "aws_route53_record" "cert_validation" { for_each = { for dvo in aws_acm_certificate.cert.domain_validation_options : dvo.domain_name => { name = dvo.resource_record_name record = dvo.resource_record_value type = dvo.resource_record_type } } allow_overwrite = true name = each.value.name records = [each.value.record] ttl = 60 type = each.value.type zone_id = data.aws_route53_zone.host_domain.zone_id } resource "aws_route53_record" "cert_alb" { for_each = { for dvo in aws_acm_certificate.cert.domain_validation_options : dvo.domain_name => { name = dvo.resource_record_name record = dvo.resource_record_value type = dvo.resource_record_type } if length(regexall("^\\*\\.", dvo.domain_name)) == 0 } allow_overwrite = true name = each.value.name records = [each.value.record] ttl = 60 type = each.value.type zone_id = data.aws_route53_zone.alb.zone_id } resource "aws_acm_certificate" "cert" { domain_name = local.host_domain subject_alternative_names = ["alb.${local.host_domain}"] validation_method = "DNS" tags = { Environment = var.app_environment } lifecycle { create_before_destroy = true } } resource "aws_acm_certificate_validation" "cert" { certificate_arn = aws_acm_certificate.cert.arn validation_record_fqdns = [for record in aws_route53_record.cert_validation : record.fqdn] } resource "aws_acm_certificate_validation" "alb" { certificate_arn = aws_acm_certificate.cert.arn validation_record_fqdns = [for dvo in aws_acm_certificate.cert.domain_validation_options : dvo.resource_record_name] } resource "aws_route53_record" "site" { zone_id = data.aws_route53_zone.host_domain.zone_id name = local.host_domain type = "A" alias { name = aws_cloudfront_distribution.static-skhole.domain_name zone_id = aws_cloudfront_distribution.static-skhole.hosted_zone_id evaluate_target_health = false } } resource "aws_route53_record" "alb" { zone_id = data.aws_route53_zone.alb.zone_id name = "alb.${local.host_domain}" type = "A" alias { name = aws_lb.application_load_balancer.dns_name zone_id = aws_lb.application_load_balancer.zone_id evaluate_target_health = false } }
Route53控制台状态
- skhole.club托管区域:

- alb.skhole.club独立托管区域:

dig命令执行结果
查询主域名skhole.club
> dig skhole.club ns +short ns-306.awsdns-38.com. ns-1898.awsdns-45.co.uk. ns-1111.awsdns-10.org. ns-526.awsdns-01.net.
查询子域名alb.skhole.club(无返回结果)
> dig alb.skhole.club ns +short
问题根源与解决方案
问题根源
为子域名alb.skhole.club创建独立托管区域后,未在主域名skhole.club的托管区域中添加NS记录指向子区域的DNS服务器,导致全球DNS系统无法定位到子域名的解析入口。
解决方案
无需为子域名创建独立托管区域,直接将alb.skhole.club的DNS记录添加至主域名skhole.club的托管区域中即可。

内容的提问来源于stack exchange,提问作者Asuha
相关产品推荐
相关产品推荐

