Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-14 GMT+08:00

Consulta de recursos mediante etiquetas

Función

Esta API se utiliza para consultar recursos mediante etiquetas.

Método de invocación

Para obtener más información, consulte Invocación a las API.

URI

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

Tabla 1 Parámetros de ruta

Parámetro

Obligatorio

Tipo

Descripción

project_id

String

ID de proyecto

resource_type

String

Tipo de recurso. El valor puede ser DNS-public_zone, DNS-private_zone, DNS-public_recordset, DNS-private_recordset o DNS-ptr_record.

Parámetros de solicitud

Tabla 2 Parámetros de encabezado de solicitud

Parámetro

Obligatorio

Tipo

Descripción

X-Auth-Token

String

Token de usuario. Se puede obtener mediante invocación a una API de IAM. El valor de X-Subject-Token en el encabezado de respuesta es el token de usuario.

Tabla 3 Parámetros de cuerpo de solicitud

Parámetro

Obligatorio

Tipo

Descripción

tags

No

Array of tagValues objects

Etiquetas incluidas. El cuerpo de la estructura es obligatorio. Se permite un máximo de 10 claves de etiqueta en cada operación de consulta. La clave de etiqueta no se puede dejar en blanco ni establecer la cadena vacía. Una clave de etiqueta puede tener hasta 10 valores de etiqueta. Cada clave de etiqueta debe ser única y cada valor de etiqueta de una etiqueta debe ser único.

tags_any

No

Array of tagValues objects

Cada etiqueta contiene un máximo de 10 claves, y cada clave contiene un máximo de 10 valores. El cuerpo de la estructura no puede faltar y la clave no se puede dejar en blanco o establecer una cadena vacía. Cada clave de etiqueta debe ser única y cada valor de etiqueta de una etiqueta debe ser único.

not_tags

No

Array of tagValues objects

El cuerpo de la estructura es obligatorio. Se permite un máximo de 10 claves de etiqueta en cada operación de consulta. La clave de etiqueta no se puede dejar en blanco ni establecer la cadena vacía. Una clave de etiqueta puede tener hasta 10 valores de etiqueta. Cada clave de etiqueta debe ser única y cada valor de etiqueta de una etiqueta debe ser único.

not_tags_any

No

Array of tagValues objects

Cada etiqueta contiene un máximo de 10 claves, y cada clave contiene un máximo de 10 valores. El cuerpo de la estructura no puede faltar y la clave no se puede dejar en blanco o establecer una cadena vacía. Cada clave de etiqueta debe ser única y cada valor de etiqueta de una etiqueta debe ser único.

limit

No

Integer

Número de recursos en cada página. Rango de valores: de 1 a 1000. Si action se establece en filter, se utiliza el valor predeterminado 1000. Si action se establece en count, este parámetro no existe.

offset

No

Integer

Comenzar el desplazamiento de la consulta de paginación. La consulta comenzará a partir del siguiente recurso del valor de desplazamiento. El valor varía de 0 a 2147483647 y el valor predeterminado es 0. Este parámetro no es necesario cuando se consultan datos de la primera página. Cuando consulte recursos en páginas posteriores, establezca el valor de offset en la ubicación devuelta en el cuerpo de la respuesta de la consulta anterior. Si action se establece en filter, el valor predeterminado es 0. El valor debe ser un número y no puede ser un número negativo. Si action se establece en count, este parámetro no existe.

action

String

Operación a realizar.

Opciones de valor:

  • filter: Los recursos se consultan en las páginas por condición de filtro.

  • count: Se consulta el número total de recursos.

matches

No

Array of match objects

Este parámetro especifica el par de clave-valor que se va a hacer coincidir en la consulta. Si value se deja en blanco, la coincidencia exacta funcionará. De lo contrario, la búsqueda difusa funcionará.

Tabla 4 tagValues

Parámetro

Obligatorio

Tipo

Descripción

key

No

String

Clave de etiqueta. Una clave puede contener un máximo de 127 caracteres de Unicode. Debe especificarse key. (Este parámetro no se verifica durante la búsqueda.)

values

No

Array of strings

Valor de la etiqueta. Cada valor puede contener un máximo de 255 caracteres de Unicode. El asterisco () es un carácter reservado. Si el valor empieza por un asterisco (), la búsqueda difusa se realiza basándose en el valor que sigue al asterisco (*). Si falta values, se hace coincidir cualquier valor. Todos los valores de una clave de etiqueta están en la relación OR.

Tabla 5 match

Parámetro

Obligatorio

Tipo

