使用S3 Transfer Manager复制对象遇301错误及进度展示问题求助
解决方案:S3 Transfer Manager Copy 301重定向错误
错误原因分析
S3返回301状态码通常意味着请求的存储桶端点与实际桶所在区域不匹配,或者请求的访问样式(虚拟主机/路径样式)不符合桶名规则,导致服务端触发重定向,但SDK未正确处理该重定向逻辑。
具体修复步骤
确认桶区域与客户端配置一致
检查源桶和目标桶的实际部署区域,确保代码中配置的Region.EU_WEST_1与桶所在区域完全匹配。如果是跨区域复制场景,需在复制请求中单独指定源桶的区域。开启重定向跟随与路径样式访问
在S3客户端配置中显式开启重定向跟随,并强制使用路径样式访问(解决桶名含点号等特殊字符时的虚拟主机样式兼容问题):S3ClientConfiguration.builder() .region(Region.EU_WEST_1) .credentialsProvider(awsCredentialsProvider) .enableRedirects(true) // 开启重定向跟随 .pathStyleAccessEnabled(true) // 强制路径样式访问 .build()跨区域复制需指定源桶区域
如果源桶和目标桶不在同一区域,必须在copyObjectRequest中明确指定源桶的实际区域:.copyObjectRequest(r -> r .sourceBucket("source_bucket") .sourceKey("test.json") .sourceRegion(Region.US_EAST_1) // 替换为源桶实际区域 .destinationBucket("destination_bucket") .destinationKey("test.json") )
修改后的完整代码示例
public static void test(){ try { String sAccessKey="XXXXX"; String sSecretKey="XXXXXX"; AwsBasicCredentials awsCreds = AwsBasicCredentials.create( sAccessKey, sSecretKey); AwsCredentialsProvider awsCredentialsProvider = StaticCredentialsProvider.create(awsCreds); S3TransferManager s3TransferManager = S3TransferManager .builder() .s3ClientConfiguration(S3ClientConfiguration.builder() .region(Region.EU_WEST_1) .credentialsProvider(awsCredentialsProvider) .enableRedirects(true) .pathStyleAccessEnabled(true) .build()) .build(); Copy copy = s3TransferManager.copy(c -> c .copyObjectRequest(r -> r .sourceBucket("source_bucket") .sourceKey("test.json") // 跨区域复制时取消注释并替换为源桶实际区域 // .sourceRegion(Region.US_EAST_1) .destinationBucket("destination_bucket") .destinationKey("test.json")) .overrideConfiguration(o -> o.addListener( LoggingTransferListener.create())) ); CompletedCopy completedCopy = copy.completionFuture().join(); System.out.println(copy.progress().snapshot().transferSizeInBytes()); System.out.println(copy.progress().snapshot().bytesTransferred()); } catch (S3Exception e) { throw e; } }
额外检查项
- 确认IAM权限包含
s3:CopyObject、s3:GetObject(源桶权限)和s3:PutObject(目标桶权限); - 检查桶名是否符合AWS S3命名规范(无大写字母、特殊字符需符合DNS规则)。
内容的提问来源于stack exchange,提问作者santosh
相关产品推荐
相关产品推荐

