Help Center/ VPC Endpoint/ API Reference/ API/ Tags/ Querying Resources by Tag
Updated on 2024-09-11 GMT+08:00

Querying Resources by Tag

Function

This API is used to query resources of a tenant by tag.

Calling Method

For details, see Calling APIs.

URI

POST /v1/{project_id}/{resource_type}/resource_instances/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID.

Minimum: 1

Maximum: 64

resource_type

Yes

String

Specifies the resource type. The type is endpoint_service or endpoint.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Specifies the user token. It can be obtained by calling the IAM API. The value of X-Subject-Token in the response header is the user token.

Content-Type

No

String

Specifies the MIME type of the request body. Default value application/json is recommended. For APIs used to upload objects or images, the MIME type varies depending on the flow type.

Default: application/json

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

tags

No

Array of TagValuesList objects

Tags are included. A maximum of 10 tag keys are included, and each tag value can have a maximum of 10 values. Each tag value can be an empty array, but the tag structure cannot be missing. Tag keys must be unique. Values of the same tag key must be unique. Specifies all returned tags of the resource. Keys are in the AND relationship while values in the key-value structure are in the OR relationship. If no filtering condition for tags is specified, full data is returned.

Array Length: 1 - 10

tags_any

No

Array of TagValuesList objects

Any tags are included. A maximum of 10 tag keys are included, and each tag key can have a maximum of 10 values. Values of each tag key can be an empty array, but the tag structure cannot be missing. Both tag keys and values of the same tag key must be unique. Specifies resources including tags returned. Keys and values in the key-value structure are in the OR relationship. If no filtering condition is specified, full data is returned.

Array Length: 1 - 10

not_tags

No

Array of TagValuesList objects

Tags are excluded, a maximum of 10 tag keys are included, and each tag value can have a maximum of 10 values. Each tag value can be an empty array, but the tag structure cannot be missing. Tag keys must be unique. Values of the same tag key must be unique. Specifies resources excluding tags returned. Keys are in the AND relationship while values in the key-value structure are in the OR relationship. If no filtering condition is specified, full data is returned.

Array Length: 1 - 10

not_tags_any

No

Array of TagValuesList objects

Any tags are excluded, a maximum of 10 tag keys are included, and each tag value can have a maximum of 10 values. Each tag value can be an empty array, but the tag structure cannot be missing. Tag keys must be unique. Values of the same tag key must be unique. Specifies resources excluding tags returned. Keys are in the AND relationship while values in the key-value structure are in the OR relationship. If no filtering condition is specified, full data is returned.

Array Length: 1 - 10

sys_tags

No

Array of TagValuesList objects

Specifies the system tags.

limit

No

String

Specifies the number of records to be queried. This parameter is unavailable when action is set to count. If action is set to filter, the default value is 1000. The maximum value of limit is 1000 and the minimum value is 1.

offset

No

String

Specifies the index position and offset. The query starts from the data after the first data offset. This parameter is unavailable when action is set to count. If action is set to filter, the default value is 0 which indicates that the query starts from the first data. The value must be a non-negative number.

action

Yes

String

Specifies the action, which only can be filter and count. If this parameter is set to filter, the query is performed based on the filter criteria. If the parameter is set to count, only the total number of resources need to be returned.

matches

No

Array of Match objects

Specifies the search field. The tag key is the field to be matched, for example, resource_name. The tag value indicates the matched value. The tag key is a fixed dictionary value and cannot be a duplicate key or an unsupported key. Specifies whether fuzzy match is required based on the value of the tag key. For example, if the tag key is resource_name, fuzzy search (case-insensitive) is used by default. If value is an empty string, exact match is used. An empty list is returned because the resource_name for most services cannot be left blank. If the tag key is resource_id, exact match is used. Only resource_name for key is supported. Other key values will be available later.

without_any_tag

No

Boolean

The default value is false. The value can be true or false. When withoutAnyTag is set to true, ignore parameter verification on the tags, tagsAny, notTags, and notTagsAny.

Table 4 TagValuesList

Parameter

Mandatory

Type

Description

key

Yes

String

Specifies the tag key. It contains a maximum of 127 Unicode characters. A tag key cannot be left blank. (The character set of this parameter is not verified during the search.) The tag key cannot be left blank, empty strings, or spaces. Before you verify and use it, delete spaces at the beginning and end of the tag key.

Minimum: 1

Maximum: 128

values

Yes

Array of strings

Specifies the tag values. Each tag value contains a maximum of 255 Unicode characters. Before you verify and use it, delete spaces at the beginning and end of the tag value. The tag value can be an empty array but cannot be left blank. If values is left blank, it indicates any_value (querying any value). Values are in the OR relationship. The system does not verify the character set of values when searching for resources, but only verifies the length.

Maximum: 255

Array Length: 1 - 1000

Table 5 Match

Parameter

Mandatory

Type

Description

key

Yes

String

Indicates the tag key. Only resource_name for key is supported. Other key values will be available later.

Minimum: 1

Maximum: 36

value

Yes

String

Value. Each value can contain a maximum of 255 Unicode characters. The character set of value is not verified.

Minimum: 1

Maximum: 43

Response Parameters

Status code: 200

Table 6 Response body parameters

Parameter

Type

Description

resources

Array of ResourceInstance objects

