语法概览
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'