语法概览
ResourceQL能够提供类似SQL的服务来灵活地查询您的云资源。
SELECT name, created, updated FROM resources WHERE region_id = 'regionid1'
语句不区分大小写,即'SELECT COUNT(*)' 和'select CoUnT(*)'没有区别。用单引号表示字符串字面量。
ResourceQL支持以下7种数据类型。其中数组类型用'[]'来索引某个位置(标号从'1'开始)。
类型名 | 类型英文 |
|---|---|
整型 | int/integer |
浮点型 | float/double |
布尔型 | boolean |
数组型 | array |
字符串 | string |
字典型 | object |
时刻型 | date |
您的所有云资源构成了一张表,表名固定为resouces。您的资源聚合器下的资源构成了一张表,表名固定为aggregator_resources。表中每一行记录了一条数据,每一列约定如下:
资源参数 | 参数类型 | 含义 |
|---|---|---|
id | String | 资源ID。 |
name | String | 资源名称。 |
provider | String | 云服务名称。 |
type | String | 资源类型。 |
region_id | String | 区域ID。 |
project_id | String | 项目ID。 |
ep_id | String | 企业项目ID。 |
checksum | String | 资源详情校验码。 |
created | Date | 资源创建时间。 |
updated | Date | 资源更新时间。 |
provisioning_state | String | 资源操作状态。 |
tag | Array(Map<String,String>) | 资源Tag。 |
properties | Map<String,Object> | 资源详细属性。 |
资源聚合器表aggregator_resources则额外支持资源参数domain_id,类型为String,含义为账号ID。
不同类型的资源可以用'provider'和'type'来区分,它们对应的'properties'字段的结构也就不一样。 例如ecs的cloudservcer包含字段flavor,而vpc的publicips包含字段bandwidth。
各个资源类型properties内支持的字段以及类型可以通过配置审计控制台和API接口两种方式查看,具体请参见如何获取各对接云服务上报Config的资源属性?。
对于某个具体的资源类型,我们可以用'.'嵌套的方式去查询'properties'下的具体字段。例如,弹性云服务器的'properties'里有'status'和'addresses'字段,可以用如下语句查询正在运行的弹性云服务器及其地址。
SELECT name, created, updated, properties.addresses FROM resources WHERE provider = 'ecs' AND type = 'cloudservers' AND properties.status = 'ACTIVE'

