Creating a Dedicated WAF Instance
Function
This API is used to create a dedicated WAF instance. Dedicated WAF instances are supported only in some regions, including CN East-Qingdao, ME-Riyadh, CN North-Beijing1, CN North-Beijing4, CN North-Ulanqab1, CN East-Shanghai1, CN East-Shanghai2, CN South-Guangzhou, CN South-Shenzhen, and CN-Hong Kong, CN Southwest - Guiyang 1, AP-Bangkok, AP-Singapore, AF-Johannesburg, and TR-Istanbul. Dedicated instances of the ECS type are supported in the following regions: CN North-Beijing4, CN East-Shanghai1, CN South-Guangzhou, CN-Hong Kong, AP-Bangkok, and AP-Singapore.
Calling Method
For details, see Calling APIs.
URI
POST /v1/{project_id}/premium-waf/instance
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Definition Project ID. To obtain it, log in to the Huawei Cloud console, click the username, choose My Credentials, and find the project ID in the Projects list. Constraints N/A Range Enter 32 characters. Only letters and digits are allowed. Default Value N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
enterprise_project_id |
No |
String |
Definition Obtain the enterprise project ID by calling the ListEnterpriseProject API of Enterprise Project Management Service (EPS). To obtain the resource details in all enterprise projects of a user, set this parameter to all_granted_eps. Constraints N/A Range
Default Value 0 |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Definition User token. It 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 |
Content-Type |
Yes |
String |
Definition Content type. Constraints N/A Range N/A Default Value application/json;charset=utf8 |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
chargemode |
No |
Integer |
Definition Billing mode. Currently, only pay-per-use billing is supported. (30) Constraints N/A Range N/A Default Value N/A |
region |
Yes |
String |
Definition Region where a dedicated engine is to be created, for example, CN Beijing4 (cn-north-4). Constraints N/A Range N/A Default Value N/A |
available_zone |
Yes |
String |
Definition AZ where the dedicated engine is to be created, for example, AZ 1 of CN North-Beijing4 (cn-north-4a) Constraints N/A Range N/A Default Value N/A |
arch |
Yes |
String |
Definition Dedicated engine CPU architecture. Only x86 is supported. Constraints N/A Range N/A Default Value N/A |
instancename |
Yes |
String |
Definition Prefix of the dedicated engine name Constraints N/A Range N/A Default Value N/A |
specification |
Yes |
String |
Definition Specifications of the dedicated engine edition Constraints N/A Range
Default Value N/A |
cpu_flavor |
No |
String |
Definition Flavor of the ECS for deploying the dedicated WAF instance. Constraints This parameter is optional when you create a dedicated engine for a resource tenant. This parameter is mandatory when you create a dedicated engine for a common resource tenant. The specifications supported by dedicated WAF engines for common tenants are subject to those supported on the WAF console. Range N/A Default Value N/A |
vpc_id |
Yes |
String |
Definition ID of the VPC where the dedicated engine is located Constraints N/A Range N/A Default Value N/A |
subnet_id |
Yes |
String |
Definition ID of the subnet in the VPC where the dedicated engine is located Constraints N/A Range N/A Default Value N/A |
security_group |
Yes |
Array of strings |
Definition ID of the security group to be bound to the dedicated engine Constraints N/A Range N/A Default Value N/A |
count |
Yes |
Integer |
Definition Number of dedicated engines to be provisioned Constraints N/A Range N/A Default Value N/A |
res_tenant |
No |
Boolean |
Definition Whether it is a resource tenant Constraints N/A Range
Default Value false |
anti_affinity |
No |
Boolean |
Definition Whether to enable anti-affinity Constraints Only exclusive instances of resource tenants support this feature. Range N/A Default Value N/A |
tags |
No |
Array of TmsResourceTag objects |
TMS tags. |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
instances |
Array of instanceInfo objects |
instances |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Definition Engine instance ID. Range N/A |
name |
String |
Definition Engine Instance Name Range N/A |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error code. |
error_msg |
String |
Error message. |
encoded_authorization_message |
String |
You can call the decode-authorization-message interface of the STS service to decode the rejection reason. For details, see the STS5 joint commissioning and self-verification. This parameter is returned only when an IAM 5 authentication error occurs. |
details |
Array of IAM5ErrorDetails objects |
The set of error messages reported when a downstream service is invoked. This parameter is returned only when an IAM 5 authentication error occurs. |
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error codes of the downstream service. |
error_msg |
String |
Error messages of the downstream service. |
Status code: 401
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error code. |
error_msg |
String |
Error message. |
encoded_authorization_message |
String |
You can call the decode-authorization-message interface of the STS service to decode the rejection reason. For details, see the STS5 joint commissioning and self-verification. This parameter is returned only when an IAM 5 authentication error occurs. |
details |
Array of IAM5ErrorDetails objects |
The set of error messages reported when a downstream service is invoked. This parameter is returned only when an IAM 5 authentication error occurs. |
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error codes of the downstream service. |
error_msg |
String |
Error messages of the downstream service. |
Status code: 500
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error code. |
error_msg |
String |
Error message. |
encoded_authorization_message |
String |
You can call the decode-authorization-message interface of the STS service to decode the rejection reason. For details, see the STS5 joint commissioning and self-verification. This parameter is returned only when an IAM 5 authentication error occurs. |
details |
Array of IAM5ErrorDetails objects |
The set of error messages reported when a downstream service is invoked. This parameter is returned only when an IAM 5 authentication error occurs. |
Example Requests
The following example shows how to create a WAF dedicated instance. The project ID is specified by project_id. Billing mode: pay-per-use. Region: region-01-4. AZ: region-01-4a. CPU architecture: x86. Prefix of the instance name: demo. Edition: Enterprise. ECS flavor: c3ne.2xlarge.2. VPC ID: d7b6a5ff-6c53-4cd4-9d57-f20ee8753056. Subnet ID: e59ccd18-7e15-4588-b689-04b856f4e78b. Security group ID: 09b156a2-f0f0-41fd-9891-60e594601cfd. Quantity: one. Instance type: ECS.
POST https://{endpoint}/v1/{project_id}/premium-waf/instance { "chargemode" : 30, "region" : "region-01-4", "available_zone" : "region-01-4a", "arch" : "x86", "instancename" : "demo", "specification" : "waf.instance.enterprise", "vpc_id" : "d7b6a5ff-6c53-4cd4-9d57-f20ee8753056", "subnet_id" : "e59ccd18-7e15-4588-b689-04b856f4e78b", "security_group" : [ "09b156a2-f0f0-41fd-9891-60e594601cfd" ], "count" : 1, "res_tenant" : true }
Example Responses
Status code: 200
Dedicated WAF instance information
{ "instances" : [ { "id" : "50a6b6c9bdb643f9a8038976fc58ad02", "name" : "demo-6wvl" } ] }
SDK Sample Code
The SDK sample code is as follows.
The following example shows how to create a WAF dedicated instance. The project ID is specified by project_id. Billing mode: pay-per-use. Region: region-01-4. AZ: region-01-4a. CPU architecture: x86. Prefix of the instance name: demo. Edition: Enterprise. ECS flavor: c3ne.2xlarge.2. VPC ID: d7b6a5ff-6c53-4cd4-9d57-f20ee8753056. Subnet ID: e59ccd18-7e15-4588-b689-04b856f4e78b. Security group ID: 09b156a2-f0f0-41fd-9891-60e594601cfd. Quantity: one. Instance type: ECS.
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 64 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; 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.waf.v1.region.WafRegion; import com.huaweicloud.sdk.waf.v1.*; import com.huaweicloud.sdk.waf.v1.model.*; import java.util.List; import java.util.ArrayList; public class CreateInstanceSolution { 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"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); WafClient client = WafClient.newBuilder() .withCredential(auth) .withRegion(WafRegion.valueOf("<YOUR REGION>")) .build(); CreateInstanceRequest request = new CreateInstanceRequest(); CreateInstanceRequestBody body = new CreateInstanceRequestBody(); List<String> listbodySecurityGroup = new ArrayList<>(); listbodySecurityGroup.add("09b156a2-f0f0-41fd-9891-60e594601cfd"); body.withResTenant(true); body.withCount(1); body.withSecurityGroup(listbodySecurityGroup); body.withSubnetId("e59ccd18-7e15-4588-b689-04b856f4e78b"); body.withVpcId("d7b6a5ff-6c53-4cd4-9d57-f20ee8753056"); body.withSpecification("waf.instance.enterprise"); body.withInstancename("demo"); body.withArch("x86"); body.withAvailableZone("region-01-4a"); body.withRegion("region-01-4"); body.withChargemode(30); request.withBody(body); try { CreateInstanceResponse response = client.createInstance(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()); } } } |
The following example shows how to create a WAF dedicated instance. The project ID is specified by project_id. Billing mode: pay-per-use. Region: region-01-4. AZ: region-01-4a. CPU architecture: x86. Prefix of the instance name: demo. Edition: Enterprise. ECS flavor: c3ne.2xlarge.2. VPC ID: d7b6a5ff-6c53-4cd4-9d57-f20ee8753056. Subnet ID: e59ccd18-7e15-4588-b689-04b856f4e78b. Security group ID: 09b156a2-f0f0-41fd-9891-60e594601cfd. Quantity: one. Instance type: ECS.
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 BasicCredentials from huaweicloudsdkwaf.v1.region.waf_region import WafRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkwaf.v1 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"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = WafClient.new_builder() \ .with_credentials(credentials) \ .with_region(WafRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateInstanceRequest() listSecurityGroupbody = [ "09b156a2-f0f0-41fd-9891-60e594601cfd" ] request.body = CreateInstanceRequestBody( res_tenant=True, count=1, security_group=listSecurityGroupbody, subnet_id="e59ccd18-7e15-4588-b689-04b856f4e78b", vpc_id="d7b6a5ff-6c53-4cd4-9d57-f20ee8753056", specification="waf.instance.enterprise", instancename="demo", arch="x86", available_zone="region-01-4a", region="region-01-4", chargemode=30 ) response = client.create_instance(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
The following example shows how to create a WAF dedicated instance. The project ID is specified by project_id. Billing mode: pay-per-use. Region: region-01-4. AZ: region-01-4a. CPU architecture: x86. Prefix of the instance name: demo. Edition: Enterprise. ECS flavor: c3ne.2xlarge.2. VPC ID: d7b6a5ff-6c53-4cd4-9d57-f20ee8753056. Subnet ID: e59ccd18-7e15-4588-b689-04b856f4e78b. Security group ID: 09b156a2-f0f0-41fd-9891-60e594601cfd. Quantity: one. Instance type: ECS.
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 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" waf "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/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") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := waf.NewWafClient( waf.WafClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateInstanceRequest{} var listSecurityGroupbody = []string{ "09b156a2-f0f0-41fd-9891-60e594601cfd", } resTenantCreateInstanceRequestBody:= true chargemodeCreateInstanceRequestBody:= int32(30) request.Body = &model.CreateInstanceRequestBody{ ResTenant: &resTenantCreateInstanceRequestBody, Count: int32(1), SecurityGroup: listSecurityGroupbody, SubnetId: "e59ccd18-7e15-4588-b689-04b856f4e78b", VpcId: "d7b6a5ff-6c53-4cd4-9d57-f20ee8753056", Specification: "waf.instance.enterprise", Instancename: "demo", Arch: "x86", AvailableZone: "region-01-4a", Region: "region-01-4", Chargemode: &chargemodeCreateInstanceRequestBody, } response, err := client.CreateInstance(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 |
Dedicated WAF instance information |
400 |
Request failed. |
401 |
The token does not have required permissions. |
500 |
Internal server error. |
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