将目标添加到 适用于 LoRaWAN 的 AWS IoT Core - AWS IoT Wireless

将目标添加到 适用于 LoRaWAN 的 AWS IoT Core

适用于 LoRaWAN 的 AWS IoT Core 目标描述了 AWS IoT 规则,该规则用于处理设备数据以供AWS服务采用。

因为大多数 LoRaWAN 设备不会将数据以AWS能够使用的格式发送到适用于 LoRaWAN 的 AWS IoT Core,因为 AWS IoT 规则必须先行处理。AWS IoT 规则包含解释设备数据的 SQL 语句和主题规则操作,这些操作会将 SQL 语句的结果发送到将要使用它的服务。

如果您是首次添加目标,我们建议您使用控制台。

使用控制台添加一个目标

如果您正在按照 使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core 中所述使用控制台添加无线设备,则当您将无线设备规范和配置文件按前述操作添加到 适用于 LoRaWAN 的 AWS IoT Core 之后,您可以继续添加目标。

您还可以从 AWS IoT 控制台的 Destinations(目标)页面添加一个 适用于 LoRaWAN 的 AWS IoT Core 目标。

要处理设备的数据,请在创建适用于 LoRaWAN 的 AWS IoT Core 目标时指定以下字段,然后选择 Add destination(添加目标)。

  • 目标详细信息

    输入 Destination name(目标名称)以及您的目标描述(可选)。

  • Rule name(规则名称)

    被配置为评估设备发送的消息并处理设备数据的 AWS IoT 规则。规则名称将映射到您的目标。目标要求规则来处理收到的消息。您可以通过调用 AWS IoT 规则或通过发布到 AWS IoT 消息代理。

    • 如果选择 Enter a rule name(输入规则名称),请输入名称,然后选择 Copy(复制)以复制创建 AWS IoT 规则时要输入的规则名称。您可以选择 Create rule(创建规则)以立即创建规则,或导航到 AWS IoT 控制台的 Rule(规则)中心并使用该名称创建规则。

      您也可以输入规则并使用高级设置以指定主题名称。主题名称是在规则调用期间提供的,可通过使用 topic 规则中的表达式访问。有关AWS IoT规则的更多信息,请参阅https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html

    • 如果选择 Publish to AWS IoT message broker(发布到消息代理),输入主题名称。然后,您可以复制 MQTT 主题名称,多个订阅者可以订阅此主题以接收发布到该主题的消息。有关更多信息,请参阅https://docs.aws.amazon.com/iot/latest/developerguide/topics.html

    有关目标的 AWS IoT 规则的更多信息,请参阅 创建规则以处理 LoRaWAN 设备消息

  • 角色名称

    IAM 角色,该角色授予设备数据权限以访问在 Rule name(规则名称)中命名的规则。在控制台中,您可以创建新的服务角色或选择现有的服务角色。如果要创建新的服务角色,可以输入角色名称(例如,IoTWirelessDestinationRole),或将其留白 适用于 LoRaWAN 的 AWS IoT Core 以生成新的角色名称。然后 适用于 LoRaWAN 的 AWS IoT Core 将代表您自动创建具有适当权限的 IAM 角色。

    有关 IAM 角色的更多信息,请参阅使用 IAM 角色

使用 API 添加目标

如果要改为使用 CLI 添加目标,必须先为目标创建规则和 IAM 角色。有关角色中目标所需的详细信息,请参阅 为您的目标创建 IAM 角色

以下列表包括执行与添加、更新或删除目标相关任务的 API 操作。

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表,请参阅 AWS IoT Wireless API 参考

如何使用 AWS CLI 添加一个目标

您可以使用 AWS CLI 添加目标,方法是使用 create-destination 命令。下面的示例演示如何通过输入规则名称创建目标,并将 RuleName 用作 expression-type 参数的值。如果要指定用于发布或订阅消息代理的主题名称,请将 expression-type 参数值更改为MqttTopic

aws iotwireless create-destination \ --name IoTWirelessDestination \ --expression-type RuleName \ --expression IoTWirelessRule \ --role-arn arn:aws:iam::123456789012:role/IoTWirelessDestinationRole

运行此命令可创建带有指定目标名称、规则名称和角色名称的目标。有关目标的规则和角色名称的信息,请参阅 创建规则以处理 LoRaWAN 设备消息为您的目标创建 IAM 角色

有关您可以使用的 CLI 的信息,请参阅 AWS CLI 参考

为您的目标创建 IAM 角色

适用于 LoRaWAN 的 AWS IoT Core 目标需要 IAM 角色为 适用于 LoRaWAN 的 AWS IoT Core 提供将数据发送到 AWS IoT 规则所需的权限。如果尚未定义此类角色,必须对其进行定义,以便出现在角色列表中。

如本主题之前所述,当您使用控制台添加目标时,适用于 LoRaWAN 的 AWS IoT Core 自动为您创建 IAM 角色。使用 API 或 CLI 添加目标时,必须为目标创建 IAM 角色。

为您的 适用于 LoRaWAN 的 AWS IoT Core 目标角色创建 IAM 策略
  1. 打开 IAM 控制台中的 Policies(策略)中心

  2. 选择 Create policy(创建策略),然后选择 JSON 选项卡。

  3. 在编辑器中,删除编辑器中的所有内容并粘贴此策略文档。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeEndpoint", "iot:Publish" ], "Resource": "*" } ] }
  4. 选择 Review policy(查看策略),并在 Name(名称)中输入此策略的名称。在下一流程中,您将需要使用此名称。

    如有需要,您还可以在 Description(说明)中描述此策略。

  5. 选择创建策略

要为 适用于 LoRaWAN 的 AWS IoT Core 目标创建 IAM 角色
  1. 开启 IAM 控制台的角色中心,然后选择 Create role(创建角色)。

  2. Select type of trusted entity(选择受信任实体的类型)下,选择 Another AWS 账户(另一个亚马逊云科技账户)。

  3. Account ID(账户 ID),请输入您的AWS 账户 ID,然后选择 Next: Permission(下一步:权限)。

  4. 在搜索框中,输入您在上一流程中创建的 IAM 策略名称。

  5. 在搜索结果中,检查您在上一个流程中创建的 IAM 策略。

  6. 依次选择 Next: Tags(下一步:标签)和 Next: Review(下一步:查看)。

  7. Role name(角色名称),输入此角色的名称,然后选择 Create role(创建角色)。

  8. 在确认消息中,选择您创建的角色的名称以编辑新角色。

  9. Summary(摘要)页面上,选择 Trust relationships(信任关系),然后选择 Edit trust relationship(编辑信任关系)。

  10. Policy Document(策略文档)中,更改 Principal 属性以使其类似于此示例。

    "Principal": { "Service": "iotwireless.amazonaws.com" },

    在您更改 Principal 属性后,完整的策略文档应该如此示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iotwireless.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
  11. 要保存更改并退出,请选择 Update Trust Policy(更新信任策略)。

定义了此角色后,您可以在配置 适用于 LoRaWAN 的 AWS IoT Core 目标时在角色列表中找到它。