Updating a Public NAT Gateway
Function
This API is used to update a public NAT gateway.
Constraints
The name, description, and specifications of a public NAT gateway can be updated when admin_state_up is set to True and status is ACTIVE.
Calling Method
For details, see Calling APIs.
URI
PUT /v2/{project_id}/nat_gateways/{nat_gateway_id}
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Specifies the project ID. |
nat_gateway_id |
Yes |
String |
Specifies the public NAT gateway ID. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Specifies the user token. It is a response to the API for obtaining a user token. This API is the only one that does not require authentication. The value of X-Subject-Token in the response header is the token value. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
nat_gateway |
Yes |
UpdateNatGatewayOption object |
Specifies the request body for updating the public NAT gateway. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
name |
No |
String |
Specifies the public NAT gateway name. You can enter up to 64 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. |
description |
No |
String |
Provides supplementary information about the public NAT gateway. The description can contain up to 255 characters and cannot contain angle brackets (<>). |
spec |
No |
String |
Specifies the public NAT gateway specifications. The value can be:
|
session_conf |
No |
SessionConfiguration object |
Specifies the session parameters for the public NAT gateway. |
prepaid_options |
No |
prepaid_options object |
Specifies the payment attributes. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
tcp_session_expire_time |
No |
Integer |
Specifies the TCP session duration. Unit: second |
udp_session_expire_time |
No |
Integer |
Specifies the UDP session duration. Unit: second |
icmp_session_expire_time |
No |
Integer |
Specifies the ICMP session duration. Unit: second |
tcp_time_wait_time |
No |
Integer |
Specifies how long the side that actively closed the TCP connection is in the TIME_WAIT state. Unit: second |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
nat_gateway |
NatGatewayResponseBody object |
Specifies the response body for a public NAT gateway. |
order_id |
String |
Specifies the order ID. |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Specifies the public NAT gateway ID. |
tenant_id |
String |
Specifies the project ID. |
name |
String |
Specifies the public NAT gateway name. You can enter up to 64 characters. |
description |
String |
Provides supplementary information about the public NAT gateway. The description can contain up to 255 characters and cannot contain angle brackets (<>). |
spec |
String |
Specifies the public NAT gateway specifications. The value can be:
|
status |
String |
Specifies the public NAT gateway status. The value can be:
|
admin_state_up |
Boolean |
Specifies whether the public NAT gateway is frozen. The value can be:
|
created_at |
Datetime |
Specifies when the public NAT gateway was created. It is a UTC time in yyyy-mm-ddThh:mm:ssZ format. |
router_id |
String |
Specifies the VPC ID. |
internal_network_id |
String |
Specifies the network ID of the downstream interface (the next hop of DVR) of the public NAT gateway. DVR is Distributed Virtual Routing. |
enterprise_project_id |
String |
Specifies the ID of the enterprise project associated with the public NAT gateway when the gateway is created. |
session_conf |
SessionConfiguration object |
Specifies the session parameters for the public NAT gateway. |
ngport_ip_address |
String |
Specifies the private IP address of the public NAT gateway, which is assigned by the VPC subnet. |
billing_info |
String |
Specifies the order information. This parameter is available only when you buy a yearly/monthly resource. This parameter is left blank when your buy a pay-per-use resource. |
dnat_rules_limit |
Long |
Specifies the maximum number of DNAT rules on a public NAT gateway. The default value is 200. |
snat_rule_public_ip_limit |
Integer |
Specifies the maximum number of EIPs in an SNAT rule on a public NAT gateway. The default value is 20. |
pps_max |
Integer |
Specifies the maximum number of data packets that can be received or sent by a NAT gateway per second, indicating its traffic handling capacity. |
bps_max |
Integer |
Specifies the maximum amount of data that can be transmitted over the public NAT gateway per second. Unit: Mbit/s |
Parameter |
Type |
Description |
---|---|---|
tcp_session_expire_time |
Integer |
Specifies the TCP session duration. Unit: second |
udp_session_expire_time |
Integer |
Specifies the UDP session duration. Unit: second |
icmp_session_expire_time |
Integer |
Specifies the ICMP session duration. Unit: second |
tcp_time_wait_time |
Integer |
Specifies how long the side that actively closed the TCP connection is in the TIME_WAIT state. Unit: second |
Example Requests
PUT https://{NAT_endpoint}/v2/70505c941b9b4dfd82fd351932328a2f/nat_gateways/14338426-6afe-4019-996b-3a9525296e11
{
"nat_gateway" : {
"name" : "new_name",
"description" : "new description",
"spec" : "1"
}
}
Example Responses
Status code: 200
Public NAT gateway updated.
{
"nat_gateway" : {
"id" : "14338426-6afe-4019-996b-3a9525296e11",
"name" : "new_name",
"description" : "new description",
"spec" : "1",
"tenant_id" : "70505c941b9b4dfd82fd351932328a2f",
"enterprise_project_id" : "2759da7b-8015-404c-ae0a-a389007b0e2a",
"status" : "ACTIVE",
"created_at" : "2019-04-22T08:47:13",
"internal_network_id" : "89d66639-aacb-4929-969d-07080b0f9fd9",
"router_id" : "d84f345c-80a1-4fa2-a39c-d0d397c3f09a",
"admin_state_up" : true,
"billing_info" : null,
"dnat_rules_limit" : 200,
"snat_rule_public_ip_limit" : 20,
"ngport_ip_address" : "192.168.0.138",
"session_conf" : {
"tcp_session_expire_time" : 900,
"udp_session_expire_time" : 300,
"icmp_session_expire_time" : 10,
"tcp_time_wait_time" : 5
}
}
}
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 |
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.nat.v2.region.NatRegion;
import com.huaweicloud.sdk.nat.v2.*;
import com.huaweicloud.sdk.nat.v2.model.*;
public class UpdateNatGatewaySolution {
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);
NatClient client = NatClient.newBuilder()
.withCredential(auth)
.withRegion(NatRegion.valueOf("<YOUR REGION>"))
.build();
UpdateNatGatewayRequest request = new UpdateNatGatewayRequest();
request.withNatGatewayId("{nat_gateway_id}");
UpdateNatGatewayRequestBody body = new UpdateNatGatewayRequestBody();
UpdateNatGatewayOption natGatewaybody = new UpdateNatGatewayOption();
natGatewaybody.withName("new_name")
.withDescription("new description")
.withSpec(UpdateNatGatewayOption.SpecEnum.fromValue("1"));
body.withNatGateway(natGatewaybody);
request.withBody(body);
try {
UpdateNatGatewayResponse response = client.updateNatGateway(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 |
# coding: utf-8
import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdknat.v2.region.nat_region import NatRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdknat.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"]
projectId = "{project_id}"
credentials = BasicCredentials(ak, sk, projectId)
client = NatClient.new_builder() \
.with_credentials(credentials) \
.with_region(NatRegion.value_of("<YOUR REGION>")) \
.build()
try:
request = UpdateNatGatewayRequest()
request.nat_gateway_id = "{nat_gateway_id}"
natGatewaybody = UpdateNatGatewayOption(
name="new_name",
description="new description",
spec="1"
)
request.body = UpdateNatGatewayRequestBody(
nat_gateway=natGatewaybody
)
response = client.update_nat_gateway(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 |
package main
import (
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/model"
region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/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")
projectId := "{project_id}"
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
WithProjectId(projectId).
Build()
client := nat.NewNatClient(
nat.NatClientBuilder().
WithRegion(region.ValueOf("<YOUR REGION>")).
WithCredential(auth).
Build())
request := &model.UpdateNatGatewayRequest{}
request.NatGatewayId = "{nat_gateway_id}"
nameNatGateway:= "new_name"
descriptionNatGateway:= "new description"
specNatGateway:= model.GetUpdateNatGatewayOptionSpecEnum().E_1
natGatewaybody := &model.UpdateNatGatewayOption{
Name: &nameNatGateway,
Description: &descriptionNatGateway,
Spec: &specNatGateway,
}
request.Body = &model.UpdateNatGatewayRequestBody{
NatGateway: natGatewaybody,
}
response, err := client.UpdateNatGateway(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.
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 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.nat.v2.region.NatRegion;
import com.huaweicloud.sdk.nat.v2.*;
import com.huaweicloud.sdk.nat.v2.model.*;
public class UpdateNatGatewaySolution {
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);
NatClient client = NatClient.newBuilder()
.withCredential(auth)
.withRegion(NatRegion.valueOf("<YOUR REGION>"))
.build();
UpdateNatGatewayRequest request = new UpdateNatGatewayRequest();
request.withNatGatewayId("{nat_gateway_id}");
UpdateNatGatewayRequestBody body = new UpdateNatGatewayRequestBody();
UpdateNatGatewayOption natGatewaybody = new UpdateNatGatewayOption();
natGatewaybody.withName("new_name")
.withDescription("new description")
.withSpec(UpdateNatGatewayOption.SpecEnum.fromValue("1"));
body.withNatGateway(natGatewaybody);
request.withBody(body);
try {
UpdateNatGatewayResponse response = client.updateNatGateway(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 |
# coding: utf-8
import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdknat.v2.region.nat_region import NatRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdknat.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"]
projectId = "{project_id}"
credentials = BasicCredentials(ak, sk, projectId)
client = NatClient.new_builder() \
.with_credentials(credentials) \
.with_region(NatRegion.value_of("<YOUR REGION>")) \
.build()
try:
request = UpdateNatGatewayRequest()
request.nat_gateway_id = "{nat_gateway_id}"
natGatewaybody = UpdateNatGatewayOption(
name="new_name",
description="new description",
spec="1"
)
request.body = UpdateNatGatewayRequestBody(
nat_gateway=natGatewaybody
)
response = client.update_nat_gateway(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 |
package main
import (
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2/model"
region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/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")
projectId := "{project_id}"
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
WithProjectId(projectId).
Build()
client := nat.NewNatClient(
nat.NatClientBuilder().
WithRegion(region.ValueOf("<YOUR REGION>")).
WithCredential(auth).
Build())
request := &model.UpdateNatGatewayRequest{}
request.NatGatewayId = "{nat_gateway_id}"
nameNatGateway:= "new_name"
descriptionNatGateway:= "new description"
specNatGateway:= model.GetUpdateNatGatewayOptionSpecEnum().E_1
natGatewaybody := &model.UpdateNatGatewayOption{
Name: &nameNatGateway,
Description: &descriptionNatGateway,
Spec: &specNatGateway,
}
request.Body = &model.UpdateNatGatewayRequestBody{
NatGateway: natGatewaybody,
}
response, err := client.UpdateNatGateway(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 |
Public NAT gateway updated. |
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