Descripción

key

String

Clave de etiqueta. El valor actual es resource_name.

value

No

String

Valor de la etiqueta. Cada valor puede contener un máximo de 255 caracteres de Unicode. El valor no puede contener guiones bajos (_) ni signos de porcentaje (%).

Parámetros de respuesta

Código de estado: 204

Tabla 6 Parámetros de cuerpo de respuesta

Parámetro

Tipo

Descripción

resources

Array of resourceItem objects

Lista de etiquetas de recursos

total_count

Integer

Lista de etiquetas añadidas a un recurso

Tabla 7 resourceItem

Parámetro

Tipo

Descripción

resource_id

String

ID del recurso

resource_detail

Object

Detalles del recurso. Este campo está reservado y su valor predeterminado es una cadena vacía.

tags

Array of tag objects

Lista de etiquetas. Si no hay ninguna etiqueta en la lista, se devuelve una matriz vacía.

resource_name

String

Nombre del recurso. Si no coincide ningún nombre de recurso, el valor se deja en blanco.

Tabla 8 tag

Parámetro

Tipo

Descripción

key

String

Clave de etiqueta. Una clave puede contener hasta 36 caracteres Unicode. No se puede dejar en blanco. Un valor de etiqueta no puede contener caracteres especiales (=*<>,|/) ni empezar o terminar con espacios.

value

String

Valor de la etiqueta. Un valor de etiqueta contiene un máximo de 43 caracteres de Unicode y se puede dejar en blanco. Un valor de etiqueta no puede contener caracteres especiales (=*<>,|/) ni empezar o terminar con espacios.

Ejemplo de solicitudes

Consultar recursos por etiqueta, con el desplazamiento inicial de la consulta de paginación establecido en 100 y el número de recursos mostrados en cada página en 100

POST https://{endpoint}/v2/{project_id}/{resource_type}/resource_instances/action

{
  "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" ]
  } ]
}

Ejemplo de respuestas

Código de estado: 204

Respuesta a la solicitud de consulta de recursos por etiqueta

{
  "resources" : [ {
    "resource_detail" : null,
    "resource_id" : "cdfs_cefs_wesas_12_dsad",
    "resource_name" : "resouece1",
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    }, {
      "key" : "key2",
      "value" : "value1"
    } ]
  } ],
  "total_count" : 1000
}

Código de muestra del SDK

El código de ejemplo del SDK es el siguiente.

Java

Consultar recursos por etiqueta, con el desplazamiento inicial de la consulta de paginación establecido en 100 y el número de recursos mostrados en cada página en 100

 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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.dns.v2.region.DnsRegion;
import com.huaweicloud.sdk.dns.v2.*;
import com.huaweicloud.sdk.dns.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class ListTagSolution {

    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);

        DnsClient client = DnsClient.newBuilder()
                .withCredential(auth)
                .withRegion(DnsRegion.valueOf("cn-north-4"))
                .build();
        ListTagRequest request = new ListTagRequest();
        ListTagReq body = new ListTagReq();
        List<Match> listbodyMatches = new ArrayList<>();
        listbodyMatches.add(
            new Match()
                .withKey("resource_name")
                .withValue("resource1")
        );
        List<String> listNotTagsAnyValues = new ArrayList<>();
        listNotTagsAnyValues.add("value1");
        listNotTagsAnyValues.add("value2");
        List<TagValues> listbodyNotTagsAny = new ArrayList<>();
        listbodyNotTagsAny.add(
            new TagValues()
                .withKey("key1")
                .withValues(listNotTagsAnyValues)
        );
        List<String> listNotTagsValues = new ArrayList<>();
        listNotTagsValues.add("*value1");
        listNotTagsValues.add("value2");
        List<TagValues> listbodyNotTags = new ArrayList<>();
        listbodyNotTags.add(
            new TagValues()
                .withKey("key1")
                .withValues(listNotTagsValues)
        );
        List<String> listTagsAnyValues = new ArrayList<>();
        listTagsAnyValues.add("value1");
        listTagsAnyValues.add("value2");
        List<TagValues> listbodyTagsAny = new ArrayList<>();
        listbodyTagsAny.add(
            new TagValues()
                .withKey("key1")
                .withValues(listTagsAnyValues)
        );
        List<String> listTagsValues = new ArrayList<>();
        listTagsValues.add("*value1");
        listTagsValues.add("value2");
        List<TagValues> listbodyTags = new ArrayList<>();
        listbodyTags.add(
            new TagValues()
                .withKey("key1")
                .withValues(listTagsValues)
        );
        body.withMatches(listbodyMatches);
        body.withAction("filter");
        body.withOffset(100);
        body.withLimit(100);
        body.withNotTagsAny(listbodyNotTagsAny);
        body.withNotTags(listbodyNotTags);
        body.withTagsAny(listbodyTagsAny);
        body.withTags(listbodyTags);
        request.withBody(body);
        try {
            ListTagResponse response = client.listTag(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());
        }
    }
}

