通过Terraform配置域名接入规则

您可以通过Terraform配置域名接入规则。本文以新增域名接入规则为例进行介绍。

说明

当前示例代码支持一键运行,您可以直接运行代码。一键运行

前提条件

  • 已购买DDoS高防实例。具体操作,请参见通过Terraform购买并管理DDoS高防实例

  • 由于阿里云账号(主账号)具有资源的所有权限,一旦发生泄露将面临重大风险。建议您使用RAM用户,并为该RAM用户创建AccessKey,具体操作方式请参见创建RAM用户创建AccessKey

  • 为运行Terraform命令的RAM用户绑定以下最小权限策略,以获取管理本示例所涉及资源的权限。更多信息,请参见RAM用户授权

    此权限策略允许用户在特定DDoS高防实例中添加域名配置,并查看域名配置。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ddoscoo:DescribeDomain",
                    "ddoscoo:DescribeDomains",
                    "ddoscoo:AddDomain"
                ],
                "Resource": "acs:ddoscoo:<region>:<account-id>:domain/*"
            }
        ]
    }

准备Terraform运行环境,您可以选择以下任一方式来使用Terraform。

  • Terraform Explorer中使用Terraform:阿里云提供了Terraform的在线运行环境,您无需安装Terraform,登录后即可在线使用和体验Terraform。适用于零成本、快速、便捷地体验和调试Terraform的场景。

  • Cloud Shell:阿里云Cloud Shell中预装了Terraform的组件,并已配置好身份凭证,您可直接在Cloud Shell中运行Terraform的命令。适用于低成本、快速、便捷地访问和使用Terraform的场景。

  • 在本地安装和配置Terraform:适用于网络连接较差或需要自定义开发环境的场景。

使用的资源

操作步骤

  1. 创建一个工作目录,并且在工作目录中创建以下名为main.tf的配置文件。

    main.tf:Terraform主文件,定义了将要部署的资源。以在实例中添加域名配置为例。

    重要

    请谨慎管理实例的生命周期,避免不必要的费用。

    provider "alicloud" {
      region = "cn-hangzhou"
    }
    
    variable "name" {
      default = "tf-example"
    }
    variable "domain" {
      default = "tf-example.alibaba.com"# 替换为您备案通过的域名
    }
    
    resource "alicloud_ddoscoo_instance" "default" {
      name              = var.name
      bandwidth         = "30"
      base_bandwidth    = "30"
      service_bandwidth = "100"
      port_count        = "50"
      domain_count      = "50"
      period            = "1"
      product_type      = "ddoscoo"
    }
    
    resource "alicloud_ddoscoo_domain_resource" "default" {
      domain       = var.domain
      rs_type      = 0
      instance_ids = [alicloud_ddoscoo_instance.default.id]
      real_servers = ["177.167.XX.XX"]# 替换为您源站服务器地址信息。
      https_ext    = "{\"Http2\":1,\"Http2https\":0,\"Https2http\":0}"
      proxy_types {
        proxy_ports = [443]
        proxy_type  = "https"
      }
    }
  2. 执行terraform init命令初始化Terraform运行环境。

    预期输出:image

  3. 执行terraform apply命令。在执行过程中,根据提示输入yes并按下Enter键,等待命令执行完成,若出现以下信息,则表示授权完成。

    预期结果:image

  4. 操作验证

执行terraform show命令

您可以使用以下命令查询Terraform已创建的资源详细信息:

terraform show

image

DDoS高防(中国内地)控制台

登录DDoS高防控制台,查看域名接入。

image

清理资源

当您不再需要上述通过Terraform创建或管理的资源时,请运行以下命令以释放资源。关于terraform destroy的更多信息,请参见Terraform常用命令

terraform destroy

完整代码示例

说明

当前示例代码支持一键运行,您可以直接运行代码。一键运行

provider "alicloud" {
  region = "cn-hangzhou"
}

variable "name" {
  default = "tf-example"
}
variable "domain" {
  default = "tf-example.alibaba.com"# 替换为您备案通过的域名
}

resource "alicloud_ddoscoo_instance" "default" {
  name              = var.name
  bandwidth         = "30"
  base_bandwidth    = "30"
  service_bandwidth = "100"
  port_count        = "50"
  domain_count      = "50"
  period            = "1"
  product_type      = "ddoscoo"
}

resource "alicloud_ddoscoo_domain_resource" "default" {
  domain       = var.domain
  rs_type      = 0
  instance_ids = [alicloud_ddoscoo_instance.default.id]
  real_servers = ["177.167.XX.XX"]# 替换为您源站服务器地址信息。
  https_ext    = "{\"Http2\":1,\"Http2https\":0,\"Https2http\":0}"
  proxy_types {
    proxy_ports = [443]
    proxy_type  = "https"
  }
}

相关文档