跳到主要内容

自定义域名

管理云开发环境的自定义域名绑定及 HTTP 访问路由规则。通过 app.env 访问。

版本提示

自 v5.0.0 起新增此能力。v5.0.0 之前请使用 HTTP 网关(旧)

概念说明

概念说明
自定义域名绑定到云开发 HTTP 网关的自定义域名,支持 HTTPS 证书配置
访问路由在某个域名下配置路径到上游服务(云函数/云托管/静态托管)的映射规则
AccessType域名接入方式:DIRECT(直连)/ CDN(云开发 CDN)/ CUSTOM(自定义 CDN/WAF)
ProtocolHTTPS 协议策略:HTTP_AND_HTTPS / HTTP_TO_HTTPS(强制跳转)/ HTTPS_TO_HTTP
UpstreamResourceType路由上游类型:SCF(云函数)/ CBR(云托管)/ STATIC_STORE(静态托管)/ WEB_SCF(Web 云函数)

describeHttpServiceRoute

1. 接口描述

接口功能:查询环境下的域名与访问路由列表,支持多维度过滤

接口声明:app.env.describeHttpServiceRoute(params): Promise<DescribeHttpServiceRouteRes>

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
FiltersHTTPServiceRouteFilter[]过滤条件,支持 DomainPathDomainTypeUpstreamResourceType
OffsetNumber分页偏移量,默认 0
LimitNumber分页大小,默认 20,最大 1000

3. 返回结果

字段类型说明
DomainsHTTPServiceDomain[]域名路由信息列表
OriginDomainStringHTTP 网关源站域名(用于自定义 CDN/WAF 回源)
TotalCountNumber域名总数
RequestIdString请求唯一标识

HTTPServiceDomain

字段类型说明
DomainString域名
DomainTypeString域名类型
AccessTypeString接入方式:DIRECT / CDN / CUSTOM
CertIdStringSSL 证书 ID
ProtocolString协议类型
CnameString需配置的 CNAME 目标值
IsDefaultBoolean是否是默认域名
EnableBoolean是否已开启
StatusString状态:PROCESSING / FAIL / SUCCESS
DNSStatusStringDNS 解析状态:OK / INVALID
RoutesHTTPServiceRoute[]该域名下的路由列表
CreateTimeString创建时间
UpdateTimeString更新时间

4. 示例代码

const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })

async function test() {
const { Domains, TotalCount } = await app.env.describeHttpServiceRoute({
EnvId: 'your-env-id',
Limit: 20
})
console.log(`${TotalCount} 个域名`)
Domains.forEach(d => console.log(d.Domain, d.Status, d.DNSStatus))
}

test()

bindCustomDomain

1. 接口描述

接口功能:绑定自定义域名到 HTTP 网关,支持配置 HTTPS 证书和接入方式

接口声明:app.env.bindCustomDomain(params): Promise<BindCustomDomainRes>

调用建议

建议先调用 verifyHttpServiceRoute 进行归属权与冲突预检,通过后再执行域名绑定。

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
DomainBindCustomDomainDomainParam域名配置,见下方说明

BindCustomDomainDomainParam

字段必填类型说明
DomainString域名,全局唯一
CertIdStringSSL 证书 ID(腾讯云 SSL 平台)
AccessTypeString接入方式:DIRECT(默认)/ CDN / CUSTOM
ProtocolString协议策略:默认 HTTP_AND_HTTPS
EnableBoolean是否立即开启,默认 true
CustomCnameString自定义 CDN/WAF 的回源 CNAME(AccessType=CUSTOM 时填写)

3. 返回结果

字段类型说明
RequestIdString请求唯一标识

4. 示例代码

async function test() {
await app.env.bindCustomDomain({
EnvId: 'your-env-id',
Domain: {
Domain: 'api.example.com',
CertId: 'your-cert-id',
AccessType: 'DIRECT',
Protocol: 'HTTP_TO_HTTPS'
}
})
console.log('域名绑定成功,请前往 DNS 服务商配置 CNAME 解析')
}

test()

deleteCustomDomain

1. 接口描述

接口功能:删除自定义域名。域名下存在路由绑定时会抛出错误,需先删除路由

接口声明:app.env.deleteCustomDomain(params): Promise<DeleteCustomDomainRes>

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
DomainString要删除的域名

3. 返回结果

字段类型说明
RequestIdString请求唯一标识

verifyHttpServiceRoute

1. 接口描述

接口功能:对待创建/修改的域名路由配置进行只读预检,不会创建或修改任何资源

接口声明:app.env.verifyHttpServiceRoute(params): Promise<VerifyHttpServiceRouteRes>

