创建加速域名
功能介绍
将域名添加到CDN,并为域名配置源站。域名创建完成并配置解析后,客户端通过该域名访问源站资源时,CDN将源站资源缓存至节点,用户下次访问时,即可从最近的边缘节点获取资源,提升用户访问速度。
-
创建加速域名前,需要先开通CDN服务。
-
如果加速域名的服务范围包含中国大陆,加速域名需要已完成备案。
-
单租户调用频率:20次/min。
调用方法
请参见如何调用API。
URI
POST /v1.0/cdn/domains
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
参数解释: 用户鉴权Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值) 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
domain |
是 |
DomainBody object |
参数解释: 创建域名请求体,包含创建域名所需参数 约束限制: 不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
domain_name |
是 |
String |
参数解释: 加速域名
说明:
添加泛域名后,该泛域名所有次级域名默认支持CDN加速
约束限制: 加速域名不允许重复添加 取值范围:
默认取值: 不涉及 |
business_type |
是 |
String |
参数解释: 域名业务类型 约束限制: 不涉及 取值范围:
默认取值: 不涉及 |
sources |
是 |
Array of SourcesRequestBody objects |
参数解释: 源站配置 约束限制: 不涉及 |
service_area |
否 |
String |
参数解释: 域名服务范围 约束限制: 服务范围为中国大陆或全球时,加速域名需要到工信部备案 取值范围:
默认取值: mainland_china: 中国大陆 |
enterprise_project_id |
否 |
String |
参数解释: 企业项目id。您可以通过调用企业项目管理服务(EPS)的查询企业项目列表接口(ListEnterpriseProject)查询企业项目id 约束限制: 当用户开启企业项目功能时,该参数生效,表示查询资源所属项目,"all"表示所有项目 取值范围: 不涉及 默认取值: 不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
domain_id |
否 |
String |
参数解释: 加速域名ID,系统自动生成,创建域名时无需传入此参数 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
ip_or_domain |
是 |
String |
参数解释: 源站IP或者域名 约束限制: 不能配置内网IP 取值范围: 不涉及 默认取值: 不涉及 |
origin_type |
是 |
String |
参数解释: 源站类型 约束限制: 不涉及 取值范围:
默认取值: 不涉及 |
obs_bucket_type |
否 |
String |
参数解释: OBS回源鉴权开关,适用于OBS桶源站场景,如果桶需要带鉴权访问,则需要打开OBS回源鉴权开关。如此,CDN节点回源时会携带鉴权信息,鉴权信息与OBS桶不匹配时,回源失败,避免非授权的请求盗刷流量 约束限制: 源站类型是“OBS桶域名”时需要传该参数 取值范围:
默认取值: public: 关闭回源鉴权开关 |
active_standby |
是 |
Integer |
参数解释: 设置主/备源站,主源站优先级高于备源站,CDN节点回源时优先回到主源站
说明:
约束限制: 不涉及 取值范围:
默认取值: 不涉及 |
enable_obs_web_hosting |
否 |
Integer |
参数解释: 是否开启静态网站托管功能,如果您的源站是OBS桶域名且配置了静态网站托管,开启该功能后,客户端即可访问静态网站托管页面
说明:
开启该功能后将自动给桶源站地址加上website字段,如果地址中已有website字段,该参数不生效
约束限制: 源站类型为obs_bucket时传递 取值范围:
默认取值: 0: 关闭 |
http_port |
否 |
Integer |
参数解释: HTTP端口 约束限制: 不涉及 取值范围: 1-65535 默认取值: 80 |
https_port |
否 |
Integer |
参数解释: HTTPS端口 约束限制: 不涉及 取值范围: 1-65535 默认取值: 443 |
响应参数
状态码:200
参数 |
参数类型 |
描述 |
---|---|---|
domain |
创建域名返回信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
加速域名ID。 |
domain_name |
String |
加速域名。 |
business_type |
String |
域名业务类型:
|
service_area |
String |
域名服务范围,若为mainland_china,则表示服务范围为中国大陆;若为outside_mainland_china,则表示服务范围为中国大陆境外;若为global,则表示服务范围为全球。 |
user_domain_id |
String |
域名所属用户的domain_id。 |
domain_status |
String |
加速域名状态。取值意义:
|
cname |
String |
加速域名对应的CNAME。 |
sources |
Array of Sources objects |
源站信息。 |
domain_origin_host |
DomainOriginHost object |
域名回源HOST配置。 |
https_status |
Integer |
是否开启HTTPS加速。 |
create_time |
Long |
域名创建时间,相对于UTC 1970-01-01到当前时间相隔的毫秒数。 |
modify_time |
Long |
域名修改时间,相对于UTC 1970-01-01到当前时间相隔的毫秒数。 |
disabled |
Integer |
封禁状态(0代表未禁用;1代表禁用)。 |
locked |
Integer |
锁定状态(0代表未锁定;1代表锁定)。 |
range_status |
String |
range状态,off:关闭,on:开启。 |
follow_status |
String |
follow302状态,off:关闭,on:开启。 |
origin_status |
String |
是否暂停源站回源(off代表关闭 on代表开启)。 |
auto_refresh_preheat |
Integer |
自动刷新预热(0代表关闭;1代表打开)。 |
参数 |
参数类型 |
描述 |
---|---|---|
domain_id |
String |
加速域名id。 |
ip_or_domain |
String |
源站IP(非内网IP)或者域名。 |
origin_type |
String |
源站类型取值:ipaddr:源站IP、 domain:源站域名、obs_bucket:OBS桶域名。 |
obs_bucket_type |
String |
OBS桶类型。
|
active_standby |
Integer |
主备状态,1代表主源站,0代表备源站。 |
enable_obs_web_hosting |
Integer |
是否开启OBS静态网站托管(0表示关闭,1表示则为开启),源站类型为obs_bucket时传递。 |
请求示例
POST https://cdn.myhuaweicloud.com/v1.0/cdn/domains { "domain" : { "domain_name" : "example1.example2.example3.com", "business_type" : "web", "sources" : [ { "ip_or_domain" : "0.0.0.0", "origin_type" : "ipaddr", "active_standby" : 1 } ], "service_area" : "mainland_china", "enterprise_project_id" : "0" } }
响应示例
状态码:200
OK
{ "domain" : { "sources" : [ { "domain_id" : "ff80*************************07b", "ip_or_domain" : "0.0.0.0", "origin_type" : "ipaddr", "active_standby" : 1 } ], "id" : "ff80*************************07b", "user_domain_id" : "38***********************5024dcb", "domain_name" : "example11.example2.example3.com", "business_type" : "web", "service_area" : "mainland_china", "cname" : "example1.example2.example3.com.c.example4.com", "domain_status" : "configuring", "https_status" : 0, "create_time" : 1513152634467, "modify_time" : 1513152634467, "domain_origin_host" : { "domain_id" : "ff80*************************07b", "origin_host_type" : "customize", "customize_domain" : "example5.example6.com" }, "disabled" : 0, "locked" : 0, "range_status" : "off", "follow_status" : "off", "origin_status" : "on", "auto_refresh_preheat" : 0 } }
SDK代码示例
SDK代码示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cdn.v2.region.CdnRegion; import com.huaweicloud.sdk.cdn.v2.*; import com.huaweicloud.sdk.cdn.v2.model.*; import java.util.List; import java.util.ArrayList; public class CreateDomainSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new GlobalCredentials() .withAk(ak) .withSk(sk); CdnClient client = CdnClient.newBuilder() .withCredential(auth) .withRegion(CdnRegion.valueOf("<YOUR REGION>")) .build(); CreateDomainRequest request = new CreateDomainRequest(); CreateDomainRequestBody body = new CreateDomainRequestBody(); List<SourcesRequestBody> listDomainSources = new ArrayList<>(); listDomainSources.add( new SourcesRequestBody() .withIpOrDomain("0.0.0.0") .withOriginType(SourcesRequestBody.OriginTypeEnum.fromValue("ipaddr")) .withActiveStandby(1) ); DomainBody domainbody = new DomainBody(); domainbody.withDomainName("example1.example2.example3.com") .withBusinessType(DomainBody.BusinessTypeEnum.fromValue("web")) .withSources(listDomainSources) .withServiceArea(DomainBody.ServiceAreaEnum.fromValue("mainland_china")) .withEnterpriseProjectId("0"); body.withDomain(domainbody); request.withBody(body); try { CreateDomainResponse response = client.createDomain(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcdn.v2.region.cdn_region import CdnRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcdn.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] credentials = GlobalCredentials(ak, sk) client = CdnClient.new_builder() \ .with_credentials(credentials) \ .with_region(CdnRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateDomainRequest() listSourcesDomain = [ SourcesRequestBody( ip_or_domain="0.0.0.0", origin_type="ipaddr", active_standby=1 ) ] domainbody = DomainBody( domain_name="example1.example2.example3.com", business_type="web", sources=listSourcesDomain, service_area="mainland_china", enterprise_project_id="0" ) request.body = CreateDomainRequestBody( domain=domainbody ) response = client.create_domain(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global" cdn "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := global.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := cdn.NewCdnClient( cdn.CdnClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateDomainRequest{} var listSourcesDomain = []model.SourcesRequestBody{ { IpOrDomain: "0.0.0.0", OriginType: model.GetSourcesRequestBodyOriginTypeEnum().IPADDR, ActiveStandby: int32(1), }, } enterpriseProjectIdDomain:= "0" domainbody := &model.DomainBody{ DomainName: "example1.example2.example3.com", BusinessType: model.GetDomainBodyBusinessTypeEnum().WEB, Sources: listSourcesDomain, ServiceArea: model.GetDomainBodyServiceAreaEnum().MAINLAND_CHINA, EnterpriseProjectId: &enterpriseProjectIdDomain, } request.Body = &model.CreateDomainRequestBody{ Domain: domainbody, } response, err := client.CreateDomain(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
OK |
错误码
请参见错误码。