Python

Consultar recursos por etiqueta, con el desplazamiento inicial de la consulta de paginación establecido en 100 y el número de recursos mostrados en cada página en 100

 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# coding: utf-8

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdns.v2.region.dns_region import DnsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkdns.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.getenv("CLOUD_SDK_AK")
    sk = os.getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

    client = DnsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(DnsRegion.value_of("cn-north-4")) \
        .build()

    try:
        request = ListTagRequest()
        listMatchesbody = [
            Match(
                key="resource_name",
                value="resource1"
            )
        ]
        listValuesNotTagsAny = [
            "value1",
            "value2"
        ]
        listNotTagsAnybody = [
            TagValues(
                key="key1",
                values=listValuesNotTagsAny
            )
        ]
        listValuesNotTags = [
            "*value1",
            "value2"
        ]
        listNotTagsbody = [
            TagValues(
                key="key1",
                values=listValuesNotTags
            )
        ]
        listValuesTagsAny = [
            "value1",
            "value2"
        ]
        listTagsAnybody = [
            TagValues(
                key="key1",
                values=listValuesTagsAny
            )
        ]
        listValuesTags = [
            "*value1",
            "value2"
        ]
        listTagsbody = [
            TagValues(
                key="key1",
                values=listValuesTags
            )
        ]
        request.body = ListTagReq(
            matches=listMatchesbody,
            action="filter",
            offset=100,
            limit=100,
            not_tags_any=listNotTagsAnybody,
            not_tags=listNotTagsbody,
            tags_any=listTagsAnybody,
            tags=listTagsbody
        )
        response = client.list_tag(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Go

Consultar recursos por etiqueta, con el desplazamiento inicial de la consulta de paginación establecido en 100 y el número de recursos mostrados en cada página en 100

 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    dns "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dns/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dns/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dns/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 := dns.NewDnsClient(
        dns.DnsClientBuilder().
            WithRegion(region.ValueOf("cn-north-4")).
            WithCredential(auth).
            Build())

    request := &model.ListTagRequest{}
	valueMatches:= "resource1"
	var listMatchesbody = []model.Match{
        {
            Key: "resource_name",
            Value: &valueMatches,
        },
    }
	var listValuesNotTagsAny = []string{
        "value1",
	    "value2",
    }
	keyNotTagsAny:= "key1"
	var listNotTagsAnybody = []model.TagValues{
        {
            Key: &keyNotTagsAny,
            Values: &listValuesNotTagsAny,
        },
    }
	var listValuesNotTags = []string{
        "*value1",
	    "value2",
    }
	keyNotTags:= "key1"
	var listNotTagsbody = []model.TagValues{
        {
            Key: &keyNotTags,
            Values: &listValuesNotTags,
        },
    }
	var listValuesTagsAny = []string{
        "value1",
	    "value2",
    }
	keyTagsAny:= "key1"
	var listTagsAnybody = []model.TagValues{
        {
            Key: &keyTagsAny,
            Values: &listValuesTagsAny,
        },
    }
	var listValuesTags = []string{
        "*value1",
	    "value2",
    }
	keyTags:= "key1"
	var listTagsbody = []model.TagValues{
        {
            Key: &keyTags,
            Values: &listValuesTags,
        },
    }
	offsetListTagReq:= int32(100)
	limitListTagReq:= int32(100)
	request.Body = &model.ListTagReq{
		Matches: &listMatchesbody,
		Action: "filter",
		Offset: &offsetListTagReq,
		Limit: &limitListTagReq,
		NotTagsAny: &listNotTagsAnybody,
		NotTags: &listNotTagsbody,
		TagsAny: &listTagsAnybody,
		Tags: &listTagsbody,
	}
	response, err := client.ListTag(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

Más información

Para obtener un código de ejemplo del SDK de más lenguajes de programación, consulta la pestaña Código de ejemplo en Explorador de API. El código de ejemplo del SDK se puede generar automáticamente.

Códigos de estado

Código de estado

Descripción

204

Respuesta a la solicitud de consulta de recursos por etiqueta

Códigos de error

Consulte Códigos de error.