选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

从目录存储桶复制对象或向目录存储桶复制对象

聚焦模式
从目录存储桶复制对象或向目录存储桶复制对象 - Amazon Simple Storage Service

复制操作将创建已存储在 Amazon S3 中的对象的副本。您可以在目录存储桶和通用存储桶之间复制对象。您还可以在一个存储桶内复制对象,也可以在同一类型的存储桶之间复制对象,例如,从目录存储桶复制到目录存储桶。

注意

当源存储桶或目标存储桶位于 AWS 本地区域时,不支持跨不同 AWS 区域复制对象。源存储桶和目标存储桶必须具有相同的父 AWS 区域。源存储桶和目标存储桶可以是不同的存储桶位置类型(可用区或本地区域)。

在单个原子操作中,您可以创建最大 5GB 的对象副本。但是,要复制大于 5GB 的对象,您必须使用分段上传 API 操作。有关更多信息,请参阅 对目录桶使用分段上传

权限

要复制对象,您必须拥有以下权限:

  • 要将对象从一个目录存储桶复制到另一个目录存储桶,您必须拥有 s3express:CreateSession 权限。

  • 要将对象从目录存储桶复制到通用存储桶,您必须拥有将对象副本写入目标存储桶的 s3express:CreateSession 权限和 s3:PutObject 权限。

  • 要将对象从通用桶复制到目录桶,您必须拥有读取正在复制的源对象的 s3express:CreateSession 权限和 s3:GetObject 权限。

    有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 CopyObject

加密

Amazon S3 会自动加密上传到 S3 存储桶的所有新对象。S3 存储桶的默认加密配置始终处于启用状态,并至少设置为具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)。

对于目录存储桶,支持 SSE-S3 和具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)。当目标存储桶是目录存储桶时,我们建议,目标存储桶的默认加密使用所需的加密配置,并且不要覆盖存储桶的默认加密。然后,使用所需的加密设置自动对新对象进行加密。此外,当您通过 CopyObject 将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶,或在目录存储桶之间复制时,不支持 S3 存储桶密钥。在这种情况下,每次对 KMS 加密的对象发出复制请求时,Amazon S3 都会调用 AWS KMS。有关目录存储桶中加密覆盖行为的更多信息,请参阅 Specifying server-side encryption with AWS KMS for new object uploads

对于通用桶,您可以使用 SSE-S3(默认)、采用 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)、采用 AWS KMS 密钥的双层服务器端加密(DSSE-KMS),或采用客户提供密钥的服务器端加密(SSE-C)。

如果您发出复制请求来指定对目录存储桶(源存储桶或目标存储桶)使用 DSSE-KMS 或 SSE-C,则响应将返回错误。

标签

目录存储桶不支持标签。如果您将带有标签的对象从通用桶复制到目录桶,您会收到 HTTP 501 (Not Implemented) 响应。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 CopyObject

ETag

S3 Express One Zone 的实体标签(ETag)是随机的字母数字字符串,而不是 MD5 校验和。为协助确保对象完整性,请使用额外的校验和。

其他校验和

S3 Express One Zone 可让您选择用于在上传或下载过程中验证数据的校验和算法。您可以选择以下安全哈希算法(SHA)或循环冗余校验(CRC)数据完整性检查算法之一:CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 存储类不支持基于 MD5 的校验和。

有关更多信息,请参阅 其他 S3 校验和最佳实践

支持的特征

有关 S3 Express One Zone 支持哪些 Amazon S3 特征的更多信息,请参阅目录存储桶的差异

注意