版本提示

自 v5.8.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
DomainHTTPServiceDomainParam域名及路由配置,见下方说明

HTTPServiceDomainParam

字段必填类型说明
DomainString域名(全局唯一)
AccessTypeString绑定类型:DIRECT / CDN / CUSTOM / EO
CertIdString当前账号下 SSL 平台证书 ID
ProtocolString协议策略:HTTP / HTTPS / HTTP_AND_HTTPS / HTTP_TO_HTTPS / HTTPS_TO_HTTP
CustomCnameString自定义 CNAME,仅 AccessType=CUSTOM 时使用
EnableBoolean域名开启状态,不传默认开启
RoutesHTTPServiceRouteParam[]路由列表,最多 20 条
ExtensionHTTPServiceExtension域名扩展配置

HTTPServiceRouteParam(单条路由)

字段必填类型说明
PathString路由路径,如 /api
UpstreamResourceTypeString上游类型:SCF / CBR / STATIC_STORE / WEB_SCF / LH / STORAGE(创建时必填,修改时可选)
UpstreamResourceNameString上游服务名称(创建时必填,修改时可选;STATIC_STORE / STORAGE 可不填)
PathRewriteHTTPServicePathRewrite路径重写配置
EnableSafeDomainBoolean是否启用安全域名,默认 true
EnableAuthBoolean是否启用身份认证,默认 false
EnablePathTransmissionBoolean是否路径透传,默认 false
QPSPolicyHTTPServiceRouteQPSPolicyQPS 限频策略
ExtensionHTTPServiceExtension路由扩展配置(包含 headers 处理等)
EnableBoolean是否开启路由

HTTPServicePathRewrite

字段必填类型说明
PrefixString路径前缀重写。与 StaticStorePrefix 二选一
StaticStorePrefixString静态托管路径前缀重写。与 Prefix 二选一

HTTPServiceRouteQPSPolicy

字段必填类型说明
QPSTotalNumber全局 QPS 值(每秒请求次数)
QPSPerClientHTTPServiceQPSPerClient客户端限频配置

HTTPServiceQPSPerClient

字段必填类型说明
LimitByString客户端维度:UserID / ClientIP
LimitValueNumber客户端限频值(每秒请求次数)

HTTPServiceExtension

字段必填类型说明
HeadersHandlerHTTPServiceHeadersHandlerheaders 处理配置

HTTPServiceHeadersHandler

字段必填类型说明
RequestHeadersToAddHTTPServiceHeaderToAdd[]要添加的请求头列表
RequestHeadersToRemoveString[]要删除的请求头 key 列表
ResponseHeadersToAddHTTPServiceHeaderToAdd[]要添加的响应头列表
ResponseHeadersToRemoveString[]要删除的响应头 key 列表

HTTPServiceHeaderToAdd

字段必填类型说明
KeyString要添加的头部 key
ValueString要添加的头部值
ActionString添加行为:APPEND_IF_EXISTS_OR_ADD / ADD_IF_ABSENT / OVERWRITE_IF_EXISTS_OR_ADD / OVERWRITE_IF_EXISTS

3. 返回结果

字段类型说明
PassedBoolean所有启用检查项均通过时为 true
OwnershipVerifyHttpServiceRouteCheckItem域名归属权校验结果
CertVerifyHttpServiceRouteCheckItem证书校验结果
QuotaVerifyHttpServiceRouteCheckItem域名/路径配额校验结果
RouteConflictVerifyHttpServiceRouteCheckItem同域名下路由冲突校验结果
DomainConflictVerifyHttpServiceRouteCheckItem域名占用冲突校验结果
InternalAccountVerifyHttpServiceRouteCheckItem内部域名与账号校验结果
BlacklistVerifyHttpServiceRouteCheckItem域名黑名单校验结果
CDNResourceVerifyHttpServiceRouteCheckItemCDN 资源校验结果
EOVerifyHttpServiceRouteCheckItemEdgeOne 预检结果
RequestIdString请求唯一标识

VerifyHttpServiceRouteCheckItem 结构:

字段类型说明
StatusString检查状态:PASS / SKIPPED / FAIL
CodeString失败原因码,仅 FAIL 时返回
MessageString结果详情或跳过原因
OwnershipVerificationObject归属权验证指引(如 DNS 记录/文件校验信息)

4. 示例代码

建议在创建或修改路由前先调用 verifyHttpServiceRoute。若返回 Passed=true,再继续绑定域名与创建路由。

