

# 可以标记的 API Gateway 资源
<a name="apigateway-tagging-supported-resources"></a>

可以在 [Amazon API Gateway V2 API](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/) 中的以下 HTTP API 或 WebSocket API 资源上设置标签：
+ `Api`
+ `DomainName`
+ `Stage`
+ `VpcLink`

此外，在 [Amazon API Gateway V1 API](https://docs.aws.amazon.com/apigateway/latest/api/API_Operations.html) 中可以在以下 REST API 资源上设置标签：
+ `ApiKey`
+ `ClientCertificate`
+ `DomainName`
+ `DomainNameAccessAssociation`
+ `RestApi`
+ `Stage`
+ `UsagePlan`
+ `VpcLink`

不能直接对其他资源设置标签。但是，在 [Amazon API Gateway V1 API](https://docs.aws.amazon.com/apigateway/latest/api/API_Operations.html) 中，子资源继承对父资源设置的标签。例如：
+ 如果对 `RestApi` 资源设置标签，该标签会由 `RestApi` 的以下子资源继承以用于[基于属性的访问控制](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)：
  + `Authorizer`
  + `Deployment`
  + `Documentation`
  + `GatewayResponse`
  + `Integration`
  + `Method`
  + `Model`
  + `Resource`
  + `ResourcePolicy`
  + `Setting`
  + `Stage`
+ 如果对 `DomainName` 设置标签，则该标签将由其下的任意 `BasePathMapping`、`ApiMapping` 和 `RoutingRule` 资源继承。
+ 如果对 `UsagePlan` 设置标签，则此标签将由其下的任意 `UsagePlanKey` 资源继承。

**注意**  
标签继承仅适用于[基于属性的访问控制](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。例如，您不能使用继承的标签来监控 AWS Cost Explorer 中的成本。要使用标签进行成本分配，我们建议您在子资源（如 `Stage` 资源）上创建标签。  
当您调用某个资源的 [GetTags](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-tags.html) 时，API Gateway 不会返回继承的标签。

## Amazon API Gateway V1 API 中的标签继承
<a name="apigateway-tagging-inheritance"></a>

以前，只能对阶段设置标签。现在，您还可以对其他资源设置标签，`Stage` 可以通过两种方式接收标签：
+ 可以直接对 `Stage` 设置标签。
+ 阶段可以从其父 `RestApi` 继承标签。

如果某个阶段以两种方式收到标签，直接对阶段设置的标签优先。例如，假设一个阶段从其父 REST API 继承以下标签：

```
{
	'foo': 'bar',
	'x':'y'
}
```

假设它也直接对此阶段设置了以下标签：

```
{
	'foo': 'bar2',
	'hello': 'world'
}
```

净结果是阶段将具有以下标签（具有以下值）：

```
{
	'foo': 'bar2',
	'hello': 'world'
	'x':'y'
}
```

## 标签限制和使用约定
<a name="apigateway-tagging-restrictions"></a>

以下限制和使用约定适用于将标签与 API Gateway 资源一起使用：
+ 每个资源最多可以有 50 个标签。
+ 对于每个资源，每个标签键都必须是唯一的，每个标签键只能有一个值。
+ 最大标签键长度为 128 个 Unicode 字符 (采用 UTF-8 格式)。
+ 最大标签值长度为 256 个 Unicode 字符 (采用 UTF-8 格式)。
+ 键和值允许使用的字符包括可用 UTF-8 格式表示的字母、数字和空格，以及以下字符：***. : \$1 = @ \$1 / -***（连字符）。Amazon EC2 资源允许任何字符。
+ 标签键和值区分大小写。最佳实践是，决定利用标签的策略并在所有资源类型中一致地实施该策略。例如，决定是使用 `Costcenter`、`costcenter` 还是 `CostCenter`，以及是否对所有标签使用相同的约定。避免将类似的标签用于不一致的案例处理。
+ 对标签禁止使用 `aws:` 前缀；它是为使用 AWS 而保留的。您无法编辑或删除带此前缀的标签键或值。具有此前缀的标签不计入每个资源的标签数限制。