使用UploadPartCopy跨账号跨区域复制大对象遇ARN资源无效错误求助
解决UploadPartCopy跨账号跨区域复制的InvalidArgument错误
1. 修正Copy-Source参数格式
你收到的Invalid resource in copy source ARN错误是因为使用的ARN格式不符合S3规范,尝试以下两种正确写法:
写法一:账号ID+桶+对象键格式
直接指定源账号ID、桶名和对象路径:
aws s3api upload-part-copy \ --bucket my-objects \ --key "my-bucket/temp1.png" \ --copy-source "123451980301:my-objects/my-bucket/temp.png" \ --part-number 1 \ --upload-id ".OjnTTL4zciiCx5U56ED89sgfWNfowZZYCn9iSxhYIThSI8Pqa.Fp1tg6KaiR4fbejyzCIvrzcTbUiMnIT3DGfoVQmQaZuMVDeA8q_OWomKDNmRNKtcH.cm0LRUtHjuJ"
写法二:简化ARN格式
去掉ARN中的区域和账号ID(S3会自动识别跨账号资源):
aws s3api upload-part-copy \ --bucket my-objects \ --key "my-bucket/temp1.png" \ --copy-source "arn:aws:s3:::my-objects/my-bucket/temp.png" \ --part-number 1 \ --upload-id ".OjnTTL4zciiCx5U56ED89sgfWNfowZZYCn9iSxhYIThSI8Pqa.Fp1tg6KaiR4fbejyzCIvrzcTbUiMnIT3DGfoVQmQaZuMVDeA8q_OWomKDNmRNKtcH.cm0LRUtHjuJ"
2. 确认跨账号权限配置
跨账号复制需要双方权限配置正确:
源账号(123451980301):给目标账号的IAM实体(执行命令的用户/角色)添加
s3:GetObject权限,可通过源桶my-objects的Bucket Policy实现:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::TARGET_ACCOUNT_ID:user/your-iam-user" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-objects/my-bucket/temp.png" } ] }替换
TARGET_ACCOUNT_ID为你的目标账号ID,your-iam-user为执行命令的IAM用户名称。目标账号:确保执行命令的IAM实体拥有以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:CreateMultipartUpload", "s3:UploadPartCopy", "s3:CompleteMultipartUpload", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::my-objects/my-bucket/temp1.png" } ] }
3. 额外注意事项
- 确认源对象
my-objects/my-bucket/temp.png存在且路径无误。 - 跨区域复制无需额外指定区域参数,AWS会自动处理跨区域数据传输。
内容的提问来源于stack exchange,提问作者Deqing
相关产品推荐
相关产品推荐

