使用 Terraform 配置以 ec2 作为源的资源“aws_cloud_distribution”

Kei*_*lle 5 amazon-ec2 amazon-cloudfront terraform

我正在使用 Terraform 设置“aws_cloud_distribution”并尝试将 ec2 设置为我的来源。

在我的模块中我有:

origin {
    domain_name = var.domain_name
    origin_id = var.origin_id
  }
Run Code Online (Sandbox Code Playgroud)

在主文件中,我调用此模块并使用 ec2 公共 dns 的输出。

module "cloudfront" {
  source = "./modules/cloudfront"

  domain_name = module.ec2.ec2_public_dns

  origin_id = "myid"

  target_origin_id = "myid"
}
Run Code Online (Sandbox Code Playgroud)

当我执行计划时,我没有任何问题。但是,当我运行 apply 并开始构建过程时,出现以下错误:

创建 CloudFront 分配时出错:InvalidArgument:参数 Origin DomainName 未引用有效的 S3 存储桶。状态码:400

我使用 terraform 0.13.6 是出于一些公司对公司其他基础设施的限制。这是 Terraform 版本问题还是我在配置步骤中遗漏了某些内容?

Kei*_*lle 9

custom_origin_config因此,我通过在 origin 参数中添加参数来解决这个问题。解决方案如下所示:

origin {
    domain_name = var.domain_name
    origin_id = var.origin_id
    custom_origin_config {
      http_port = 80
      https_port = 443
      origin_protocol_policy = "match-viewer"
      origin_ssl_protocols = ["TLSv1"]
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果您未定义 custom_origin_config 参数,Terraform 默认为 S3 原点。Terraform 的 AWS 插件正在搜索 s3 存储桶,而不是要解析的 AWS FQDN。