查询规则动作列表
功能介绍
应用服务器可调用此接口查询物联网平台中设置的规则动作列表。
调用方法
请参见如何调用API。
URI
GET /v5/iot/{project_id}/routing-rule/actions
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
参数说明:项目ID。获取方法请参见 获取项目ID 。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
rule_id |
否 |
String |
参数说明:规则触发条件ID。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
channel |
否 |
String |
参数说明:规则动作的类型。 取值范围:
|
app_type |
否 |
String |
参数说明:租户规则的生效范围。 取值范围:
|
app_id |
否 |
String |
参数说明:资源空间ID。此参数为非必选参数,rule_id不携带且app_type为APP时,该参数生效,可携带app_id查询指定资源空间下的规则动作列表,不携带app_id则查询默认资源空间下的规则动作列表。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
limit |
否 |
Integer |
参数说明:分页查询时每页显示的记录数。默认每页10条记录,最大设定每页50条记录。 取值范围:1-50的整数,默认值为10。 |
marker |
否 |
String |
参数说明:上一次分页查询结果中最后一条记录的ID,在上一次分页查询时由物联网平台返回获得。分页查询时物联网平台是按marker也就是记录ID降序查询的,越新的数据记录ID也会越大。若填写marker,则本次只查询记录ID小于marker的数据记录。若不填写,则从记录ID最大也就是最新的一条数据开始查询。如果需要依次查询所有数据,则每次查询时必须填写上一次查询响应中的marker值。 取值范围:长度为24的十六进制字符串,默认值为ffffffffffffffffffffffff。 |
offset |
否 |
Integer |
参数说明:表示从marker后偏移offset条记录开始查询。默认为0,取值范围为0-500的整数。当offset为0时,表示从marker后第一条记录开始输出。 - 限制offset最大值是出于API性能考虑,您可以搭配marker使用该参数实现翻页,例如每页50条记录,1-11页内都可以直接使用offset跳转到指定页,但到11页后,由于offset限制为500,您需要使用第11页返回的marker作为下次查询的marker,以实现翻页到12-22页。 取值范围:0-500的整数,默认为0。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 |
Instance-Id |
否 |
String |
参数说明:实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
actions |
Array of RoutingRuleAction objects |
规则动作信息列表。 |
count |
Integer |
满足查询条件的记录总数。 |
marker |
String |
本次分页查询结果中最后一条记录的ID,可在下一次分页查询时使用。 |
参数 |
参数类型 |
描述 |
---|---|---|
action_id |
String |
规则动作ID,用于唯一标识一条规则动作,在创建规则动作时由物联网平台分配获得,创建时无需携带,由平台统一分配唯一的action_id。 |
rule_id |
String |
规则动作对应的的规则触发条件ID。 |
app_id |
String |
资源空间ID。 |
channel |
String |
规则动作的类型,取值范围:
|
channel_detail |
ChannelDetail object |
通道配置信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
http_forwarding |
HttpForwarding object |
参数说明:http服务器转发消息内容。当channel为HTTP_FORWARDING时,必填。 |
dis_forwarding |
DisForwarding object |
参数说明:转发DIS服务消息内容。当channel为DIS_FORWARDING时,必填。 |
obs_forwarding |
ObsForwarding object |
参数说明:转发OBS服务消息内容。当channel为OBS_FORWARDING时,必填。 |
amqp_forwarding |
AmqpForwarding object |
参数说明:转发AMQP服务消息内容。当channel为AMQP_FORWARDING时,必填。 |
dms_kafka_forwarding |
DmsKafkaForwarding object |
参数说明:转发Kafka消息内容。当channel为DMS_KAFKA_FORWARDING时,必填。 |
roma_forwarding |
RomaForwarding object |
参数说明:转发Roma消息内容。当channel为ROMA_FORWARDING时,必填。(仅企业版支持) |
mysql_forwarding |
MysqlForwarding object |
参数说明:转发MySQL消息内容。当channel为MYSQL_FORWARDING时,必填。 |
influxdb_forwarding |
InfluxDBForwarding object |
参数说明:转发influxdb的配置参数。当channel为INFLUXDB_FORWARDING时,必填。(仅标准版和企业版支持) |
functiongraph_forwarding |
FunctionGraphForwarding object |
参数说明:转发云服务函数服务消息内容。当channel为FUNCTIONGRAPH_FORWARDING时,必填。(仅标准版和企业版支持) |
mrs_kafka_forwarding |
MrsKafkaForwarding object |
参数说明:转发Kafka消息内容。当channel为MRS_KAFKA_FORWARDING时,必填。(仅企业版支持) |
dms_rocketmq_forwarding |
DmsRocketMQForwarding object |
参数说明:转发rocketmq消息内容。当channel为DMS_ROCKETMQ_FORWARDING时,必填。(仅标准版和企业版支持) |
参数 |
参数类型 |
描述 |
---|---|---|
url |
String |
参数说明:用于接收满足规则条件数据的http服务器地址。HTTP为非数据加密传输模式,此模式下数据传输不安全, 建议使用更安全的HTTPS方式 |
cert_id |
String |
参数说明:证书id,请参见加载推送证书第3步获取证书ID |
cn_name |
String |
参数说明:当sni_enable为true时,此字段需要填写,内容为将要请求的服务端证书的域名,举例:domain:8443;当sni_enbale为false时,此字段默认不填写。 |
sni_enable |
Boolean |
参数说明:需要https服务端和客户端都支持此功能,默认为false,设成true表明Https的客户端在发起请求时,需要携带cn_name;https服务端根据cn_name返回对应的证书;设为false可关闭此功能。 |
signature_enable |
Boolean |
参数说明:是否启用签名。填写token时, 该参数必须为true, token才可以生效,否则token不生效。推荐设置成true,使用token签名验证消息是否来自平台。 |
token |
String |
参数说明:用作生成签名的Token,客户端可以使用该token按照规则生成签名并与推送消息中携带的签名做对比, 从而验证安全性。取值范围: 长度不超过32, 不小于3, 只允许字母、数字的组合。请参见HTTP/HTTPS推送基于Token认证物联网平台 |
参数 |
参数类型 |
描述 |
---|---|---|
region_name |
String |
参数说明:DIS服务对应的region区域 |
project_id |
String |
参数说明:DIS服务对应的projectId信息 |
stream_name |
String |
参数说明:DIS服务对应的通道名称,stream_id和stream_name两个参数必须携带一个,优先使用stream_id |
stream_id |
String |
参数说明:DIS服务对应的通道ID,stream_id和stream_name两个参数必须携带一个,优先使用stream_id |
参数 |
参数类型 |
描述 |
---|---|---|
region_name |
String |
参数说明:OBS服务对应的region区域 |
project_id |
String |
参数说明:OBS服务对应的projectId信息 |
bucket_name |
String |
参数说明:OBS服务对应的桶名称 |
location |
String |
参数说明:OBS服务对应桶的区域 |
file_path |
String |
参数说明:OBS服务中存储通道文件的自定义目录,多级目录可用(/)进行分隔,不可以斜杠(/)开头或结尾,不能包含两个以上相邻的斜杠(/) 取值范围: 英文字母(a-zA-Z)、数字(0-9)、下划线(_)、中划线(-)、斜杠(/)和大括号({}),最大字符长度256个字符。其中大括号只能用于对应模板参数。 模板参数:
|
参数 |
参数类型 |
描述 |
---|---|---|
region_name |
String |
参数说明:Kafka服务对应的region区域 |
project_id |
String |
参数说明:Kafka服务对应的projectId信息 |
addresses |
Array of SupportPrivateLinkNetAddress objects |
参数说明:转发kafka消息对应的地址列表 |
topic |
String |
参数说明:转发kafka消息关联的topic信息。 |
username |
String |
参数说明:转发kafka关联的用户名信息。 |
password |
String |
参数说明:转发kafka关联的密码信息。 |
mechanism |
String |
参数说明:转发kafka关联的SASL认证机制。 取值范围:
|
security_protocol |
String |
参数说明:kafka传输安全协议,此字段不填默认为SASL_SSL。当mechanism为PAAS或不填时,该字段不生效。 取值范围:
|
参数 |
参数类型 |
描述 |
---|---|---|
ip |
String |
参数说明:服务的对应IP |
port |
Integer |
参数说明:服务对应端口 |
domain |
String |
参数说明:服务对应的域名 |
参数 |
参数类型 |
描述 |
---|---|---|
addresses |
Array of NetAddress objects |
参数说明:转发roma消息对应的地址列表 |
topic |
String |
参数说明:转发roma消息关联的topic信息。 |
username |
String |
参数说明:转发roma关联的用户名信息。 |
password |
String |
参数说明:转发roma关联的密码信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
address |
NetAddress object |
转发roma消息对应的地址列表 |
db_name |
String |
参数说明:连接MYSQL数据库的库名。 取值范围:长度不超过64,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
username |
String |
参数说明:连接MYSQL数据库的用户名 |
password |
String |
参数说明:连接MYSQL数据库的密码 |
enable_ssl |
Boolean |
参数说明:客户端是否使用SSL连接服务端,默认为true, 若为false,则为非数据加密传输模式,此模式下数据传输不安全,建议您使用SSL模式。 |
table_name |
String |
参数说明:MYSQL数据库的表名 |
column_mappings |
Array of ColumnMapping objects |
参数说明:MYSQL数据库的列和流转数据的对应关系列表,最多支持32条映射关系。 |
参数 |
参数类型 |
描述 |
---|---|---|
address |
NetAddress object |
参数说明:转发InfluxDB消息对应的地址 |
db_name |
String |
参数说明:连接InfluxDB数据库的库名,不存在会自动创建 |
username |
String |
参数说明:连接InfluxDB数据库的用户名 |
password |
String |
参数说明:连接InfluxDB数据库的密码 |
measurement |
String |
参数说明:InfluxDB数据库的measurement,不存在会自动创建 |
column_mappings |
Array of ColumnMapping objects |
参数说明:InfluxDB数据库和流转数据的对应关系列表,最多支持32条映射关系。 |
参数 |
参数类型 |
描述 |
---|---|---|
ip |
String |
参数说明:服务的对应IP |
port |
Integer |
参数说明:服务对应端口 |
domain |
String |
参数说明:服务对应的域名 |
参数 |
参数类型 |
描述 |
---|---|---|
func_urn |
String |
参数说明:函数的URN(Uniform Resource Name),唯一标识函数。 |
func_name |
String |
参数说明:函数名称。 |
参数 |
参数类型 |
描述 |
---|---|---|
addresses |
Array of NetAddress objects |
参数说明:转发kafka消息对应的地址列表 |
topic |
String |
参数说明:转发kafka消息关联的topic信息。 |
kerberos_authentication |
Boolean |
是否Kerberos认证,默认为false。 |
参数 |
参数类型 |
描述 |
---|---|---|
addresses |
Array of NetAddress objects |
参数说明:转发rocketMQ消息对应的地址列表 |
topic |
String |
参数说明:转发rocketMQ消息关联的topic信息。 |
username |
String |
参数说明:转发rocketMQ关联的用户名信息。 |
password |
String |
参数说明:转发rocketMQ关联的密码信息。 |
enable_ssl |
Boolean |
是否开启SSL,默认为true。若为false,则为非数据加密传输模式,此模式下数据传输不安全,建议您开启SSL。 |
请求示例
列表查询规则动作。
GET https://{endpoint}/v5/iot/{project_id}/routing-rule/actions
响应示例
状态码: 200
Successful response
{ "actions" : [ { "rule_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce1", "action_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce0", "channel_detail" : { "amqp_forwarding" : { "queue_name" : "test" }, "obs_forwarding" : { "file_path" : "device_property_report/{YYYY}/{MM}/{DD}/{HH}", "project_id" : "project_id", "bucket_name" : "bucket_name", "region_name" : "region_name", "location" : "location" }, "http_forwarding" : { "sni_enable" : false, "cn_name" : "domain:8443", "cert_id" : "0ae892cfeff641158920300b2292d2ca", "url" : "http://host:port/callbackurltest" }, "dis_forwarding" : { "stream_name" : "stream_name", "project_id" : "project_id", "stream_id" : "stream_id", "region_name" : "region_name" }, "dms_kafka_forwarding" : { "addresses" : [ { "port" : 443, "ip" : "host", "domain" : "huawei.com" } ], "password" : "password", "project_id" : "project_id", "topic" : "topic", "region_name" : "region_name", "mechanism" : "PLAIN", "security_protocol" : "SASL_SSL", "username" : "username" } }, "channel" : "HTTP_FORWARDING", "app_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce2" } ], "count" : 10, "marker" : "5c90fa7d3c4e4405e8525079" }
SDK代码示例
SDK代码示例如下。
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 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.AbstractCredentials; 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.core.region.Region; import com.huaweicloud.sdk.iotda.v5.*; import com.huaweicloud.sdk.iotda.v5.model.*; public class ListRuleActionsSolution { 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"); // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。 String iotdaEndpoint = "<YOUR ENDPOINT>"; String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate"; .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios .withAk(ak) .withSk(sk); IoTDAClient client = IoTDAClient.newBuilder() .withCredential(auth) // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)" .withRegion(new Region("cn-north-4", iotdaEndpoint)) .build(); ListRuleActionsRequest request = new ListRuleActionsRequest(); try { ListRuleActionsResponse response = client.listRuleActions(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()); } } } |
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 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.auth.credentials import DerivedCredentials from huaweicloudsdkcore.region.region import Region as coreRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkiotda.v5 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.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。 iotdaEndpoint = "<YOUR ENDPOINT>"; projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate()) client = IoTDAClient.new_builder() \ .with_credentials(credentials) \ # 标准版/企业版:需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: .with_region(IoTDARegion.CN_NORTH_4) .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \ .build() try: request = ListRuleActionsRequest() response = client.list_rule_actions(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
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 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region" core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth" ) 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") // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址 endpoint := "<YOUR ENDPOINT>" projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate" WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios Build() client := iotda.NewIoTDAClient( iotda.IoTDAClientBuilder(). // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象 WithRegion(region.NewRegion("cn-north-4", endpoint)). WithCredential(auth). Build()) request := &model.ListRuleActionsRequest{} response, err := client.ListRuleActions(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
Successful response |
400 |
Bad Request |
401 |
Unauthorized |
403 |
Forbidden |
500 |
Internal Server Error |
错误码
请参见错误码。