

# 标记您的 AWS IoT Wireless 资源
<a name="tagging-iotwireless"></a>

为了帮助您管理和组织设备、网关、目标和配置文件，您可以选择将自己的元数据以标签的形式分配给其中每个资源。本节介绍标签并说明如何创建标签。AWS IoT Wireless 没有账单组，使用的是与 AWS IoT Core 相同的账单组。有关更多信息，请参阅 *AWS IoT Core 文档* 中的 [Billing groups](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot-billing-groups.html)。

## 标签基本知识
<a name="tagging-iotwireless-basics"></a>

如果您具有相同类型的多种 AWS IoT Wireless 资源，则可以使用标签按照不同方式（例如按用途、所有者或环境）对这些资源进行分类。这将帮助您根据分配给资源的标签快速识别该资源。

每个标签都包含您定义的一个键和一个可选值。例如，您可以针对要更新设备固件的一组 LoRaWAN 设备定义一组标签。为了更轻松地管理您的资源，建议您创建一组一致的标签键，以满足您对每种资源的需求。

您可以根据添加或应用的标签搜索和筛选资源。您还可以使用标签通过 IAM 策略来控制对资源的访问，以及使用账单组标签对费用进行分类和跟踪。

## 创建和管理标签
<a name="tagging-iotwireless-create"></a>

您可以在 AWS 管理控制台、AWS IoT Wireless、或 AWS CLI 中使用标签编辑器创建和管理标签。

**使用控制台**  
为便于使用，AWS 管理控制台中的标签编辑器提供了一种用于创建和管理标签的集中而统一的方法。有关更多信息，请参阅[使用 AWS 管理控制台](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html)中的[使用标签编辑器](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)。

**使用 API 或 CLI**  
您还可以使用 API 或 CLI，在创建标签时使用以下命令中的 `Tags` 字段将标签与无线设备、网关、配置文件和目标相关联：
+ [AssociateAwsAccountWithPartnerAccount](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateAwsAccountWithPartnerAccount.html)
+ [CreateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html)
+ [CreateDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html)
+ [CreateFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html)
+ [CreateMulticastGroup](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateMulticastGroup.html)
+ [CreateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html)
+ [CreateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html)
+ [CreateWirelessGatewayTaskDefinition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGatewayTaskDefinition.html)
+ [CreateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html)
+ [API\$1StartBulkAssociateWirelessDeviceWithMulticastGroup](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_API_StartBulkAssociateWirelessDeviceWithMulticastGroup.html)

## 更新或列出资源标签
<a name="tagging-iotwireless-update"></a>

您可以使用以下命令为支持标记的现有资源添加、修改或删除标签：
+ [ TagResource](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_TagResource)
+ [ ListTagsForResource](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_ListTagsForResource)
+ [ UntagResource](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_UntagResource)

您可以修改标签的密钥和值，还可以随时删除资源的标签。您可以将标签的值设为空的字符串，但是不能将其设为空值。如果添加的标签的键与该资源上现有标签的键相同，新值就会覆盖旧值。如果删除资源，则所有与资源相关的标签都将被删除。

## 标签限制
<a name="tagging-iotwireless-restrict"></a>

下面是适用于标签的基本限制：
+ 每个资源的最大标签数 - 50
+ 最大键长度 - 127 个 Unicode 字符（采用 UTF-8 格式）
+ 最大值长度 - 255 个 Unicode 字符（采用 UTF-8 格式）
+ 标签键和值区分大小写。
+ 请勿在标签名称或值中使用 `aws:` 前缀。它保留供 AWS 使用。您无法编辑或删除带此前缀的标签名称或值。具有此前缀的标签不计入每个资源的标签数限制。
+ 如果在多个服务和资源中使用您的标记方案，请记住，其他服务可能对允许使用的字符有限制。允许使用的字符包括：可用 UTF-8 格式表示的字母、空格和数字以及以下特殊字符：\$1 - = . \$1 : / @。

## 在 IAM 策略中使用标签
<a name="tagging-iot-iam"></a>

要指定用户能够创建、修改或使用的资源，您可以在用于执行 AWS IoT Wireless API 操作的 IAM 策略中应用基于标签的资源级权限。要根据资源标签控制用户访问（权限），请在 IAM 策略中将 `Condition` 元素（也称为 `Condition` 数据块）与以下条件上下文键和值结合使用。
+ 使用 `aws:ResourceTag/tag-key: tag-value` 可允许或拒绝带特定标签的资源上的用户操作。
+ 使用 `aws:RequestTag/tag-key: tag-value` 可要求在发出创建或修改允许标签的资源的 API 请求时使用（或不使用）特定标签。
+ 使用 `aws:TagKeys: [tag-key, ...]` 可要求在发出创建或修改允许标签的资源的 API 请求时使用（或不使用）一组特定标签键。

**注意**  
IAM 策略中的条件上下文键和值仅适用于能够标记的资源的标识符是必需参数的那些 AWS IoT 操作。例如，不会根据条件上下文键/值允许/拒绝使用 [DescribeEndpoint](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_DescribeEndpoint)，因为在该请求中没有引用任何可标记的资源。

有关使用标签的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[使用标签控制访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。该指南的 [IAM JSON 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)一部分包含 IAM 中的 JSON 策略的元素、变量和评估逻辑的详细语法、描述和示例。

以下策略示例应用两个基于标签的限制。受此策略限制的 IAM 用户：
+ 无法为资源提供标签“env=prod”（在此示例中，请参阅 `"aws:RequestTag/env" : "prod"` 行
+ 无法修改或访问具有现有标签“env=prod”的资源（在此示例中，请参阅 `"aws:ResourceTag/env" : "prod"` 行）。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "iot:CreateMulticastGroup",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "iot:CreateMulticastGroup",
        "iot:UpdateMulticastGroup",
        "iot:GetMulticastGroup",
        "iot:ListMulticastGroups"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:CreateMulticastGroup",
        "iot:UpdateMulticastGroup",
        "iot:GetMulticastGroup",
        "iot:ListMulticastGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

您还可以为给定标签键指定多个标签值，方法是将它们括在列表中，如下所示：

```
"StringEquals" : {
              "aws:ResourceTag/env" : ["dev", "test"]
}
```

**注意**  
如果您基于标签允许或拒绝用户访问资源，则必须考虑显式拒绝用户对相同资源添加或删除这些标签的能力。否则，用户可能通过修改资源标签来绕过您的限制并获得资源访问权限。