配置Route53别名遇website_domain属性弃用警告的解决方案咨询
问题:S3静态网站Route53别名配置中
website_domain弃用警告处理 问题详情
在使用Terraform配置Route53别名指向S3托管的静态网站时,出现website_domain属性的弃用警告。当前Route53配置如下:
resource "aws_route53_zone" "primary" { name = var.static_web_bucket } resource "aws_route53_record" "www" { zone_id = aws_route53_zone.primary.zone_id name = var.static_web_bucket # 设置DNS A记录 type = "A" alias { # 网站端点的导出属性域名 name = aws_s3_bucket.cloud_cv.website_domain # 该桶所在区域的Route53托管区ID导出属性 zone_id = aws_s3_bucket.cloud_cv.hosted_zone_id evaluate_target_health = false } }
收到的弃用警告:
│ Warning: Deprecated attribute │ │ on route53.tf line 13, in resource "aws_route53_record" "www": │ 13: name = aws_s3_bucket.cloud_cv.website_domain │ │ The attribute "website_domain" is deprecated. Refer to the provider │ documentation for details. │ │ (and one more similar warning elsewhere)
查看aws_s3_bucket资源文档未发现该属性标注弃用,需确认是否应改用bucket_domain_name,需求是将firstname-lastname-cloud-cv.com别名指向S3网站,使用的Terraform及Provider版本:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~>4.0" } } required_version = ">= 1.1.0" }
解决方案
不应使用bucket_domain_name,正确的替代属性是website_endpoint。
在AWS Provider 4.x版本中,aws_s3_bucket的website_domain已被弃用,官方推荐使用website_endpoint属性来获取S3静态网站的端点域名。bucket_domain_name是常规存储桶的访问域名,并非静态网站托管的专属端点,不符合你的需求。
修改后的Route53记录配置如下:
resource "aws_route53_record" "www" { zone_id = aws_route53_zone.primary.zone_id name = var.static_web_bucket type = "A" alias { name = aws_s3_bucket.cloud_cv.website_endpoint zone_id = aws_s3_bucket.cloud_cv.hosted_zone_id evaluate_target_health = false } }
注意事项
确保你的S3桶已正确配置静态网站托管(即启用了website_configuration块),否则website_endpoint属性不会被Terraform导出。示例S3桶静态网站配置片段:
resource "aws_s3_bucket" "cloud_cv" { bucket = var.static_web_bucket website_configuration { index_document { suffix = "index.html" } error_document { key = "error.html" } } }
内容的提问来源于stack exchange,提问作者ZimCanIT
相关产品推荐
相关产品推荐

