添加传播属性以丰富消息 - AWS IoT Core

添加传播属性以丰富消息

在 AWS IoT Core 中,您可以通过添加传播属性(来自事物属性或连接详细信息的上下文元数据)来丰富来自设备的 MQTT 消息。这个过程称为消息丰富,在各种场景中都很有用。例如,您可以为每个入站发布操作丰富消息,而无需进行任何设备端更改或需要使用规则。通过利用传播属性,您可以受益于更高效和更具成本效益的方式来丰富您的物联网数据,而无需配置规则或管理重新发布配置的复杂性。

消息丰富功能适用于使用基本摄取消息代理的 AWS IoT Core 客户。需要注意的是,虽然发布设备可以使用任何 MQTT 版本,但订阅者(使用消息的应用程序或服务)必须支持 MQTT 5 才能接收带有传播属性的丰富消息。丰富的消息将作为 MQTT 5 用户属性添加到从设备发布的每条消息中。如果您使用规则,您可以利用 get_user_properties 函数来检索丰富的数据,以便基于该数据进行消息路由或处理。

在 AWS IoT Core 中,您可以在创建或更新事物类型时,通过使用 AWS 管理控制台 或 AWS CLI 来添加传播属性。

重要

添加传播属性时,必须确保发布消息的客户端已使用证书进行身份验证。有关更多信息,请参阅 客户端身份验证

注意

如果您尝试在控制台内使用 MQTT 测试客户端测试此功能,它可能无法工作,因为此功能要求 MQTT 客户端使用关联的证书进行身份验证。

AWS 管理控制台

要使用 AWS 管理控制台 为消息丰富添加传播属性
  1. 在 AWS IoT 控制台中打开 AWS IoT 主页。在左侧导航栏中,从管理下选择所有设备。然后选择事物类型

  2. 事物类型页面上,选择创建事物类型

    要通过更新事物类型来配置消息丰富,请选择一个事物类型。然后在事物类型详细信息页面上,选择更新

  3. 创建事物类型页面上,在事物类型属性中选择或输入事物类型信息。

    如果您选择更新事物类型,您将在上一步选择更新后看到事物类型属性

  4. 附加配置中,展开传播属性。然后选择事物属性并输入您希望填充到发布的 MQTT5 消息中的事物属性。使用控制台,您最多可以添加三个事物属性。

    传播属性部分,选择连接属性并输入属性类型,以及可选的属性名称。

  5. 可选地添加标签。然后选择创建事物类型

    如果您选择更新事物类型,请选择更新事物类型

AWS CLI

  1. 要通过使用 AWS CLI 创建新事物类型来为消息丰富添加传播属性,请运行 create-thing-type 命令。示例命令如下。

    aws iot create-thing-type \ --thing-type-name "LightBulb" \ --thing-type-properties "{\"mqtt5Configuration\":{\"propagatingAttributes\":[{\"userPropertyKey\":\"iot:ClientId\", \"connectionAttribute\":\"iot:ClientId\"}, {\"userPropertyKey\":\"test\", \"thingAttribute\":\"A\"}]}}" \

    此命令的输出可能如下所示。

    { "thingTypeName": "LightBulb", "thingTypeArn": "arn:aws:iot:us-west-2:123456789012:thingtype/LightBulb", "thingTypeId": "ce3573b0-0a3c-45a7-ac93-4e0ce14cd190" }
  2. 要通过使用 AWS CLI 更新事物类型来配置消息丰富,请运行 update-thing-type 命令。请注意,运行此命令时您只能更新 mqtt5Configuration。示例命令如下。

    aws iot update-thing-type \ --thing-type-name "MyThingType" \ --thing-type-properties "{\"mqtt5Configuration\":{\"propagatingAttributes\":[{\"userPropertyKey\":\"iot:ClientId\", \"connectionAttribute\":\"iot:ClientId\"}, {\"userPropertyKey\":\"test\", \"thingAttribute\":\"A\"}]}}" \

    此命令不会生成任何输出。

  3. 要描述一个事物类型,请运行 describe-thing-type 命令。此命令将产生一个输出,其中在 thing-type-properties 字段中包含消息丰富配置信息。示例命令如下。

    aws iot describe-thing-type \ --thing-type-name "LightBulb"

    输出类似于以下内容:

    { "thingTypeName": "LightBulb", "thingTypeId": "bdf72512-0116-4392-8d79-bf39b17ef73d", "thingTypeArn": "arn:aws:iot:us-east-1:123456789012:thingtype/LightBulb", "thingTypeProperties": { "mqtt5Configuration": { "propagatingAttributes": [ { "userPropertyKey": "iot:ClientId", "connectionAttribute": "iot:ClientId" }, { "userPropertyKey": "test", "thingAttribute": "attribute" } ] } }, "thingTypeMetadata": { "deprecated": false, "creationDate": "2024-10-18T17:37:46.656000+00:00" } }

有关更多信息,请参阅 事物类型