async function test() {
const verifyRes = await app.env.verifyHttpServiceRoute({
EnvId: 'your-env-id',
Domain: {
Domain: 'api.example.com',
CertId: 'your-cert-id'
}
})

if (!verifyRes.Passed) {
console.log('预检未通过,请根据返回结果完成归属权校验或修复冲突后再重试')
console.log(verifyRes.Ownership, verifyRes.RouteConflict, verifyRes.DomainConflict)
return
}

console.log('预检通过,可继续 bindCustomDomain / createHttpServiceRoute')
}

test()

createHttpServiceRoute

1. 接口描述

接口功能:在指定域名下创建访问路由,将路径映射到云函数、云托管或静态托管等上游服务

接口声明:app.env.createHttpServiceRoute(params): Promise<CreateHttpServiceRouteRes>

调用建议

建议先调用 verifyHttpServiceRoute 完成预检,确认 Passed=true 后再创建路由。

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
DomainHTTPServiceDomainParam域名及路由配置,见下方说明

HTTPServiceDomainParam

字段必填类型说明
DomainString域名(全局唯一)
AccessTypeString绑定类型:DIRECT / CDN / CUSTOM / EO
CertIdString当前账号下 SSL 平台证书 ID
ProtocolString协议策略:HTTP / HTTPS / HTTP_AND_HTTPS / HTTP_TO_HTTPS / HTTPS_TO_HTTP
CustomCnameString自定义 CNAME,仅 AccessType=CUSTOM 时使用
EnableBoolean域名开启状态,不传默认开启
RoutesHTTPServiceRouteParam[]路由列表,最多 20 条
ExtensionHTTPServiceExtension域名扩展配置

HTTPServiceRouteParam(单条路由)

字段必填类型说明
PathString路由路径,如 /api
UpstreamResourceTypeString上游类型:SCF / CBR / STATIC_STORE / WEB_SCF / LH / STORAGE(创建时必填,修改时可选)
UpstreamResourceNameString上游服务名称(创建时必填,修改时可选;STATIC_STORE / STORAGE 可不填)
PathRewriteHTTPServicePathRewrite路径重写配置
EnableSafeDomainBoolean是否启用安全域名,默认 true
EnableAuthBoolean是否启用身份认证,默认 false
EnablePathTransmissionBoolean是否路径透传,默认 false
QPSPolicyHTTPServiceRouteQPSPolicyQPS 限频策略
ExtensionHTTPServiceExtension路由扩展配置(包含 headers 处理等)
EnableBoolean是否开启路由

PathRewrite / EnableAuth / EnablePathTransmission / QPSPolicy 四个字段的语义与 CLI 网关配置一致,字段权威定义见 配置文件-网关。Manager SDK 使用帕斯卡命名(如 EnableAuth),与 cloudbaserc.json 的小驼峰命名(enableAuth)一一对应。

3. 返回结果

字段类型说明
RequestIdString请求唯一标识

4. 示例代码

async function test() {
// 在已绑定的域名下创建路由:将 /api 映射到云函数 my-function
await app.env.createHttpServiceRoute({
EnvId: 'your-env-id',
Domain: {
Domain: 'api.example.com',
Routes: [
{
Path: '/api',
UpstreamResourceType: 'SCF',
UpstreamResourceName: 'my-function',
EnableAuth: false,
Enable: true
}
]
}
})
console.log('路由创建成功')
}

test()

modifyHttpServiceRoute

1. 接口描述

接口功能:修改指定域名下的访问路由配置

接口声明:app.env.modifyHttpServiceRoute(params): Promise<ModifyHttpServiceRouteRes>

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

createHttpServiceRoute 相同,参见上方说明。

3. 返回结果

字段类型说明
RequestIdString请求唯一标识

deleteHttpServiceRoute

1. 接口描述

接口功能:删除指定域名下的访问路由。不传 Paths 时删除该域名下的全部路由

接口声明:app.env.deleteHttpServiceRoute(params): Promise<DeleteHttpServiceRouteRes>

版本提示

自 v5.0.0 起支持此接口

2. 输入参数

字段必填类型说明
EnvIdString环境 ID
DomainString域名
PathsString[]要删除的路由路径列表;不传则删除该域名下全部路由

3. 返回结果

字段类型说明
RequestIdString请求唯一标识

4. 示例代码

async function test() {
// 删除 /api 路由
await app.env.deleteHttpServiceRoute({
EnvId: 'your-env-id',
Domain: 'api.example.com',
Paths: ['/api']
})

// 删除域名下全部路由
await app.env.deleteHttpServiceRoute({
EnvId: 'your-env-id',
Domain: 'api.example.com'
})
}

test()