This is easily accomplished using the Amazon S3 API to copy an object from one bucket to another. It does not matter that the buckets are in different regions.
Here is an example using the 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
Or, if you want, the SDKs can do the same. Here is an example .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);
If you want to change the bucket area, you need to:
- Copy objects to new storage
- Remove old bucket
- .
, S3 GUI .