欢迎使用新的 Amazon S3 用户指南! Amazon S3 用户指南结合了以下三个已停用的指南中的信息和说明:Amazon S3 开发人员指南、Amazon S3 控制台用户指南和 Amazon S3 入门指南。
复制对象
复制操作将创建已存储在 Amazon S3 中的数据元的副本。在单个原子操作中,您可以创建最大 5 GB 的对象副本。但是,对于复制大于 5 GB 的对象,您必须使用分段上传
API。通过使用 copy
操作,您可以:
-
创建对象的其他副本
-
通过复制对象并删除原始对象来重命名它们。
-
跨不同的 Amazon S3 位置(例如,us-west-1 和欧洲)移动对象
-
更改对象元数据
每个 Amazon S3 对象都有元数据。它是一组名称值对。您可以在上传对象元数据时对其进行设置。上传对象后,您将无法修改对象元数据。修改对象元数据的唯一方式是创建对象的副本并设置元数据。在复制操作中,设置与源和目标相同的对象。
每个对象都带有元数据。有些是系统元数据,而另外一些则是用户定义的元数据。用户可以控制某些系统元数据,例如,用于对象的存储类配置和配置服务器端加密。复制对象时,还会复制用户控制的系统元数据和用户定义的元数据。Amazon S3 将重置系统控制的元数据。例如,在复制对象时,Amazon S3 将重置已复制对象的创建日期。在复制请求中,您无需设置这些值。
复制对象时,您可能会决定更新某些元数据值。例如,如果您的源对象被配置为使用标准存储,您可能会为对象复制选择低冗余存储。您可能还会决定更改源对象上某些用户定义的元数据值。请注意,如果您选择在复制期间更新任意对象的用户可配置元数据 (系统或用户定义的元数据),则必须显式指定请求中源对象上存在的所有用户可配置的元数据,即使您只更改其中一个元数据值也是如此。
有关对象元数据的详细信息,请参阅 使用对象元数据。
-
复制不同位置上的对象将产生带宽费用。
-
如果源对象存档在
S3 Glacier
或S3 Glacier Deep Archive
中,您必须先还原临时副本,然后才能将对象复制到另一个存储桶中。有关对象存档的更多信息,请参阅转换为 S3 Glacier 和 S3 Glacier Deep Archive 存储类(对象存档)。
在复制对象时,您可以请求 Amazon S3 保存使用 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK)、Amazon S3 托管加密密钥或客户提供的加密密钥进行加密的目标对象。因此,您必须在请求中指定加密信息。如果复制源是通过客户提供的密钥使用服务器端加密存储在 Amazon S3 中的对象,则您需要在请求中提供加密信息,以便 Amazon S3 可以解密对象进行复制。有关更多信息,请参阅 使用加密保护数据。
要使用单个请求复制多个 Amazon S3 对象,您可以使用 Amazon S3 批处理操作。您为 S3 批处理操作提供要操作的对象列表。S3 批处理操作调用相应的 API 来执行指定的操作。单个批量作业可对包含 EB 级数据的数十亿个对象执行指定操作。
S3 批处理操作包括跟踪进度、发送通知并存储所有操作的详细完成报告,从而提供完全托管、可审核的无服务器体验。您可以通过 AWS 管理控制台、AWS CLI、AWS 开发工具包或 REST API 使用 S3 批处理操作。有关更多信息,请参阅 S3 批处理操作基础知识。
复制对象
要复制对象,请使用下面的示例。
在 S3 控制台中,您可以复制或移动对象。有关更多信息,请参阅下面的过程。
复制对象
-
登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
导航到包含待复制对象的 Amazon S3 存储桶或文件夹。
-
选中要复制的对象名称左侧的复选框。
-
选择 Actions (操作),然后从显示的选项列表中选择 Copy (复制)。
或者,从右上角的选项中选择 Copy (复制)。
-
选择目标类型和目标账户。要指定目标路径,请选择 Browse S3 (浏览 S3),导航到目标,然后选中目标左侧的复选框。选择右下角的 Choose destination (选择目标)。
或者,输入目标路径。
-
如果未启用存储桶版本控制,则系统可能会要求您确认是否覆盖具有相同名称的现有对象。如果可以覆盖,请选中该复选框并继续。如果要在此存储桶中保留对象的所有版本,请选择 Enable Bucket Versioning (启用存储桶版本控制)。您还可以更新默认加密和对象锁定属性。
-
选择右下角的 Copy (复制),Amazon S3 会将您的对象移动到目标位置。
移动对象
-
登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
导航到包含待移动对象的 Amazon S3 存储桶或文件夹。
-
选中要移动的对象名称左侧的复选框。
-
选择 Actions (操作),然后从显示的选项列表中选择 Move (移动)。
或者,从右上角的选项中选择 Move (移动)。
-
要指定目标路径,请选择 Browse S3 (浏览 S3),导航到目标,然后选中目标左侧的复选框。选择右下角的 Choose destination (选择目标)。
或者,输入目标路径。
-
如果未启用存储桶版本控制,则系统可能会要求您确认是否覆盖具有相同名称的现有对象。如果可以覆盖,请选中该复选框并继续。如果要在此存储桶中保留对象的所有版本,请选择 Enable Bucket Versioning (启用存储桶版本控制)。您还可以更新默认加密和对象锁定属性。
-
选择右下角的 Move (移动),Amazon S3 会将您的对象移动到目的地。
-
此操作创建具有更新设置的所有指定对象的副本,更新指定位置的上次修改日期,然后向原始对象添加删除标记。
-
移动文件夹时,请等待移动操作完成,然后再对文件夹进行其他更改。
-
无法使用 S3 控制台复制使用客户提供的加密密钥 (SSE-C) 加密的对象。要复制使用 SSE-C 加密的对象,请使用 AWS CLI、AWS 开发工具包或 Amazon S3 REST API。
-
此操作会更新存储桶版本控制、加密、对象锁定功能和存档对象的元数据。
本节中的示例向您展示了如何复制单个操作中大于 5 GB 的对象。对于复制大于 5 GB 的对象,您必须使用分段上传 API。有关更多信息,请参阅 使用分段上传复制对象。
本示例描述了如何使用 REST 复制对象。有关 REST API 的更多信息,请参阅 PUT Object (Copy)。
本示例将 flotsam
存储桶中的 pacific
对象复制到 jetsam
存储桶的 atlantic
对象,同时保留其元数据。
PUT /jetsam HTTP/1.1 Host: atlantic.s3.amazonaws.com x-amz-copy-source: /pacific/flotsam Authorization: AWS AKIAIOSFODNN7EXAMPLE:ENoSbxYByFA0UGLZUqJN5EUnLDg= Date: Wed, 20 Feb 2008 22:12:21 +0000
将从以下信息生成签名。
PUT\r\n \r\n \r\n Wed, 20 Feb 2008 22:12:21 +0000\r\n x-amz-copy-source:/pacific/flotsam\r\n /atlantic/jetsam
Amazon S3 将返回以下响应来指定对象的 ETag 及其上次修改的时间。
HTTP/1.1 200 OK x-amz-id-2: Vyaxt7qEbzv34BnSu5hctyyNSlHTYZFMWK4FtzO+iX8JQNyaLdTshL0KxatbaOZt x-amz-request-id: 6B13C3C5B34AF333 Date: Wed, 20 Feb 2008 22:13:01 +0000 Content-Type: application/xml Transfer-Encoding: chunked Connection: close Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult> <LastModified>2008-02-20T22:13:01</LastModified> <ETag>"7e9c608af58950deeb370c98608ed097"</ETag> </CopyObjectResult>