是否可以以编程方式将存储在亚马逊s3上的文件从一个区域传输到另一个区域?

avi*_*iad 5 java amazon-s3

有人知道是否可以以编程方式将存储在亚马逊s3上的文件从一个地区传输到另一个地区?

Geo*_*ord 4

使用 Amazon S3 API 将对象从一个存储桶复制到另一个存储桶可以轻松完成此操作。桶位于不同区域并不重要。

以下是使用Rest API 的示例。

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
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,SDK 也可以做同样的事情。这是一个.Net SDK 示例。

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);
Run Code Online (Sandbox Code Playgroud)

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

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

当然,大多数主要的 S3 GUI 工具也可以在存储桶和区域之间复制对象。