注意事项
HTTP 状态码
1.11 数据流转规则管理
1.11.7 创建规则动作
接口说明
应用服务器可调用此接口在物联网平台创建一条规则动作。
调试
您可以在API Explorer中调试该接口。
URI
请求方法 POST
URI /v5/iot/{project_id}/routing-rule/actions 传输协议 HTTPS
请求参数
名称 必选/可
选
类型 位置 说明
X-Auth-Token 必选 String Head
er 参数说明:用户Token。通过调用 IAM服务 获取IAM用户Token接口 获取,接口返回的响应消息头中
“X-Subject-Token”就是需要获 取的用户Token。简要的获取方法 样例请参见 Token认证。
Instance-Id 可选 String Head
er 参数说明:实例ID。物理多租下各 实例的唯一标识,一般华为云租户 无需携带该参数,仅在物理多租场 景下从管理面访问API时需要携带 该参数。
project_i
d 必选 String Path 参数说明:项目ID。获取方法请参 见 获取项目ID。
名称 必选/可 选
类型 位置 说明
rule_id 必选 String Body 参数说明:规则触发条件ID,用于 唯一标识一条规则触发条件,在创 建规则时由物联网平台分配获得。
取值范围:长度不超过36,只允许 字母、数字、下划线(_)、连接 符(-)的组合。
channel 必选 String Body 参数说明:规则动作的类型。
取值范围:
● HTTP_FORWARDING:HTTP 服务消息类型。
● DIS_FORWARDING:转发DIS 服务消息类型。
● OBS_FORWARDING:转发 OBS服务消息类型。
● AMQP_FORWARDING:转发 AMQP服务消息类型。
● DMS_KAFKA_FORWARDING:
转发kafka消息类型。
channel_
detail 必选 ChannelDeta
il Object Body 参数说明:通道参数。
表1-63 ChannelDetail
名称 必选/可选 类型 说明
http_forwa
rding 可选 HttpForwardi
ng Object 参数说明:http服务器转发消息内容。
当type为HTTP_FORWARDING时,必 填。
dis_forwar
ding 可选 DisForwardin
g Object 参数说明:转发DIS服务消息内容。当 type为DIS_FORWARDING时,必填。
obs_forwa
rding 可选 ObsForwardi
ng Object 参数说明:转发OBS服务消息内容。当 type为OBS_FORWARDING时,必填。
amqp_for
warding 可选 AmqpForwar
ding Object 参数说明:转发AMQP服务消息内容。
当type为AMQP_FORWARDING时,必 填。
dms_kafka _forwardin g
可选 DmsKafkaFor warding Object
参数说明:转发Kafka消息内容。当 type为DMS_KAFKA_FORWARDING 时,必填。
表1-64 HttpForwarding
名称 必选/可选 类型 说明
url 必选 String 参数说明:用于接收满足规则条件数据
的http服务器地址。
cert_id 可选 String 参数说明:证书id,请参见获取证书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 可关闭此功能。
表1-65 DisForwarding
名称 必选/可选 类型 说明
region_na
me 必选 String 参数说明:DIS服务对应的region区域 project_id 必选 String 参数说明:DIS服务对应的projectId信
息 stream_na
me 可选 String 参数说明:DIS服务对应的通道名称,
stream_id和stream_name两个参数必 须携带一个,优先使用stream_id stream_id 可选 String 参数说明:DIS服务对应的通道ID,
stream_id和stream_name两个参数必 须携带一个,优先使用stream_id
表1-66 ObsForwarding
名称 必选/可选 类型 说明
region_na
me 必选 String 参数说明:OBS服务对应的region区域 project_id 必选 String 参数说明:OBS服务对应的projectId信
息 bucket_na
me 必选 String 参数说明:OBS服务对应的桶名称
名称 必选/可选 类型 说明
location 可选 String 参数说明:OBS服务对应桶的区域 file_path 可选 String 参数说明:OBS服务中存储通道文件的
自定义目录,多级目录可用(/)进行分 隔,不可以斜杠(/)开头或结尾,不能 包含两个以上相邻的斜杠(/)
取值范围: 英文字母(a-zA-Z)、数字 (0-9)、下划线(_)、中划线(-)、斜杠 (/)和大括号({}),最大字符长度256个 字符。其中大括号只能用于对应模板参 数。
模板参数:
- \{YYYY\} 年 - \{MM\} 月 - \{DD\} 日 - \{HH\} 小时
例如:自定义目录结构为\{YYYY\}/\
{MM\}/\{DD\}/\{HH\},则会在转发数 据时,根据当前时间往对应的目录结构 2021>08>11>09下生成对应的数据。
表1-67 AmqpForwarding
名称 必选/可选 类型 说明
queue_na
me 必选 String 参数说明:用于接收满足规则条件数据
的amqp queue。
表1-68 DmsKafkaForwarding
名称 必选/可选 类型 说明
region_na
me 必选 String 参数说明:Kafka服务对应的region区 域
project_id 必选 String 参数说明:Kafka服务对应的projectId 信息
addresses 必选 List<NetAddr
ess> 参数说明:转发kafka消息对应的地址 列表
topic 必选 String 参数说明:转发kafka消息关联的topic 信息。
username 可选 String 参数说明:转发kafka关联的用户名信
名称 必选/可选 类型 说明
password 可选 String 参数说明:转发kafka关联的密码信 息。
mechanis
m 可选 String 参数说明:转发kafka关联的鉴权机
制。
取值范围:
● PAAS:非SASL鉴权。
● PLAIN:SASL/PLAIN模式。需要填 写对应的用户名密码信息。
表1-69 NetAddress
名称 必选/可选 类型 说明
ip 可选 String 参数说明:服务的对应IP
port 可选 Integer 参数说明:服务对应端口
domain 可选 String 参数说明:服务对应的域名
响应参数
名称 类型 说明
action_id String 规则动作ID,用于唯一标识一条规则动作,在创 建规则动作时由物联网平台分配获得,创建时无 需携带,由平台统一分配唯一的action_id。
rule_id String 规则动作对应的的规则触发条件ID。
app_id String 资源空间ID。
channel String 规则动作的类型,取值范围:
● HTTP_FORWARDING:HTTP服务消息类型。
● DIS_FORWARDING:转发DIS服务消息类型。
● OBS_FORWARDING:转发OBS服务消息类 型。
● AMQP_FORWARDING:转发AMQP服务消息 类型。
● DMS_KAFKA_FORWARDING:转发kafka消息 类型。
channel_det
ail ChannelDetail
Object 通道配置信息。
表1-70 ChannelDetail
名称 类型 说明
http_forwar
ding HttpForwardin
g Object 参数说明:http服务器转发消息内容。当type为 HTTP_FORWARDING时,必填。
dis_forwardi
ng DisForwarding
Object 参数说明:转发DIS服务消息内容。当type为 DIS_FORWARDING时,必填。
obs_forward
ing ObsForwardin
g Object 参数说明:转发OBS服务消息内容。当type为 OBS_FORWARDING时,必填。
amqp_forwa
rding AmqpForwardi
ng Object 参数说明:转发AMQP服务消息内容。当type为 AMQP_FORWARDING时,必填。
dms_kafka_f
orwarding DmsKafkaForw
arding Object 参数说明:转发Kafka消息内容。当type为 DMS_KAFKA_FORWARDING时,必填。
表1-71 HttpForwarding
名称 类型 说明
url String 参数说明:用于接收满足规则条件数据的http服 务器地址。
cert_id String 参数说明:证书id,请参见获取证书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可关闭此 功能。
表1-72 DisForwarding
名称 类型 说明
region_nam
e String 参数说明:DIS服务对应的region区域 project_id String 参数说明:DIS服务对应的projectId信息 stream_nam
e String 参数说明:DIS服务对应的通道名称,stream_id 和stream_name两个参数必须携带一个,优先使 用stream_id
名称 类型 说明
stream_id String 参数说明:DIS服务对应的通道ID,stream_id和 stream_name两个参数必须携带一个,优先使用 stream_id
表1-73 ObsForwarding
名称 类型 说明
region_nam
e String 参数说明:OBS服务对应的region区域 project_id String 参数说明:OBS服务对应的projectId信息 bucket_nam
e String 参数说明:OBS服务对应的桶名称
location String 参数说明:OBS服务对应桶的区域
file_path String 参数说明:OBS服务中存储通道文件的自定义目 录,多级目录可用(/)进行分隔,不可以斜杠(/)开 头或结尾,不能包含两个以上相邻的斜杠(/) 取值范围: 英文字母(a-zA-Z)、数字(0-9)、下划 线(_)、中划线(-)、斜杠(/)和大括号({}),最大字 符长度256个字符。其中大括号只能用于对应模 板参数。
模板参数:
- \{YYYY\} 年 - \{MM\} 月 - \{DD\} 日 - \{HH\} 小时
例如:自定义目录结构为\{YYYY\}/\{MM\}/\{DD
\}/\{HH\},则会在转发数据时,根据当前时间往对 应的目录结构2021>08>11>09下生成对应的数 据。
表1-74 AmqpForwarding
名称 类型 说明
queue_nam
e String 参数说明:用于接收满足规则条件数据的amqp
queue。
表1-75 DmsKafkaForwarding
名称 类型 说明
region_nam
e String 参数说明:Kafka服务对应的region区域 project_id String 参数说明:Kafka服务对应的projectId信息 addresses List<NetAddres
s> 参数说明:转发kafka消息对应的地址列表
topic String 参数说明:转发kafka消息关联的topic信息。
username String 参数说明:转发kafka关联的用户名信息。
password String 参数说明:转发kafka关联的密码信息。
mechanism String 参数说明:转发kafka关联的鉴权机制。
取值范围:
● PAAS:非SASL鉴权。
● PLAIN:SASL/PLAIN模式。需要填写对应的用 户名密码信息。
表1-76 NetAddress
名称 类型 说明
ip String 参数说明:服务的对应IP
port Integer 参数说明:服务对应端口 domain String 参数说明:服务对应的域名
请求示例
POST https://{Endpoint}/v5/iot/{project_id}/routing-rule/actions Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********
{ "rule_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce0", "channel" : "HTTP_FORWARDING",
"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"
"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" : [ { "project_id" : "project_id", "topic" : "topic",
"region_name" : "region_name", "mechanism" : "PLAIN", "username" : "username"
} }}
响应示例
Status Code: 201 Created
Content-Type: application/json
{ "action_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce1", "rule_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce0", "app_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce2", "channel" : "HTTP_FORWARDING",
"channel_detail" : { "http_forwarding" : {
"url" : "http://host:port/callbackurltest"
}
400 IOTDA .00900 5
The request callbackurl is invalid.
请求中的callbackurl地址不 合法
The request callbackurl is invalid.
请求中的callbackurl地址不 合法
The request
channel is invalid. 请求中channel参数 不合法
请排查请求中的 channel参数是否符 合华为云文档要 求。
HTTP
the rule action with the same channeldetail is already exist
规则动作中的
channeldetail重复 规则已存在,无需 重复注册或者删除 无用规则后重试。
IOTDA .01600 4
The queue name is
invalid 队列名称不合法 请排查请求参数是
否符合华为云文档 要求。
403 IOTDA .00002 1
Operation not allowed. User not found by IAM token or the authorized user has not subscribed IOTDA service.
没有找到IAM Token所对应的用户 信息或该用户没有 订阅设备接入服务
(IOTDA)
请排查IAM Token 所在用户是否订阅
Operation not allowed. The user does not have the permission
The application
does not exist. 该应用不存在 请确定是否已在平
Operation not allowed. The parameter 'app_id' is not carried, and the authorized user has more than one applications.
Include the
parameter 'app_id', or contact Huawei technical support engineers to merge application data.
HTTP
Operation not allowed.
Application not found by
authorized user or the authorized user has no application.
Operation not allowed. The application does not belong to the authorized user.
应用与用户信息不
The count of subscription subject exceeds the limit.
应用订阅记录数达 到上限。
请删除多余订阅记 录,该应用订阅数 量已达到上线。
404 IOTDA .01000 2
The rule does not
exist. 该规则不存在 请确认平台是否存
在该规则或请求参 数是否正确。
500 IOTDA .00000