全部產品
Search
文件中心

CDN:通過Terraform添加並配置CDN網域名稱

更新時間:Jun 16, 2026

阿里雲CDN產品已經接入Terraform,可以通過Terraform實現添加與配置等操作。此教程示範如何通過Terraform添加CDN加速網域名稱,並且為該加速網域名稱配置IP白名單。

說明

本教程所含範例程式碼支援一鍵運行,您可以直接運行代碼。一鍵運行

前提條件

  • 在初次使用CDN之前,您需要先開通CDN服務,請參見開通CDN服務

  • 為了降低資訊安全風險,建議使用最小許可權的RAM使用者完成此教程的操作。請參見建立RAM使用者管理RAM使用者的許可權,完成此教程所需最小許可權的權限原則如下:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cdn:AddCdnDomain",
            "cdn:DescribeCdnDomainDetail",
            "cdn:DescribeDomainCertificateInfo",
            "cdn:ListTagResources",
            "cdn:DeleteCdnDomain",
            "cdn:BatchSetCdnDomainConfig",
            "cdn:DescribeCdnDomainConfigs",
            "cdn:DeleteSpecificConfig"
          ],
          "Resource": "*"
        }
      ]
    }
  • 準備Terraform運行環境,您可以選擇以下任一方式來使用Terraform。

    • Explorer:阿里雲提供了Terraform的線上運行環境,您無需安裝Terraform,登入後即可線上使用和體驗Terraform。適用於零成本、快速、便捷地體驗和調試Terraform的情境。

    • 使用Terraform快速建立資源:阿里雲Cloud Shell中預裝了Terraform的組件,並已配置好身份憑證,您可直接在Cloud Shell中運行Terraform的命令。適用於低成本、快速、便捷地訪問和使用Terraform的情境。

    • 在本地安裝和配置Terraform:適用於網路連接較差或需要自訂開發環境的情境。

  • 擁有已完成歸屬權驗證的待添加網域名稱。添加加速網域名稱前,您需要完成網域名稱歸屬權驗證,具體操作請參見驗證網域名稱歸屬權

使用的資源

說明

本教程樣本包含的部分資源會產生一定費用,請在不需要時及時進行釋放或退訂。

步驟一:添加加速網域名稱

  1. 建立一個工作目錄,並在該工作目錄中建立名為main.tf的設定檔,在main.tf中增加以下代碼:

    重要

    以下範例程式碼中的網域名稱(如 mydcdndomain-xxx.alicloud-provider.cnmycdndomain-xxx.alicloud-provider.cn)僅用於一鍵運行託管環境,普通使用者無法通過這些網域名稱的歸屬權驗證。如果您在本地環境執行此教程,請將 domain_name 參數的值替換為您已擁有並完成歸屬權驗證的網域名稱。

    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    # 添加一個加速網域名稱
    resource "alicloud_cdn_domain_new" "domain" {
      domain_name = "mycdndomain-${random_integer.default.result}.alicloud-provider.cn"
      cdn_type    = "download"
      scope       = "overseas"
      sources {
        content  = "myoss-${random_integer.default.result}.oss-rg-china-mainland.aliyuncs.com"
        type     = "oss"
        priority = "20"
        port     = 80
        weight   = "15"
      }
    }
  2. 執行如下命令,初始化Terraform運行環境。

    terraform init

    返回資訊如下,Terraform初始化成功。

    Initializing the backend...
    Initializing provider plugins...
    ...
    Terraform has been successfully initialized!
  3. 執行如下命令執行計畫,添加加速網域名稱。

    terraform apply

    在執行過程中,根據提示輸入yes並按下Enter鍵,等待命令執行完成,若出現以下資訊,則表示添加加速網域名稱成功。

    說明

    如果提示錯誤“code: 400, Owner verification of the root domain failed.”,表示該網域名稱是首次添加到CDN系統中,需要完成網域名稱歸屬權驗證,請參見驗證網域名稱歸屬權

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

步驟二:為加速網域名稱配置規則

  1. main.tf檔案中增加以下代碼。

    # 為加速網域名稱配置一個訪問IP白名單
    resource "alicloud_cdn_domain_config" "config-ip" {
      domain_name   = alicloud_cdn_domain_new.domain.domain_name
      function_name = "ip_allow_list_set"
      function_args {
        arg_name  = "ip_list"
        arg_value = "192.168.0.1"
      }
    }
  2. 建立執行計畫,並預覽變更。

    terraform plan
  3. 執行如下命令執行計畫,為加速網域名稱配置訪問IP白名單

    terraform apply

    在執行過程中,根據提示輸入yes並按下Enter鍵,等待命令執行完成,若出現以下資訊,則表示配置規則完成。

    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

驗證結果

執行terrafrom show 命令

您可以使用以下命令查詢Terraform已建立的資來源詳細資料:

terraform show
shell@Alicloud:~/cdn$ terraform show
# alicloud_cdn_domain_config.config-ip:
resource "alicloud_cdn_domain_config" "config-ip" {
    config_id     = "394085720977408"
    domain_name   = "xxx"
    function_name = "ip_allow_list_set"
    id            = "xxx:ip_allow_list_set:394085720977408"
    parent_id     = "0"
    status        = "success"
    function_args {
        arg_name  = "ip_list"
        arg_value = "192.168.0.1"
    }
}
# alicloud_cdn_domain_new.domain:
resource "alicloud_cdn_domain_new" "domain" {
    cdn_type          = "download"
    cname             = "xxx.com.w.cdngslb.com"
    domain_name       = "xxx.com"
    id                = "xxx.com"
    resource_group_id = "rg-acfmykd63gtpfpa"
    scope             = "overseas"
    status            = "online"
    certificate_config {
        cert_type                 = "cas"
        server_certificate_status = "off"
    }
    sources {
        content  = "xxx.oss-rg-china-mainland.aliyuncs.com"
        port     = 80
        priority = 20
        type     = "oss"
        weight   = 15
    }
}

登入CDN控制台

登入CDN控制台,查看已添加網域名稱的IP黑/白名單

在目標網域名稱的網域名稱管理頁面,單擊左側導覽列存取控制,選擇IP黑/白名單頁簽,可查看當前IP黑/白名單類型為IP白名單,白名單中已添加IP地址192.168.0.1

清理資源

當您不再需要上述通過Terraform建立或管理的資源時,請運行以下命令以釋放資源。關於terraform destroy的更多資訊,請參見常用命令

terraform destroy

完整樣本

說明

本教程所含範例程式碼支援一鍵運行,您可以直接運行代碼。一鍵運行

範例程式碼

resource "random_integer" "default" {
  min = 10000
  max = 99999
}
# 添加一個加速網域名稱
resource "alicloud_cdn_domain_new" "domain" {
  domain_name = "mycdndomain-${random_integer.default.result}.alicloud-provider.cn"
  cdn_type    = "download"
  scope       = "overseas"
  sources {
    content  = "myoss-${random_integer.default.result}.oss-rg-china-mainland.aliyuncs.com"
    type     = "oss"
    priority = "20"
    port     = 80
    weight   = "15"
  }
}
# 為加速網域名稱配置一個訪問IP白名單
resource "alicloud_cdn_domain_config" "config-ip" {
  domain_name   = alicloud_cdn_domain_new.domain.domain_name
  function_name = "ip_allow_list_set"
  function_args {
    arg_name  = "ip_list"
    arg_value = "192.168.0.1"
  }
}

如果您想體驗更多完整樣本,請前往更多完整樣本中對應產品的檔案夾查看。