Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以通过编程将存储在AmazonS3上的文件从一个区域传输到另一个区域?_Java_Amazon S3 - Fatal编程技术网

Java 是否可以通过编程将存储在AmazonS3上的文件从一个区域传输到另一个区域?

Java 是否可以通过编程将存储在AmazonS3上的文件从一个区域传输到另一个区域?,java,amazon-s3,Java,Amazon S3,有人知道可以通过编程将存储在AmazonS3上的文件从一个地区传输到另一个地区吗 使用AmazonS3API将对象从一个bucket复制到另一个bucket很容易做到这一点。桶位于不同的区域并不重要 下面是一个使用RESTAPI的示例 PUT /jetsam HTTP/1.1 Host: atlantic.s3.amazonaws.com x-amz-copy-source: /pacific/flotsam Authorization: AWS 15B4D3461F177624206A:ENo

有人知道可以通过编程将存储在AmazonS3上的文件从一个地区传输到另一个地区吗

使用AmazonS3API将对象从一个bucket复制到另一个bucket很容易做到这一点。桶位于不同的区域并不重要

下面是一个使用RESTAPI的示例

PUT /jetsam HTTP/1.1
Host: atlantic.s3.amazonaws.com
x-amz-copy-source: /pacific/flotsam
Authorization: AWS 15B4D3461F177624206A:ENoSbxYByFA0UGLZUqJN5EUnLDg=
Date: Wed, 20 Feb 2008 22:12:21 +0000
或者,如果您愿意,SDK也可以做同样的事情。这是一个例子

如果您的意思是要更改存储桶区域,则必须:

  • 将对象复制到新的存储桶
  • 删除旧桶
  • 在新区域中重新创建存储桶
  • 将对象复制回新的存储桶中

当然,大多数主要的S3GUI工具也可以在bucket和区域之间复制对象。

s3Client.putObject(targetBucketName,key,s3Client.getObject(sourceBucketName,key)。getObjectContent(),s3Client.getObjectMetadata(sourceBucketName,key))
@aviad-我不确定,但看起来您是在将文件下载到计算机上,然后再次上传到新的存储桶中,而不是在S3本身中复制它。
static AmazonS3 client;
client = Amazon.AWSClientFactory.CreateAmazonS3Client(
                    accessKeyID, secretAccessKeyID);

CopyObjectRequest request = new CopyObjectRequest();
request.SourceBucket = bucketName;
request.SourceKey = keyName;
request.DestinationBucket = bucketName;
request.DestinationKey = destKeyName;
S3Response response = client.CopyObject(request);