我正在将S3对象从一个存储桶A(区域:us-west-2)复制到另一个存储桶B(区域:us-east-1),在执行此操作时,出现以下错误:存储桶在其中地区:us-east-1。请使用该区域重试请求(服务:Amazon S3;状态代码:301;错误代码:PermanentRedirect;请求ID:8A8C33763F67F1EE; S3扩展请求ID:y2IHUTD6Fsi3aNLLJCWX4ZvnaDM9kxxk8yuJIUXZGBoIkWH9GQxHiJF5S1:C。 model.AmazonS3Exception
这就是我创建S3Client的方式:
public AmazonS3 getAmazonS3(final AppConfigTree appConfigTree) {
return AmazonS3ClientBuilder
.standard()
.withClientConfiguration(s3ClientConfiguration())
.withRegion(appConfigTree.findString("us-west-2"))
.build();}
S3复制操作:
private void copyObjects(final ObjectListing objects, final String srcBucket, final String srcPath,
final String destBucket, final String destPath) {
log.info(String.format("Copying %d objects from %s/%s to %s/%s.",
objects.getObjectSummaries().size(), srcBucket, srcPath, destBucket, destPath));
final ObjectMetadata metadata = new ObjectMetadata();
for (final S3ObjectSummary summary : objects.getObjectSummaries()) {
final CopyObjectRequest request = new CopyObjectRequest(srcBucket, summary.getKey(), destBucket,
FileUtility.getFilePath(summary.getKey(), destPath));
metadata.setContentType(getContentType(destPath));
request.setNewObjectMetadata(metadata);
amazonS3.copyObject(request);
}
log.info(String.format("Copied %d objects.", objects.getObjectSummaries().size()));
}