2011-03-13 14 views

Respuesta

4

Esto se logra fácilmente utilizando la API de Amazon S3 para copiar el objeto de un depósito a otro. No importa que los cubos estén en diferentes regiones.

Aquí hay un example usando el 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 

O si lo prefiere, los SDK pueden hacer lo mismo. Aquí hay un .Net SDK example.

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); 

Si quiere decir que desea cambiar una región cubos, que tendría que:

  • Copiar los objetos a un nuevo balde
  • Eliminar el viejo cubo
  • Volver a crear el cubo en la nueva región
  • Copie los objetos de nuevo en el nuevo contenedor.

Por supuesto la mayoría de las principales herramientas de la GUI S3 También puede copiar objetos entre los cubos y las regiones también.

+0

Gracias! Funciona. Lo hice de alguna otra forma (extraña): – aviad

+0

\t \t s3Client.putObject(targetBucketName, key \t \t \t \t \t \t \t ,s3Client.getObject(sourceBucketName, key).getObjectContent() \t \t \t \t \t \t \t ,s3Client.getObjectMetadata(sourceBucketName, key)); aviad

+0

@aviad - No estoy seguro, pero parece que está descargando el archivo a su computadora antes de cargarlo de nuevo en el nuevo contenedor, en lugar de solo copiarlo en S3 sí mismo. –

Cuestiones relacionadas