すべてのプロダクト
Search
ドキュメントセンター

CDN:Terraform を使用した CDN ドメイン名の追加と設定

最終更新日:Aug 22, 2026

Alibaba Cloud CDN は Terraform と統合されています。このチュートリアルでは、Terraform を使用して CDN の高速化ドメイン名を追加し、その高速化ドメイン名に IP アドレスホワイトリストを設定する方法を説明します。

前提条件

  • CDN を使用する前に、 CDN をアクティブ化する必要があります。詳細については、「CDN のアクティブ化」および「」をご参照ください。

  • アクセスキーペアの漏えいリスクを低減するために、最小限の権限を持つ RAM ユーザーを使用してください。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 は、次のいずれかの方法で使用できます。

    • Terraform Explorer で Terraform を使用する:Terraform Explorer は、Terraform をインストールすることなく使用できるオンラインの実行環境です。詳細については、「Terraform Explorer」をご参照ください。この方法は、追加費用なしで迅速なデバッグを行う場合に適しています。

    • Cloud Shell で Terraform を使用する:Terraform は Cloud Shell にプリインストールされており、ID 認証情報も設定済みです。Terraform コマンドを直接実行できます。詳細については、「Terraform を使用したリソースの作成」をご参照ください。この方法は、低コストで迅速なデバッグを行う場合に適しています。

    • オンプレミスのマシンに Terraform をインストールして設定する:この方法は、ネットワーク接続が制限されている環境や、カスタム開発環境に適しています。詳細については、「ローカル PC での Terraform のインストールと設定」をご参照ください。

使用するリソース

説明

この例の一部のリソースには料金が発生します。不要になったリソースは解放または解約してください。

手順1:高速化ドメイン名の追加

  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-ap-southeast-1.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.

手順2:高速化ドメイン名のルールの設定

  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.

結果の確認

terraform 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-ap-southeast-1.aliyuncs.com"
        port     = 80
        priority = 20
        type     = "oss"
        weight   = 15
    }
}

CDN コンソールへのログイン

CDN コンソールにログインし、追加したドメイン名に設定されている 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-ap-southeast-1.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"
  }
}

その他の例については、クイックスタートページにアクセスし、対応するサービスのフォルダー内の例をご参照ください。