

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

# 标记 AWS Device Farm 资源
<a name="tagging"></a>

AWS Device Farm 与 Res AWS ource Groups 标记 API 配合使用。此 API 允许您使用*标签*管理 AWS 账户中的资源。您可以为资源添加标签，例如项目和测试运行。

您可以使用标签执行以下操作：
+ 组织 AWS 账单来反映您自身的成本结构。要执行此操作，请注册以获取包含标签密钥值的 AWS 账户账单。然后，如需查看组合资源的成本，请按有同样标签键值的资源组织您的账单信息。例如，您可以将某个应用程序名称用作几个资源的标签，然后组织账单信息，以便查看多个服务中使用该应用程序的总成本。有关更多信息，请参阅《关于 AWS 账单与成本管理》**中的[成本分配和标签](https://docs.aws.amazon.com//awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。
+ 通过 IAM 策略控制访问。为此，您需要使用标签值条件创建允许访问一个资源或一组资源的策略。
+ 标识和管理具有标签形式的特定属性的运行，例如指定用于测试的分支的属性。

 有关标记资源的更多信息，请参阅[标记最佳实践](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)白皮书。

**Topics**
+ [标注资源](#tagging-resources)
+ [按标签查找资源](#tagging-looking-up-resources)
+ [从资源中删除标签](#tagging-removing-tags)

## 标注资源
<a name="tagging-resources"></a>

借助 AWS Resource Group Tagging API，您可以添加、删除或修改资源上的标签。有关更多信息，请参阅 [AWS Resource Group Tagging API Reference](https://docs.aws.amazon.com//resourcegroupstagging/latest/APIReference/Welcome.html)。

要标记资源，请使用 `resourcegroupstaggingapi` 终端节点中的 [https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html) 操作。此操作 ARNs 从支持的服务中获取列表和键值对列表。值是可选的。空字符串表示该标签不应有值。例如，以下 Python 示例 ARNs 使用带有值的标签标记`build-config`了一系列项目`release`：

```
import boto3

client = boto3.client('resourcegroupstaggingapi')

client.tag_resources(ResourceARNList=["arn:aws:devicefarm:us-west-2:111122223333:project:123e4567-e89b-12d3-a456-426655440000",
                                      "arn:aws:devicefarm:us-west-2:111122223333:project:123e4567-e89b-12d3-a456-426655441111",
                                      "arn:aws:devicefarm:us-west-2:111122223333:project:123e4567-e89b-12d3-a456-426655442222"]
                     Tags={"build-config":"release", "git-commit":"8fe28cb"})
```

标签值不是必需的。要设置不带值的标签，请在指定值时使用空字符串 (`""`)。一个标签只能有一个值。标签对某个资源使用的任何先前值都将被新值覆盖。

## 按标签查找资源
<a name="tagging-looking-up-resources"></a>

要按标签查找资源，请使用 `resourcegrouptaggingapi` 终端节点中的 `GetResources` 操作。此操作会采用一系列筛选条件（也可以不采用筛选条件），并返回与给定条件匹配的资源。如果不采用筛选条件，则会返回所有带标签的资源。`GetResources` 操作允许您根据以下条件筛选资源
+ 标签值
+ 资源类型（例如 `devicefarm:run`）

有关更多信息，请参阅 [AWS Resource Group Tagging API Reference](https://docs.aws.amazon.com//resourcegroupstagging/latest/APIReference/Welcome.html)。

以下示例使用具有 `production` 值的 `stack` 标签查找 Device Farm 桌面浏览器测试会话（`devicefarm:testgrid-session` 资源）：

```
import boto3
client = boto3.client('resourcegroupstaggingapi')
sessions = client.get_resources(ResourceTypeFilters=['devicefarm:testgrid-session'],
                                TagFilters=[
                                  {"Key":"stack","Values":["production"]}
                                ])
```

## 从资源中删除标签
<a name="tagging-removing-tags"></a>

要删除标签，请使用 `UntagResources` 操作，并指定资源列表和要删除的标签：

```
import boto3
client = boto3.client('resourcegroupstaggingapi')
client.UntagResources(ResourceARNList=["arn:aws:devicefarm:us-west-2:111122223333:project:123e4567-e89b-12d3-a456-426655440000"], TagKeys=["RunCI"])
```