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

CDN:Terraformを使用してドメイン名を追加および設定する

最終更新日:Dec 06, 2024

Alibaba Cloud CDN はTerraformと統合されています。 Terraformを使用して、高速化するドメイン名を追加および設定できます。 このトピックでは、Terraformを使用してCDN にドメイン名を追加し、ドメイン名を設定する方法について説明します。

始める前に

  • CDN を使用する前に、CDN を有効化してください。 詳細については、「CDNの有効化」「」をご参照ください。

  • このトピックの操作を実行するために最低限必要な権限を持つRAMユーザーを使用します。 これにより、Alibaba CloudアカウントのAccessKeyペアが漏洩するリスクが最小限に抑えられます。 必要最小限の権限を含むポリシーを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を使用する: Alibaba Cloudは、Terraformのオンラインランタイム環境であるTerraform Explorerを提供します。 Terraform Explorerにログインした後、Terraformをインストールする必要なくTerraformを使用できます。 詳細については、「Terraform ExplorerでのTerraformの使用」をご参照ください。 この方法は、Terraformを高速かつ便利な方法で追加費用なしで使用およびデバッグするシナリオに適しています。

    • Cloud ShellでTerraformを使用する: TerraformはCloud Shellにプリインストールされ、ID認証情報が設定されています。 Cloud ShellでTerraformコマンドを直接実行できます。 詳細については、「Cloud ShellでのTerraformの使用」をご参照ください。 この方法は、Terraformを高速で便利な方法で低コストで使用およびデバッグするシナリオに適しています。

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

使用されたリソース

説明

この例では、特定のリソースに対して料金が生成されます。 リソースが不要になったときにリソースを解放または退会します。

ステップ1: CDNにドメイン名を追加する

  1. 作業ディレクトリとmain.tfという名前のファイルをディレクトリに作成します。 次に、次の内容をmain.tfファイルにコピーします。

    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # Add a domain name.
    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、ルートドメインの所有者検証に失敗しました」が表示された場合、ドメイン名が初めて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ファイルに追加します。

    # Configure an IP address whitelist for the domain name.
    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

image

CDNコンソールにログインする

CDNコンソールにログインし、追加されたドメイン名に設定されたIPアドレスブラックリストとホワイトリストを表示します。

image

リソースのクリア

Terraformを使用して作成または管理された上記のリソースが不要になった場合は、次のコマンドを実行してリソースを解放します。 terraform destroyコマンドの詳細については、「一般的なコマンド」をご参照ください。

terraform destroy

サンプルコード

resource "random_integer" "default" {
  min = 10000
  max = 99999
}

# Add a domain name.
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"
  }
}

# Configure an IP address whitelist for the domain name.
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"
  }
}

さらに多くの例を体験したい場合は、[クイックスタート] ページに移動し、対応するサービスのフォルダーにある例を表示します。