创建 CloudFront 分发时出错:NoSuchOrigin。

24

我正在尝试使用Terraform部署Cloudfront分发,并在指定origin_id时遇到错误。

Cloudfront通过Route53查找指向负载均衡器。

resource "aws_cloudfront_distribution" "my-app" {
  origin {
    custom_origin_config {
      http_port              = 443
      https_port             = 443
      origin_protocol_policy = "https-only"
      origin_ssl_protocols   = ["TLSv1.2"]
    }

    domain_name = "${var.domain_name}"
    origin_id   = "Custom-${var.domain_name}"
  }

...

  default_cache_behavior {
    allowed_methods  = ["GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "DELETE"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "${local.origin_id}"

...

其中var.domain_name是route53记录,local.origin_id是唯一的标识符。

执行terraform apply时,我遇到了以下错误:

aws_cloudfront_distribution.my-app: error creating CloudFront Distribution: NoSuchOrigin: One or more of your origins or origin groups do not exist.

文档说明:origin_id(必填) - 源的唯一标识符。,它的确是唯一的。


domain_name是什么?它是S3存储桶吗? - StephenG
你在缓存行为中定义了相同的 originID 吗? - James Dean
@StephenG 不,这是一个Route53记录。 - Thomas Crowley
1个回答

55

该错误与缓存行为有关。 您需要确保target_origin_id与缓存行为中的origin_id相关联。

就像这样:

resource "aws_cloudfront_distribution" "my-app" {
  origin {
    custom_origin_config {
      http_port              = 443
      https_port             = 443
      origin_protocol_policy = "https-only"
      origin_ssl_protocols   = ["TLSv1.2"]
    }

    domain_name = "${var.domain_name}"
    origin_id   = "Custom-${var.domain_name}"
  }

...

  default_cache_behavior {
    allowed_methods  = ["GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "DELETE"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "Custom-${var.domain_name}"

...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接