

# 在 Amazon S3 控制台中编辑对象元数据
<a name="add-object-metadata"></a>

可以使用 Amazon S3 控制台通过**复制**操作来编辑现有 S3 对象的元数据。要编辑元数据，请将对象复制到同一目标并指定要应用的新元数据，这将替换该对象的旧元数据。在您上传对象时，Amazon S3 会设置一些元数据。例如，`Content-Length` 和 `Last-Modified` 是系统定义的对象元数据字段，用户无法修改。

也可以在上传对象时设置用户定义的元数据，并在需求发生更改时替换此元数据。例如，您可能有一组初始存储在 `STANDARD` 存储类中的对象。随着时间推移，可能不再需要这些数据具有高可用性。因此，可以通过将 `x-amz-storage-class` 键的值从 `STANDARD` 替换为 `GLACIER` 来将存储类更改为 `GLACIER`。

**注意**  
当您在 Amazon S3 中替换对象元数据时，请考虑以下事项：  
必须指定要保留的现有元数据、要添加的元数据以及要编辑的元数据。
如果对象小于 5 GB，可以使用 S3 控制台中的**复制**操作来替换对象元数据。如果对象大于 5 GB，可以在通过 [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) 或 [AWS SDK](CopyingObjectsMPUapi.md) 使用分段上传来复制对象时，替换对象元数据。有关更多信息，请参阅 [使用分段上传复制对象](CopyingObjectsMPUapi.md)。
有关替换元数据所需的其它权限的列表，请参阅 [Amazon S3 API 操作所需的权限](using-with-s3-policy-actions.md)。有关授予此权限的示例策略，请参阅[Amazon S3 基于身份的策略示例](example-policies-s3.md)。
此操作将使用更新的设置和上次修改日期创建对象的*副本*。如果启用 S3 版本控制，则会创建对象的新版本，而现有对象将变为旧版本。如果未启用 S3 版本控制，则对象的新副本将替换原始对象。与更改属性的 IAM 角色关联的 AWS 账户还会成为新对象或（对象版本）的拥有者。
编辑元数据会替换现有键名称的值。
无法使用控制台来复制使用客户提供的加密密钥（SSE-C）加密的对象。您必须使用 AWS CLI、AWS SDK 或 Amazon S3 REST API。
使用 Amazon S3 控制台复制对象时，您可能会收到错误消息 "Copied metadata can't be verified." 控制台使用标头来检索和设置对象的元数据。如果您的网络或浏览器配置修改了网络请求，则此行为可能会导致将意外的元数据（例如修改后的 `Cache-Control` 标头）写入复制的对象。Amazon S3 无法验证这种意外的元数据。  
要解决此问题，请检查您的网络和浏览器配置，以确保它不会修改标头，例如 `Cache-Control`。有关更多信息，请参阅 [The Shared Responsibility Model](https://docs.aws.amazon.com/whitepapers/latest/applying-security-practices-to-network-workload-for-csps/the-shared-responsibility-model.html)。

**警告**  
替换文件夹的元数据时，请等待**复制**操作完成，然后再将新对象添加到文件夹。否则，也可能会编辑新对象。

以下主题描述了如何使用 Amazon S3 控制台中的**复制**操作来替换对象的元数据。

## 替换系统定义的元数据
<a name="add-object-metadata-system"></a>

可以替换 S3 对象的一些系统定义的元数据。有关您可以修改的系统定义元数据和值的列表，请参阅[系统定义的对象元数据](UsingMetadata.md#SysMetadata)。

**替换对象的系统定义的元数据**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**或**目录存储桶**。

1. 在存储桶列表中，选择包含您想要更改的对象的存储桶的名称。

1. 选中要更改的对象所对应的复选框。

1. 在**操作**菜单上，从显示的选项列表中选择**复制**。

1. 要指定目标路径，请选择**浏览 S3**，导航到与源对象相同的目标，然后选中目标复选框。选择右下角的**选择目标**。

   或者，输入目标路径。

1. 如果您*未* 启用存储桶版本控制，则会看到一则警告，建议您启用存储桶版本控制，以防意外覆盖或删除对象。如果要在此存储桶中保留对象的所有版本，请选择 **Enable Bucket Versioning（启用存储桶版本控制）**。还可以在**目标详细信息**中查看默认加密和对象锁定属性。

1. 在**其它复制设置**下，选择**指定设置**来指定**元数据**的设置。

1. 滚动到**元数据**部分，然后选择**替换所有元数据**。

1. 选择**添加元数据**。

1. 对于元数据 **Type (类型)**，请选择 **System-defined (系统定义)**。

1. 指定唯一的 **Key (键)** 和元数据 **Value (值)**。

1. 要编辑其他元数据，请选择 **Add metadata (添加元数据)**。您还可以选择 **Remove**（删除）以删除一组类型-键-值。

1. 选择**复制**。Amazon S3 将保存元数据更改。

## 替换用户定义的元数据
<a name="add-object-metadata-user-defined"></a>

可以通过组合元数据前缀 `x-amz-meta-` 和您选择用于创建自定义键的名称，来替换对象的用户定义元数据。例如，如果您添加自定义名称 `alt-name`，则元数据键为 `x-amz-meta-alt-name`。

用户定义元数据最大总计可为 2 KB。要计算用户定义元数据的总大小，请将 UTF-8 编码中每个键和值的字节数求和。键及其值均必须符合 US-ASCII 标准。有关更多信息，请参阅 [用户定义的对象元数据](UsingMetadata.md#UserMetadata)。

**替换对象的用户定义的元数据**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在导航窗格中，选择**存储桶**，然后选择**通用存储桶**或**目录存储桶**选项卡。导航到包含要更改的对象的 Amazon S3 存储桶或文件夹。

1. 选中要更改的对象所对应的复选框。

1. 在**操作**菜单上，从显示的选项列表中选择**复制**。

1. 要指定目标路径，请选择**浏览 S3**，导航到与源对象相同的目标，然后选中目标复选框。选择**选择目标**。

   或者，输入目标路径。

1. 如果您*未* 启用存储桶版本控制，则会看到一则警告，建议您启用存储桶版本控制，以防意外覆盖或删除对象。如果要在此存储桶中保留对象的所有版本，请选择 **Enable Bucket Versioning（启用存储桶版本控制）**。还可以在**目标详细信息**中查看默认加密和对象锁定属性。

1. 在**其它复制设置**下，选择**指定设置**来指定**元数据**的设置。

1. 滚动到**元数据**部分，然后选择**替换所有元数据**。

1. 选择**添加元数据**。

1. 对于元数据**类型**，请选择 **User-defined**（用户定义）。

1. 在 `x-amz-meta-` 后面输入唯一的自定义 **Key**（键）。还输入元数据 **Value (值)**。

1. 要添加其他元数据，请选择 **Add metadata (添加元数据)**。您还可以选择 **Remove**（删除）以删除一组类型-键-值。

1. 选择**复制**。Amazon S3 将保存元数据更改。