Specifies the resource details.

total_count

Integer

Specifies the total number of records.

Minimum: 1

Table 7 ResourceInstance

Parameter

Type

Description

resource_id

String

Indicates the resource ID, endpoint service ID, or endpoint ID.

Minimum: 1

Maximum: 64

tags

Array of TagList objects

Indicates the list of tags.

resource_name

String

Resource name. If the resource does not have a name, the ID is returned.

Minimum: 0

Maximum: 128

Table 8 TagList

Parameter

Type

Description

key

String

Specifies the tag key. A tag key contains a maximum of 36 Unicode characters. It cannot be left blank. It cannot contain equal signs (=), asterisks (*), less than signs (<), greater than signs (>), backslashes (), commas (,), vertical bars (|), and slashes (/), and the first and last characters cannot be spaces.

Minimum: 1

Maximum: 128

value

String

Specifies the tag key. A tag value contains a maximum of 43 Unicode characters and can be an empty string. It cannot contain equal signs (=), asterisks (*), less than signs(<), greater than signs (>), backslashes (), commas (,), vertical bars (|), and slashes (/), and the first and last characters cannot be spaces.

Maximum: 255

Example Requests

  • Querying VPC endpoints by tag

    POST https://{endpoint}/v1/{project_id}/endpoint/resource_instances/action
    
    When action is set to filter:    "offset": "100",
        "limit": "100",
        "action": "filter",
        "matches": [
            {
                "key": "resource_name",
                "value": "resource1"
            }
        ],
        "not_tags": [
            {
                "key": "key1",
                "values": [
                    "*value1",
                    "value2"
                ]
            }
        ],
        "tags": [
            {
                "key": "key1",
                "values": [
                    "*value1",
                    "value2"
                ]
            }
        ],
        "tags_any": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "value2"
                ]
            }
        ],
        "not_tags_any": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "value2"
                ]
            }
        ]
    }
  • Querying the total number of VPC endpoint services

    https://{endpoint}/v1/{project_id}/endpoint_service/ resource_instances/action
    
    When action is set to count:
    {
        "action": "count",
        "not_tags": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "*value2"
                ]
            }
        ],
        "tags": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "value2"
                ]
            },
            {
                "key": "key2",
                "values": [
                    "value1",
                    "value2"
                ]
            }
        ],
        "tags_any": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "value2"
                ]
            }
        ],
        "not_tags_any": [
            {
                "key": "key1",
                "values": [
                    "value1",
                    "value2"
                ]
            }
        ],
        "matches": [
            {
                "key": "resource_name",
                "value": "resource1"
            }
        ]
    }

Example Responses

Status code: 200

The server has successfully processed the request.

– When **action** is set to **filter**:
{
"resources": [
{
"resource_id": "cdfs_cefs_wesas_12_dsad",
"resource_name": "resource1",
"tags": [
{
"key": "key1", "value": "value1"
},
{
"key": "key2", "value": "value1"
}
]
}
],
"total_count": 1000
}

SDK Sample Code

The SDK sample code is as follows.

  • Querying VPC endpoints by tag

     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
    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.vpcep.v1.region.VpcepRegion;
    import com.huaweicloud.sdk.vpcep.v1.*;
    import com.huaweicloud.sdk.vpcep.v1.model.*;
    
    
    public class ListResourceInstancesSolution {
    
        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);
    
            VpcepClient client = VpcepClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(VpcepRegion.valueOf("<YOUR REGION>"))
                    .build();
            ListResourceInstancesRequest request = new ListResourceInstancesRequest();
            try {
                ListResourceInstancesResponse response = client.listResourceInstances(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());
            }
        }
    }
    
  • Querying the total number of VPC endpoint services

     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
    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.vpcep.v1.region.VpcepRegion;
    import com.huaweicloud.sdk.vpcep.v1.*;
    import com.huaweicloud.sdk.vpcep.v1.model.*;
    
    
    public class ListResourceInstancesSolution {
    
        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);
    
            VpcepClient client = VpcepClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(VpcepRegion.valueOf("<YOUR REGION>"))
                    .build();
            ListResourceInstancesRequest request = new ListResourceInstancesRequest();
            try {
                ListResourceInstancesResponse response = client.listResourceInstances(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());
            }
        }
    }
    
  • Querying VPC endpoints by tag

     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
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkvpcep.v1.region.vpcep_region import VpcepRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkvpcep.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"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = VpcepClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(VpcepRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ListResourceInstancesRequest()
            response = client.list_resource_instances(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Querying the total number of VPC endpoint services

     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
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkvpcep.v1.region.vpcep_region import VpcepRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkvpcep.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"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = VpcepClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(VpcepRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ListResourceInstancesRequest()
            response = client.list_resource_instances(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Querying VPC endpoints by tag

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        vpcep "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/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")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := vpcep.NewVpcepClient(
            vpcep.VpcepClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ListResourceInstancesRequest{}
    	response, err := client.ListResourceInstances(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Querying the total number of VPC endpoint services

     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
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        vpcep "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/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")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := vpcep.NewVpcepClient(
            vpcep.VpcepClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ListResourceInstancesRequest{}
    	response, err := client.ListResourceInstances(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

The server has successfully processed the request.

Error Codes

See Error Codes.