使用主题规则目标 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用主题规则目标

目标是定义规则引擎路由数据的位置的资源。目标可以跨规则重复使用,并且可能需要经过确认或配置才能使用。目标使规则引擎能够将数据发送到未与 AWS IoT 本地集成的其他服务。

主题规则目标用于验证您拥有或有权访问要将数据路由到的终端节点。当您创建带有终端节点的规则操作(例如,http 操作)或更新现有规则操作的终端节点时,AWS IoT 发送确认消息到包含唯一令牌的终端节点。要验证终端节点,您必须使用令牌调用 ConfirmTopicRuleDestination,验证您拥有或有权访问该终端节点。令牌有效期为三天,之后您需要创建新的 http 操作或调用 UpdateTopicRuleDestination API 以重新启动确认过程。您还可以通过浏览到 enableUrl 或从 AWS IoT 控制台的目标页面提供令牌来确认主题规则目标。

当 AWS IoT 收到发送到您终端节点的令牌时,将确认目标。您必须先启用目标,然后规则引擎才能使用它。目标可以处于以下状态之一:

ENABLED

目标已启用。目标必须处于 ENABLED 状态才能在规则中使用。您只能启用处于 DISABLED 状态的目标。

DISABLED

目标已确认,但已禁用。如果您希望暂时阻止流入终端节点的流量而无需再次完成确认流程,则此功能非常有用。您只能禁用处于 ENABLED 状态的目标。

IN_PROGRESS

正在确认目标。

ERROR

目标确认超时。

确认并启用目标之后,您账户中的任意规则可以使用目标。

创建主题规则目标

在您使用 AWS IoT 通过 http 操作创建规则时将创建目标。您还可以使用 CreateTopicRuleDestination API 或 AWS IoT 控制台创建目标。

在您创建目标时,AWS IoT 验证终端节点 URL 是否有效。如果 URL 有效,则会向该 URL 发送一条确认消息。确认请求的格式如下:

HTTP POST {confirmationUrl}/?confirmationToken={confirmationToken} Headers: x-amz-rules-engine-message-type: DestinationConfirmation x-amz-rules-engine-destination-arn:"arn:aws:iot:us-east-1:123456789012:ruledestination/http/7a280e37-b9c6-47a2-a751-0703693f46e4" Content-Type: application/json Body: { "arn":"arn:aws:iot:us-east-1:123456789012:ruledestination/http/7a280e37-b9c6-47a2-a751-0703693f46e4", "confirmationToken": "AYADeMXLrPrNY2wqJAKsFNn-…NBJndA", "enableUrl": "https://iot.us-east-1.amazonaws.com/confirmdestination/AYADeMXLrPrNY2wqJAKsFNn-…NBJndA", "messageType": "DestinationConfirmation" }

此消息的字段定义如下:

arn

待确认的主题规则目标的 ARN。

confirmationToken

确认令牌。示例中是已截断的令牌。您的令牌会更长。

enableUrl

您需要浏览以确认主题规则目标的 URL。

messageType

消息类型。

确认主题规则目标

您可以通过向确认消息中包含的 enableUrl 发出 HTTP GET 请求来确认目标。您可以使用确认消息中的令牌调用 ConfirmTopicRuleDestination,也可以使用 AWS IoT 控制台。

要将目标置于 ENABLED 状态,令牌必须有效。如果令牌已过期,则您必须调用 UpdateTopicRuleDestination 以重新启动确认过程。

注意

如果您通过调用 ConfirmTopicRuleDestination 确认主题规则目标,则目标状态将为 DISABLED,您需要在使用之前通过调用 UpdateTopicRuleDestination 来明确启用目标。

禁用主题规则目标

要禁用目标,请调用 UpdateTopicRuleDestination 并将主题规则目标的状态设置为 DISABLED

启用主题规则目标

要启用目标,请调用 UpdateTopicRuleDistination 并将主题规则的状态设置为 ENABLED。您无需重新验证 URL。

发送新确认消息

要为目标触发新确认消息,请调用 UpdateTopicRuleDistination 并将主题规则目标的状态设置为 IN_PROGRESS

删除主题规则目标

要删除主题规则目标,请调用 DeleteTopicRuleDestination