Help Center/ NAT Gateway/ API Reference/ APIs for Private NAT Gateways/ Private NAT Gateway Tags/ Batch Adding Tags to or Deleting Tags from a Private NAT Gateway
Updated on 2024-03-28 GMT+08:00

Batch Adding Tags to or Deleting Tags from a Private NAT Gateway

Function

  • This API is used to batch add tags to or delete tags from a private NAT gateway.

  • TMS uses this API to batch manage tags of a private NAT gateway.

  • A private NAT gateway can have up to 10 tags.

Constraints

This API is idempotent.

  • If the request body contains duplicate keys, an error is reported.

  • During tag creation, duplicate keys are not allowed. If a key already exists in the database, its value will be overwritten by the new duplicate key.

  • During tag deletion, if some tags to be deleted do not exist, the operation is considered to be successful by default. The character set of the tags will not be verified.

  • The tags structure cannot be missing during deletion. The key cannot be left blank or be an empty string.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/private-nat-gateways/{resource_id}/tags/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

Minimum: 1

Maximum: 32

resource_id

Yes

String

Specifies the private NAT gateway ID.

Minimum: 36

Maximum: 36

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Specifies the token of a user. It is a response to the API used to obtain the token of a user. This API is the only one that does not require authentication. The value of X-Subject-Token in the response header is the token.

Minimum: 1

Maximum: 10240

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

action

Yes

String

Specifies the operation to perform. The value can be: create delete

Enumeration values:

  • create

  • delete

tags

Yes

Array of Tag objects

Specifies the tags.

Array Length: 1 - 10

Table 4 Tag

Parameter

Mandatory

Type

Description

key

Yes

String

Specifies any tag that is not included. Each tag can contain a maximum of 10 keys, and each key can contain a maximum of 10 values. The structure body cannot be missing, and the key cannot be left blank or set to an empty string. Keys must be unique and values of a key must be unique. Resources not identified by different keys are in OR relationship, and values in one tag are in OR relationship. If no filtering condition is specified, full data is returned.

Minimum: 1

Maximum: 128

value

Yes

String

Specifies the request ID.

Minimum: 0

Maximum: 255

Response Parameters

None

Example Requests

  • Adding tags to a private NAT gateway (Setting action to create and adding the following two tags: key1, value1 and key2, value2)

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/private-nat-gateways/3320166e-b937-40cc-a35c-02cd3f2b3ee2/tags/action
    
    {
      "action" : "create",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }
  • Deleting tags of a private NAT gateway (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

    POST  https://{Endpoint}/v3/cfa563efb77d4b6d9960781d82530fd8/private-nat-gateways/3320166e-b937-40cc-a35c-02cd3f2b3ee2/tags/action
    
    {
      "action" : "delete",
      "tags" : [ {
        "key" : "key1",
        "value" : "value1"
      }, {
        "key" : "key2",
        "value" : "value2"
      } ]
    }

Example Responses

None

SDK Sample Code

The SDK sample code is as follows.

  • Adding tags to a private NAT gateway (Setting action to create and adding the following two tags: key1, value1 and key2, value2)

     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
    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.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class BatchCreateDeletePrivateNatTagsSolution {
    
        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 BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeletePrivateNatTagsRequest request = new BatchCreateDeletePrivateNatTagsRequest();
            BatchOperateResourceTagsRequestBody body = new BatchOperateResourceTagsRequestBody();
            List<Tag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new Tag()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new Tag()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withTags(listbodyTags);
            body.withAction(BatchOperateResourceTagsRequestBody.ActionEnum.fromValue("create"));
            request.withBody(body);
            try {
                BatchCreateDeletePrivateNatTagsResponse response = client.batchCreateDeletePrivateNatTags(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());
            }
        }
    }
    
  • Deleting tags of a private NAT gateway (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

     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
    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.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class BatchCreateDeletePrivateNatTagsSolution {
    
        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 BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            NatClient client = NatClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(NatRegion.valueOf("<YOUR REGION>"))
                    .build();
            BatchCreateDeletePrivateNatTagsRequest request = new BatchCreateDeletePrivateNatTagsRequest();
            BatchOperateResourceTagsRequestBody body = new BatchOperateResourceTagsRequestBody();
            List<Tag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new Tag()
                    .withKey("key1")
                    .withValue("value1")
            );
            listbodyTags.add(
                new Tag()
                    .withKey("key2")
                    .withValue("value2")
            );
            body.withTags(listbodyTags);
            body.withAction(BatchOperateResourceTagsRequestBody.ActionEnum.fromValue("delete"));
            request.withBody(body);
            try {
                BatchCreateDeletePrivateNatTagsResponse response = client.batchCreateDeletePrivateNatTags(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());
            }
        }
    }
    
  • Adding tags to a private NAT gateway (Setting action to create and adding the following two tags: key1, value1 and key2, value2)

     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
    # coding: utf-8
    
    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 = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeletePrivateNatTagsRequest()
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="create"
            )
            response = client.batch_create_delete_private_nat_tags(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Deleting tags of a private NAT gateway (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

     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
    # coding: utf-8
    
    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 = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = NatClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(NatRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = BatchCreateDeletePrivateNatTagsRequest()
            listTagsbody = [
                Tag(
                    key="key1",
                    value="value1"
                ),
                Tag(
                    key="key2",
                    value="value2"
                )
            ]
            request.body = BatchOperateResourceTagsRequestBody(
                tags=listTagsbody,
                action="delete"
            )
            response = client.batch_create_delete_private_nat_tags(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Adding tags to a private NAT gateway (Setting action to create and adding the following two tags: key1, value1 and key2, value2)

     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")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeletePrivateNatTagsRequest{}
    	var listTagsbody = []model.Tag{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchOperateResourceTagsRequestBody{
    		Tags: listTagsbody,
    		Action: model.GetBatchOperateResourceTagsRequestBodyActionEnum().CREATE,
    	}
    	response, err := client.BatchCreateDeletePrivateNatTags(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Deleting tags of a private NAT gateway (Setting action to delete and deleting the following two tags: key1, value1 and key2, value2)

     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")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := nat.NewNatClient(
            nat.NatClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.BatchCreateDeletePrivateNatTagsRequest{}
    	var listTagsbody = []model.Tag{
            {
                Key: "key1",
                Value: "value1",
            },
            {
                Key: "key2",
                Value: "value2",
            },
        }
    	request.Body = &model.BatchOperateResourceTagsRequestBody{
    		Tags: listTagsbody,
    		Action: model.GetBatchOperateResourceTagsRequestBodyActionEnum().DELETE,
    	}
    	response, err := client.BatchCreateDeletePrivateNatTags(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

204

Tags added or deleted.

Error Codes

See Error Codes.