使用Terraform配置源地址池

更新时间:
复制为 MD 格式

使用Terraform可以快速完成源地址池配置,实现多源站管理和负载均衡。

安装Terraform并配置权限

在本地安装和配置Terraform

您可以参考安装和配置Terraform,在本地使用Terraform。

  • 由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey

  • 创建环境变量,用于存放身份认证信息。

    AccessKey管理页面上创建和查看您的AccessKey。

    若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。

使用在线服务(免安装和权限配置)

如果您不想安装Terraform,可以直接使用在线服务Cloud Shell

阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见使用Terraform快速创建资源

重要

通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制

涉及的资源

配置源地址池

  1. 创建一个名为 main.tf 的配置文件,然后将以下代码复制到配置文件中,用于配置包含阿里云OSSAWS S3两个源站的源地址池。

    # 1. 查询企业版 ESA 实例
    data "alicloud_esa_sites" "default" {
      plan_subscribe_type = "enterpriseplan"  # 筛选企业版实例
    }
    
    # 2. 生成随机数用于域名唯一性
    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # 3. 创建站点
    resource "alicloud_esa_site" "default" {
      site_name   = "gositecdn-${random_integer.default.result}.cn"
      instance_id = data.alicloud_esa_sites.default.sites.0.instance_id
      coverage    = "overseas"  # 海外加速
      access_type = "NS"         # NS 接入方式
    }
    
    # 4. 创建包含多个源站的源地址池
    resource "alicloud_esa_origin_pool" "default" {
      site_id          = alicloud_esa_site.default.id
      origin_pool_name = "exampleoriginpool"
      enabled          = "true"
    
      # 源站1:阿里云 OSS
      origins {
        type    = "OSS"                                      # 源站类型:阿里云对象存储
        address = "example.oss-cn-beijing.aliyuncs.com"  # OSS Bucket 域名,请替换
        header  = "{\"Host\":[\"example.oss-cn-beijing.aliyuncs.com\"]}"  # 回源Host头
        enabled = "true"
        weight  = 50  # 流量权重50%
        name    = "origin1"
    
        # OSS 私有访问鉴权配置
        auth_conf {
          auth_type  = "private_cross_account"  # 私有跨账号访问
          access_key = "{{ACCESS_KEY}}"    # 阿里云AK(请替换为实际值)
          secret_key = "{{ACCESS_SECRET_KEY}}" # 阿里云SK(请替换为实际值)
        }
      }
    
      # 源站2:AWS S3
      origins {
        type    = "S3"               # 源站类型:AWS S3对象存储
        address = "example.s3.com"  # S3 Bucket 域名,请替换
        header  = "{\"Host\": [\"example1.com\"]}"  # 回源Host头
        enabled = "true"
        weight  = 50  # 流量权重50%
        name    = "origin2"
    
        # S3 私有访问鉴权配置
        auth_conf {
          auth_type  = "private"              # AWS S3 私有访问
          version    = "v2"                  # AWS 签名版本 2
          region     = "us-east-1"           # S3 Bucket 所在AWS区域
          access_key = "{{S3_ACCESS_KEY}}"  # AWS AK(请替换为实际值)
          secret_key = "{{S3_ACCESS_SECRET_KEY}}"  # AWS SK(请替换为实际值)
        }
      }
    }
    说明

    请根据实际情况修改代码中的占位符:将OSSS3的 address 替换为实际Bucket域名,将 access_key 和 secret_key 替换为实际访问密钥。关键参数说明请参见本文末尾的相关参考章节。

  2. 进入配置文件所在目录,执行如下命令,初始化Terraform环境。

    terraform init
  3. 执行如下命令,验证Terraform语法与配置。

    terraform validate
  4. 执行如下命令,预览执行结果。

    terraform plan
  5. 执行如下命令,执行Terraform脚本。

    terraform apply
  6. 依据提示输入yes确认执行即可。

验证结果

执行terraform show命令

在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令核对资源状态。

terraform show

登录控制台查看

  1. ESA控制台选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择流量 > 源地址池

  3. 在源地址池页面可以看到新创建的源地址池,包括源地址池名称、包含的源站列表、各源站的类型、地址、权重和鉴权配置等信息。

相关参考

本文代码示例中关键参数的说明如下:

参数名称

示例值

说明

plan_subscribe_type

"enterpriseplan"

筛选企业版ESA实例,用于获取可用的实例ID。

site_name

"gositecdn-12345.cn"

站点域名。示例中使用随机数生成唯一域名,实际使用时替换为您的域名。

coverage

"overseas"

加速节点覆盖范围。取值:overseas(海外)、domestic(中国内地)、global(全球)。

access_type

"NS"

接入方式。NS 表示修改DNS服务器方式接入,需将域名的NS记录修改为ESA提供的地址。

origin_pool_name

"exampleoriginpool"

源地址池名称,用于标识源站组。

enabled

"true"

是否启用源地址池。true 表示启用,false 表示禁用。

origins.type

"OSS""S3"

源站类型。取值:ip_domain(域名或IP)、OSS(阿里云对象存储)、S3(AWS S3对象存储)。

origins.address

"example.oss-cn-beijing.aliyuncs.com"

源站地址。根据源站类型填写域名、IP地址或对象存储域名。

origins.header

"{\"Host\":[\"example.com\"]}"

回源时携带的HTTP头信息。通常需要设置 Host 头为源站域名。

origins.weight

50

流量权重。取值范围:0~100,多个源站的权重总和应为100。

origins.name

"origin1"

源站标识名称,便于管理和识别。

auth_conf.auth_type

"private_cross_account"

鉴权模式。OSS支持:private(私有访问)、private_cross_account(跨账号私有访问);S3支持:private

auth_conf.access_key

"<YOUR-ACCESS-KEY-ID>"

访问密钥ID。阿里云OSS使用阿里云AK,AWS S3使用AWS AK。请替换为实际值并妥善保管。

auth_conf.secret_key

"<YOUR-ACCESS-SECRET-KEY>"

访问密钥。阿里云OSS使用阿里云SK,AWS S3使用AWS SK。请替换为实际值并妥善保管。

auth_conf.version

"v2"

AWS签名版本。仅S3源站需要,支持 v2 和 v4

auth_conf.region

"us-east-1"

AWS区域代码。仅S3源站需要,如 us-east-1ap-southeast-1 等。

不同套餐的支持情况

功能项

免费版

基础版

标准版

高级版

企业版

源地址池个数

2

5

10

15

20

源地址池中服务器数量上限

2

5

10

15

20