使用控制台将对象复制到目录存储桶时的限制和局限性如下所示:

  • Copy 操作适用于指定文件夹(前缀)中的所有对象。当正在执行操作时添加到这些文件夹的对象可能受到影响。

  • 无法使用 S3 控制台复制使用客户提供的加密密钥(SSE-C)加密的对象。要复制使用 SSE-C 加密的对象,请使用 AWS CLI、AWS SDK 或 Amazon S3 REST API。

  • 复制的对象将不会保留原始对象的对象锁定设置。

  • 如果要从中复制对象的存储桶对于 S3 对象所有权使用“强制存储桶拥有者”设置,则对象 ACL 将不会复制到指定的目标。

  • 如果要将对象复制到对于 S3 对象所有权使用“强制存储桶拥有者”设置的存储桶,请确保源存储桶也使用“强制存储桶拥有者”设置,或移除对其它 AWS 账户和组的任何对象 ACL 授权。

  • 从通用存储桶复制到目录存储桶的对象将不会保留对象标签、ACL 或 Etag 值。可以复制校验和值,但它们并不等同于 Etag。与添加时相比,校验和值可能会发生变化。

  • 复制到目录存储桶的所有对象都将对 S3 对象所有权使用“强制存储桶拥有者”设置。

将对象从通用桶或目录桶复制到目录桶
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择您要从中复制对象的存储桶:

    • 要从通用桶进行复制,请选择通用桶选项卡。

    • 要从目录桶进行复制,请选择目录桶选项卡。

  3. 选择包含要复制的对象的通用桶或目录桶。

  4. 请选择对象选项卡。在对象页面上,选中要复制的对象名称左侧的复选框。

  5. Actions (操作) 菜单中,选择 Copy (复制)

    将出现复制页面。

  6. 目标下,为您的目标类型选择目录桶。要指定目标路径,请选择浏览 S3,导航到目标,然后选中目标左侧的选项按钮。选择右下角的选择目标

    或者,输入目标路径。

  7. 其它复制设置下,选择是要复制源设置请勿指定设置还是指定设置复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置来指定服务器端加密、校验和以及元数据的设置。

  8. 选择右下角的复制。Amazon S3 会将对象复制到目标。

注意

使用控制台将对象复制到目录存储桶时的限制和局限性如下所示:

  • Copy 操作适用于指定文件夹(前缀)中的所有对象。当正在执行操作时添加到这些文件夹的对象可能受到影响。

  • 无法使用 S3 控制台复制使用客户提供的加密密钥(SSE-C)加密的对象。要复制使用 SSE-C 加密的对象,请使用 AWS CLI、AWS SDK 或 Amazon S3 REST API。

  • 复制的对象将不会保留原始对象的对象锁定设置。

  • 如果要从中复制对象的存储桶对于 S3 对象所有权使用“强制存储桶拥有者”设置,则对象 ACL 将不会复制到指定的目标。

  • 如果要将对象复制到对于 S3 对象所有权使用“强制存储桶拥有者”设置的存储桶,请确保源存储桶也使用“强制存储桶拥有者”设置,或移除对其它 AWS 账户和组的任何对象 ACL 授权。

  • 从通用存储桶复制到目录存储桶的对象将不会保留对象标签、ACL 或 Etag 值。可以复制校验和值,但它们并不等同于 Etag。与添加时相比,校验和值可能会发生变化。

  • 复制到目录存储桶的所有对象都将对 S3 对象所有权使用“强制存储桶拥有者”设置。

将对象从通用桶或目录桶复制到目录桶
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择您要从中复制对象的存储桶:

    • 要从通用桶进行复制,请选择通用桶选项卡。

    • 要从目录桶进行复制,请选择目录桶选项卡。

  3. 选择包含要复制的对象的通用桶或目录桶。

  4. 请选择对象选项卡。在对象页面上,选中要复制的对象名称左侧的复选框。

  5. Actions (操作) 菜单中,选择 Copy (复制)

    将出现复制页面。

  6. 目标下,为您的目标类型选择目录桶。要指定目标路径,请选择浏览 S3,导航到目标,然后选中目标左侧的选项按钮。选择右下角的选择目标

    或者,输入目标路径。

  7. 其它复制设置下,选择是要复制源设置请勿指定设置还是指定设置复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置来指定服务器端加密、校验和以及元数据的设置。

  8. 选择右下角的复制。Amazon S3 会将对象复制到目标。

注意

