

# 将目标添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-create-destinations"></a>

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

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

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

## 使用控制台添加一个目标
<a name="lorawan-create-destination-console"></a>

如果您正在按照 [使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 中所述使用控制台添加无线设备，则当您将无线设备规范和配置文件按前述操作添加到 适用于 LoRaWAN 的 AWS IoT Core 之后，您可以继续添加目标。

您还可以从 AWS IoT 控制台的 [Destinations](https://console.aws.amazon.com/iot/home#/wireless/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](https://console.aws.amazon.com/iot/home#/create/rule)（规则）中心并使用该名称创建规则。

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

  有关目标的 AWS IoT 规则的更多信息，请参阅 [创建规则以处理 LoRaWAN 设备消息](lorawan-destination-rules.md)。
+ 

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

  有关 IAM 角色的更多信息，请参阅[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。

## 使用 API 添加目标
<a name="lorawan-create-destination-api"></a>

如果要改为使用 CLI 添加目标，必须先为目标创建规则和 IAM 角色。有关角色中目标所需的详细信息，请参阅 [为您的目标创建 IAM 角色](#lorawan-create-destinations-roles)。

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

**AWS IoT Wireless目标的 API 操作**
+ [CreateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html)
+ [GetDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDestination.html)
+ [ListDestinations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListDestinations.html)
+ [UpdateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateDestination.html)
+ [DeleteDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteDestination.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 添加一个目标**  
您可以使用 AWS CLI 添加目标，方法是使用 [create-destination](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-destination.html) 命令。下面的示例演示如何通过输入规则名称创建目标，并将 `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 设备消息](lorawan-destination-rules.md) 和 [为您的目标创建 IAM 角色](#lorawan-create-destinations-roles)。

有关您可以使用的 CLI 的信息，请参阅 [AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)。

## 为您的目标创建 IAM 角色
<a name="lorawan-create-destinations-roles"></a>

适用于 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（策略）中心](https://console.aws.amazon.com/iam/home#/policies)。

1. 选择 **Create policy**（创建策略），然后选择 **JSON** 选项卡。

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

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:DescribeEndpoint",
                   "iot:Publish"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 选择 **Review policy**（查看策略），并在 **Name**（名称）中输入此策略的名称。在下一流程中，您将需要使用此名称。

   如有需要，您还可以在 **Description**（说明）中描述此策略。

1. 选择**创建策略**。

**要为 适用于 LoRaWAN 的 AWS IoT Core 目标创建 IAM 角色**

1. 开启 [IAM 控制台的角色中心](https://console.aws.amazon.com/iam/home#/roles)，然后选择 **Create role**（创建角色）。

1. 在 **Select type of trusted entity**（选择受信任实体的类型）下，选择 **Another AWS 账户**（另一个亚马逊云科技账户）。

1. 在 **Account ID**（账户 ID），请输入您的AWS 账户 ID，然后选择 **Next: Permission**（下一步：权限）。

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

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

1. 依次选择 **Next: Tags**（下一步：标签）和 **Next: Review**（下一步：查看）。

1. 在 **Role name**（角色名称），输入此角色的名称，然后选择 **Create role**（创建角色）。

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

1. 在 **Summary**（摘要）页面上，选择 **Trust relationships**（信任关系），然后选择 **Edit trust relationship**（编辑信任关系）。

1. 在 **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": {}
       }
     ]
   }
   ```

1. 要保存更改并退出，请选择 **Update Trust Policy**（更新信任策略）。

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