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