使用控制台将对象复制到通用存储桶时的限制和局限性如下所示:

  • Copy 操作适用于指定文件夹(前缀)中的所有对象。当正在执行操作时添加到这些文件夹的对象可能受到影响。

  • 无法使用 S3 控制台复制使用客户提供的加密密钥(SSE-C)加密的对象。要复制使用 SSE-C 加密的对象,请使用 AWS CLI、AWS SDK 或 Amazon S3 REST API。

  • 复制的对象将不会保留原始对象的对象锁定设置。

  • 如果要从中复制对象的存储桶对于 S3 对象所有权使用“强制存储桶拥有者”设置,则对象 ACL 将不会复制到指定的目标。

  • 如果要将对象复制到对于 S3 对象所有权使用“强制存储桶拥有者”设置的存储桶,请确保源存储桶也使用“强制存储桶拥有者”设置,或移除对其它 AWS 账户和组的任何对象 ACL 授权。

将对象从目录存储桶复制到通用存储桶
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 选择目录桶选项卡。

  4. 选择包含您要复制的对象的目录桶。

  5. 请选择对象选项卡。在对象页面上,选中要复制的对象名称左侧的复选框。

  6. Actions (操作) 菜单中,选择 Copy (复制)

  7. 目标下,为您的目标类型选择通用桶。要指定目标路径,请选择浏览 S3,导航到目标,然后选中目标左侧的选项按钮。选择右下角的选择目标

    或者,输入目标路径。

  8. 其它复制设置下,选择是要复制源设置请勿指定设置还是指定设置复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置,来指定存储类、ACL、对象标签、元数据、服务器端加密和其它校验和的设置。

  9. 选择右下角的复制。Amazon S3 会将对象复制到目标。

注意

使用控制台将对象复制到通用存储桶时的限制和局限性如下所示:

  • Copy 操作适用于指定文件夹(前缀)中的所有对象。当正在执行操作时添加到这些文件夹的对象可能受到影响。

  • 无法使用 S3 控制台复制使用客户提供的加密密钥(SSE-C)加密的对象。要复制使用 SSE-C 加密的对象,请使用 AWS CLI、AWS SDK 或 Amazon S3 REST API。

  • 复制的对象将不会保留原始对象的对象锁定设置。

  • 如果要从中复制对象的存储桶对于 S3 对象所有权使用“强制存储桶拥有者”设置,则对象 ACL 将不会复制到指定的目标。

  • 如果要将对象复制到对于 S3 对象所有权使用“强制存储桶拥有者”设置的存储桶,请确保源存储桶也使用“强制存储桶拥有者”设置,或移除对其它 AWS 账户和组的任何对象 ACL 授权。

将对象从目录存储桶复制到通用存储桶
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 选择目录桶选项卡。

  4. 选择包含您要复制的对象的目录桶。

  5. 请选择对象选项卡。在对象页面上,选中要复制的对象名称左侧的复选框。

  6. Actions (操作) 菜单中,选择 Copy (复制)

  7. 目标下,为您的目标类型选择通用桶。要指定目标路径,请选择浏览 S3,导航到目标,然后选中目标左侧的选项按钮。选择右下角的选择目标

    或者,输入目标路径。

  8. 其它复制设置下,选择是要复制源设置请勿指定设置还是指定设置复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置,来指定存储类、ACL、对象标签、元数据、服务器端加密和其它校验和的设置。

  9. 选择右下角的复制。Amazon S3 会将对象复制到目标。

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

以下 copy-object 示例命令显示了如何使用 AWS CLI 将对象从一个存储桶复制到另一个存储库。您可以在存储桶类型之间复制对象。要运行此命令,请将用户输入占位符替换为您自己的信息。

aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

有关更多信息,请参阅 AWS CLI 命令参考 中的 copy-object

以下 copy-object 示例命令显示了如何使用 AWS CLI 将对象从一个存储桶复制到另一个存储库。您可以在存储桶类型之间复制对象。要运行此命令,请将用户输入占位符替换为您自己的信息。

aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

有关更多信息,请参阅 AWS CLI 命令参考 中的 copy-object

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。