

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

# 在 AWS Device Farm 的设备池中选择私有设备
<a name="selecting-private-devices"></a>

要在测试运行中使用私有设备，您可以创建一个设备池来选择您的私有设备。设备池允许您主要通过三种类型的设备池规则来选择私有设备：

1. 基于设备 ARN 的规则

1. 基于设备实例标签的规则

1. 基于设备实例 ARN 的规则

在以下各节中，将深入介绍每种规则类型及其用例。您可以使用 Device Farm 控制台、 AWS 命令行界面 (AWS CLI) 或 Device Farm API 使用这些规则创建或修改带有私有设备的设备池。

**Topics**
+ [设备 ARN](#device-arn-rules)
+ [设备实例标注](#device-instance-labels-rules)
+ [实例 ARN](#instance-arn-rules)
+ [使用私有设备创建私有设备池（控制台）](#create-new-device-pool)
+ [使用私有设备 (AWS CLI) 创建私有设备池](#how-to-create-device-pool-cli-private-devices)
+ [使用私有设备 (API) 创建私有设备池](#how-to-create-device-pool-api-private-devices)

## 设备 ARN
<a name="device-arn-rules"></a>

设备 ARN 是一个标识符，代表一种设备类型，而不是任何特定的物理设备实例。设备类型由以下属性定义：
+ 设备的实例集 ID
+ 设备的 OEM
+ 设备的型号
+ 设备的操作系统的版本
+ 指示设备是否已取得 root 权限的设备状态

许多物理设备实例可以由单个设备类型表示，其中该类型的每个实例对这些属性具有相同的值。例如，如果您的私有队列*16.1.0*中有三台 iOS 版本的*Apple iPhone 13*设备，则每台设备将共享相同的设备 ARN。如果在您的设备队组中添加或移除任何具有相同属性的设备，则设备 ARN 将继续代表您的设备队组中该设备类型的所有可用设备。

设备 ARN 是为设备池选择私有设备的最可靠方法，因为它允许设备池继续选择设备，无论您在任何给定时间部署了哪些特定设备实例。单个私有设备实例可能会遇到硬件故障，这会提示 Device Farm 自动将其替换为相同设备类型的新工作实例。在这些情况下，设备 ARN 规则可确保您的设备池在出现硬件故障时可以继续选择设备。

当您对设备池中的私有设备使用设备 ARN 规则并安排使用该池的测试运行时，Device Farm 将自动检查该设备 ARN 代表哪些私有设备实例。在当前可用的实例中，系统将分配其中一个实例来来运行您的测试。如果当前没有可用的实例，Device Farm 将等待该设备 ARN 的第一个可用实例变为可用，然后分配该实例以运行您的测试。

## 设备实例标注
<a name="device-instance-labels-rules"></a>

设备实例标签是您可以作为设备实例的元数据附加的文本标识符。您可以将多个标签附加到每个设备实例，将同一个标签附加到多个设备实例。有关在设备实例中添加、修改或移除设备标签的更多信息，请参阅[管理私有设备](https://docs.aws.amazon.com/devicefarm/latest/developerguide/managing-private-devices.html)。

设备实例标签可能是为设备池选择私有设备的有效方法，因为如果您有多个具有相同标签的设备实例，则它允许设备池从其中任何一个实例中进行选择以进行测试。如果设备 ARN 不适合您的用例（例如，如果您想从多种设备类型的设备中进行选择，或者想要从某一设备类型的所有设备的子集中进行选择），那么设备实例标签可以让您在设备池的多个设备中进行更精细的选择。单个私有设备实例可能会遇到硬件故障，这会提示 Device Farm 自动将其替换为相同设备类型的新工作实例。在这些情况下，替换设备实例将不会保留被替换设备的任何实例标签元数据。因此，如果您将相同的设备实例标签应用于多个设备实例，则设备实例标签规则可确保您的设备池在出现硬件故障时可以继续选择设备实例。

当您对设备池中的私有设备使用设备实例标签规则并安排使用该池的测试运行时，Device Farm 将自动检查哪些私有设备实例由该设备实例标签表示，并从这些实例中随机选择一个可用于运行测试的实例。如果没有可用的设备，Device Farm 将随机选择任何带有设备实例标签的设备实例来运行您的测试，并在设备可用时将测试排队在设备上运行。

## 实例 ARN
<a name="instance-arn-rules"></a>

设备实例 ARN 是一个标识符，代表部署在私有设备队组中的物理裸机设备实例。例如，如果您的私有队列*15.0.0*中的操作系统上有三*iPhone 13*台设备，而每台设备共享相同的设备 ARN，则每台设备也将有自己的实例 ARN，仅代表该实例。

设备实例 ARN 是为设备池选择私有设备的最不稳健的方法，仅当设备 ARNs 和设备实例标签不符合您的用例时，才建议使用该方法。当以独特和特定的方式配置特定设备实例作为测试的先决条件，并且在对其进行测试之前需要知道和验证该配置时，设备实例通常被用作设备池的规则。 ARNs 单个私有设备实例可能会遇到硬件故障，这会提示 Device Farm 自动将其替换为相同设备类型的新工作实例。在这些情况下，替换设备实例与被替换设备的设备实例 ARN不同。因此，如果您的设备池依赖设备实例 ARNs ，则需要手动将设备池的规则定义从使用旧 ARN 更改为使用新 ARN。如果您确实需要手动预配置设备以进行测试，那么这可能是一个有效的工作流程（与设备相比 ARNs）。要进行大规模测试，建议尝试调整这些用例以使用设备实例标签，并在可能的情况下预先配置多个设备实例进行测试。

当您对设备池中的私有设备使用设备实例 ARN 规则并计划使用该池进行测试时，Device Farm 会自动将测试分配给该设备实例。如果该设备实例不可用，Device Farm 将对在其可用后在设备上进行的测试进行排队。

## 使用私有设备创建私有设备池（控制台）
<a name="create-new-device-pool"></a>

当您创建测试运行测试，可以创建一个用于测试运行的设备池，并确保该池仅包含您的私有设备。

**注意**  
在控制台中创建包含私有设备的设备池时，只能使用三个可用规则中的任何一个来选择私有设备。如果要创建包含多种私有设备规则的设备池（例如，包含设备 ARNs 和设备实例规则的设备池 ARNs），则需要通过 CLI 或 API 创建该池。

1. 打开 Device Farm 控制台，网址为[https://console.aws.amazon.com/devicefarm/](https://console.aws.amazon.com/devicefarm/)。

1. 在 Device Farm 导航面板上，选择**移动设备测试**，然后选择**项目**。

1. 从列表中选择一个现有项目或创建一个新项目。要创建新项目，请选择**新建项目**，输入项目的名称，然后选择**提交**。

1. 选择**项目设置**，然后导航到**设备池**选项卡。

1. 选择**创建设备池**，然后输入设备池的名称和可选描述。

   1. 要对设备池使用设备 ARN 规则，请选择**创建静态设备池**，然后从列表中选择要在设备池中使用的特定设备类型。不要选择**私仅有设备实例**，因为此选项会导致使用设备实例 ARN 规则（而不是设备 ARN 规则）创建设备池。  
![\[Device selection method options for creating a static or dynamic device pool.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-create-new-device-pool-private-devices.png)

   1. 要对设备池使用设备实例标签规则，请选择**创建动态设备池**。然后，对于要在设备池中使用的每个标签，选择**添加规则**。对于每条规则，选择**实例标签**作为 `Field`，选择**包含**作为 `Operator`，然后将所需的设备实例标签指定为`Value`。  
![\[Device pool creation interface with dynamic selection method and attribute filter options.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-create-new-device-pool-private-devices-add-rule.png)

   1. 要对设备池使用设备实例 ARN 规则，请选择**创建静态设备池**，然后选择仅**私有设备实例，将设备列表限制为仅**显示 Device Farm 已与您的 AWS 账户关联的私有设备实例。  
![\[Device selection options for creating a static device pool with private instances.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-create-new-device-pool-private-device-instance-only.png)

1. 选择**创建**。

## 使用私有设备 (AWS CLI) 创建私有设备池
<a name="how-to-create-device-pool-cli-private-devices"></a>
+ 运行 [https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-device-pool.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-device-pool.html) 命令。

有关将 Device Farm 与配合使用的信息 AWS CLI，请参阅[AWS CLI 参考文档](cli-ref.md)。

## 使用私有设备 (API) 创建私有设备池
<a name="how-to-create-device-pool-api-private-devices"></a>
+ 调用 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html) API。

有关如何使用 Device Farm API 的更多信息，请参阅 [自动化 Device Farm](api-ref.md)。