Amazon web services 复制不同区域存储桶中的S3对象
我将S3对象从一个Bucket A(区域:us-west-2)复制到另一个Bucket B(区域:us-east-1),同时,我得到以下错误:Bucket位于该区域:us-east-1。请使用此区域重试请求(服务:Amazon S3;状态代码:301;错误代码:PermanentRedirect;请求ID:8A8C33763F67F1EE;S3扩展请求ID:Y2IHUTD6FSI3ANLJCWX4ZVNADM9KXXK8YUJIUXZGBOIKH9GQXHIJFOG5NO6PD1S4WK6CHIT14=;代理:null):com.amazonaws.services.S3.model.AmazonS3Exception 这就是我创建S3Client的方式:Amazon web services 复制不同区域存储桶中的S3对象,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我将S3对象从一个Bucket A(区域:us-west-2)复制到另一个Bucket B(区域:us-east-1),同时,我得到以下错误:Bucket位于该区域:us-east-1。请使用此区域重试请求(服务:Amazon S3;状态代码:301;错误代码:PermanentRedirect;请求ID:8A8C33763F67F1EE;S3扩展请求ID:Y2IHUTD6FSI3ANLJCWX4ZVNADM9KXXK8YUJIUXZGBOIKH9GQXHIJFOG5NO6PD1S4WK6CHI
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()));
}您好--您的问题是A和B都在美国西部2区,您的意思是其中一个在美国东部1区(或另一个地区)?如果您在不同的地区或客户中使用Bucket,您需要为每个地区或客户创建一个S3Client。是,右图us-east-1I我不理解Bucket的区域错误,因为aws界面显示s3 Bucket是全局的。我甚至没有在s3接口中看到存储桶的区域。