S3 UploadPartCopy是否支持跨区域跨账号复制大对象?
S3 UploadPartCopy跨区域跨账号复制大对象问题解答
一、UploadPartCopy是否支持跨区域复制对象?
支持。UploadPartCopy本身允许跨区域复制对象,限制仅针对访问点——只有当源桶和目标桶在同一区域时,才能通过访问点执行复制操作,跨区域场景下直接使用常规的桶和对象路径即可正常操作。
二、如何在UploadPartCopy API中指定源区域和源账号?
指定源区域与对象
在UploadPartCopy请求的x-amz-copy-source请求头中,不要使用简单的bucket-name/file-name格式,而是采用带区域和账号信息的完整标识:
- 格式1(ARN方式):
arn:aws:s3:<源区域ID>:<源账号ID>:bucket/<源桶名称>/<对象键>
示例:arn:aws:s3:us-east-1:123456789012:bucket/my-source-bucket/large-file.zip - 格式2(区域端点URL方式):
https://<源桶名称>.s3.<源区域ID>.amazonaws.com/<对象键>
示例:https://my-source-bucket.s3.us-east-1.amazonaws.com/large-file.zip
处理跨账号权限
要确保复制操作正常执行,需配置好权限:
- 发起请求的目标账号身份(IAM用户/角色)必须拥有源对象的
s3:GetObject权限; - 源桶的桶策略需要明确允许该目标账号身份访问对应的对象;
- 也可以在源账号侧创建专用IAM角色,让目标账号身份通过
AssumeRole获取访问源对象的权限,这种方式权限管控更精细。
额外注意事项
因为对象超过5GB,需要按分段上传流程操作:
- 先在目标桶调用
CreateMultipartUpload初始化分段上传; - 分批次调用
UploadPartCopy复制每个分段(每个分段大小5MB~5GB,最后一段可小于5MB,总段数不超过10000); - 所有分段复制完成后,调用
CompleteMultipartUpload完成整个对象的复制。
内容的提问来源于stack exchange,提问作者Deqing
相关产品推荐
相关产品推荐

