You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform向已有的CloudFront分发添加新源站?

给现有CloudFront分发添加源站的Terraform实现方案

核心前提

Terraform默认只管理自己创建的资源,要修改已有的CloudFront分发,必须先把它导入到Terraform的状态文件中,之后才能通过配置修改添加源站。

步骤1:导入现有CloudFront分发

  1. 先在你的Terraform配置文件里写一个空的CloudFront资源块:
resource "aws_cloudfront_distribution" "my_existing_cf" {
  # 先留空,导入后再补全配置
}
  1. 执行导入命令,把实际的CF分发拉进Terraform状态,替换<你的CF分发ID>:
terraform import aws_cloudfront_distribution.my_existing_cf <你的CF分发ID>
  1. 执行terraform show,把输出里的完整CF配置复制到上面的资源块里,保留所有现有配置项,比如enabled、default_cache_behavior、viewer_certificate这些。

步骤2:添加新源站

在资源块的origin列表里新增一个源站配置,同时按需添加对应的缓存行为:

resource "aws_cloudfront_distribution" "my_existing_cf" {
  # 这里粘贴你从terraform show里复制的所有现有配置

  # 保留原有源站配置
  origin {
    domain_name = "old-origin.example.com"
    origin_id   = "OldOriginID"
    # 原有源站的其他配置,比如custom_origin_config或s3_origin_config
  }

  # 新增的源站
  origin {
    domain_name = "new-origin.example.com"
    origin_id   = "NewUniqueOriginID" # 这个ID必须和所有现有源站ID不重复

    # 根据源站类型选配置,比如自定义源(ECS/EC2)用custom_origin_config,S3用s3_origin_config
    custom_origin_config {
      http_port              = 80
      https_port             = 443
      origin_protocol_policy = "https-only"
      origin_ssl_protocols   = ["TLSv1.2"]
    }
  }

  # 可选:给新源站加专属缓存行为(如果不需要就跳过,走默认缓存规则)
  cache_behavior {
    path_pattern     = "/new-content/*" # 匹配要路由到新源站的路径
    target_origin_id = "NewUniqueOriginID" # 和上面新源站的ID对应

    viewer_protocol_policy = "redirect-to-https"
    allowed_methods        = ["GET", "HEAD"]
    cached_methods         = ["GET", "HEAD"]
    # 其他缓存配置按需添加,比如default_ttl等
  }

  # 保留原有的default_cache_behavior配置
  default_cache_behavior {
    # 原有内容不动
  }

  # 其他原有配置,比如price_class、restrictions等,全部保留
}

步骤3:验证并应用变更

  1. 跑terraform plan,仔细检查变更内容——应该只显示添加了新的origin和cache_behavior(如果加了的话),没有删除或修改现有资源的操作。
  2. 确认没问题后执行terraform apply,完成源站添加。

注意点

  • 导入后Terraform会完全接管这个CF分发,以后别再手动在AWS控制台改它的配置,否则会导致Terraform状态和实际资源不一致。
  • origin_id必须全局唯一,不能和任何现有源站的ID重复。
  • 如果新源站需要特定的路由规则,一定要配置对应的cache_behavior,不然所有请求都会走默认缓存行为的源站。

内容的提问来源于stack exchange,提问作者user184008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:23:10