Terraform中aws_acm_certificate_validation证书验证超时问题求助
AWS ACM证书DNS验证超时故障修复方案
常见根因
- 域名注册商的NS记录未指向当前Terraform创建的Route53托管区域,导致ACM服务无法公网查询到验证CNAME记录
- API Gateway域名资源未等待证书验证完成就提前触发创建,造成部署链路阻塞
- ACM证书区域与API Gateway端点类型要求不匹配,导致验证通过后也无法完成资源关联
- 自定义域名的NS传播时间超出Terraform默认超时阈值
修复步骤
验证解析链路正确性
本地执行命令查询验证CNAME记录是否可公网解析:nslookup -type=CNAME <ACM给出的验证记录FQDN>
如果无法返回正确的记录值,先到域名注册商后台,将域名的NS服务器修改为aws_route53_zone.api资源输出的4条NS地址,等待NS传播生效后再重试部署。修正Terraform配置的依赖关系
给aws_apigatewayv2_domain_name.api资源添加显式依赖,强制等待证书验证完成后再创建域名资源,修改后配置如下:
resource "aws_apigatewayv2_domain_name" "api" { domain_name = var.api_domain depends_on = [aws_acm_certificate_validation.cert_api] domain_name_configuration { certificate_arn = aws_acm_certificate.cert_api.arn endpoint_type = "REGIONAL" security_policy = "TLS_1_2" } }
- 调整证书验证超时阈值
如果域名NS传播速度慢,可以给ACM验证资源增加自定义超时配置,避免默认超时提前终止部署:
resource "aws_acm_certificate_validation" "cert_api" { certificate_arn = aws_acm_certificate.cert_api.arn validation_record_fqdns = aws_route53_record.cert_api_validations.*.fqdn timeouts { create = "1h" } }
- 检查区域匹配规则
- REGIONAL类型的API Gateway端点,要求ACM证书和API Gateway部署在同一AWS区域
- EDGE类型的API Gateway端点,要求ACM证书必须部署在us-east-1区域
不符合区域要求的证书即使验证通过也无法完成域名绑定。
- 处理状态不一致问题
如果登录AWS控制台已经可以看到ACM证书状态为「已签发」,但Terraform仍然卡在验证步骤,可执行terraform refresh刷新资源状态后重新执行terraform apply即可继续后续部署流程。
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

