# 使用标签过滤实例 - ListInstancesByTag
#### 功能介绍
使用标签过滤实例。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cbh/cbh_02_0008.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cbh/cbh_02_00015.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                             | 访问级别 | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | cbh:instance:listInstancesByTag | List | -           | -   | -  | -      |
     
  
 
#### URI
POST /v2/{project_id}/cbs/instance/filter
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释**： 项目ID，用于唯一标识用户项目。获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-cbh/cbh_02_0020.html)。 **约束限制**： 不涉及 **取值范围**： 只能由字母和数字组成，长度为32个字符。 **默认取值**： 不涉及 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释**： 用户Token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。获取方法请参见[获取用户Token](https://support.huaweicloud.com/api-cbh/cbh_02_0010.html)。 **约束限制**： 不涉及 **取值范围**： 字符串，长度为1\~28000个字符。 **默认取值**： 不涉及 |
| limit        | 否    | String | 查询记录数（action为count时无此参数）如果action为filter默认为1000，limit最多为1000，不能为负数，最小值为1。                                                                                                                                                                                                                                                                                                                                                                                                            |
| offset       | 否    | String | 索引位置，偏移量（action为count时无此参数）从第一条数据偏移offset条数据后开始查询，如果action为filter默认为0（偏移0条数据，表示从第一条数据开始查询），必须为数字，不能为负数。                                                                                                                                                                                                                                                                                                                                                                             |
   
表3请求Body参数 
| 参数              | 是否必选 | 参数类型                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| without_any_tag | 否    | Boolean                                                      | 不包含任意一个标签，该字段为true时查询所有不带标签的资源。 此时忽略 "tags"、"tags_any"、"not_tags"、"not_tags_any"字段。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| tags            | 否    | Array of [Tags] objects   | 包含标签，最多包含50个key，每个key下面的value最多10个，每个key对应的value可以为空数组但结构体不能缺失。 - Key不能重复，同一个key中values不能重复。   - 结果返回包含所有标签的资源列表，key之间是与的关系，key-value结构中value是或的关系。   - 无tag过滤条件时返回全量数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| tags_any        | 否    | Array of [Tags] objects   | - 包含任意标签，最多包含50个key，每个key下面的value最多10个。   - 每个key对应的value可以为空数组但结构体不能缺失。Key不能重复，同一个key中values不能重复。   - 结果返回包含标签的资源列表，key之间是或的关系，key-value结构中value是或的关系。   - 无过滤条件时返回全量数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| not_tags        | 否    | Array of [Tags] objects   | - 不包含标签，最多包含50个key，每个key下面的value最多10个。   - 每个key对应的value可以为空数组但结构体不能缺失。Key不能重复，同一个key中values不能重复。   - 结果返回不包含标签的资源列表，key之间是与的关系，key-value结构中value是或的关系。   - 无过滤条件时返回全量数据                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| not_tags_any    | 否    | Array of [Tags] objects   | - 不包含任意标签，最多包含50个key，每个key下面的value最多10个。   - 每个key对应的value可以为空数组但结构体不能缺失。Key不能重复，同一个key中values不能重复。   - 结果返回不包含标签的资源列表，key之间是或的关系，key-value结构中value是或的关系。   - 无过滤条件时返回全量数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sys_tags        | 否    | Array of [Tags] objects   | - 仅op_service权限可以使用此字段做资源实例过滤条件。   - 目前TMS调用时只包含一个tag结构体。   - key：_sys_enterprise_project_id。   - value：企业项目id列表。   - 目前TMS调用时，key下面只包含一个value。0表示默认企业项目。   - sys_tags和租户标签过滤条件（without_any_tag 、tags、tags_any、not_tags、not_tags_any）不能同时使用。   - 无sys_tags时按照tag接口处理，无tag过滤条件时返回全量数据。    |
| matches         | 否    | Array of [Match] objects | - 搜索字段，key为要匹配的字段，如resource_name等。   - value为匹配的值。key为固定字典值，不能包含重复的key或不支持的key。   - 根据key的值确认是否需要模糊匹配，如resource_name默认为模糊搜索（不区分大小写），如果value为空字符串精确匹配（多数服务不存在资源名称为空的情况，因此此类情况返回空列表）。   - resource_id为精确匹配。第一期只做resource_name，后续再扩展。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表4Tags 
| 参数     | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| key    | 是    | String           | 键。 - key不能为空，长度1\~128个字符（中文也可以输入128个字符）   - 可用 UTF-8 格式表示的字母(包含中文)、数字和空格，以及以下字符： _ . : = + - @，*sys_开头属于系统标签，租户不能输入，建议正则：\^((?!*sys*)\[\\p{L}\\p{Z}\\p{N}*.:=+\\-@\]\*)$      |
| values | 是    | Array of strings | 值列表。 - 长度0\~255个字符（中文也可以输入255个字符）   - 可用 UTF-8 格式表示的字母(包含中文)、数字和空格，以及以下字符： _ . : %%= + - @ 建议正则：\^(\[\\p{L}\\p{Z}\\p{N}_.:/=+-@\]\*)$，资源标签值可以为空（empty or null），预定义标签值不可以为空    |
   
 表5Match 
| 参数    | 是否必选 | 参数类型   | 描述                                |
|:---|:---|:---|:---|
| key   | 是    | String | 键。第一期限定为resource_name，后续扩展。       |
| value | 是    | String | 值。每个值最大长度255个unicode字符 。不校验字符集范围。 |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数          | 参数类型                                                                  | 描述                |
|:---|:---|:---|
| resources   | Array of [Resources] objects | 根据查询模式获取到的资源实例详情。 |
| total_count | Integer                                                               | 总记录数。             |
   
 表7Resources 
| 参数              | 参数类型                                                                      | 描述        |
|:---|:---|:---|
| resource_id     | String                                                                    | 实例ID。     |
| resource_detail | [InstanceDetail] object     | CBH实例详情   |
| tags            | Array of [ResourceTag] objects | tags。     |
| sys_tags        | Array of [ResourceTag] objects | sys_tags。 |
| resource_name   | String                                                                    | 资源名称。     |
   
 表8InstanceDetail 
| 参数                    | 参数类型                                                                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| name                  | String                                                              | **参数解释**： 云堡垒机实例名称。 **取值范围**： 字符串，长度为1\~65个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| server_id             | String                                                              | **参数解释**： 云堡垒机服务器ID。 **取值范围**： 字符串，长度为1\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| instance_id           | String                                                              | **参数解释**： 云堡垒机实例ID。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| alter_permit          | Boolean                                                             | **参数解释**： 云堡垒机实例是否可以扩容。 **取值范围**： - true：是   - false：否                                                                                                                                                                                                                                                                                                                                                                                                              |
| enterprise_project_id | String                                                              | **参数解释**： 企业项目ID。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| period_num            | String                                                              | **参数解释**： 云堡垒机实例订购周期数。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| start_time            | String                                                              | **参数解释**： 云堡垒机实例开始时间（已废弃）。 **取值范围**： 时间戳字符串，长度为1\~12个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| end_time              | String                                                              | **参数解释**： 云堡垒机实例结束时间（已废弃）。 **取值范围**： 时间戳字符串，长度为1\~12个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| created_time          | String                                                              | **参数解释**： 云堡垒机实例创建时间。 **取值范围**： UTC格式字符串，长度为1\~25个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| upgrade_time          | Long                                                                | **参数解释**： 预约的升级时间。 **取值范围**： 实际时间对应的毫秒时间戳。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| update                | String                                                              | **参数解释**： 云堡垒机实例是否可以升级。 **取值范围**： - OLD：当前已是最新版本，无需升级   - NEW：可以升级小版本   - CROSS_OS：可以跨版本升级   - ROLLBACK：可以回滚    |
| bastion_version       | String                                                              | **参数解释**： 云堡垒机实例当前版本。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| az_info               | [az_info] object             | **参数解释**： 可用区信息。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| status_info           | [status_info] object     | **参数解释**： 状态信息。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| resource_info         | [resource_info] object | **参数解释**： 资源信息。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| network               | [network] object             | **参数解释**： 网络信息。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ha_info               | [ha_info] object             | **参数解释**： 主备信息。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
 表9az_info 
| 参数                        | 参数类型   | 描述                                                                                                                                                                                               |
|:---|:---|:---|
| region                    | String | **参数解释**： 云堡垒机实例所在可用区ID。 **取值范围**： 字符串，长度为1\~36个字符。                            |
| zone                      | String | **参数解释**： 云堡垒机实例所在可用区ID（若为主备类型的实例，则此参数为主机实例的可用区ID）。 **取值范围**： 字符串，长度为1\~36个字符。 |
| availability_zone_display | String | **参数解释**： 云堡垒机实例所在可用区名称（若为主备类型的实例，则此参数为主机实例的可用区名称）。 **取值范围**： 字符串，长度为1\~36个字符。 |
| slave_zone                | String | **参数解释**： 云堡垒机备机实例所在可用区。 **取值范围**： 字符串，长度为1\~36个字符。                            |
| slave_zone_display        | String | **参数解释**： 云堡垒机备机实例所在可用区名称。 **取值范围**： 字符串，长度为1\~36个字符。                          |
   
 表10status_info 
| 参数                     | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| status                 | String | **参数解释**： 云堡垒机实例运行状态。 **取值范围**： - SHUTOFF：已关闭   - ACTIVE：运行中   - DELETING：删除中   - BUILD：创建中   - DELETED：已删除   - ERROR：故障   - HAWAIT：等待备机创建成功   - FROZEN：已冻结   - UPGRADING：升级中   - UNPAID：待支付   - RESIZE：规格变更中   - DILATATION：扩容中   - HA：配置HA中                                              |
| task_status            | String | **参数解释**： 云堡垒机实例当前的任务状态。 **取值范围**： - powering-on：开启   - powering-off：关闭   - rebooting：重启   - delete_wait：删除   - frozen：冻结   - NO_TASK：运行   - unfrozen：解冻   - alter：变更   - updating：升级中   - configuring-ha：配置HA   - data-migrating：数据迁移中   - rollback：版本回滚中   - traffic-switchover：流量切换中    |
| create_instance_status | String | **参数解释**： 云堡垒机实例在创建实例过程中的状态信息。 **取值范围**： - Waiting for payment：等待支付   - creating-network：创建网络   - creating-server：创建服务   - tranfering-horizontal-network：网络打通   - adding-policy-route：添加路由策略   - configing-dns：配置DNS   - starting-cbs-service：服务运行中   - setting-init-conf：初始化   - buying-EIP：购买弹性公网IP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| instance_status        | String | **参数解释**： 云堡垒机实例状态。 **取值范围**： - building：创建中   - deleting：删除中   - deleted：已删除   - unpaid：未支付   - upgrading：升级中   - resizing：扩容中   - abnormal：异常   - error：故障   - ok：正常                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| instance_description   | String | **参数解释**： 云堡垒机实例信息描述。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| fail_reason            | String | **参数解释**： 云堡垒机实例创建实例失败原因。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表11resource_info 
| 参数               | 参数类型             | 描述                                                                                                                                                                                   |
|:---|:---|:---|
| specification    | String           | **参数解释**： 云堡垒机实例规格。 **取值范围**： 字符串，长度为1\~36个字符。                     |
| order_id         | String           | **参数解释**： 订单ID。 **取值范围**： 字符串，长度为1\~64个字符。                         |
| resource_id      | String           | **参数解释**： 云堡垒机实例的资源ID，UUID格式显示。 **取值范围**： 字符串，长度为1\~36个字符。         |
| data_disk_size   | Number           | **参数解释**： 云堡垒机实例数据盘大小，单位TB。 **取值范围**： 数字，取值范围为0\~300。              |
| disk_resource_id | Array of strings | **参数解释**： 云堡垒机实例数据盘资源ID。 **取值范围**： 字符串数组，最多21个元素，每个字符串长度为1\~64个字符。 |
   
 表12network 
| 参数                | 参数类型   | 描述                                                                                                                                                                                   |
|:---|:---|:---|
| vip               | String | **参数解释**： 云堡垒机实例浮动IP。(实例为主备模式时返回对应的值) **取值范围**： 字符串，长度为1\~36个字符。   |
| web_port          | String | **参数解释**： 云堡垒机实例WEB界面访问的端口号。 **取值范围**： 字符串，长度为1\~36个字符。            |
| public_ip         | String | **参数解释**： 云堡垒机实例弹性公网IP。 **取值范围**： 字符串，长度为1\~15个字符。                 |
| public_id         | String | **参数解释**： 云堡垒机实例已绑定的弹性公网IP的ID，UUID格式表示。 **取值范围**： 字符串，长度为1\~36个字符。 |
| private_ip        | String | **参数解释**： 云堡垒机实例私有IP。 **取值范围**： 字符串，长度为1\~15个字符。                   |
| vpc_id            | String | **参数解释**： 云堡垒机实例所在虚拟私有云ID。 **取值范围**： 字符串，长度为1\~36个字符。              |
| subnet_id         | String | **参数解释**： 云堡垒机实例所在子网ID。 **取值范围**： 字符串，长度为1\~36个字符。                 |
| security_group_id | String | **参数解释**： 云堡垒机实例所属的安全组ID。 **取值范围**： 字符串，长度为1\~36个字符。               |
   
 表13ha_info 
| 参数            | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| ha_id         | String | **参数解释**： 主备ID。 **取值范围**： 字符串，长度为1\~36个字符。                                                                                                                                                                                                                                                                                                                                                              |
| instance_type | String | **参数解释**： 实例类型。 **取值范围**： - master：主   - slave：备    |
   
 表14ResourceTag 
| 参数    | 参数类型   | 描述               |
|:---|:---|:---|
| key   | String | 键。最大长度128个字符。    |
| value | String | 值。每个值最大长度255个字符。 |
   
**状态码：400**
表15响应Body参数 
| 参数                | 参数类型   | 描述      |
|:---|:---|:---|
| error_code        | String | 错误码。    |
| error_description | String | 请求参数错误。 |
   
**状态码：401**
表16响应Body参数 
| 参数                | 参数类型   | 描述         |
|:---|:---|:---|
| error_code        | String | 错误码。       |
| error_description | String | 校验Token失败。 |
   
**状态码：403**
表17响应Body参数 
| 参数                | 参数类型   | 描述       |
|:---|:---|:---|
| error_code        | String | 错误码。     |
| error_description | String | 租户无权限操作。 |
   
**状态码：404**
表18响应Body参数 
| 参数                | 参数类型   | 描述         |
|:---|:---|:---|
| error_code        | String | 错误码。       |
| error_description | String | 没有找到CBH资源。 |
   
#### 请求示例
```
{
  "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" ]
  } ]
}
```
#### 响应示例
**状态码：200**
```
{
  "resources" : {
    "resource_id" : "cdfs_cefs_wesas_12_dsad",
    "resource_name" : "resource1",
    "resource_detail" : {
      "name" : "name",
      "server_id" : "server_id",
      "instance_id" : "instance_id",
      "alter_permit" : true,
      "enterprise_project_id" : "enterprise_project_id",
      "period_num" : "period_num",
      "start_time" : "start_time",
      "end_time" : "end_time",
      "created_time" : "created_time",
      "upgrade_time" : 11111111111111111111,
      "update" : "OLD",
      "bastion_version" : "bastion_version",
      "az_info" : {
        "region" : "region",
        "zone" : "zone",
        "availability_zone_display" : "availability_zone_display",
        "slave_zone" : "slave_zone",
        "slave_zone_display" : "slave_zone_display"
      },
      "status_info" : {
        "status" : "SHUTOFF",
        "task_status" : "powering-off",
        "create_instance_status" : "Waiting for payment",
        "instance_status" : "building",
        "instance_description" : "instance_description",
        "fail_reason" : "fail_reason"
      },
      "resource_info" : {
        "specification" : "specification",
        "order_id" : "order_id",
        "resource_id" : "resource_id",
        "data_disk_size" : 200,
        "disk_resource_id" : [ "disk_resource_id1", "disk_resource_id2" ]
      },
      "network" : {
        "vip" : "vip",
        "web_port" : "web_port",
        "public_ip" : "public_ip",
        "public_id" : "public_id",
        "private_ip" : "private_ip",
        "vpc_id" : "vpc_id",
        "subnet_id" : "subnet_id",
        "security_group_id" : "security_group_id"
      },
      "ha_info" : {
        "ha_id" : "ha_id",
        "instance_type" : "master"
      }
    },
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    }, {
      "key" : "key2",
      "value" : "value1"
    } ],
    "sys_tags" : [ {
      "key" : "_sys_enterprise_project_id",
      "value" : "5aa119a8-xxxx-45a7-xxxx-88e12788xxxx"
    } ]
  },
  "total_count" : 1000
}
```
#### 状态码
| 状态码 | 描述                      |
|:---|:---|
| 200 | List CBH ByTags Success |
| 400 | Bad Request             |
| 401 | Unauthorized            |
| 403 | Forbidden               |
| 404 | Not Found               |
| 500 | 系统异常                    |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cbh/ErrorCode.html)。
