Amazon web services 地形可以';t创建一个CloudFront';s具有静态S3网站终结点的源

Amazon web services 地形可以';t创建一个CloudFront';s具有静态S3网站终结点的源,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我有一个使用两个模块的计划:bucket网站和cloudfront网站 除了bucket模块中的其他内容(策略等),还有以下资源用于创建bucket并将其用作网站: resource "aws_s3_bucket" "bucket-website" { bucket = "${var.bucket_name}" region = "${var.region}" website { index_document = "index.html" } tags = "${

我有一个使用两个模块的计划:
bucket网站
cloudfront网站

除了bucket模块中的其他内容(策略等),还有以下资源用于创建bucket并将其用作网站:

resource "aws_s3_bucket" "bucket-website" {
  bucket = "${var.bucket_name}"
  region = "${var.region}"

  website {
    index_document = "index.html"
  }

  tags = "${local.common_tags}"
}
该模块还具有以下输出:

output "website_endpoint" {
  value = "${aws_s3_bucket.bucket-website.website_endpoint}"
}
cloudfront网站
模块有一个包含所有cloudfront属性(IP、缓存内容等)的资源,但相关部分是:

resource "aws_cloudfront_distribution" "distribution" {
.....
  origin {
    domain_name = "${var.domain_name}"
    origin_id   = "${var.domain_name}"
  }
.....
}
对计划中cloudfront模块的调用传递以下参数:

domain_name = "${module.bucket-website.website_endpoint}"
我可以确认该值是正确的,因为在
terraform apply
is的日志中可以看到:

  origin.123456.domain_name: "" => "foo.s3-website-eu-west-1.amazonaws.com"
  origin.123456.origin_id:   "" => "foo.s3-website-eu-west-1.amazonaws.com"
如果我只使用AWS控制台进行此设置,也就是说,获取bucket的静态web端点(不同于标准bucket端点),并将其用作Cloudfront的原点,我将使用该端点

然而,出于某种原因,Terraform正在抱怨域名:

 * aws_cloudfront_distribution.distribution: error creating CloudFront Distribution: InvalidArgument: The parameter Origin DomainName does not refer to a valid S3 bucket.

我已经没有主意了。一切看起来都很好。端点是正确的。我检查了其他示例,它们也使用了
${aws\u s3\u bucket..website\u endpoint}
,所以我真的不明白哪里出了问题

刚刚找到了解决办法。当通过CloudFront为S3网站提供服务时,必须将以下代码添加到
origin
部分,即使其他地方没有指定这样做

    custom_origin_config {
      http_port              = "80"
      https_port             = "443"
      origin_protocol_policy = "http-only"
      origin_ssl_protocols   = ["TLSv1", "TLSv1.1", "TLSv1.2"]
    }

如何解决创建源站访问标识的问题,以便只有CloudFront发行版可以访问您的S3存储桶?