Terraform中无法访问ACM证书的domain_validation_options属性
问题解决:Terraform读取ACM证书时无法访问domain_validation_options
问题根源
你用data "aws_acm_certificate"读取已有证书时,这个数据源默认不会导出domain_validation_options属性,必须显式开启对应配置项才能获取到这些验证相关字段。
修复步骤
在你的ACM证书数据源配置里,添加include_domain_validation_options = true即可:
data "aws_acm_certificate" "my_app" { domain = "*.foobar.com" statuses = ["ISSUED"] # 开启后才能获取域名验证选项数据 include_domain_validation_options = true } resource "aws_route53_record" "cert_validation" { allow_overwrite = true name = tolist(data.aws_acm_certificate.my_app.domain_validation_options)[0].resource_record_name records = [tolist(data.aws_acm_certificate.my_app.domain_validation_options)[0].resource_record_value] type = tolist(data.aws_acm_certificate.my_app.domain_validation_options)[0].resource_record_type zone_id = aws_route53_zone.public.id ttl = 60 }
补充说明
关于data和resource的区别:
resource块用来创建、修改或销毁AWS资源,由Terraform完全管理资源生命周期。data块仅读取已存在的资源状态,不会对资源本身做任何修改,你这里用它读取已有ACM证书的思路是对的,只是漏了数据源的必要配置。
另外注意:你指定的证书状态是ISSUED,说明该证书已经完成域名验证并签发,再创建验证记录其实没有实际作用——除非你要重新验证或添加新域名到证书中。如果只是要将已签发证书关联到其他资源(比如CloudFront、ALB),直接使用证书ARN即可,无需额外创建验证记录。
内容的提问来源于stack exchange,提问作者BWStearns
相关产品推荐
相关产品推荐

