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
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
project_id |
Sí |
String |
ID de proyecto |
resource_type |
Sí |
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
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
X-Auth-Token |
Sí |
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. |
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 |
Sí |
String |
Operación a realizar. Opciones de valor:
|
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á. |
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. |
Parámetros de respuesta
Código de estado: 204
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 |
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. |
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.