

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置
<a name="device-advisor-setting-up"></a>

首次使用 Device Advisor 之前，请完成以下任务：

## 创建物联网事物
<a name="da-create-thing-certificate"></a>

首先，创建一个物联网事物并为该事物附加证书。有关如何创建事物的教程，请参阅[创建事物对象](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)。

## 创建要用作设备角色的 IAM 角色
<a name="da-iam-role"></a>

**注意**  
您可以使用 Device Advisor 控制台快速创建设备角色。要了解如何使用 Device Advisor 控制台设置设备角色，请参阅[控制台中的 Device Advisor 入门](https://docs.aws.amazon.com/iot/latest/developerguide/da-console-guide.html)。

1. 转到[AWS Identity and Access Management 控制台](https://console.aws.amazon.com/iam/home?region=us-west-2#/home)并登录 AWS 账户 您用于设备顾问测试的。

1. 在左侧导航窗格中，选择 **Policies**（策略）。

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

1. 在 **Create Policy**（创建策略）下，执行以下操作。

   1. 对于**服务**，请选择 **IoT**。

   1. 在**操作**下，执行以下操作之一：
      + （建议）根据您在上一节中创建的物联网事物或证书所附的策略选择操作。
      + 在**筛选操作**框中搜索以下操作并选择它们：
        + `Connect`
        + `Publish`
        + `Subscribe`
        + `Receive`
        + `RetainPublish`

   1. 在**资源**下，限制客户端、主题和主题资源。限制这些资源是一种最佳安全实践。要限制资源，请执行以下操作：

      1. 选择 **Specify client resource ARN for the Connect action**（为 Connect 操作指定客户端资源 ARN）。

      1. 选择**添加 ARN**，然后执行以下任一操作：
**注意**  
*clientId* 是设备用于与 Device Advisor 交互的 MQTT 客户端 ID。
         + 在可视化 ARN 编辑器中指定**区域**、**账户 ID** 和**客户端 ID**。
         + 手动输入要用来运行测试用例的物联网主题的 Amazon 资源名称 (ARNs)。

      1. 选择**添加**。

      1. 选择**为接收及另一个操作指定主题资源 ARN**。

      1. 选择**添加 ARN**，然后执行以下任一操作：
**注意**  
*主题名称*是设备向其发布消息的 MQTT 主题。
         + 在可视化 ARN 编辑器中指定**区域**、**账户 ID** 和**主题名称**。
         + 手动输入要用来运行测试用例的 IoT 主题。 ARNs 

      1. 选择**添加**。

      1. 选择**为订阅操作指定主题筛选条件资源 ARN**。

      1. 选择**添加 ARN**，然后执行以下任一操作：
**注意**  
*主题名称*是您的设备订阅的 MQTT 主题。
         + 在可视化 ARN 编辑器中指定**区域**、**账户 ID** 和**主题名称**。
         + 手动输入要用来运行测试用例的 IoT 主题。 ARNs 

      1. 选择**添加**。

1. 选择**下一步：标签**。

1. 选择**下一步：审核**。

1. 在**查看策略**下，输入策略的**名称**。

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

1. 在左侧导航窗格中，选择 **Roles**（角色）。

1. 选择**创建角色**。

1. 在**选择可信实体**下，选择**自定义信任策略**。

1. 在**自定义信任策略**框中输入以下信任策略。为防止出现混淆代理人问题，请在策略中添加全局条件键 `[aws:SourceArn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` 和 `[aws:SourceAccount](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)`。
**重要**  
您的 `aws:SourceArn` 必须与 `format: arn:aws:iotdeviceadvisor:region:account-id:*.` 相符。确保 `region` 与您的 AWS IoT 区域匹配，`account-id` 与您的客户账户 ID 匹配。有关更多信息，请参阅[防止跨服务混淆代理](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#cross-service-confused-deputy-prevention-DA)。  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAwsIoTCoreDeviceAdvisor",
               "Effect": "Allow",
               "Principal": {
                   "Service": "iotdeviceadvisor.amazonaws.com"
           },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
               },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:iotdeviceadvisor:*:123456789012:suitedefinition/*"
               }
           }
           }
       ]
   }
   ```

1. 选择**下一步**。

1. 选择您在步骤 4 中创建的策略。

1. （可选）在**设置权限边界**下，选择**使用权限边界控制最大角色权限**，然后选择您创建的策略。

1. 选择**下一步**。

1. 输入 **Role name**（角色名称）和 **Role description**（角色描述）。

1. 选择**创建角色**。

## 为 IAM 用户创建自定义托管策略来使用设备顾问
<a name="da-managed-policy"></a>

1. 导航到 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 控制台。如果提示，请输入您的 AWS 凭证。

1. 在左侧导航窗格中，选择 **Policies（策略）**。

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

1. 添加必要的权限以使用 Device Advisor。可在[安全最佳实践](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-advisor-perms)主题中找到策略文档。

1. 选择**查看策略**。

1. 输入**名称**和**描述**。

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

## 创建 IAM 用户来使用 Device Advisor。
<a name="da-iam-user"></a>

**注意**  
我们建议您创建一个要在运行 Device Advisor 测试时使用的 IAM 用户。由管理员用户运行 Device Advisor 测试可能会带来安全风险，因此建议不要这样做。

1. 导航到 IAM 控制台，[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)如果出现提示，请输入您的 AWS 证书进行登录。

1. 在左侧导航窗格中，选择 **Users**（用户）。

1. 选择**添加用户**。

1. 输入**用户名称**。

1. 如果用户想在 AWS 外部进行交互，则需要编程访问权限 AWS 管理控制台。授予编程访问权限的方式取决于正在访问的用户类型 AWS。

   要向用户授予编程式访问权限，请选择以下选项之一。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/device-advisor-setting-up.html)

1. 选择**下一步: 权限**。

1. 要提供访问权限，请为您的用户、组或角色添加权限：
   + 中的用户和群组 AWS IAM Identity Center：

     创建权限集合。按照《AWS IAM Identity Center 用户指南》**中[创建权限集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
   + 通过身份提供者在 IAM 中托管的用户：

     创建适用于身份联合验证的角色。按照《IAM 用户指南》**中[针对第三方身份提供者创建角色（联合身份验证）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
   + IAM 用户：
     + 创建您的用户可以担任的角色。按照《IAM 用户指南》**中[为 IAM 用户创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。
     + （不推荐使用）将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》**中[向用户添加权限（控制台）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)中的说明进行操作。

1. 在搜索框中输入您创建的客户管理型策略的名称。然后，选中与**策略名称**对应的复选框。

1. 选择**下一步：标签**。

1. 选择 **Next: Review (下一步: 审核)**。

1. 选择 **Create user**。

1. 选择**关闭**。

Device Advisor 需要代表您访问您的 AWS 资源（内容、证书和终端节点）。您的 IAM 用户必须具有必要的权限。 CloudWatch 如果您向 IAM 用户附加必要的权限策略，设备顾问还将向 Amazon 发布日志。

## 配置您的设备
<a name="da-configure-device"></a>

Device Advisor 使用服务器名称指示（SNI）TLS 扩展来应用 TLS 配置。设备在连接时必须使用此扩展，并传递与 Device Advisor 测试端点相同的服务器名称。

当测试处于 `Running` 状态时，Device Advisor 允许 TLS 连接。它在每次测试运行之前和之后都会拒绝 TLS 连接。因此，我们建议使用设备连接重试机制，以便在使用 Device Advisor 时获得完全自动的测试体验。您可以运行包含多个测试使用案例的测试套件，例如 TLS 连接、MQTT 连接和 MQTT 发布。如果您运行多个测试使用案例，我们建议您的设备尝试每五秒钟连接到我们的测试端点。这样，您就可以自动按顺序运行多个测试使用案例。

**注意**  
为了让您的设备软件做好测试准备，我们建议您使用可以连接到 AWS IoT Core的 SDK。然后，您应该使用为您的 AWS 账户提供的 Device Advisor 测试端点更新 SDK 。

Device Advisor 支持两种类型的端点：账户级端点和设备级端点。请选择最符合您使用案例的端点。要针对不同的设备同时运行多个测试套件，请使用设备级端点。

运行以下命令以获取设备级别端点：

对于使用 X.509 客户端证书的 MQTT 客户：

```
aws iotdeviceadvisor get-endpoint --thing-arn your-thing-arn
```

或者

```
aws iotdeviceadvisor get-endpoint --certificate-arn your-certificate-arn
```

对于使用签名版本 4 的 MQTT 以上 WebSocket 客户：

```
aws iotdeviceadvisor get-endpoint --device-role-arn your-device-role-arn --authentication-method SignatureVersion4
```

要一次运行一个测试套件，请选择账户级端点。运行以下命令获取账户级别端点：

```
aws iotdeviceadvisor get-endpoint
```