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 |
Project ID. To obtain it, go to Huawei Cloud management console and hover the cursor over your username. On the displayed window, choose My Credentials. Then, in the Projects area, view Project ID of the corresponding project. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
enterprise_project_id |
No |
String |
ID of the enterprise project. It can be obtained by calling the ListEnterpriseProject API of EPS. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header). |
Content-Type |
Yes |
String |
Content type. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
chargemode |
No |
Integer |
Billing mode. Currently, only pay-per-use (30) is supported. |
region |
Yes |
String |
Region where a dedicated engine is to be created, for example, cn-north-4. |
available_zone |
Yes |
String |
AZ where the dedicated engine is to be created, for example, AZ 1 of CN North-Beijing4 (cn-north-4a) |
arch |
Yes |
String |
CPU architecture of the dedicated WAF instance, for example, x86 or Arm. |
instancename |
Yes |
String |
Prefix of dedicated WAF engine names |
specification |
Yes |
String |
Specifications of the dedicated WAF instance
|
cpu_flavor |
No |
String |
Flavor of the ECS used for the dedicated WAF instance. For WAF instances of the ECS type, select a flavor based on what are available on the console. For WAF instances of the network interface type, c7.large.4 is supported for WI-100 WAF instances, and c7.2xlarge.4 is supported for WI-500 WAF instances. |
vpc_id |
Yes |
String |
ID of the VPC where the dedicated engine is located. |
subnet_id |
Yes |
String |
ID of the VPC subnet where the dedicated engine is located. |
security_group |
Yes |
Array of strings |
ID of the security group where the dedicated engine is located. |
count |
Yes |
Integer |
Number of dedicated WAF instance applied for |
res_tenant |
No |
Boolean |
Whether this is resource tenant. The default value is false.
|
anti_affinity |
No |
Boolean |
Whether to enable anti-affinity. Only the WAF instances of the network interface type support this feature. |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
instances |
Array of instanceInfo objects |
instances |
Parameter |
Type |
Description |
---|---|---|
id |
String |
ID of the dedicated WAF instance. |
name |
String |
Name of the dedicated WAF instance. |
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