Creating a Domain Name
Function
This API is used to add a domain name to CDN and configure an origin server for it. After the domain name is created and resolution is configured, CDN caches origin content to edge points of presence (PoPs) when users use the domain name to access origin content for the first time. When users access origin content next time, CDN serves content from the nearest edge PoP, speeding up user access.
-
Enable the CDN service before creating an acceleration domain name.
-
If the service area of the domain name includes Chinese mainland, it must be licensed by the Ministry of Industry and Information Technology (MIIT).
-
A single tenant can call this API 20 times per minute.
Calling Method
For details, see Calling APIs.
URI
POST /v1.0/cdn/domains
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Definition User token, which can be obtained by calling the IAM API (value of X-Subject-Token in the response header). Constraints N/A Range N/A Default Value N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
domain |
Yes |
DomainBody object |
Definition Request body for creating a domain name, including required parameters. Constraints N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
domain_name |
Yes |
String |
Definition Acceleration domain name.
NOTE:
If a wildcard domain name is added, all its secondary domain names support CDN acceleration by default.
Constraints An acceleration domain name must be unique. Range
Default Value N/A |
business_type |
Yes |
String |
Definition Service type of the domain name. Constraints N/A Range
Default Value N/A |
sources |
Yes |
Array of SourcesRequestBody objects |
Definition Origin server settings. Constraints N/A |
service_area |
No |
String |
Definition Service area of the domain name. Constraints If the service area is Chinese mainland or global, the domain name must be licensed by the MIIT. Range
Default Value mainland_china |
enterprise_project_id |
No |
String |
Definition Enterprise project ID. Obtain the enterprise project ID by calling the ListEnterpriseProject API of EPS. Constraints This parameter indicates the ID of the enterprise project to which the resource to be queried belongs. It is valid only when the enterprise project function is enabled. The value all indicates all projects. Range N/A Default Value N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
domain_id |
No |
String |
Definition Acceleration domain name ID, which is automatically generated by the system. You do not need to specify this parameter when creating a domain name. Constraints N/A Range N/A Default Value N/A |
ip_or_domain |
Yes |
String |
Definition IP address or domain name of the origin server. Constraints Internal IP addresses are not supported. Range N/A Default Value N/A |
origin_type |
Yes |
String |
Definition Origin server type. Constraints N/A Range
Default Value N/A |
obs_bucket_type |
No |
String |
Definition OBS pull authentication status. This function applies when an OBS bucket is used as an origin server. Enable the function if access to the bucket requires authentication. In this way, CDN PoPs carry the authentication information during origin pull. If the information does not match the OBS bucket, origin pull fails, preventing unauthorized traffic theft. Constraints Mandatory when the origin server is an OBS bucket. Range
Default Value public |
active_standby |
Yes |
Integer |
Definition Whether the origin server is primary or standby. The primary origin server has higher priority than the standby origin server. CDN PoPs preferentially pull content from the primary origin server.
NOTE:
Constraints N/A Range
Default Value N/A |
enable_obs_web_hosting |
No |
Integer |
Definition Whether to enable static website hosting. If your origin server is an OBS bucket with static website hosting configured on OBS, enable this function on CDN to allow clients to access hosted static websites.
NOTE:
After this function is enabled, CDN adds the website field to the bucket origin server address. If the address already contains this field, this parameter does not take effect.
Constraints Mandatory when the origin server type is set to obs_bucket. Range
Default Value 0 |
http_port |
No |
Integer |
Definition HTTP port. Constraints N/A Range 1 to 65,535. Default Value 80 |
https_port |
No |
Integer |
Definition HTTPS port. Constraints N/A Range 1 to 65,535. Default Value 443 |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
domain |
Response to the request for creating a domain name. |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Domain name ID. |
domain_name |
String |
Domain name. |
business_type |
String |
Service type of the domain name. Possible values:
|
service_area |
String |
Service area of your domain name. Possible values: mainland_china (Chinese mainland), outside_mainland_china (outside the Chinese mainland), and global (global). |
user_domain_id |
String |
Domain ID of the domain name's owner. |
domain_status |
String |
Domain name status. Possible values:
|
cname |
String |
CNAME record of the domain name. |
sources |
Array of Sources objects |
Origin server details. |
domain_origin_host |
DomainOriginHost object |
Host header settings for origin pull. |
https_status |
Integer |
Whether HTTPS is enabled for acceleration. |
create_time |
Long |
Time when the domain name was created. The value is the number of milliseconds since the UNIX epoch (Jan 1, 1970). |
modify_time |
Long |
Time when the domain name was modified. The value is the number of milliseconds since the UNIX epoch (Jan 1, 1970). |
disabled |
Integer |
Whether the domain name is banned. Possible values: 0 (not banned) and 1 (banned). |
locked |
Integer |
Whether the domain name is locked. Possible values: 0 (not locked) and 1 (locked). |
range_status |
String |
Whether range requests are supported. Possible values: off (not supported) and on (supported). |
follow_status |
String |
Status of 302 redirect. Possible values: off (disabled) and on (enabled). |
origin_status |
String |
Origin pull status. Possible values: off (disabled) and on (enabled). |
auto_refresh_preheat |
Integer |
Whether automatic cache purge and prefetch are enabled. Possible values: 0 (disabled) and 1 (enabled). |
Parameter |
Type |
Description |
---|---|---|
domain_id |
String |
Domain name ID. |
ip_or_domain |
String |
Non-intranet IP address or domain name of the origin server. |
origin_type |
String |
Origin server type. Possible values: ipaddr (origin server IP address), domain (origin server domain name), and obs_bucket (OBS bucket domain name). |
obs_bucket_type |
String |
OBS bucket type.
|
active_standby |
Integer |
Whether the origin server is primary or standby. Possible values: 1 (primary) and 0 (standby). |
enable_obs_web_hosting |
Integer |
Whether static website hosting is enabled for the OBS bucket. Possible values: 0 (disabled) and 1 (enabled). This parameter is passed only when origin_type is set to obs_bucket. |
Parameter |
Type |
Description |
---|---|---|
domain_id |
String |
Domain name ID. |
origin_host_type |
String |
Host type. Possible values: accelerate (acceleration domain name) and customize (custom domain name). |
customize_domain |
String |
Domain name of the host. Host for pull from the primary origin server. If the acceleration domain name has multiple primary origin servers and each origin server has a host, CDN pulls content from the host of the first primary origin server in the origin server lists. |
Example Requests
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" } }
Example Responses
Status code: 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 Sample Code
The SDK sample code is as follows.
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(); [](model.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) } } |
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
200 |
OK |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot