

# 使用标签对对象进行分类
<a name="object-tagging"></a>

使用对象标签对存储进行分类。每个标签都是一个键-值对。

您可以将标签添加到新对象（当您上传新对象时），也可以将标签添加到现有对象。
+ 您最多可以将 10 个标签与对象关联。与对象关联的标签必须具有唯一的标签键。
+ 标签键的长度最大可以为 128 个 Unicode 字符，标签值的长度最大可以为 256 个 Unicode 字符。Amazon S3 对象标签在内部以 UTF-16 表示。请注意，采用 UTF-16 时，字符占用 1 或 2 个字符位置。
+ 键和值区分大小写。
+ 有关标签限制的更多信息，请参阅《AWS 账单与成本管理用户指南》**中的 [User-defined tag restrictions](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html#allocation-tag-restrictions)。有关基本标签限制，请参阅《Amazon EC2 用户指南》**中的[标签限制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-restrictions)。

**示例**  
请考虑以下标签示例：

**Example PHI 信息**  
假设某个对象包含受保护医疗信息 (PHI) 数据。您可以使用以下键/值对标记该对象。  

```
PHI=True
```
或  

```
Classification=PHI
```

**Example 项目文件**  
假设您将项目文件存储在 S3 桶中。您可以使用一个名为 `Project` 的键和一个值标记这些对象，如下所示。  

```
Project=Blue
```

**Example 多个标签**  
您可以将多个标签添加到一个对象，如下所示。  

```
Project=x
Classification=confidential
```

**键名前缀和标签**  
您还可以使用对象键名前缀来分类存储。但是，基于前缀的分类是一维的。请考虑以下对象键名：

```
photos/photo1.jpg
project/projectx/document.pdf
project/projecty/document2.pdf
```

这些键名具有前缀 `photos/`、`project/projectx/` 和 `project/projecty/`。这些前缀支持一维分类。即，一个前缀下的一切都属于一个类别。例如，前缀 `project/projectx` 可确定与项目 x 相关的所有文档。

利用标签，您现在获得了另一个维度。如果您希望 photo1 属于项目 x 类别，则可以相应地标记该对象。

**其他优势**  
除了数据分类之外，标签还提供了下列好处：
+ 对象标签支持权限的精细访问控制。例如，您可以向用户授予仅读取带有特定标签的对象的权限。
+ 对象标签支持精细的对象生命周期管理，在其中，除了在生命周期规则中指定键名前缀之外，还可以指定基于标签的筛选条件。
+ 使用 Amazon S3 分析时，您可以配置筛选条件，以便按对象标签、键名前缀或前缀和标签的组合对对象进行分组以进行分析。
+ 您还可以自定义 Amazon CloudWatch 指标以按特定标签筛选条件显示信息。以下各节提供了详细信息。

**重要**  
使用标签来标记包含机密数据（如 personally identifiable information (PII) 或受保护医疗信息 (PHI)）的对象是可以接受的。但标签本身不应包含任何机密信息。

**通过单个请求将对象标签集添加到多个 Amazon S3 对象**  
要使用单个请求向多个 Amazon S3 对象添加对象标签集，您可以使用 S3 分批操作。您为 S3 批量操作提供要操作的对象列表。S3 批量操作调用相应的 API 操作来执行指定的操作。单个批量操作任务可对包含 EB 级数据的数十亿个对象执行指定操作。

S3 批量操作特征包括跟踪进度、发送通知并存储所有操作的详细完成报告，从而提供完全托管、可审核的无服务器体验。您可以通过 Amazon S3 控制台、AWS CLI、AWS SDK 或 REST API 使用 S3 批量操作。有关更多信息，请参阅 [S3 批量操作基础知识](batch-ops.md#batch-ops-basics)。

有关对象标签的更多信息，请参阅 [管理对象标签](tagging-managing.md)。

## 与对象标签相关的 API 操作
<a name="tagging-apis"></a>

Amazon S3 支持特定于对象标签的以下 API 操作：

**对象 API 操作**
+  [PUT 对象标签](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTtagging.html) – 替换对象上的标签。您可以在请求正文中指定标签。使用此 API 的对象标签管理有两个不同的情形。
  + 对象没有标签 - 利用此 API，您可以将一组标签添加到某个对象 (该对象没有以前的标签)。
  + 对象有一组现有标签 - 要修改现有标签，您必须先检索现有标签集，在客户端侧修改它，然后使用此 API 替换它。
**注意**  
 如果您发送带有空标签集的此请求，Amazon S3 将删除对象上的现有标签集。如果您使用此方法，则将需为套餐 1 请求 (PUT) 付费。有关更多信息，请参阅 [Amazon S3 定价](https://d0.awsstatic.com/whitepapers/aws_pricing_overview.pdf)。  
[DELETE 对象标签](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETEtagging.html)请求优先进行，因为它可获得相同的结果而不会产生费用。
+  [GET 对象标签](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETtagging.html) – 返回与某个对象关联的标签集。Amazon S3 将在响应正文中返回对象标签。
+ [DELETE 对象标签](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETEtagging.html) – 删除与某个对象关联的标签集。

**支持标签的其他 API 操作**
+  [PUT 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)和[启动分段上传](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) – 您可以在创建对象时指定标签。您将使用 `x-amz-tagging` 请求标头指定标签。
+  [GET 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) – Amazon S3 不会返回标签集，而会在 `x-amz-tag-count` 标头中返回对象标签计数（仅当请求者有权读取标签时），因为标头响应大小限制为 8000 个字节。如果要查看标签，您应该再发出一个 [GET 对象标签](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETtagging.html) API 操作请求。
+ [POST 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) – 您可以在 POST 请求中指定标签。

  只要请求中的标签不超过 8 K 个字节的 HTTP 请求标头大小限制，您就可以使用 `PUT Object `API 创建带标签的对象。如果您指定的标签超过了标头大小限制，您可以使用将标签包含在正文中的此 POST 方法。

   [PUT 对象 – 复制](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) – 您可以在请求中指定 `x-amz-tagging-directive` 以指示 Amazon S3 复制（默认行为）标签或将标签替换为请求中提供的一组新标签。

请注意以下几点：
+ S3 对象标签非常一致。有关更多信息，请参阅 [Amazon S3 数据一致性模型](Welcome.md#ConsistencyModel)。

## 其他配置
<a name="tagging-other-configs"></a>

本节介绍对象标签如何与其他配置关联。

### 对象标签和生命周期管理
<a name="tagging-and-lifecycle"></a>

在桶生命周期配置中，您可以指定筛选条件以选择该规则适用的一部分对象。您可以基于键名前缀、对象标签或两者指定筛选条件。

假设您将照片（原始格式和已完成格式）存储在 Amazon S3 桶中。您可以按下面所示标记这些对象。

```
phototype=raw
or
phototype=finished
```

您可能考虑在创建原始照片后的某个时候将其归档到 Amazon Glacier。您可以在生命周期规则中配置一个筛选条件，用于确定一部分包含特定标签 (`photos/`) 且带有键名称前缀 (`phototype=raw`) 的对象。

有关更多信息，请参阅 [管理对象的生命周期](object-lifecycle-mgmt.md)。

### 对象标签和复制
<a name="tagging-and-replication"></a>

如果您在桶上配置了复制，Amazon S3 将复制标签，前提是您向 Amazon S3 授予了读取标签的权限。有关更多信息，请参阅 [设置实时复制概述](replication-how-setup.md)。

### 对象标记事件通知
<a name="tagging-and-event-notifications"></a>

您可以设置 Amazon S3 事件通知以在添加对象标签或从对象中删除时接收通知。`s3:ObjectTagging:Put` 事件类型会在对象上放置标签或现有标签更新时通知您。当从对象中移除标签时，`s3:ObjectTagging:Delete` 事件类型会通知您。有关更多信息，请参阅 [Enabling event notifications](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-enable-disable-notification-intro.html)（启用事件通知）。

有关对象标签的更多信息，请参阅以下主题：

**Topics**
+ [与对象标签相关的 API 操作](#tagging-apis)
+ [其他配置](#tagging-other-configs)
+ [标签和访问控制策略](tagging-and-policies.md)
+ [管理对象标签](tagging-managing.md)